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
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.
Vivado: For Simulation.
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.
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
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
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 were invented by Texas Instruments a long time
At that time TI was able to integrate a few transistors to make an
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
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
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:
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
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.
20. Interrupt logic.
21. Pin-Muxing logic.
22. Hardware Boot State Machine.
23. Temperature Sensor.
24. AON logic: Always ON Logic.
26. DSP processor/DSP logic
27. Ring Oscillators.
28. Random number generator sometimes also called TRNG (True Random
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
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".