真正的含义是:微控制器(uC),片上系统(SoC)和数字信号处理器(DSP)?


9

实际问题在最后。但是,仅阅读一本书可能并不会告诉您我为什么感到困惑。我写这篇文章时先说一些定义,假设和推测,然后问实际问题。

我一直以为我知道区别,但是当我遇到类似的问题时:“如果我将收发器与uC一起使用,那么现在是SoC吗?” 我一团糟,我不知道该怎么回答。我记得曾经被告知uC本质上是SoC。但是我有什么证明?但是arduino不在单个芯片上!我可以随时从面板上取出Atmeg处理器!

当我在线检查时,会得到各种答案,这些答案证实或与我刚才所说的直接或间接所说的相矛盾。这总是让我感到困惑,我只怪推销员,他们只是推销那些松散地使用这些术语(有时可以互换使用)的人以及追随他们的人。

因此,我决定寻找这三个术语的基本含义:uC,SoC和DSP。因为例如,当我对电路中的电压感到困惑时,我总是回到物理基础上,接地不是真的为零,它只是一个“参考”,电压不是“绝对”,它们是一个“相对”。这总是将我指向正确的方向。但是谈论uC毫无根据。“微”“控制器”是一个很小的控制器,以微米为单位。但是我们没有纳米控制器这个词,对吗?因此,这种思维方式无济于事。

我想回答的是以下内容:

  • uC是一个具有其他外围设备和存储器的处理单元,可用于一般用途,对吗?
  • SoC是“芯片”上的完整“系统”。因此,无论您将系统安装在单个芯片上,都是SoC,对吗?
  • DSP是特定用途的处理单元,主要是数学运算,对吗?

    现在

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

  • 因此,如果我将arduino的所有组件都放在另一个板上,然后将XBEE添加到混合中,那么arduino就是一个uC。它仍然是uC,对吗?那么我们什么时候可以说现在是SoC?仅当将相同的东西放在单个芯片中而不是放在板上时?

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

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

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

叫它什么都没关系,“任何其他名字的玫瑰都会闻起来很香!” SoC是一个销售术语,意思是“其他人向您出售零件,但我们向您出售整个系统”。uC通常就像一个uP +存储器,通常是ADC。DSP是针对DSP进行了优化的,您一定会相信它,并且总是具有硬件乘法器,但是如今,通常是程序存储器,有时还有ADC / DAC,几乎是SoC。但是在很大程度上,大多数可以被描述为其他。不要流汗,当然也不要打人。
Neil_UK

2
我知道使用u是众所周知的,使用u并没有真正的问题,但是如果您想创建µ,请按一下AltGr + M或解决问题⌘ + M
Magic Smoke

1
“微型”是历史包g;“微型”控制器来自“微型”计算机,“微型”计算机与具有冰箱大小的“微型”计算机和占据整个房间的“微型”计算机区分开。
user253751 '16

Answers:


11

uC =独立处理芯片:CPU,RAM,ROM,某些外围设备。

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

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

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

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

uC不是SOC(尽管可能会出现bordeline情况):uC是独立的,并且(在当前技术水平上)并不意味着要运行Linux级别的OS。SOC不是独立的(需要RAM和ROM)。

边界不是100%正确,并且会随着时间推移而变化。当前大多数CPU的De CPU和内存接口都轻松超越了昨天的DSP,即使在它们的地盘上也是如此。但是,如今的DSP在进行信号处理时比更多的通用CPU更快,/或更便宜或更省电。制造商之间的竞争是使用最新技术和需求状态来制造最具吸引力的芯片。目前,这导致了上述3个最佳点(加上通用微处理器),但是随着时间的推移,这种情况会发生变化(与IMO相比,DSP不如10年前流行),因为音频级别的吞吐量现在可以轻松地实现。通用CPU)。

如今,越来越常见的一种特定类型的芯片是带有某些无线接口的uC(或SOC)。检查ESP8266和ESP32的WiFi示例,并查看RN2483的LoraWan。


2

uC和DSP具有非常简单的定义。

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

DSP是uC的副产品。与典型的uC相比,DSP通常具有非常好的模拟采样能力。DSP还具有比uC更好的数学功能,并带有许多库(例如FFT或自相关)以利用这些数学功能。

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


那么,您是说DSP也包含ADC吗?
himura

@himura uC具有ADC,但DSP具有非常好的ADC。例如,Arduino能够在10位上达到约10kHz的采样率。dsPIC33是一种DSP,能够以10位的速率提供1.1MHz的采样率。这快了两个数量级。
vini_i 16-10-29

我以为DSP只是没有任何ADC功能的处理单元。但是现在看起来更像一个完整的系统。谢谢
himura

1
我认为这个答案是错误的。有很多没有转换器的DSP芯片。DSP和通用CPU之间的主要区别是存储器体系结构。DSP具有多个可以并行访问的存储器。参见en.wikipedia.org/wiki/Harvard_architecture
Hilmar

@Hilmar您能提供一些没有转换器的DSP参考吗?我喜欢这一点
himura,2016年

0

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

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

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

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

现代的CPU内核通常具有矢量指令形式的os“ DSP扩展”(您可以对大约8个运算符执行相同的算术运算)。它与DSP VLIW指令不同。


“今天生产的几乎所有ARM处理器实际上都是SOC”吗?您是否考虑像LPC810 SOC那样的Cortex-M0芯片?
Wouter van Ooijen

我在谈论uC时分别提到了Cortex M系列。皮质M显然是uC。
e_asphyx
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.