DSP

PC、单片机、DSP、FPGA、ARM资源对比

2019-07-13 11:11发布

  首先,“嵌入式”这是个概念,没有准确的定义。但是主要思想是一样的,就是相比较PC机台式电脑这种通用系统来说,嵌入式系统是个系统可裁剪(基于OS(winCE、linux、vxworks等)),结构精简,在硬件和软件上都只保留需要的部分,而将不需要的部分裁去,实时性要求高???。所以嵌入式系统一般都具有便携、低功耗、性能单一等特性。如示波器,手机,平板电脑,全自动洗衣机,路由器、数码相机,这些设备中,虽然看不到台式机的存在,但是都有一个或多个嵌入式系统在工作。
然后,MCU、DSP、FPGA这些都属于嵌入式系统的范畴,是为了实现某一目的而使用的工具。 MCU经过这么多年的发展,早已不单单只有冯诺依曼/普林斯顿结构的51了,性能也已得到了很大的提升。因为MCU必须顺序执行程序,所以适于做控制,较多地应用于工业。 而ARM本是一家专门设计MCU的公司,由于技术先进加上策略得当,这两年独霸单片机市场。ARM的单片机有很多种类,从低端M0(小家电)到高端A8、A9(手机、平板电脑)都很吃香,所以也不是ARM的单片机不一定上操作系统 单片机和DSP都有自己的精简指令集???,不加操作系统也可以跑。 
DSP叫做数字信号处理器digital signal processor,它的结构与MCU不同,加快了运算速度(由于硬件乘法器和哈弗总线),突出了运算能力。可以把它看成一个超级快的MCU。低端的DSP,如C2000系列,主要是用在电机控制上,不过TI公司好像称其为DSC(数字信号控制器)一个介于MCU和DSP之间的东西。高端的DSP,如C5000/C6000系列,一般都是做视频图像处理和通信设备这些需要大量运算的地方。 为什么DSP硬件乘法器和哈弗总线运算速度快? 数据说明:
FPGA叫做现场可编程逻辑阵列,本身没有什么功能,就像一张白纸,想要它有什么功能完全靠编程人员设计。如果你够NB,你可以把它变成MCU,也可以变成DSP。由于MCU和DSP的内部结构都是设计好的,所以只能通过软件编程来进行顺序处理,而FPGA则可以并行处理和顺序处理???所以比较而言速度最快。 fpga以硬件描述语言(Verilog 或 VHDL)所完成的电路设计,可以经过简单的综合与布局,快速的烧录至 FPGA 上进行测试,是现代 IC 设计验证的技术主流。  
为什么MCU、DSP和FPGA会同时存在? 因为MCU、DSP的内部结构都是由IC设计人员精心设计的,在完成相同功能时功耗和价钱都比FPGA要低的多。而且FPGA的开发本身就比较复杂,完成相同功能耗费的人力财力也要多。所以三者之间各有各的长处,各有各的用武之地。但是目前三者之间已经有融合的态势,ARM的M4系列里多加了一个精简的DSP核,TI的达芬奇系列本身就是ARM+DSP结构,ALTERA和XINLIX新推出的FPGA都包含了ARM的核在里面。所以三者之间的关系是越来越像三基 {MOD}的三个圆了。
一句话以蔽之“你中有我,我中有你”。   单片机通指8位、16位、32位CPU含常用外围设备如RAM、Timer、AD、UART等通信接口的控制器MCU,一般主频在100M以下,有几十个厂家生产,型号数万种。通常无操作系统,用于简单的控制,如电梯,空调等。   80x86是intel公司的微处理器系列。 价格:Intel 奔腾 G4560报价500人民币;英特尔(Intel) i5 8400 酷睿六核报价1800人民币。 晶体管数量:8086有29K个晶体管;Pentium有3.1M个晶体管;Corei7有1.3亿个晶体管。 寄存器数量:8086有8个16位通用寄存器。后来扩展,8个32位的寄存器 The 80386 contains a total of sixteen registers that are of interest to the applications programmer. these registers may be grouped into these basic categories:
1. General registers. These eight 32-bit general-purpose registers are used primarily to contain operands for arithmetic and logical operations.
2. Segment registers. These special-purpose registers permit systems software designers to choose either a flat or segmented model of memory organization. These six registers determine, at any given time, which segments of memory are currently addressable.
3. Status and instruction registers. These special-purpose registers are used to record and alter certain aspects of the 80386 processor state.
在80x86 CPU中进行的所有计算几乎都和寄存器有关。例如,将两个变量相加,把它们的和存入第3个变量中,必须先将其中一个变量装入一个寄存器中,并将第2个操作数和寄存器的值相加,然后将寄存器中的值存入目的变量。寄存器在每次计算中都充当媒介。因此,在80x86汇编语言程序中寄存器是非常重要的。 逻辑运算单元:注意到x86上也有很多硬件运算资源(FPGA的主要资源),如ALU??? 内存:“PC系列微机内存在性质上不完全一致”,80286有24根地址线,内存为2^24=16MB,80386有32根地址线,内存为2^32=4096MB, CPU由运算器(ALU)、控制器(CU)和内部寄存器(R)三部分组成? https://blog.csdn.net/the_scent_of_th_soul/article/details/51925440 控制器是全机的指挥中心,它负责把指令逐条从存储器中取出,经译码分析后向全机发出取数、执行、存数等控制命令,以完成程序所要求的功能。控制器包括以下几个部分: a.指令寄存器IR:用来存放从存储器取出的将要执行的指令码。 
b.指令译码器ID:对指令寄存器IR中的指令操作码字段进行译码,以确定该指令执行什么操作。指令通常由操作码和操作数两部分组成。操作码表示该指令完成的操作,操作数表示参加操作的数本身或操作数所在地址。
c.可编程逻辑阵列PLA:用于产生取指令和执行指令所需要的各种微操作控制信号,并经过控制总线CB送往有关部件,使计算机完成相应的操作。
--------------------- 
  PC三种总线:  地址总线AB:在对存储器或I/O端口进行访问时,传送由CPU提供的要访问的存储单元或I/O端口的地址信息。AB是单向总线。 
