单片机、MCU、DSP、FPGA、嵌入式的关系
嵌入式 是一个概念,没有准确的定义,各个书上都有各自的定义。但是主要思想是一样的,就是相比较 PC (Personal Computer)机这种通用系统来说,嵌入式系统是个专用系统,结构精简,在硬件和软件上都只保留需要的部分,而将不需要的部分裁去。所以嵌入式系统一般都具有便携、低功耗、性能单一等特性。
MCU、DSP、FPGA 这些都属于嵌入式系统的范畴,是为了实现某一目的而使用的工具。
MCU
简介
MCU (Microcontroller Unit)俗称” 单片机 “。经过这么多年的发展,早已不单单只有普林斯顿结构的 51 了,性能也已得到了很大的提升。因为 MCU 必须顺序执行程序**,所以适于做控制,较多地应用于工业。 ARM 本是一家专门设计 MCU 的公司,由于技术先进加上策略得当,这两年单片机市场份额占有率巨大。ARM 的单片机有很多种类,从低端 M0(小家电) 到高端 A8、A9(手机、平板电脑) 都很吃香,所以也不是 ARM 的单片机一定要上系统,关键看应用场合。
应用
单片机通常无操作系统,用于简单的控制,如电梯,空调等。
ARM 是一个英国的芯片设计公司,但是不生产芯片。只卖知识产权。
DSP
简介
DSP (Digital Signal Process)叫做数字信号处理器,它的结构与 MCU 不同,加快了运算速度,突出了运算能力。可以把它看成一个超级快的 MCU。低端的 DSP,如 C2000 系列,主要是用在电机控制上,不过 TI 公司好像称其为 DSC(数字信号控制器) 一个介于 MCU 和 DSP 之间的东西。高端的 DSP,如 C5000/C6000 系列,一般都是做视频图像处理和通信设备这些需要大量运算的地方。
应用
DSP 用于复杂的计算,像离散余弦变换、快速傅里叶变换,常用于图像处理,在数码相机等设备中使用。
FPGA
简介
FPGA (Field-Programmable Gate Array)叫做现场可编程逻辑阵列,本身没有什么功能,就像一张白纸,想要它有什么功能完全靠编程人员设计 (它的所有过程都是硬件,包括 VHDL 和 Verilog HDL 程序设计也是硬件范畴,一般称之为编写 “逻辑”)。可以把它变成 MCU,也可以变成 DSP。由于 MCU 和 DSP 的内部结构都是设计好的,所以只能通过软件编程来进行顺序处理,而 FPGA 则可以并行处理和顺序处理,所以比较而言速度最快。
应用
fpga 为现场可编程门阵列,以硬件描述语言 (Verilog 或 VHDL) 所完成的电路设计,可以经过简单的综合与布局,快速的烧录至 FPGA 上进行测试,是现代 IC (Integrated Circuit,集成电路)设计验证的技术主流。
你中有我,我中有你
为什么 MCU、DSP 和 FPGA 会同时存在呢? 那是因为 MCU、DSP 的内部结构都是由 IC 设计人员精心设计的,在完成相同功能时功耗和价钱都比 FPGA 要低的多。而且 FPGA 的开发本身就比较复杂,完成相同功能耗费的人力财力也要多。所以三者之间各有各的长处,各有各的用武之地。但是目前三者之间已经有融合的态势,ARM 的 M4 系列里多加了一个精简的 DSP 核,TI 的达芬奇系列本身就是 ARM+DSP 结构,ALTERA 和 XINLIX 新推出的 FPGA 都包含了 ARM 的核在里面。所以三者之间的关系是越来越像三基色的三个圆了。
嵌入式
嵌入式 是相对于台式电脑而言,系统可裁剪,形态各异,可能体积、功耗、成本受限、实时性要求高,如示波器,手机,平板电脑,全自动洗衣机,路由器、数码相机,这些设备中,虽然看不到台式机的存在,但是都有一个或多个嵌入式系统在工作。
根据对象体系的功能复杂性和计算处理复杂性,提供的不同选择。对于简单的家电控制嵌入式系统,采用简单的 8 位单片机就足够了,价廉物美,对于手机和游戏机等,就必须采用 32 位的 ARM 和 DSP 等芯片了。FPGA 是一种更偏向硬件的实现方式。
所以要通过学习成为**硬件工程师**,要从单片机开始,然后学习 ARM 和 DSP 之类。
市面上七大主流单片机
从上世纪 80 年代,由当时的 4 位 8 位发展到现在的各种高速单片机。
各个厂商们也在速度、内存、功能上此起彼伏,参差不齐。 同时涌现出一大批拥有代表性单片机的厂商:Atmel、TI、ST、MicroChip、ARM… 国内的宏晶 STC 单片机也是可圈可点。
下面为大家带来 51、MSP430、TMS、STM32、PIC、AVR、STC 单片机之间的优缺点比较及功能体现。
51 单片机
应用最广泛的 8 位单片机当然也是初学者们最容易上手学习的单片机,最早由 Intel 推出,由于其典型的结构和完善的总线专用寄存器的集中管理,众多的逻辑位操作功能及面向控制的丰富的指令系统,堪称为一代 “经典”,为以后的其它单片机的发展奠定了基础。
51 单片机之所以成为经典,成为易上手的单片机主要有以下特点:
特性:
从内部的硬件到软件有一套完整的按位操作系统,称作位处理器,处理对象不是字或字节而是位。不但能对片内某些特殊功能寄存器的某位进行处理,如传送、置位、清零、测试等,还能进行位的逻辑运算,其功能十分完备,使用起来得心应手。
同时在片内 RAM 区间还特别开辟了一个双重功能的地址区间,使用极为灵活,这一功能无疑给使用者提供了极大的方便,
乘法和除法指令,这给编程也带来了便利。很多的八位单片机都不具备乘法功能,做乘法时还得编上一段子程序调用,十分不便。
缺点:
(虽然是经典但是缺点还是很明显的)
AD、EEPROM 等功能需要靠扩展, 增加了硬件和软件负担
虽然 I/O 脚使用简单,但**高电平时无输出能力**,这也是 51 系列单片机的最大软肋
运行速度过慢,特别是双数据指针,如能改进能给编程带来很大的便利
51 保护能力很差,很容易烧坏芯片
应用范围:
目前在教学场合和对性能要求不高的场合大量被采用
使用最多的器件:8051、80C51
MSP430 单片机
MSP430 系列单片机是德州仪器 1996 年开始推向市场的一种 16 位超低功耗的混合信号处理器,给人们留下的最大的亮点是低功耗而且速度快, 汇编语言用起来很灵活, 寻址方式很多, 指令很少, 容易上手。
主要是由于其针对实际应用需求,把许多模拟电路、数字电路和微处理器集成在一个芯片上,以提供 “单片” 解决方案。其迅速发展和应用范围的不断扩大,主要取决于以下的特点…
特性:
**强大的处理能力,**采用了精简指令集 (RISC) 结构,具有丰富的寻址方式 ( 7 种源操作数寻址、 4 种目的操作数寻址)、简洁的 27 条内核指令以及大量的模拟指令; 大量的寄存器以及片内数据存储器都可参加多种运算; 还有高效的查表处理指令; 有较高的处理速度,在 8MHz 晶体驱动下指令周期为 125 ns 。这些特点保证了可编制出高效率的源程序
在运算速度方面,能在 8MHz 晶体的驱动下,实现 125ns 的指令周期。16 位的数据宽度、 125ns 的指令周期以及多功能的硬件乘法器 (能实现乘加) 相配合,能实现数字信号处理的某些算法 (如 FFT 等)。
超低功耗方面,MSP430 单片机之所以有超低的功耗,是因为其在降低芯片的电源电压及灵活而可控的运行时钟方面都有其独到之处。电源电压采用的是 1.8~3.6V 电压。因而可使其在 1MHz 的时钟条件下运行时, 芯片的电流会在 200~400uA 左右,时钟关断模式的最低功耗只有 0.1uA
缺点:
个人感觉不容易上手,不适合初学者入门,资料也比较少,只能跑官网去找
占的指令空间较大, 因为是 16 位单片机, 程序以字为单位, 有的指令竟然占 6 个字节。虽然程序表面上简洁, 但与 pic 单片机比较空间占用很大
应用范围:
在低功耗及超低功耗的工业场合应用的比较多
使用最多的器件:MSP430F 系列、MSP430G2 系列、MSP430L09 系列
TMS 单片机
这里也提一下 TMS 系列单片机,虽不算主流。由 TI 推出的 8 位 CMOS 单片机, 具有多种存储模式、多种外围接口模式, 适用于复杂的实时控制场合。虽然没 STM32 那么优秀,也没 MSP430 那么张扬,但是 TMS370C 系列单片机提供了通过整合先进的外围功能模块及各种芯片的内存配置,具有高性价比的实时系统控制。
同时采用高性能硅栅 CMOS EPROM 和 EEPROM 技术实现。低工作功耗 CMOS 技术,宽工作温度范围,噪声抑制,再加上高性能和丰富的片上外设功能,使 TMS370C 系列单片机在汽车电子,工业电机控制,电脑,通信和消费类具有一定的应用。
STM32 单片机
由 ST 厂商推出的 STM32 系列单片机,行业的朋友都知道,这是一款性价比超高的系列单片机,应该没有之一,功能及其强大。其基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的 ARM Cortex-M 内核。
同时具有一流的外设:1μs 的双 12 位 ADC,4 兆位 / 秒的 UART,18 兆位 / 秒的 SPI 等等,在功耗和集成度方面也有不俗的表现,当然和 MSP430 的功耗比起来是稍微逊色的一些,但这并不影响工程师们对它的热捧程度,由于其简单的结构和易用的工具再配合其强大的功能在行业中赫赫有名…
特性:
内核:单周期乘法和硬件除法
存储器:片上集成 32-512KB 的 Flash 存储器。6-64KB 的 SRAM 存储器
时钟、复位和电源管理:2.0-3.6V 的电源供电和 I/O 接口的驱动电压。POR、PDR 和可编程的电压探测器 (PVD)。4-16MHz 的晶振。内嵌出厂前调校的 8MHz RC 振荡电路。内部 40 kHz 的 RC 振荡电路。用于 CPU 时钟的 PLL。带校准用于 RTC 的 32kHz 的晶振
调试模式:串行调试 (SWD) 和 JTAG 接口。最多高达 112 个的快速 I/O 端口、最多多达 11 个定时器、最多多达 13 个通信接口
使用最多的器件:STM32F103 系列、STM32 L1 系列、STM32W 系列
PIC 单片机
PIC 单片机系列是美国微芯公司 (Microship) 的产品,共分三个级别, 即基本级、中级、高级,是当前市场份额增长最快的单片机之一,CPU 采用 RISC 结构, 分别有 33、35、58 条指令, 属精简指令集。
同时采用 Harvard 双总线结构, 运行速度快, 它能使程序存储器的访问和数据存储器的访问并行处理, 这种指令流水线结构, 在一个周期内完成两部分工作, 一是执行指令, 二是从程序存储器取出下一条指令, 这样总的看来每条指令只需一个周期, 这也是高效率运行的原因之一,此外 PIC 单片机之所以成为一时非常热的单片机不外乎以下特点:
特点:
具有低工作电压、低功耗、驱动能力强等特点。PIC 系列单片机的 I/O 口是双向的, 其输出电路为 CMOS 互补推挽输出电路。I/O 脚增加了用于设置输入或输出状态的方向寄存器, 从而解决了 51 系列 I/O 脚为高电平时同为输入和输出的状态。
当置位 1 时为输入状态, 且不管该脚呈高电平或低电平, 对外均呈高阻状态; 置位 0 时为输出状态, 不管该脚为何种电平, 均呈低阻状态, 有相当的驱动能力, 低电平吸入电流达 25mA, 高电平输出电流可达 20mA。相对于 51 系列而言, 这是一个很大的优点。
它可以直接驱动数码管显示且外电路简单。它的 A/D 为 10 位, 能满足精度要求。具有在线调试及编程 (ISP) 功能。
不足之处:
其专用寄存器 (SFR) 并不像 51 系列那样都集中在一个固定的地址区间内 (80~FFH), 而是分散在四个地址区间内。只有 5 个专用寄存器 PCL、STATUS、FSR、PCLATH、INTCON 在 4 个存储体内同时出现,但是在编程过程中, 少不了要与专用寄存器打交道, 得反复地选择对应的存储体, 也即对状态寄存器 STATUS 的第 6 位 (RP1) 和第 5 位 (RP0) 置位或清零。
数据的传送和逻辑运算基本上都得通过工作寄存器 W(相当于 51 系列的累加器 A) 来进行, 而 51 系列的还可以通过寄存器相互之间直接传送, 因而 PIC 单片机的瓶颈现象比 51 系列还要严重, 这在编程中的朋友应该深有体会。
使用最多的器件:PIC16F873、PIC16F877
AVR 单片机
AVR 单片机是 Atmel 公司推出的较为新颖的单片机, 其显著的特点为高性能、高速度、低功耗。它取消机器周期, 以时钟周期为指令周期, 实行流水作业。
AVR 单片机指令以字为单位, 且大部分指令都为单周期指令。而单周期既可执行本指令功能, 同时完成下一条指令的读取。通常时钟频率用 4~8MHz, 故最短指令执行时间为 250~125ns。
特点:
AVR 系列没有类似累加器 A 的结构, 它主要是通过 R16~R31 寄存器来实现 A 的功能。在 AVR 中, 没有像 51 系列的数据指针 DPTR, 而是由 X(由 R26、R27 组成)、Y(由 R28、R29 组成)、Z(由 R30、R31 组成) 三个 16 位的寄存器来完成数据指针的功能 (相当于有三组 DPTR)。
而且还能作后增量或先减量等的运行,而在 51 系列中, 所有的逻辑运算都必须在 A 中进行; 而 AVR 却可以在任两个寄存器之间进行, 省去了在 A 中的来回折腾, 这些都比 51 系列出色些
AVR 的专用寄存器集中在 00~3F 地址区间, 无需像 PIC 那样得先进行选存储体的过程, 使用起来比 PIC 方便。AVR 的片内 RAM 的地址区间为 0~00DF(AT90S2313) 和 0060~025F(AT90S8515、AT90S8535), 它们占用的是数据空间的地址, 这些片内 RAM 仅仅是用来存储数据的, 通常不具备通用寄存器的功能。
当程序复杂时, 通用寄存器 R0~R31 就显得不够用; 而 51 系列的通用寄存器多达 128 个 (为 AVR 的 4 倍), 编程时就不会有这种感觉。
AVR 的 I/O 脚类似 PIC, 它也有用来控制输入或输出的方向寄存器, 在输出状态下, 高电平输出的电流在 10mA 左右, 低电平吸入电流 20mA。这点虽不如 PIC, 但比 51 系列还是要优秀的…
缺点:
没有位操作,都是以字节形式来控制和判断相关寄存器位。
C 语言与 51 的 C 语言在写法上存在很大的差异,这让从开始学习 51 单片机的朋友很不习惯。
通用寄存器一共 32 个 (R0~R31), 前 16 个寄存器 (R0~R15) 都不能直接与立即数打交道, 因而通用性有所下降。而在 51 系列中, 它所有的通用寄存器 (地址 00~7FH) 均可以直接与立即数打交道, 显然要优于前者。
使用最多的器件:ATUC64L3U、ATxmega64A1U、AT90S8515
STC 单片机
说到 STC 单片机有人会说到,STC 也能算主流,估计要被喷了。我们基于它是国内还算是比较不错的单片机来说。
STC 单片机是宏晶生产的单时钟 / 机器周期的单片机,说白了 STC 单片机是 51 与 AVR 的结合体,有人说 AVR 是 51 的替代单片机,但是 AVR 单片机在位控制和 C 语言写法上存在很大的差异。而 STC 单片机恰恰结合了 51 和 AVR 的优点,虽然功能不及 AVR 那么强大,但是在 AVR 能找到的功能,在 STC 上基本都有,同时 STC 单片机是 51 内核,这给以 51 单片机为基础的工程师们提供了极大的方便,省去了学习 AVR 的时间,同时也不失 AVR 的各种功能…
STC 单片机是高速、低功耗、超强抗干扰的新一代 8051 单片机 51 单片机,指令代码完全兼容传统 8051,但速度快 8~12 倍,内部集成 MAX810 专用复位电路。4 路 PWM 、8 路高速 10 位 A、D 转换,针对电机电机 的供应商控制,强干扰场合,成为继 51 单片机后一个全新系列单片机…
特性:
下载烧录程序用串口方便好用,容易上手,拥有大量的学习资料及视频,最著名的要属于杜老师的那个视频了,好多对单片机有兴趣的朋友都是通过这个视频入门的,同时具有宽电压:5.5~3.8V,2.4~3.8V, 低功耗设计:空闲模式,掉电模式 (可由外部中断唤醒)
STC 单片机具有在应用编程,调试起来比较方便; 带有 10 位 AD、内部 EEPROM、可在 1T / 机器周期下工作,速度是传统 51 单片机的 8~12 倍,价格也较便宜
STC12C2052AD 系列为 2 通道,也可用来再实现 4 个定时器或 4 个外部中断,2 个硬件 16 位定时器,兼容普通 8051 的定时器。4 路 PCA 还可再实现 4 个定时器,具有硬件看门狗、高速 SPI 通信端口、全双工异步串口, 兼容普通 8051 的串口,同时还具有先进的指令集结构,兼容普通 8051 指令集。
**PS:**STC 单片机功能虽不及 AVR、STM32 强大,价格也不及 51 和 ST32 便宜,但是这些并并不重要,重要的是这属于国产单片机比较出色的单片机,但愿国产单片机能一路长虹…
使用最多的器件:STC12C2052AD
Freescale 单片机
主要针对 S08,S12 这类单片机,当然 Freescale 单片机远非于此。Freescale 系列单片机采用哈佛结构和流水线指令结构,在许多领域内都表现出低成本,高性能的的特点,它的体系结构为产品的开发节省了大量时间。此外 Freescale 提供了多种集成模块和总线接口,可以在不同的系统中更灵活的发挥作用! Freescale 单片机的特有的特点如下:
全系列:从低端到高端,从 8 位到 32 位全系列应有尽有,其推出的 8 位 / 32 位管脚兼容的 QE128,可以从 8 位直接移植到 32 位, 弥补单片机业界 8/32 位兼容架构中缺失的一环
多种系统时钟模块:三种模块,七种工作模式。多种时钟源输入选项,不同的 mcu 具有不同的时钟产生机制,可以是 RC 振荡器,外部时钟或晶振,也可以是内部时钟,多数 CPU 同时具有上述三种模块! 可以运行在 FEI,FEE,FBI,FBILP,FBE,FBELP,STOP 这七种工作模式
多种通讯模块接口:Freescale 单片机几乎在内部集成各种通信接口模块:包括串行通信接口模块 SCI,多主 I2C 总线模块, 串行外围接口模块 SPI,MSCAN08 控制器模块,通用串行总线模块 (USB/PS2)
具有更多的可选模块:具有 LCD 驱动模块,带有温度传感器,具有超高频发送模块,含有同步处理器模块,含有同步处理器的 MCU 还具有屏幕显示模块 OSD,还有少数的 MCU 具有响铃检测模块 RING 和双音多频 / 音调发生器 DMG 模块
可靠性高,抗干扰性强,多种引脚数和封装选择
低功耗、也许 Freescale 系列的单片机的功耗没有 MSP430 的低,但是他具有全静态的 “等待” 和 “停止” 两种模式,从总体上降低您的功耗! 新近推出的几款超低功耗已经与 MSP430 的不相上下!
使用最多的器件:MC9S12G 系列
FPGA 资源侠客的顺口溜也很到位
主流大众首选 51 单片机
超高性价比选择 STM32
MSP430 单片机超低功耗
国产支持 STC
MCU 为什么不能代替 DSP
微控制器单元(MCU)和数字信号处理器(DSP)是两种不同类型的处理器,它们被设计来满足不同的应用需求。
设计目的不同:
MCU(如 ARM Cortex 系列)通常设计用于控制应用,强调的是低成本、低功耗和足够的处理能力来执行一般的控制任务。
DSP 是专门为数字信号处理任务设计的,如高速数学运算(特别是浮点运算)和滤波操作,它们在设计时就考虑了这些任务的高效率。
处理能力:
DSP 通常具有更高的运算能力,尤其是在执行浮点运算和复杂数学函数方面。它们可能拥有专门的硬件加速器,比如乘法 – 累加(MAC)单元,来提高这些运算的速度。
指令集和架构
DSP 可能有专门的指令集和架构优化,以提高信号处理算法的执行效率。而 MCU 通常使用更通用的指令集,适合各种类型的应用。
并行处理:
许多 DSP 设计了并行处理能力,可以同时执行多个运算,这对于实时信号处理尤其重要。而 MCU 可能没有这样的并行处理单元。
内存带宽:
DSP 可能具有更高的内存带宽,这对于处理大量数据的信号处理应用至关重要。MCU 的内存带宽通常较低,更适合控制任务。
外设和接口:
MCU 通常集成了更多的外设和接口,如 GPIO、SPI、I2C 等,用于与各种传感器和执行器进行通信。而 DSP 可能专注于计算能力,外设较少。
功耗:
MCU 由于设计用于嵌入式控制应用,通常具有较低的功耗。相比之下,DSP 由于其高处理能力,可能消耗更多的电力。
成本:
MCU 因其广泛应用和生产规模,通常成本较低。而 DSP 由于其特殊的设计和制造工艺,成本可能更高。
开发工具和生态系统:
MCU 和 DSP 可能拥有不同的开发工具和软件生态系统。MCU 的开发环境可能更通用,而 DSP 的开发工具可能更专注于信号处理。
应用场景:
MCU 适合于简单的控制应用,如家电控制、简单的工业自动化等。而 DSP 适合于需要高速、高精度数字信号处理的应用,如音频处理、通信系统、高级图像处理等。
总之,MCU 和 DSP 各有其优势和应用场景。虽然在某些情况下,MCU 可以通过软件实现一些 DSP 的功能,但在需要高性能数字信号处理的场合,DSP 仍然是更合适的选择。
参考资料:
- 根据【FPGA 技术江湖】整理笔记,主要用于理清思路,原文请看 mp.weixin.qq.com。
- 了解 DSP 可参考 DSP 到底是个什么鬼?看完你就懂了_dsp 内核 – CSDN 博客。
作者:Eternal-Student