24
\$\begingroup\$

I am starting out programming micro controllers and I was reading some documentation and textbooks. I am a little confused as to what the difference is between a Micro-controller and a System on chip?

Some documentation use these two terms inter changeably. However most textbooks point out that using the two terms inter changeably is NOT correct, thus there must be some notable difference...

Thanks!

\$\endgroup\$
  • 4
    \$\begingroup\$ Thanks for accepting my answer, but I really recommend you wait longer next time before accepting. Others probably have different views and insights, but may often pass over a question that already has a accepted answer - I know I do. You want to leave some time to collect a consensus, especially for a question that addresses a gray area. \$\endgroup\$ – Olin Lathrop Jul 14 '11 at 15:22
  • \$\begingroup\$ @Olin Cool, will keep that in mind next time! \$\endgroup\$ – rrazd Jul 14 '11 at 17:41
26
\$\begingroup\$

A microcontroller is a processor that has its program and data memory built in. These chips are intended for small embedded control applications, so leaving the pins for I/O and not requiring a external memory bus is very useful. Some microcontrollers have as little as 6 pins, and can do useful things. Contrast that to a general purpose computing processor intended for a PC. Those things have 100s of pins in a array and require extensive external circuitry.

As for system on a chip, that is a less well defined term. Cyprus calls some of their parts PSOC (Programmable System on Chip). These are basically a microcontroller with small FPGA on the same chip. Instead of having built in peripherals, you can make whatever you want within the available resources of the FPGA.

In general, I think a system on a chip is a microcontroller with some supposedly system-level logic integrated with it. Of course the further you try to go into the system, the less likely any one set of extra hardware is going to be useful, so some kind of configurability is very useful. However, for now "system on chip" is more of a marketing term than anything real.

\$\endgroup\$
20
\$\begingroup\$

System On a Chip (or SoC) is a catch-all phrase that marketing people use and doesn't really mean much. There are also many variations like:

PSoC: Programmable System On a Chip, by Cypress Semiconductor.

SOPC: System on a Programmable Chip, by Altera

In essence, a SOC is a single chip that does everything that used to take up multiple chips. There is nothing there that says it has to include a CPU or RAM. So, due to the fact that we can get more transistors on a chip and we've been getting more and more functionality on our chips-- just about everything can be called an SoC when compared to what we were doing 10 or 20 years ago!

To make matters worse: there are lots of examples of things being called an SoC which still require multiple chips to make useful. Often times you'll have some form of a CPU+Peripherals that still require external Flash, RAM, and power stuff. So even the SoC name is misleading.

An MCU is probably the most concise example of what an SoC should be-- but it is a very limited example.

\$\endgroup\$
  • \$\begingroup\$ @David-kesner +1 for SoC as a marketing phrase. \$\endgroup\$ – Frank Jul 21 '11 at 5:17
12
\$\begingroup\$

In general a microcontroller is taken as being an embedded device which is internally programmed to perform a specific task. There is minimal user interaction and little or no flexibility. A microcontroller is typically fairly low powered with only small amounts of memory and ROM (flash).

Conversely a System-on-Chip is the other end of the spectrum. It is more geared towards complete flexibility and user interaction. It often includes such things as IO drivers for bigger hardware (like hard drives, etc), and even sometimes a graphics adapter. A System-on-Chip is more like a complete computer system, yes, on a chip.

There is quite a lot of crossover between the two - when does it stop being a microcontroller and start being a System-on-Chip? Which is where a lot of the confusion comes from.

Basically, if it can do what a computer can do then it's a System-on-Chip. If it's geared at, for instance, sitting inside a desk phone managing your contacts list, or in a keypad entry system, or running the motors on a CNC machine, then it's a microcontroller.

p.s., don't quote me on this - as I say there is a lot of crossover between the two.

\$\endgroup\$
5
\$\begingroup\$

The distinction is in some sense more marketing-related than technical, but I would suggest that in general the "programmable" part of a microcontroller is limited to a single, relatively narrow, "stream of consciousness". Essentially, at any given moment, the next relatively small operation of the microcontroller will be determined by how it's programmed, but all other logic in the system is hardwired and will perform as it's built. Some things like timers may provide some configuration options (e.g. counting at fixed rate versus counting pulses on an input) but in general the wiring of the system will be fixed. If it is desired to have some output signal change in response to some input signal, and there doesn't exist explicit hardware to do that, the program will have to periodically look at the input signal and, if it has changed, switch the output signal. If it's desired to have an output analog voltage change in response to an input analog voltage, the processor could sample the input voltage, compute the desired response, and request the desired output voltage. Practically type of desired stimulus/response could be produced by having the processor look at inputs and compute outputs, but response times would in general be orders of magnitude slower than could be produced with dedicated hardware.