一个CPU有N根地址线,则可以说这个CPU的地址总线宽度为N,这样的CPU可以寻找2的N次方个内存单元。 数据总线DB:CPU与内存或其他器件之间的数据传送是通过数据总线来完成的,数据总线的宽度决定了CPU和外界的数据传送速度。8根数据总线一次可传送一个字节。8088CPU的数据总线宽度为8,8086CPU的数据总线宽度为16。例如,CPU想向内存中写入数据89D8。 因为8088要分两次传送,第一次传送D8,第二次传送89。8086可一次性将数据传入内存。DB是双向总线 控制总线CB:控制总线是一些不同的控制线的集合。有多少根控制总线就意味着CPU提供了对外部器件的多少种控制,控制总线的宽度决定了CPU对外部器件的控制能力。   “主存(内存)是x86CPU外的存储区域,堆栈是在主存(内存)中开辟的一片数据存储区” 推论:寄存器是CPU中的资源,没有地址?? “在x86列机中, 8086只有20根地址线, 直接寻址能力为2^20B=1MB, 物理地址编号从0~0FFFFF H。CPU与存储器交换信息必须使用20位的物理地址。 但是,8086 内部却是16位结构, 它里面与地址有关的寄存器全部都是16 位的,因此,它只能进行 16位地址运算, 表示16位地址, 寻找操作数的范围最多也只能是64KB。 为了能表示20位物理地址,8086 的设计人员提出了将主存分段使用的方案: 将 1MB 的存储器按64KB分段, 设置 4 个段寄存器保存当前可使用段的段首址。访问存储单元时,CPU选择某一适当的段寄存器,与本段中某一待访问存储单元的偏移地址相加, 则得到该单元的20位物理地址。寻找操作数的范围就可达到 1MB。 随着x86系列机的发展, 特别是32位CPU的推出, 它已能全面支持32位的数据、指令和寻址方式, 可访问 4GB 的存储空间。 但为了与8086兼容, 一直保留了主存的分段使用技术, 段寄存器也由4个增加至 6个并提供了实方式。”     DSP DSP(digital signal processor)是一种独特的微处理器,有自己的完整指令系统,是以数字信号来处理大量信息的器件。其最大特点是内部有专用的硬件乘法器哈佛总线结构对大量的数字信号处理的速度快。一个数字信号处理器在一块不大的芯片内包括有控制单元、运算单元、各种寄存器以及一定数量的存储单元等等,在其外围还可以连接若干存储器,并可以与一定数量的外部设备互相通信,有软、硬件的全面功能,本身就是一个微型计算机。DSP采用的是哈佛设计,即数据总线和地址总线分开,使程序和数据分别存储在两个分开的空间,允许取指令和执行指令完全重叠。也就是说在执行上一条指令的同时就可取出下一条指令,并进行译码,这大大的提高了微处理器的速度。另外还允许在程序空间和数据空间之间进行传输,因为增加了器件的灵活性。其工作原理是接收模拟信号,转换为0或1的数字信号,再对数字信号进行修改、删除、强化,并在其他系统芯片中把数字数据解译回模拟数据或实际环境格式。它不仅具有可编程性,而且其实时运行速度可达每秒数以千万条复杂指令程序,远远超过通用微处理器,。它的强大数据处理能力和高运行速度,是最值得称道的两大特 {MOD}。由于它运算能力很强,速度很快,体积很小,而且采用软件编程具有高度的灵活性,因此为从事各种复杂的应用提供了一条有效途径。根据数字信号处理的要求,DSP芯片一般具有如下主要特点: (1)在一个指令周期内可完成一次乘法和一次加法;(2)程序和数据空间分开,可以同时访问指令和数据;(3)片内具有快速RAM,通常可通过独立的数据总线在两块中同时访问;(4)具有低开销或无开销循环及跳转的硬件支持;(5)快速的中断处理和硬件I/O支持;(6)具有在单周期内操作的多个硬件地址产生器;(7)可以并行执行多个操作;(8)支持流水线操作,使取指、译码和执行等操作可以重叠执行。 下图为DSP芯片典型结构,以及典型定点型乘法器data path 关键部件:乘法器、ALU、(移位)寄存器 注意DSP功能划分,其CPU中不包含存储和总线,core是什么??? 典型DSP的CPU参数(TI公司):   典型DSP芯片参数:         DSP存储: 存储空间使用权限: DSP芯片兼容、一致性问题:同厂商产品可能兼容。         FPGA 其他公司(Xilinx和Altera)FPGA芯片不同型号资源: 其中,基本单元分别为CLB(configurable logic block)和EAB(embedded array block) 在FPGA芯片上搭建一个处理器:《Advanced FPGA Design - Architecture, Implementation, and Optimization-IEEE (2007)》17章 FPGA是(Field ProgrammableGate Array)现场可编程门阵列的缩写,它是在PAL、GAL、PLD等可编程器件的基础上进一步发展的产物,是专用集成电路(ASIC)中集成度最高的一种。FPGA采用了逻辑单元阵列LCA(Logic Cell Array)这样一个新概念,内部包括可配置逻辑模块CLBConfigurableLogic Block)、输出输入模块IOBInputOutput Block)和内部连线(Interconnect)三个部分。用户可对FPGA内部的逻辑模块和I/O模块重新配置,以实现用户的逻辑。它还具有静态可重复编程和动态在系统重构的特性,使得硬件的功能可以像软件一样通过编程来修改。作为专用集成电路(ASIC)领域中的一种半定制电路,FPGA既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。可以毫不夸张的讲,FPGA能完成任何数字器件的功能,上至高性能CPU,下至简单的74电路,都可以用FPGA来实现。FPGA如同一张白纸或是一堆积木,工程师可以通过传统的原理图输入法,或是硬件描述语言自由的设计一个数字系统。通过软件仿真,我们可以事先验证设计的正确性。在PCB完成以后,还可以利用FPGA的在线修改能力,随时修改设计而不必改动硬件电路。使用FPGA来开发数字电路,可以大大缩短设计时间,减少PCB面积,提高系统的可靠性。FPGA是由存放在片内RAM中的程序来设置其工作状态的,因此工作时需要对片内的RAM进行编程。用户可以根据不同的配置模式,采用不同的编程方式。加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,配置完成后,FPGA进入工作状态。掉电后,FPGA恢复成白片,内部逻辑关系消失,因此,FPGA能够反复使用。FPGA的编程无须专用的FPGA 编程器,只须用通用的EPROM、PROM编程器即可。当需要修改FPGA功能时,只需换一片EPROM即可。这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能。因此,FPGA的使用非常灵活。可以说,FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。目前FPGA的品种很多,有XILINX的XC系列、TI公司的TPC系列、ALTERA公司的FIEX系列等。2006年工艺达到65nm。 FPGA以并行运算为主,以硬件描述语言(Verilog 或 VHDL)来实现;相比于PC或单片机(无论是冯诺依曼结构还是哈佛结构)的顺序操作有很大区别。 FPGA与指令集微处理器的区别:《Reconfigurable computing_ the theory and practice of FPGA-based computation(2007)》19章 FPGA通常与定制ASIC形成对比: 但是,如果由于应用要求或其他因素的变化而要求使用可编程解决方案,则必须仔细研究应用程序,以确定是否可以使用可编程处理器微处理器或DSP满足性能要求。可编程处理器的代码开发比FPGA或ASIC所需的工作量要小得多,因为用C语言或Java语言开发的软件比用Verilog或VHDL编写并行描述要少得多。 此外,可编程处理器的编码和调试环境要比它们的HDL对应环境丰富得多。微处理器通常也比FPGA便宜得多。如果微处理器能够满足应用要求(性能、功率等),它几乎总是最好的选择。 一般来说,fpgas非常适合于要求极高性能和可重编程性的应用,用于与许多其他设备(所谓的胶逻辑)通信的接口组件,以及用于实现批量硬件系统,使其规模经济可行。它们不太适合将以尽可能大的产量生产的产品,也不适合必须以尽可能小的功率运行的系统。   ARM(Advanced RISC Machines)是微处理器行业的一家知名企业,一个英国的芯片设计公司,但是不生产芯片。只卖知识产权。设计了大量高性能、廉价、耗能低的RISC处理器、相关技术及软件。ARM架构是面向低预算市场设计的第一款RISC微处理器,基本是32位单片机的行业标准,它提供一系列内核、体系扩展、微处理器和系统芯片方案,四个功能模块可供生产厂商根据不同用户的要求来配置生产。由于所有产品均采用一个通用的软件体系,所以相同的软件可在所有产品中运行。目前ARM在手持设备市场占有90%以上的份额,可以有效地缩短应用程序开发与测试的时间,也降低了研发费用。ARM是32位的单片机,其内部硬件资源的性能较高,可以加载操作系统成为其主要特点,有了操作系统,就可以像pc机那样多任务实时处理,就是同一时间内能完成多个任务,而且不会互相影响。  例如:iPhone 5s,CPU是A7 寄存器有6000多位(31个64位寄存器,加上32个128位寄存器) iPhone 5s的内存是1GB,约为80亿位(bit)。这意味着,高性能、高成本、高耗电的设计可以用在寄存器上,反正只有6000多位,而不能用在内存上。因为每个位的成本和能耗只要增加一点点,就会被放大80亿倍。      

