System on Chip Architecture Fundamentals:
-Aviral Mittal (avimit att yhaoo datt camm)
Connect Aviral Mittal @ https://www.linkedin.com/in/avimit/
SITE HOME
Skip Theory Go Straight to SoC Design Web Training With ARM Cortex-M3

Objective:
The objective of this Tutorial/Techrature is to introduce a System on Chip Architecture Fundamentals, then build a SoC right from scratch.

The Tutorial organization
The tutorial starts with the theory part, and finishes with practicals.
To start the theory part, a list of all the components of the SoC i.e. what a modern SoC of today has inside it, is presented followed by  functionality of those components.
Following this, the fun starts with the practicals. The Tutorial starts to build a custom SoC starting from Scratch. The SoC will be built in stages, for example the first stage will only have a processor and a memory. More components will be added on to this basic SoC to make it more capable.
At present (Nov 2019), Only Stage 1 of the SoC is complete. More stages are in the preparation.
All tools used in the Tutorial are available free to download.
The tool list, with download links
1. Keil uVision 5: To translate the C-program(s) into binary files that will be loaded into SoC's Memory for the processor to run.

2. Xilinx Vivado: For Simulation.

The source code (verilog RTL) of processor and other components is available to download free of charge from ARM's website.

The SoC will be built around ARM Cortex-M3 processor, and may be another processor Cortex-M0 will be added to built a multiprocessor SoC. To start with the SoC will have just 1 processor, i.e. Cortex-M3.

The verilog RTL source code for this tutorial can be downloaded form here. You will have to fill in your Name, email-ID, and a link for downloading the source code will be sent to you automatically.

Motivation for this Tutorial:
Techrature on SoC Architecture can be found littered all over the internet.
However they are all very high level, and any one single techrature do not cover on all the aspects of SoC architecture.
Most of them are presented as a connection of some boxes with arrows. And of course its all theory... Yawn....
The objective of this tutorial is to make a very small example SoC, which can run software.
If you have been looking for a SoC design course, this is the right place. Its free, its practical and it is simple to understand.

First, the components of a Modern SoC are identified, then details of the function of each of the components are added.
Its then explained why they are needed, explained how they work/interact with each other to realize
the broad level function of the whole of the SoC as one unit.
The approach of this techrature is a bit back-side-front (analogous to up-side-down),
because logically the need should be described before a component addressing that need is mentioned/introduced
But then it becomes a very long story, so to cut the story short, we go back-side-front, describe all the components
that are present in a modern SoC, and state what need each one has fulfilled (i.e. its function)

So what is a SoC:
SoC stands for System on Chip. Its highly integrated version of Integrated Circuits.
Integrated circuits were invented by Texas Instruments a long time ago
At that time TI was able to integrate a few transistors to make an IC.
Since then the 'integration' on the silicon has massively increased.
And now we have entire system on a Chip.
And that is what a SoC is.
A modern SoC may have billions of transistors integrated into a single device.

So that was one way to explain what a SoC is.
Here is another one:
A SoC is a electronic device which has Hardware and Software as two essential components, working in tandem
to realize some function(s).

What is inside a SoC: Components of SoC
Almost all the SoCs will have the following elements/components:
Following the list, more about each element of the SoC is explained and its presence justified.
1. I/O pads : These are the pins which lets the SoC communicate with outside world.
2. Power management Unit : Though in some cases PMU can be external to the SoC, it in turn contains Voltage Regulators.
3. Production test logic also called Design for Test Logic (DFT):
4. Trace & Debug Logic:
5. Fuses.
6. Microprocessor(s)
7. Memory(s). Several types of memories. Cache, ROM, Flash, SRAM.
8. Communication Back bone: Also called SoC fabric, System Bus etc.
9. Security logic.
10. Software: This may not be there for all SoCs, and the SoCs without any software in it, will allow the user to put software in its memories post production.
11. Clock source, e.g. crystal oscillator: Though in some cases it is possible to provide a clock to a SoC externally
12. PLLs: Phased Locked Loops.
14. Clock & Reset Logic
15. Power consumption reduction logic. Some times also called low power features.
16. Peripherals: Logic to transfer data off chip, and to receive data from external sources. e.g. USB, I2C, PCI, UART. Ethernet
17. RF Circuit: Not all SoCs have them. But the ones with wireless communication on board must have it.
18. Timers
19. Watchdogs.
20. Interrupt logic.
21. Pin-Muxing logic.
22. Hardware Boot State Machine.
23. Temperature Sensor.
24. AON logic: Always ON Logic.
25. DACs/ADCs
26. DSP processor/DSP logic
27. Ring Oscillators.
28. Random number generator sometimes also called TRNG (True Random Number Generator)
29. Encryption/Decryption logic
30. Power-ON reset generator.
31. Battery Charging Circuit.
32. SoC Control and Status Register Block.
33. SoC ID Register.

Click Here to Make Comments or ask Questions

                                                                                                                Next =>


Some Random Info:
In ASIC/SoC implementations, the system can boot-up from the internal RC oscillator and switch over to external crystal oscillator or PLL for clock source when needed. PLL can provide higher clock frequency for high-performance operations [System-on-Chip Design with ARM Cortex M processors:-Joseph Yiu, Distinguished Engineer, ARM"
RC Oscillator will use less power than Xtal oscillator, but of course will be in-accurate".