The general idea with a system-on-chip is to allow provide circuitry with enough multiplexers and other routing facilities such that the signals can be routed through the circuits to produce many useful type of stimulus/response patterns without processor intervention. Such circuitry can't produce stimulus/response patterns that are anywhere near as fast as what a processor could produce, but they can in many cases be orders of magnitude faster than anything a processor could do.

\$\endgroup\$
2
\$\begingroup\$

In my opinion, SoC is the term with lots of definitions, which in fact will keep changing with time. On the other hand, Microcontroller will be defined in the same way after a decade as it is now. When you say a Microcontroller, it comes with some basic things on a single chip, like, memory, IO ports, Timers and Counters and so on... But when you say an SoC, it doesn't have any specific standard about what type of circuitry it should contain. For an example, the primary application in which they are trying to bring SoC in is Smartphone. At the current scenario, a smartphone should contain some basic on-board things like,

  1. NFC
  2. GPS
  3. Accelerometer and Gyro
  4. WiFi
  5. A CPU and a GPU

In the current situation if I want to manufacture a smartphone, I've to pick up a CPU and a GPU and interface everything to it. But SoC is based on the concept of single chip that will have all the above and do have an ability to evolve (although in a very basic manner). Also, I said SoC has a constantly changing definition because basic requirements for a smartphone, a computer or any electronic device is going to increase day by day and definition of SoC will change with those requirements.

\$\endgroup\$
0
\$\begingroup\$

Yes SoC is basically a marketing term used more often .There is device and Host terminology.Host are the big PC makers like Dell,HP,IBM, etc.They used the CPU inside them generally made by Intel,AMD,etc.So they basically provides CPU or SoC on the Mother Board(called CPU), some also provide the CPU + SoC(for a particular purpose to offload the activity of the peripherals - like sensors, or GPS device , which otherwise would have been very power hungry had they been connected directly to the CPU).SoC is also sometimes call a Co-Processor whose job is same as what i have written earlier. Now to the MotherBoards are connected various peripherals (which are connected to basically CPU or SoC), these peripherals are basically either connected directly to them(SOC or CPU) via sum bus - i2c,SPI ,USB or they are generally connected to the MicroControllers.SO either a microcontroller is interfaced to the SoC or these devices are connected directly to the bus .Now the Qs is why the peripherals will be connected to the microcontrollers and not to the bus directly, well there is a reason if the peripherals makers are also the manufacturers of the microcontroller they will defintely try to push their peripherlas along with the Microcontrollers not only for a better profit but also for a better solutions , as the featurs in microcontroller will give double boost to thier solution.Imagine if they are providing a bluetooth peripheral but connecting it with a microcontroller will made them give a low power hungry,fast performance based bluetooth microcontroller solution.Its a win-win solution for both the device(peripheral,controller makers) as well as the PC makers as they are getting the better devices(peripheral+Microcontroler). SO the whole point is the microcontroller term you will see more often on the device side(the one which is being interfaced with the SoC(Now you know what an SOC is ??Dont you) and SoC on the Host side(the PC Side) .You can say CPU is the father delegating soem of his work to SoC for better power capabilities of the devices(Micro+ peripherals).Socs are basically have more memories to host an OS unliek Microcontrollers which can at most support the RTOs.

\$\endgroup\$
  • 1
    \$\begingroup\$ WOW ! Realy like the downvote when people do it without stating much needful comments ! \$\endgroup\$ – Raulp Jul 30 '15 at 4:27
  • 3
    \$\begingroup\$ It's very unclear. I can't make the ins and outs in this stream of consciousness. \$\endgroup\$ – ivan_pozdeev Jan 10 '17 at 7:17
0
\$\begingroup\$

Summarize the above, it seems to me:

A MCU provides a lot of memory, interfaces such as VGA, and capabilities such as GPU by using several different chips that provide different things.

An MCU fits everything on a single chip by providing only minimal memory, interfaces, etc.

A SoC fits everything on a single chip by pushing the limits of what can be done on one chip.

MCUs provide value by minimizing cost, SoCs provide value by maximizing functionality, both on a single chip. If it competes against TLL logic, it's a probably an MCU. If competes against microprocessors (AMD, Intel), it's probably a SoC.

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.