老实说,如今两者之间的界限几乎消失了,有些处理器可以归类为两者(例如 AD Blackfin)。
通常来说,一般来说:
微控制器是带有中断子系统的整数数学处理器。有些可能有硬件乘法单元,有些没有,等等。关键是它们是为简单的数学设计的,主要是为了控制其他设备。
DSP 是针对流信号处理进行优化的处理器。它们通常具有特殊指令来加速常见任务,例如在单个指令中进行乘法累加。它们通常还有其他向量或 SIMD 指令。从历史上看,它们不是基于中断的系统,而是使用针对其目的进行了优化的非标准内存系统运行,这使得它们更难以编程。它们通常被设计为在一个处理数据流的大循环中运行。DSP 可以设计为整数、定点或浮点处理器。
从历史上看,如果您想处理音频流、视频流、进行快速电机控制,以及任何需要高速处理数据流的事情,您都会寻找 DSP。
如果你想控制一些按钮,测量温度,运行字符 LCD,控制其他正在处理事物的 IC,你会使用微控制器。
今天,您通常会发现通用微控制器类型的处理器,它们要么内置类似 DSP 的指令,要么带有片上协处理器来处理流数据或其他 DSP 操作。除了在特定行业之外,您再也看不到纯 DSP 的使用了。
处理器市场比以往更加广阔和模糊。例如,我几乎不认为 ARM cortex-A8 SoC 是微控制器,但它可能符合标准定义,尤其是在 PoP 封装中。
编辑:我想我会补充一点来解释即使在应用处理器时代我何时/何地使用过 DSP。
我最近设计的一个产品是使用每个“区域”的 X 个输入通道和 X 个输出通道进行音频处理。该产品的预期用途意味着它经常会坐在那里做自己的事情,处理音频通道数年而没有任何人接触它。音频处理由各种声学滤波器和功能组成。该系统还具有“热插拔”功能,能够在一个盒子中添加一些独立的“区域”。总共有 3 个 PCB 设计(主板、背板和插件模块),背板支持 4 个插件模块。一个非常有趣的项目,因为我是一个人做的,我要做系统设计、原理图、PCB布局和固件。
现在我可以用一个笨重的 ARM 内核来完成所有的事情,我只需要大约 50MIPS 的 DSP 处理每个区域的 24 位定点数。但是因为我知道这个系统会运行很长时间,并且知道它永远不会点击或弹出或类似的东西是至关重要的。我选择使用每个区域的低功耗 DSP 和发挥系统管理作用的单个 PIC 微控制器来实现它。这样,即使其中一个 uC 功能崩溃了,可能是对它的以太网端口的 DDOS 攻击,DSP 也会很高兴地继续前进,而且很可能没有人知道。
因此,微控制器发挥了运行 2 行字符 LCD、一些按钮、温度监控和风扇控制的作用(每块板上还有一些相当高功率的音频放大器),甚至通过以太网提供 AJAX 风格的网页。它还通过串行连接管理 DSP。
因此,即使在我可以使用单个 ARM 内核来做所有事情的日子里,设计也需要专用的信号处理 IC。
我遇到 DSP 的其他领域:
*高端音频 - 非常高端的接收器和音乐会质量的混音和处理设备
*雷达处理——我还在低端应用程序中使用了 ARM 内核。
*声纳处理
*实时计算机视觉
在大多数情况下,音频/视频/类似空间的低端和中端已被应用处理器接管,这些应用处理器将通用 CPU 与用于各种应用的协同处理卸载引擎相结合。