究竟是什么:微控制器 (uC)、片上系统 (SoC) 和数字信号处理器 (DSP)?

电器工程 微控制器 数字信号处理器 社会 片上系统
2022-01-14 07:19:40

真正的问题在最后。但是,仅阅读这些内容可能无法告诉您我为什么感到困惑。我写这篇文章从一些定义、假设和推测开始,然后提出了实际问题。

我一直认为我知道其中的区别,但是当我收到类似这样的问题时:“如果我将收发器与 uC 放在一起,那现在是 SoC 吗?” 我一头雾水,不知道怎么回答。我记得有一次有人告诉我uC 本质上是一个 SoC但我有什么证据?但是arduino不在一个芯片上!我可以随时从“板上”取出 Atmeg 处理器!

当我在网上查询时,我会得到各种直接或间接证实或反驳我刚才所说的话的答案。这总是让我感到困惑,我责怪营销人员松散地使用这些术语,有时可以互换使用,以及追随他们的人。

所以我决定寻找这三个术语的基本含义:uC、SoC和DSP。因为例如,当我对电路中的电压感到困惑时,我总是回到物理基础,接地并不是真正的零,它只是一个“参考”,电压不是“绝对的”,它们是“亲戚”。这总是为我指明正确的方向。但是在谈论 uC 时没有任何根据。“微型”“控制器”是一种非常小的控制器,它是微米级的。但是我们没有纳米控制器这个术语,对吗?所以这种想法是没有用的。

我想回答的是:

  • uC 是一个带有其他外围设备和内存的处理单元,用于一般用途,对吗?
  • SoC是“芯片”上的完整“系统”。因此,无论您在单个芯片上放置什么系统,都是 SoC,对吧?
  • DSP是一个特定用途的处理单元,主要是数学运算,对吧?

    现在

  • 这是否意味着 uC 中的所有内容都必须在一个芯片中?因为如果是,那么 uC 实际上就是一个 SoC。也许很小,但确实如此。阿杜诺呢。如果 uC 在单个芯片上,它可能“可以”成为 SoC,但不是必须的(我在这里大量使用 arduino 作为示例)。

  • 所以 arduino 是一个 uC,如果我把它的所有组件放在另一个板上,然后我将 XBEE 添加到混合中。它仍然是一个uC,对吧?那么我们什么时候说现在它是一个 SoC 呢?只有当相同的东西放在一个芯片中而不是收集在一个板上时?

到目前为止,我认为上述问题以某种方式回答了自己,但我只是想确认一下,以便继续前进。当我尝试“从根本上”思考时,芯片或电路板“可以”相同,只是连接不同组件的电线。在这一点上,您如何定义组件?它是单个晶体管还是像 ADC 这样的电路?但我不想去那里。

下一个问题是这篇文章的真正含义:

  • uC本质上是SoC吗?SoC 的一种特殊情况,其要求之一是整个系统用于通用用途。
  • uC 是通用的(根据互联网),而 DSP 主要是对从现实世界收集的信号进行数学处理。但是DSP仍然是一个“处理器”,而一个uC包含一个“处理器”。我可以只放置一个带有一堆或外围设备的DSP(假设ADC和DAC,因为它们通常与它一起使用)并将混合称为uC?或者是一个 SoC(因为现在混合不是通用的,因此我们不能称它为 uC 但它仍然是一个 SoC)
3个回答

uC = 一个独立的处理芯片:CPU、RAM、ROM、一些外围设备。

DSP = 针对信号处理进行了优化的处理器芯片(可以是单独的 CPU,现在主要是 uC)。通常具有快速 MAC(乘法累加)、饱和数学和多个存储器接口。为了充分利用它,您通常需要深入了解它的特性,例如可以同时进行什么样的内存访问。(因此通常与制造商提供的经过微调的汇编库一起使用。)通常不适合与大型存储器一起使用(16 位地址总线通​​常就足够了)。

SOC = 处理器芯片(主要是 CPU,可能带有一些用于缓存的 RAM),其中包含曾经位于主处理器芯片之外的外围设备。顾名思义,这是一个移动的目标:今天的专用 SOC 中的功能可以在明天的主流芯片中找到。当前的 SOC 主要用于运行 Linux 级别的操作系统,并且包含您在此类系统上需要的大多数东西,除了 RAM 和 ROM(尽管通常包含一些 ROM,通常用于读取外部闪存)。

