DSP

DSP的基本概念

2019-07-13 12:03发布

文章转载自http://blog.csdn.net/rushrushrush/article/details/4124670 http://www.microchipzone.com/html/jiaoyupeixun/2009/0103/156.html http://tvb2058.spaces.eepw.com.cn/articles/article/item/40291# http://www.21xr.com/21xrwd/dsp/DSP101.htm 1.4 DSP与单片机、嵌入式微处理器的区别  

考虑一个数字信号处理的实例,比如有限冲击响应滤波器(FIR)。用数学语言来说,FIR滤波器是做一系列的点积。取一个输入量和一个序数向量,在系数和输入样本的滑动窗口间作乘法,然后将所有的乘积加起来,形成一个输出样本。

类似的运算在数字信号处理过程中大量地重复发生,使得为此设计的器件必须提供专门的支持,促成了了DSP器件与通用处理器(GPP)的分流: 对密集的乘法运算的支持 GPP不是设计来做密集乘法任务的,即使是一些现代的GPP,也要求多个指令周期来做一次乘法。而DSP处理器使用专门的硬件来实现单周期乘法。DSP处理器还增加了累加器寄存器来处理多个乘积的和。累加器寄存器通常比其他寄存器宽,增加称为结果bits的额外bits来避免溢出。同时,为了充分体现专门的乘法-累加硬件的好处,几乎所有的DSP的指令集都包含有显式的MAC指令。 存储器结构   传统上,GPP使用冯.诺依曼存储器结构。这种结构中,只有一个存储器空间通过一组总线(一个地址总线和一个数据总线)连接到处理器核。通常,做一次乘法会发生4次存储器访问,用掉至少四个指令周期。    大多数DSP采用了哈佛结构,将存储器空间划分成两个,分别存储程序和数据。它们有两组总线连接到处理器核,允许同时对它们进行访问。这种安排将处理器存贮器的带宽加倍,更重要的是同时为处理器核提供数据与指令。在这种布局下,DSP得以实现单周期的MAC指令。   还有一个问题,即现在典型的高性能GPP实际上已包含两个片内高速缓存,一个是数据,一个是指令,它们直接连接到处理器核,以加快运行时的访问速度。从物理上说,这种片内的双存储器和总线的结构几乎与哈佛结构的一样了。然而从逻辑上说,两者还是有重要的区别 GPP使用控制逻辑来决定哪些数据和指令字存储在片内的高速缓存里,其程序员并不加以指定(也可能根本不知道)。与此相反,DSP使用多个片内存储器和多组总线来保证每个指令周期内存储器的多次访问。在使用DSP时,程序员要明确地控制哪些数据和指令要存储在片内存储器中。程序员在写程序时,必须保证处理器能够有效地使用其双总线。   此外,DSP处理器几乎都不具备数据高速缓存。这是因为DSP的典型数据是数据流。也就是说,DSP处理器对每个数据样本做计算后,就丢弃了,几乎不再重复使用。 零开销循环   如果了解到DSP算法的一个共同的特点,即大多数的处理时间是花在执行较小的循环上,也就容易理解,为什么大多数的DSP都有专门的硬件,用于零开销循环。所谓零开销循环是指处理器在执行循环时,不用花时间去检查循环计数器的值、条件转移到循环的顶部、将循环计数器减1   与此相反,GPP的循环使用软件来实现。某些高性能的GPP使用转移预报硬件,几乎达到与硬件支持的零开销循环同样的效果。 定点计算   大多数DSP使用定点计算,而不是使用浮点。虽然DSP的应用必须十分注意数字的精确,用浮点来做应该容易的多,但是对DSP来说,廉价也是非常重要的。定点机器比起相应的浮点机器来要便宜(而且更快)。为了不使用浮点机器而又保证数字的准确,DSP处理器在指令集和硬件方面都支持饱和计算、舍入和移位。  ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 从表面上来看,DSP与标准微处理器有许多共同的地方:一个以ALU为核心的处理器、地址和数据总线、RAMROM以及I/O端口,从广义上讲,DSP、微处理器和微控制器(单片机)等都属于处理器,可以说DSP是一种CPU。但DSP和一般的CPU又不同: 
    