单片机(以51为例)

“51单片机是对所有兼容Intel 8031指令系统单片机的统称。该系列单片机的始祖是Intel的8004单片机,后来随着Flash rom技术的发展,8004单片机取得了长足的进展,成为应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。很多公司都有51系列的兼容机型推出,今后很长的一段时间内将占有大量市场。51单片机是基础入门的一个单片机,还是应用最广泛的一种。需要注意的是51系列的单片机一般不具备自编程能力。” ROM、RAM、flash、时钟晶振、接口资源 “”       区别: ARM具有比较强的事务管理功能,可以用来跑界面以及应用程序等,其优势主要体现在控制方面;ARM是32位的单片机,其内部硬件资源的性能较高,可以加载操作系统成为其主要特点,有了操作系统,就可以像pc机那样多任务实时处理,就是同一时间内能完成多个任务,而且不会互相影响。 DSP主要是用来计算的,比如进行加密解密、调制解调等,优势是强大的数据处理能力和较高的运行速度; FPGA可以用VHDL或verilog HDL来编程,灵活性强,由于能够进行编程、除错、再编程和重复操作,因此可以充分地进行设计开发和验证。当电路有少量改动时,更能显示出FPGA的优势,其现场编程能力可以延长产品在市场上的寿命,而这种能力可以用来进行系统升级或除错。 DSP VS FPGA DSP是通用的信号处理器,用软件实现数据处理;FPGA用硬件实现数据处理。DSP成本低,算法灵活,功能性强,而FPGA的实时性好,成本较高,FPGA适合于控制功能算法简单且含有大量重复计算的工程使用,DSP适合于控制功能复杂且含有大量计算任务的工程应用。 DSP是软件实现算法,FPGA是硬件实现算法,所以FPGA的处理速度会更高;FPGA比DSP快的一个重要原因是FPGA可以实现并行运算,而DSP由于硬件结构条件限制,主要还是依靠软件来提取指令执行,理解为还是串行执行的【大嘴说说:DSP所谓的并行执行主要还是得自己开通软件流水,或者说是自己写并行代码,而非硬件结构本身】。   集成电路设计等级:       参考文献: 1、《80x86汇编语言程序设计教程(清华黑皮版)》; 2、[80X86汇编语言程序设计].王元珍.文字版 3、《DSP-Processor-Fundamentals-Architectures-and-Features》 4、《深入理解计算机系统》第三版 第四章 5、《新概念51单片机C语言教程.入门、提高、开发》 6、《DOS原理与结构》 7、《INTEL 80386 PROGRAMMER'S REFERENCE MANUAL 1986》 8、《Dsp-Digital-Signal-Processing-With-Fpga》 9、《DSP-Processor-Fundamentals-Architectures-and-Features》 10、《Advanced FPGA Design - Architecture, Implementation, and Optimization-IEEE (2007)》 11、《Reconfigurable computing_ the theory and practice of FPGA-based computation(2007)》       价格rmb 速度指标(MIPS百万条指令每秒,晶振频率) 寄存器 存储器 应用 特 {MOD} 功耗/芯片寿命 80x86         PC 冯诺依曼结构   ARM   主频百M~几G     手机、平板电脑 哈佛总线 比x86功耗低 DSP   50~200MIPS     图像处理     8051   1~10MIPS     工业控制     FPGA       flash,EEPROM 原型设计,相对ASIC价格低 FPGA对半导体产业最大的贡献创立了无生产线(Fabless)模式 FPGA功耗高/CPLD相对功耗低     MIPS计算公式: 如果说的是CPU、GPU这样的芯片,寿命其实是非常长的,但它也不是一个可以永久工作的芯片,因为即使是在正常使用中,CPU中的电子通过动能不断冲击着电路中的金属原子,这个过程中会导致其一小部分脱离,也就是常说的“电子迁移”。尽管很长一段时间来看这种影响很微小,但是随着CPU工作时间的增长,电子迁移就会开始导致电路变形,发生短路漏电和干扰等现象,再接下来可能就会导致CPU运算出错、功能异常进而彻底报销。电子迁移现象会随着CPU工作频率和工作温度的提高更加严重,也就是说为了CPU的寿命和稳定,厂商一般不推荐用户对CPU芯片大幅度超频,超频所带来的频率增加和温度提高都会折损CPU的寿命。对于品质合格的CPU芯片来说8-10年。   如果说是SSD上用的闪存芯片,那就有相对有限的寿命了,闪存芯片主要分为SLC、MLC和TLC三种,SLC寿命最长,速度最快,但是成本最高,TLC则相反。闪存的寿命磨损就在于闪存单元的写入-擦除,一般来说,SLC闪存可进行100000次写入-擦除循环,MLC可进行10000次左右。不要觉得可怕,得益于越来越先进的主控芯片,日常使用下正常的闪存芯片没那么容易用坏,即使是TLC闪存,寿命达到8年以上也没有问题,使用几年后一般都会掉速,不过实际影响并不大。其实相比闪存芯片,SSD上的主控反而更有可能先坏掉。所以我们不用太在意闪存芯片的寿命,一般在你换下一个SSD或者手机时,它就直接淘汰掉了。不过对于7*24小时工作的服务器来说,非常不建议用SSD,因为在这种高强度工作环境下的闪存芯片寿命会大打折扣,即使是机械硬盘,用个两三年挂掉的几率也很高。 至于电脑上的内存芯片(RAM),由于其电容存储机制,只要是正常没有缺陷的芯片,寿命非常长,要不然绝大多数内存条都是终身保,只要不是不当超频,静电损坏,人为破坏,正常的内存寿命几乎不用担心。 其实相比电脑各类芯片的寿命,我们更应该关心主板和显卡上电容电感的寿命,电源的品质和整体散热水平,这些往往才是影响电脑寿命的关键。