PLDs, DSPs, MCUs, MPUs and SoCs are all embedded devices, they can be programmed / configured to achieve a specific application. I've worked with MCUs and FPGAs in the past and realized that they are very different when it comes to their hardware architecture and programming / description language. In some applications, both MCUs and FPGAs could achieve the same goal but most of the time it isn't the case. I've heard that PLDs aren't optimized for mathematical operations but that DSPs are. I was wondering what each of these embedded devices can do that the others can't (what kind of application are they intended for).

  • 1
    \$\begingroup\$ It would take a writeup of 10's of pages to explain the differences between all embedded devices. \$\endgroup\$ – Voltage Spike Mar 20 '19 at 19:39
  • \$\begingroup\$ @laptop2d and said explanation would be valid for about six months to two years until the market changed. I can get MCUs smaller than my little finger that have far more processing power and memory than the first computer that was paid to program. (Radio Shack Trash-80 -- and I have big hands. But still...) \$\endgroup\$ – TimWescott Mar 20 '19 at 19:45
  • \$\begingroup\$ SoCs are just the other parts integrated together where compactness is required. I think it was mostly smartphones that pushed the development of SoCs. There's increasing overlap and convergence among all devices too. MCUs are used whenever possible. PLDs are mostly used for little bits of glue logic and when timing is important but FPGAs are encroaching on that space now. DSPs and Both DSPs and MPUs are used when MCUs won't cut it. But there is overlap here too since DSPs can range from near MCU all the way up to MPU levels of complexity and power. \$\endgroup\$ – DKNguyen Mar 20 '19 at 19:54
  • \$\begingroup\$ FPGAs often come in when DSPs won't cut it. But if you cannot adapt the algorithm to hardware then you go back to more powerful (or multiple) DSPs. Lots of intermingling and overlap. \$\endgroup\$ – DKNguyen Mar 20 '19 at 19:57
  • \$\begingroup\$ @laptop2d I just want to know the key features of each embedded devices. I don't necessarily want to know every differences between them. \$\endgroup\$ – A.Lacasse Mar 20 '19 at 21:52
  1. PLD. Programmable Logic Device, i.e. FPGA and CPLD. Programmed by essentially rearranging the circuitry. Good for things that are simpler and faster than what can be done on a processor (although "simple" and "fast" are both moving targets as technology changes).
  2. MCU. Microcontroller Unit. A complete computer on a chip, with periherals that are handy to solve the problem at hand. Programmed by changing the machine instructions stored in non-volatile memory (i.e., something like a "computer program"). Small & cheap, generally not as computationally capable as an MPU.
  3. MPU. Microprocessor Unit. The core of a computer, contains the actual processor core, possibly some memory (in the form of cache(s)), and interface electronics to more memory and I/O. Must have further "computer stuff" added before it'll work: at least memory, possibly bridges (ala desktop processors).
  4. DSP. Digital Signal Processor (not to be confused with Digital Signal Processing). Essentially an MCU or MPU with a core that is optimized to carry out digital signal processing. Can often be used as a general-purpose MCU or MPU, with a loss of efficiency. Can often be replaced by a general-purpose MCU or MPU, with a loss of efficiency if it's doing "real" DSP.
  5. SoC. System On Chip. Mostly a marketing term, unless you're talking about applications-specific chips (ASICs), this is an MCU that contains more applications-specific analog or digital circuitry on-chip. Designed with the goal of putting all the system functionality on one chip instead of having a board with MCU and peripheral electronics. Definitely a moving target -- yesterday's SoC is today's MCU, etc.
  • \$\begingroup\$ You could add in that DSPs and CPLDs/FPGAs are optimized to just do one thing very quickly (bad at branching code and context changes), whereas MCUs and MPUs are optimized to do many different things (i.e. good at branching code). The FPGA is even more single-minded than the DSP though and more difficult to handle complex tasks compared to the DSP, but will do them faster if you can pull it off. Though, such a specific thing might get outdated in a few years. \$\endgroup\$ – DKNguyen Mar 20 '19 at 20:01
  • \$\begingroup\$ @Toor True. But I was trying to avoid the 10-page answer mentioned in the comments! \$\endgroup\$ – TimWescott Mar 20 '19 at 20:03
  • \$\begingroup\$ Let the rabbit holing begin! \$\endgroup\$ – DKNguyen Mar 20 '19 at 20:04

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