首先是体系结构:CPU是冯.诺伊曼结构的,而DSP有分开的代码和数据总线即“哈佛结构”,这样在同一个时钟周期内可以进行多次存储器访问——这是因为数据总线也往往有好几组。有了这种体系结构,DSP就可以在单个时钟周期内取出一条指令和一个或者两个(或者更多)的操作数。     
    
标准化和通用性:CPU的标准化和通用性做得很好,支持操作系统,所以以CPU为核心的系统方便人机交互以及和标准接口设备通信,非常方便而且不需要硬件开发了;但这也使得CPU外设接口电路比较复杂,DSP主要还是用来开发嵌入式的信号处理系统了,不强调人机交互,一般不需要很多通信接口,因此结构也较为简单,便于开发。如果只是着眼于嵌入式应用的话,嵌入式CPUDSP的区别应该只在于一个偏重控制一个偏重运算了。 
    
流水线结构:大多数DSP都拥有流水结构,即每条指令都由片内多个功能单元分别完成取指、译码、取数、执行等步骤,这样可以大大提高系统的执行效率。但流水线的采用也增加了软件设计的难度,要求设计者在程序设计中考虑流水的需要。 
    
快速乘法器:信号处理算法往往大量用到乘加(multiply-accumulateMAC)运算。DSP有专用的硬件乘法器,它可以在一个时钟周期内完成MAC运算。硬件乘法器占用了DSP芯片面积的很大一部分。(与之相反,通用CPU采用一种较慢的、迭代的乘法技术,它可以在多个时钟周期内完成一次乘法运算,但是占用了较少了硅片资源)。 
    
地址发生器:DSP有专用的硬件地址发生单元,这样它可以支持许多信号处理算法所要求的特定数据地址模式。这包括前(后)增(减)、环状数据缓冲的模地址以及FFT的比特倒置地址。地址发生器单元与主ALU和乘法器并行工作,这就进一步增加了DSP可以在一个时钟周期内可以完成的工作量。 
    
硬件辅助循环:信号处理算法常常需要执行紧密的指令循环。对硬件辅助循环的支持,可以让DSP高效的循环执行代码块而无需让流水线停转或者让软件来测试循环终止条件。 
    
低功耗:DSP的功耗较小,通常在0.5W4W,采用低功耗的DSP甚至只有0.05W,可用电池供电,很适合嵌入式系统;而CPU的功耗通常在20W以上。   ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 2. DSP芯片的发展
    世界上第一个单片DSP芯片是1978AMI公司宣布的S28111979年美国Iintel公司发布的商用可编程期间2920DSP芯片的一个主要里程碑。这两种芯片内部都没有现代DSP芯片所必须的单周期芯片。 1980年。日本NEC公司推出的μPD7720是第一个具有乘法器的商用DSP 芯片。第一个采用CMOS工艺生产浮点DSP芯片的是日本的Hitachi公司,它于1982年推出了浮点DSP芯片。1983年,日本的Fujitsu公司推出的MB8764,其指令周期为120ns ,且具有双内部总线,从而处理的吞吐量发生了一个大的飞跃。而第一个高性能的浮点DSP芯片应是AT&T公司于1984年推出的DSP32
    
在这么多的DSP芯片种类中,最成功的是美国德克萨斯仪器公司(Texas Instruments,简称TI)的一系列产品。TI公司灾982年成功推出启迪一代DSP芯片TMS32010及其系列产品TMS32011TMS32C10/C14/C15/C16/C17等,之后相继推出了第二代DSP芯片TMS32020TMS320C25/C26/C28,第三代DSP芯片TMS32C30/C31/C32,第四代DSP芯片TMS32C40/C44,第五代DSP芯片TMS32C50/C51/C52/C53以及集多个DSP于一体的高性能DSP芯片TMS32C80/C82等。
    
