SoC ARCHITECTURE OVERVIEW 

The growing feature size of the transistor and the capacity available in the current integrated circuits opened up a new possibility of system design called system-on-chip (SoC). These systems allow multiple systems on the same die, including analog circuits, digital systems, sensors, processor and memories. The SoC design can use a combination of the pre-designed blocks or IP-blocks (or cores) along with embedded software. The SoC design techniques are more focused on analyzing the required tasks for hardware and software partitioning for efficient, low power and low cost implementation of various algorithms.

The LEON processor in particular is very helpful in initiating an open source SoC architecture development. This processor is SPARC compatible and with the availability of cross compilers and real-time operating systems for this processor it is surely a good candidate platform for SoC development.

                        

The above figure show the overview of the system. The various components in the SoC design are classified into blocks. The whole system is either implemented on an FPGA or ASIC. The LEON processor core along with the custom IP-Blocks or the cores interfaced to LEON processor form the hardware architecture of the SoC. The software controlling the hardware is represented in the top block. Embedded operating systems can be used for task management and hardware resource abstraction. The most popular operating systems that can be used in this context are open source RTEMS, LEOX (micro-linux for LEON ), and ECOS (Redhat port for micro controllers).

The cross-compilers for LEON, LECCS, are available from Gaisler Reaserch. These cross-compilers can be used to generate the binary or the assembly as required. The compilers should be installed in /opt/rtems of your system. LECCS can be used for generating standalone C/C++ applications to be used along with an O/S or ROMable(non-rtems) C-application. Both C-programs and RTEMS applications are linked to run from beginning of the RAM. However to make a boot prom to run from the prom on a standalone target a utility mkprom is used. This utility will load the application to the beginning of the RAM, initialize certain LEON registers and finally start the application.

Once the SoC is developed with LEON it can be allowed to boot, either from the internal PROM (slow) or from the external memory (fast). The internal on-chip boot loader can be developed using the PMON provided with LEON . PMON is a simple monitor that can be placed in an on-chip boot prom, external prom or cache memories (using the boot-cache configuration). Two versions are provided, one to be used for on-chip PROM or caches (bprom.c) and one for external PROMs (eprom.c). On reset, the monitor scans all ram-banks and configures the memory control register 2 accordingly. The monitor can detect if 8-, 16- or 32-bit memory is attached, if read-modify write sub-word write cycles are needed and the size of each RAM bank. It will also set the stack pointer to the top of RAM. The monitor writes a boot message on UART1 transmitter describing the detected memory configuration and then waits for S-records to be downloaded on UART1  receiver. It recognizes two types of S-records: memory contents and start address. A memory content S-record is saved to the specified address in memory, while a start address record will cause the monitor to jump to the indicated address. Applications compiled with LECCS can be converted to a suitable S-record stream with:

sparc-rtems-objcopy -O srec app app.srec

See the README files in the pmon directory for more details. After successful boot, the monitor will write a message similar to:

LEON-1: 2*2048K 32-bit memory

>

LEON is available with a instruction level simulator called TSIM. An evaluation version of LEON is available at Gaisler research. The user can write the expected hardware modules or IP-blocks s/he is planning to put together with LEON in software and profile it before implementing it in hardware. This proves to be a useful tool for doing hardware/software partitioning of the given algorithm to be implemented.

In this class project, different IP blocks are interfaced to LEON using the AMBA AHB and APB bus ses. The IP blocks include FIR, FFT, DES, and AES. These can be added as 'masters' to interface to the AMBA AHB bus. The AMBA APB bus is used to connect slow speed peripherals. It is used for exchanging hand-shaking signals. It cannot be used for block data transfer.


| Abstract | Introduction | SoC Architecture Overview | Hardware and Software Details | Helpful Hints | Conclusions | References | Acknowledgements |