DSP

DSP 和 MCU

2019-07-13 11:37发布

以前刚学习单片机时,经过一定的编程,能实现很多不同的功能,当时就觉得单片机真的是神通广大。后来接触到DSP,发现DSP处理数字在通信上,更加方便。于是我就很好奇的问自己,DSP和单片机,究竟有什么区别:

1 、存储器结构不同
      单片机使用冯.诺依曼存储器结构。这种结构中,只有一个存储器空间通过一组总线(一个地址总线和一个数据总线)连接到处理器核。大多数DSP采用了哈佛结构,将存储器空间划分成两个,分别存储程序和数据。

2 、定点计算
    大多数DSP使用定点计算,而不是使用浮点。为了不使用浮点机器而又保证数字的准确,DSP处理器在指令集和硬件方面都支持饱和计算、舍入和移位。

3 、专门的寻址方式
      DSP处理器往往都支持专门的寻址模式.这些专门的寻址模式在GPP(General Purpose Processors, 通用处理器)中是不常使用的,只有用软件来实现。

4、对密集的乘法运算的支持
    单片机不是设计来做密集乘法任务的,即使是一些现代的GPP,也要求多个指令周期来做一次乘法。而DSP处理器使用专门的硬件来实现单周期乘法。DSP处理器还增加了累加器寄存器来处理多个乘积的和。累加器寄存器通常比其他寄存器宽,增加称为结果bits的额外bits来避免溢出。

5 、零开销循环
    单片机是Single-chip Microcomputer的较准确译法,但最能准确反映单片机设计思想、并且有长远技术眼光的词汇是Microcontroller(微控制器)。 之所以出现Single-chip Microcomputer一词,实在是因为早期,甚至到MSC-51时期,单片机准确地体现了Single-chip Microcomputer的形态和内容。然而发展到MSC-96,发展到新一代80C51、M68HC05、M68HC11系列单片机时,在单片机中着力扩展了各种控制功能,如:A/D、PWM、PCA计数器捕获/比较逻辑、高速I/O口、WDT等,已突破了Microcomputer的传统内容, 朝Microcontroller的内涵发展。因此,目前已到了该给单片机正名的时候了,国外已逐渐统一成Microcontroller。如果我们仍然保留单片机这一习惯叫法,则应把它认为是一个单片形态的微控制器,或直接称作微控制器或单片微控制器,而不要再使用单片微型计算机或单片计算机这些词汇了。   MCU和DSP最近在制作电子类产品方面都应用广泛,DSP在数字信号处理、通信领域应用较多,MCU在自动控制、智能信号上应用广泛。    处理器通常可以分为三大类,就是数字信号处理器-DSP、微控制器-MCU,还有中央处理器-CPU。为便于大家理解它们在应用中的差异,我们不妨作这样的比喻:DSP好比是一次方程式赛车的引擎,追求的是高速高效;MCU好比是摩托车引擎,追求的是灵巧便捷;CPU则好比是豪华家用车的引擎,追求的是面面俱到。当然DSP与MCU的融合将相应成辉,可以满足更多更广的应用需求。       MCU的特点:
   适合实时控制和操作任务
   可预测的执行周期
   擅长中断处理,特别是外部异步事件
   比较多的I/O功能,
   程序较大
   丰富的片上外设    DSP的特点:
   适合处理实时连续的数据流;
   针对多重密集算法的数学引擎;
   可观的MIPS性能;
   可预测的执行时间;
   适合处理小型和重复性的工作;
   代码体积小、芯片体积小等   ASIC/FPGA/MCU/DSP区别: 这么说吧,ASIC原本就是专门为某一项功能开发的专用集成芯片,比如你看摄像头里面的芯片,小小的一片,集成度很低,成本很低,可是够用了。一个山寨摄像头卖才卖30块,买一片ARM多少钱?后来ASIC发展了一些,称为半定制专用集成电路,相对来说更接近FPGA,甚至在某些地方,ASIC就是个大概 念,FPGA属于ASIC之下的一部分。 FPGA基本就是高端的CPLD(Complex Programmable Logic Device复杂可编程逻辑器件),两者非常接近。我现在用的是ALTERA DE2开发板的CYCLONE系列FPGA。这种器件是用逻辑门来表述性能的。本身他就是一堆的逻辑门,通过硬件描述语言,比如verilogHDL把它转成电路连接,从最基本的逻辑门层面上连接成电路(参见数字电路书上那些全加器触发器什么的)。应该说,虽然看起来像一块CPU,其实是完全硬件实现的。 后来因为写代码麻烦,对控制部分比较薄弱,本来跟其他CPU配合使用,即麻烦的算法CPU提交给FPGA,FPGA算完把结果再返回给CPU。可是这样外围电路就变得麻烦。于是提出了SOC设计方法,就是直接在FPGA里写一个CPU出来,既然FPGA万能,做个CPU自然毫无压力。这其中还有软核和硬核的区别,不过除了性能,使用方法大同小异。所谓IP核,就是把各种专用集成电路用硬件描述语言描述,然后烧到FPGA里形成专门的电路,这样就不必另外搭芯片了,所有的电路在一片FPGA里面形成。 DSP实际应该称为DSPs,即用于DSP处理的专用芯片。跟普通计算机的区别一方面是他是哈佛结构的,也就是数据和程序空间分开。(普通计算机是冯诺依曼结构)另一方面他有流水线结构,不过现在其他也有了,见贤思齐。再一方面他有专用的硬件算法电路,用以完成DSP运算,比如最基本的乘法累加。上过DSP的就知道,蝶形算法FFT什么的,拆成最基本单元就是乘法累加,把这部分加速了,整体性能就有非常大的提高。DSP对于流媒体的处理能力远远的优于通用CPU。所以你看现在手机CPU,至少语音部分都是用DSP的。后来DSP概念也复杂化,各家都把一个控制核心整合到DSP里面,比如现在的智能手机芯片。可以看一下高通或者TI的芯片,基本是一个ARM核控制整体运算,一个DSP处理语音编解码, 一个GPU负责图像运算,一个基带和天线处理模块负责通信,再加一些七七八八的东东比如GPS模块什么的。 单片机就是一个百搭的通用CPU,提供各种接口来对整体进行控制,相当一个总调度,当然,简单的功能一片CPU独立工作也就完成了。原来的51系列就是一堆IO口,后来慢慢的把常用的PWM,AD之类的功能加入了单片机。主要包括用了无数年仍然牛逼各大学必教的51系列,还有AVR,PIC,ARM,HOTEK……其实ARM9以后,已经说不清ARM算哪类了,目前的架构来看,更接近DSP。 总之,现在各种东西都取长补短大融合,所以只要选择自己需要用的就好,没必要强求分类。
  FPGA是可编程阵列,多采用查找表结构,这是和CPLD最大的区别,能用FPGA实现各种AISC、DSP和单片机。 ASIC就是专用IC,没有明确的定义。可以理解为除了单片机、DSP、FPGA之类的能叫出类目的IC,剩下的都是ASIC。 DSP是一类特殊的CPU,主要特点是能在一个时钟周期完成一次乘加,因此适合信号处理用。 单片机就是一个简单的CPU,和通用处理器没明确界限,认为他简单,就可以叫单片机,不过都是单核。