1980年以来,DSP芯片得到了突飞猛进的发展,DSP芯片的应用越来越广泛。从运算速度来看,MAC(一次乘法和一次加法)时间已经从80年代初的400ns(如TMS32010)降低到40ns(如TMS32C40),处理能力提高了10多倍。DSP芯片内部关键的乘法器部件从1980年的占模区的40左右下降到5以下,片内RAM增加一个数量级以上。从制造工艺来看,1980年采用N沟道MOS工艺,而现在则普遍采用亚微米CMOS工艺。DSP芯片的引脚数量从1980年的最多64个增加到现在的200个以上,引脚数量的增加,意味着结构灵活性的增加。此外,DSP芯片的发展,是DSP系统的成本、体积、重量和功耗都有很大程度的下降。

3. DSP
芯片的分类
    DSP
的芯片可以按照以下的三种方式进行分类。
1)按基础特性分
    
这是根据DSP芯片的工作时钟和指令类型来分类的。如果DSP芯片在某时钟频率范围内的任何频率上能正常工作,除计算速度有变化外,没有性能的下降,这类DSP芯片一般称之为静态DSP芯片。
    
如果有两种或两种以上的DSP芯片,它们的指令集和相应的机器代码机管脚结构相互兼容,则这类DSP芯片称之为一致性的DSP芯片。
2)按数据格式分
    
这是根据DSP芯片工作的数据格式来分类的。数据以定点格式工作的DSP芯片称之为定点DSP芯片。以浮点格式工作的称为DSP芯片。不同的浮点DSP芯片所采用的浮点格式不完全一样,有的DSP芯片采用自定义的浮点格式,有的DSP芯片则采用IEEE的标准浮点格式。
3)按用途分
    
按照DSP芯片的用途来分,可分为通用型DSP芯片和专用型的DSP芯片。通用型DSP芯片适合普通的DSP应用,如TI公司的一系列DSP芯片。专用型DSP芯片市为特定的DSP运算而设计,更适合特殊的运算,如数字滤波,卷积和FFT等。 4. DSP芯片的基本结构
DSP
芯片的基本结构包括:
1)哈佛结构。哈佛结构的主要特点是将程序和数据存储在不同的存储空间中,即程序存储器和数据存储器是两个相互独立的存储器,每个存储器独立编址,独立访问。与两个存储器相对应的是系统中设置了程序总线和数据总线,从而使数据的吞吐率提高了一倍。由于程序和存储器在两个分开的空间中,因此取指和执行能完全重叠。
2)流水线操作。流水线与哈佛结构相关,DSP芯片广泛采用流水线以减少指令执行的时间,从而增强了处理器的处理能力。处理器可以并行处理二到四条指令,每条指令处于流水线的不同阶段。
3)专用的硬件乘法器。乘法速度越快,DSP处理器的性能越高。由于具有专用的应用乘法器,乘法可在一个指令周期内完成。
4)特殊的DSP指令。特殊的DSP指令DSP芯片是采用特殊的指令。
5)快速的指令周期。快速的指令周期哈佛结构、流水线操作、专用的硬件乘法器、特殊的DSP指令再加上集成电路的优化设计可使DSP芯片的指令周期在200ns以下。 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

1.4 DSP与单片机、嵌入式微处理器的区别