当今 SOC 中常见的外围设备示例(但正在进入 uC 中!):以太网端口、以太网交换结构、USB 包括。主机和 OTG、图形引擎、mpeg 解码、加密引擎、RAM 和闪存接口。

Arduino 是板级产品,因此根据定义它不是 uC、DSP 或 SOC,尽管它可以包含一个。基本的 Uno 包含一个 uC。

uC 不是 SOC(尽管可能存在边缘情况):uC 是独立的,并且(在当前技术水平上)并不意味着运行 Linux 级操作系统。SOC 不是独立的(需要 RAM 和 ROM)。

边界不是 100% 严格的,并且随着时间的推移而变化。大多数当前 CPU 的 CPU 和内存接口轻松超过了过去的 DSP,即使在他们的地盘上也是如此。但是今天的 DSP 在进行信号处理时比更通用的 CPU 更快、更便宜或耗电更少。这是制造商之间的竞赛,以利用最新的技术和需求状态制造最具吸引力的芯片。目前,这导致了上述 3 个最佳点(加上通用微处理器),但这会随着时间的推移而改变(DSP 不如 10 年前流行,IMO 因为音频级吞吐量现在很容易通过通用 CPU)。

如今,一种变得越来越普遍的特定类型的芯片是带有一些无线接口的 uC(或 SOC)。查看 ESP8266 和 ESP32 获取 WiFi 示例,查看 RN2483 获取 LoraWan。

uC 和 DSP 的定义非常简单。

uC 是一个处理核心,内部集成了内存(易失性和非易失性)。这与通常内部具有一些易失性存储器但没有非易失性存储器的微处理器相比。

DSP 是 uC 的分支。与典型的 uC 相比,DSP 通常具有非常好的模拟采样能力。DSP 还具有比 uC 更好的数学能力,并带有许多库,如 FFT 或自相关来利用这些数学能力。

SoC 更像是一个营销术语。SoC 是一个术语,当 uC 引入了足够的功能来制作单芯片或接近单芯片的解决方案时,他们会尝试使用该术语。当 uC 在板上集成了图形处理和图形驱动程序时,往往会找到术语 SoC。想想手机中的 ARM 芯片。它们包含图形。

我们所说的 SOC 通常具有比 uC 更强大的处理器内核。通常你可以在那里找到 ARM 内核。今天生产的几乎所有“大”ARM 处理器,如 Cortex A 系列,实际上都是 SOC。要运行像 Linux 这样的大型操作系统,您需要大量 RAM,因此 SOC 具有支持现代 SDRAM 芯片的外部 RAM 控制器。少量内置静态 RAM 仅在引导阶段用于运行引导加载程序和初始化外围设备和 SDRAM 控制器。

uC 通常是完整的一体式解决方案,带有内置静态 RAM(数量非常少)。小 RAM 和缺乏 MMU 会阻止在它们上使用大操作系统。如今,大多数 uC 都具有 8 位或 32 位内核。仅在遗留应用程序中使用的 16 位 uC。32 位 uSc 的时代始于 ARM M 系列内核。这些内核专为 uC 设计,除了指令集(ARM M 使用 THUMB 指令,ARM 指令集的子集)外,与大型 ARM 几乎没有共同之处。

DSP 术语是关于核心架构的。DSP 有不止一个 ALU,并且有所谓的 VLIW(超长指令字)指令集。VLIW 指令由许多针对不同 CPU 子系统的子指令(约 4 条)组成。例如,这样的长指令可以包含从内存中预取数据的指令、到专用乘法器 ALU 的乘法指令以及到通用 ALU 的算术指令。

您可以将 DSP 用作通用 uC,但主要用途是数字数据处理(不仅是信号,还有视频)。数字滤波器、媒体压缩/解压缩算法受益于 DSP 并行架构。

现代 CPU 内核通常具有矢量指令形式的排序操作系统“DSP 扩展”(您可以对多个,大约 8 个操作符执行相同的算术运算)。这与 DSP VLIW 指令不同。