DSP 、单片机以及嵌入式微处理器都是嵌入式家族的一员。最大区别是DSP能够高速、实时地进行数字信号处理运算。数字信号处理运算的特点是乘/加及反复相乘
求和(乘积累加)。为了能快速地进行数字信号处理的运算,(1)DSP设置了硬件乘法/累加器,(2)能在单个指令周期内完成乘/加运算。(3)为满足FFT、卷积等数字信号处理的特殊要求,目前DSP大多在指令系统中设置了“循环寻址”及“位倒序”寻址指令和其他特殊指令,使得寻址、排序的速度大大提高。DSP完成1024复点FFT的运算,所需时间仅为微秒量级。
    高速数据的传输能力是DSP高速实时处理的关键之一。新型的DSP设置了单独的DMA总线及其控制器,在不影响或基本不影响DSP处理速度的情况下,作并行的数据传送,传送速率可达每秒百兆字节。DSP内部有流水线,它在指令并行、功能单元并行、多总线、时钟频率提高等方面不断创新和改进。因此,DSP与单片机、嵌入式微处理器相比,在内部功能单元并行、多DSP核并行、速度快、功耗小、完成各种DSP算法方面尤为突出。 单片机也称微控制器或嵌入式控制器,它是为中、低成本控制领域而设计和开发的。单片机的位控能力强,I/O接口种类繁多,片内外设和控制功能丰富、价格低、使用方便,但与DSP相比,处理速度较慢。DSP具有的高速并行结构及指令、多总线,单片机却没有。DSP处理的算法的复杂度和大的数据处理流量更是单片机不可企及的。嵌入式微处理器的基础是通用计算机中的CPU(微处理器),是嵌入式系统的核心。为满足嵌入式应用的特殊要求,嵌入式微处理器虽然在功能上和标准微处理器基本是一样的,但在工作温度、抗电磁干扰、可靠性等方面一般都做了各种增强。与工业控制计算机相比,嵌入式微处理器具有体积小、质量轻、成本低、可靠性高的优点,但是在电路板上必须包括ROM、RAM、总线接口、各种外设等器件,从而降低了系统的可靠性,技术保密性也较差。在应用设计中,嵌入式微处理器及其存储器、总线、外设等安装在专门设计的一块电路板上,只保留和嵌入式应用有关的母板功能,可大幅度减小系统的体积和功耗。目前,较流行的是基于ARM7、ARM9系列内核的嵌入式微处理器。
    嵌入式微处理器与DSP的一个很大区别,就是嵌入式处理器的地址线要比DSP的数目多,所能扩展的存储器空间要比DSP的存储器空间大的多,所以可配置实时多任务操作系统(RTOS)。RTOS是针对不同处理器优化设计的高效率、可靠性和可信性很高的实时多任务内核,它将CPU时间、中断、I/O、定时器等资源都包装起来,留给用户一个标准的应用程序接口(API),并根据各个任务的优先级,合理地在不同任务之间分配CPU时间。RTOS是嵌入式应用软件的基础和开发平台。常用的RTOS:Linux(为几百KB)和VxWorks(几MB)。由于嵌入式实时多任务操作系统具有的高度灵活性,可很容易地对它进行定制或作适当开发,来满足实际应用需要。例如,移动计算平台、信息家电(机顶盒、数字电视)、媒体手机、工业控制和商业领域(例如,智能工控设备、ATM机等)、电子商务平台,甚至军事应用,吸引力巨大。所以,目前嵌入式微处理器的应用是继单片机、DSP之后的又一大应用热门。但是,由于嵌入式微处理器通常不能高效地完成许多基本的数字处理运算,例如,乘法累加、矢量旋转、三角函数等。它的体系结构对特殊类型的数据结构只能提供通用的寻址操作,而DSP则有专门的简捷寻址机构和辅助硬件来快速完成。所以嵌入式微处理器不适合高速、实时的数字信号处理运算。而更适合“嵌入”到系统中,完成高速的“通用”计算与复杂的控制用途。DSP、单片机以及嵌入式微处理器三者各有所长,技术的发展使得DSP、单片机、嵌入式微处理器相互借鉴对方的优点,互相取长补短。现在,部分单片机内部都有硬件乘法器,单片机内部也有了DSP内部才有的流水线作业(但规模小些)借鉴PC机的优点,DSP内部也有了一定规模的高速缓存。吸收Intel的嵌入式系统芯片和系统软件的优点。有的DSP内部集成了高速运行的DSP内核及控制功能丰富的嵌入式处理器内核。例如,内部集成有TI公司的C54xCPU内核和ARM公司的ARM7TDMIE内核的DSP,既具有高速的数据处理能力,又有各种类型的外设接口和位控能力,大大拓宽了DSP在控制领域的应用范围。
    DSP在注重高速的同时,也在发展低价位控制芯片。美国Cygnal公司的C8051F020 8位单片机,内部采用流水线结构,大部分指令的完成时间为1或2个时钟周期,峰值处理能力为25MIPS。片上集成有8通道A/D、2路D/A、两路电压比较器,内置温度传感器、定时器、可编程数字交叉开关和64个通用I/O口、电源监测、看门狗、多种类型的串行总线(两个UART、SPI)等。