1.1 DSP概述
1.1.1 DSP的发展概况及趋势
20世纪60—70年代,随着信号的数字化,数字信号处理技术应运而生,此时的数字信号处理尚处于算法理论研究阶段,主要采用两类处理器进行模拟实现:一类是通用处理器GPP,如作为PC(个人计算机)核心的CPU;另一类是微控制器(MCU)。
由于通用处理器或微控制器没有为数字信号处理提供专用的乘法累加器、数据存取通道和中断响应模式等,使得信号处理效率难以提高,特别是在进行实时数字信号处理时面临极大的技术瓶颈,因此,迫切需要一种能够实时、快速实现各种数字信号处理算法的专用处理器。
20世纪70年代末,第一个DSP芯片诞生。1978年美国AMI公司发布S2811,1979年Intel公司发布可编程器件2920,成为DSP芯片发展的里程碑。但这两款芯片内都没有现代DSP必备的单周期硬件乘法器。1980年,日本NEC公司推出第一个具有硬件乘法器的DSP芯片mPD7720,被认为是第一块单片DSP器件。
随着大规模集成电路技术的发展,1982年,TI公司推出第一代商用DSP芯片TMS32010,其包含55000个晶体管、4KB RAM,指令处理能力为5MIPS(百万条指令每秒),尽管该性能参数与现代DSP相比较差,但其运算速度比当时通用微处理器快了几十倍,为数字信号处理算法的实际应用开辟了道路。
到20世纪80年代中期,随着CMOS技术的发展进步,第二代基于CMOS工艺的DSP芯片TMS320C2x系列被推出,其存储容量和运算速度得到成倍提高,成为语音及图像硬件处理的基础。20世纪80年代后期,第三代DSP芯片TMS320C30/C31/C32等出现,运算速度得到进一步提高,应用范围逐渐扩展到通信和计算机领域。特别是20世纪90年代以来,DSP得到快速发展和广泛应用,相继出现了第四代DSP芯片TMS320C40/C44等和第五代DSP芯片TMS320C5000系列,以及当前运算速度最快的第六代DSP芯片TMS320C6000系列。它们将DSP内核及外围元件集成到单一芯片,系统集成度更高,运算性能更强,性价比不断提升,迅速成为众多电子产品的核心器件。
除了TI,日立(Hitachi)公司于1982年推出第一个基于CMOS工艺的浮点DSP芯片;富士通(Fujitsu)公司于1983年推出DSP芯片MB8764,其指令周期为120ns,具有双内部总线,数据处理吞吐量极大提高;美国AT&T公司于1984年推出的DSP32可被看作是第一个高性能浮点DSP芯片;美国摩托罗拉(Motorola)公司先后于1986年推出了定点处理器MC56001,并于1990年推出了与IEEE浮点格式兼容的DSP芯片MC96002;美国模拟器件(ADI)公司也推出了具有自己特点的DSP芯片系列,包括定点DSP芯片ADSP21xx系列、浮点DSP芯片ADSP21xxx系列及高性能TigerSHARC芯片等。
经过40多年的发展,当前世界上较大的DSP开发生产厂商已有十几家,包括TI、ADI、Motorola(现在的Freescale)、AT&T(现在的Lucent)、Phillips、Fujitsu、Hitachi和Samsung等,其中TI已成为当今最大的DSP芯片供应商,常用的TI DSP芯片主要有三大系列,包括TMS320C2000系列(TMS320C2x/C2xx)、TMS320C5000系列(TMS320C54x/C55x)和TMS320C6000系列(TMS320C62x/C67x/C64x),其被广泛应用于移动通信、消费电子、医疗仪器、汽车电子和军用装备等各个领域。
未来,全球DSP产品将向着高性能、低功耗、强融合和多扩展的趋势发展。高性能方面,多通道、单指令多重数据(SIMD)和超长指令字(VLIM)结构将在高性能DSP中占主导地位;低功耗方面,随着先进电源管理技术的发展,DSP芯片内核电压将越来越低,且存储器和外设的功耗也不断下降,系统整体功耗将会更低;强融合方面,将越来越多地采用单芯片实现DSP核与高性能CPU、MCU的有效融合,使其同时具有数字信号处理和智能控制功能;多扩展方面,将片上系统(SoC)、现场可编程门阵列(FPGA)和操作系统软件接口与DSP集成到一块芯片上,从而有效实现功能的扩展,便于多种应用开发。因此,DSP芯片将在应用需求的驱动下不断发展,从而不断提高电子产品的性能,成为各种电子产品更新换代的技术核心。
1.1.2 DSP的特点
对于常用的数字信号处理算法,如数字滤波、相关、卷积、FFT(快速傅里叶变换)和矩阵运算等,往往存在输入信号与参考信号的相乘及积分(累加),其执行过程就是不断地从存储器取数并进行“乘-加”运算。因此,为了快速实现这些运算,DSP在存储器结构、运算单元和操作指令等方面都具有一些鲜明的特性,其主要特点如下。
1. 存储器采用哈佛结构
微处理器的存储器结构主要有冯·诺依曼(von Neumann)结构和哈佛(Harvard)结构两类,如图1-1所示。由于冯·诺依曼结构实现简单、成本低,通用处理器广泛采用该结构,典型的冯·诺依曼结构只有一个存储器空间、一套地址总线和一套数据总线,程序和数据都存放到这个存储器空间,且统一分配存储地址,因此执行运算时,处理器必须分时访问程序和数据空间。而DSP广泛采用程序存储器和数据存储器分开的哈佛结构,每个存储器都有独立的地址总线和数据总线,因此DSP通过多套地址和数据总线,可同时从程序存储器取指令和从数据存储器取操作数,从而实现并行工作,提高运算速度。
图1-1 冯·诺依曼结构和哈佛结构
2. 流水线操作
流水线(Pipeline)操作是将指令的执行分解为预取指(Prefetch)、取指(Fetch)、译码(Decode)、寻址(Access)、取数(Read)和执行(Execute)等几个阶段,如图1-2所示。在程序运行过程中,不同指令的不同阶段在时间上是重叠的,当执行一个含多条指令的程序块时,首先进行预取指,加载程序计数器PC中的内容,然后第一条指令取指、译码,其译码的同时,第二条指令取指;而第一条指令寻址时,第二条指令译码,第三条指令取指,这样,6个机器周期就可执行6条指令,即每条指令花费的指令周期平均约为一个机器周期。所以,流水线操作提高了DSP指令执行的整体速度,有助于保证数字信号处理的实时性。在TMS320C64x+DSP中,每个周期内可执行8条指令。
图1-2 流水线操作示意图
3. 独立的硬件乘法累加单元
由于数字信号处理任务中,都包含有大量重复的乘法和累加操作,通用处理器的乘法运算使用软件进行移位或加法来实现,需要若干机器周期,而DSP处理器使用专门的硬件乘法器,并使用累加器来处理多个乘积的累加,即通过DSP指令集中的MAC指令实现单周期乘加运算,从而有效提高了数字信号处理的速度。
4. 独立的DMA总线和控制器
信号处理过程中,需要高速地从存储器中存取操作数,在通用处理器中尽管可用DMA(Direct Memory Access,直接存储器访问)存取数据,但此时总线被占用,而CPU的各项操作必须要使用总线,使得信号处理效率难以提高。DSP处理器中设置了独立的DMA总线和控制器,通过与CPU的程序总线和数据总线并行工作,使得在数据传输时不影响CPU和总线的工作,从而提高数据吞吐率,加快信号处理速度,如TMS320C64x+中使用了64个独立通道的增强型DMA(EDMA)总线及控制器。
5. 独立的地址发生器和移位器
在通用微处理器中,数据地址的产生和数据的处理都由算术逻辑单元(ALU)来完成,而在DSP中,独立设置了专门的数据地址发生器(DAG)和移位器等,以产生所需要的数据地址,从而节省公共ALU的时间,高效地实现复杂的寻址和数据处理。
6. 零开销循环
数字信号处理算法的另一特点是程序中的循环结构占用大量的时间。通用处理器的循环控制采用软件方式实现,效率不高,而DSP中专门设置了支持循环结构的硬件来实现“零开销”循环,即循环计数和条件转移等操作通过专门的硬件单元控制,不需要花费CPU的时间。
7. 特殊的DSP指令
DSP指令集中,专门设计了一些完成特殊功能的指令,这些指令充分利用了DSP的结构特点,提高了指令执行的并行度,加快了完成相关操作的速度,如TMS320C64x中的FIRS指令和LMS指令,分别用于完成对称结构的FIR滤波算法和LMS算法。此外,为了降低FFT和卷积等运算的地址计算开销,多数DSP在指令系统中还设置了循环寻址和位倒序寻址指令。
8. 丰富的硬件配置
新一代DSP芯片集成了众多类型的硬件设备,包括定时器、串行口、并行口、主机接口(HPI)、DMA控制器、等待状态发生器、中断处理器、PLL时钟产生器、JTAG标准测试接口、ROM、RAM及Flash等,从而提高了DSP的处理速度、降低了系统功耗,简化了接口设计、方便了多处理器扩展,非常适用于嵌入式便携数字设备应用。
1.1.3 DSP的分类
为了满足不同应用对DSP的功能需求,众多DSP厂商推出了多种不同类型的DSP芯片。通常,DSP芯片可以按照3种方式进行分类,如表1-1所示。
表1-1 DSP的分类类型及特性
1.1.4 DSP的应用
随着大规模集成电路技术的发展,DSP芯片的性能逐渐提高,价格不断下降,使得其具有巨大的应用潜力。目前,DSP的主要应用领域如下。
(1)基本信号处理:数字滤波、自适应滤波、FFT、相关运算、频谱分析、卷积运算、模式匹配、窗函数、波形产生和变换等。
(2)通信:调制解调器、路由器、自适应均衡、数据加密、数据压缩、回波抵消、多路复用、纠错编码、传真、扩频通信、移动通信、数字基带处理芯片、可视电话、机顶盒、混合光纤同轴网(三网融合)和软件无线电等。
(3)语音:语音编码、语音合成、语音识别、语音增强、语音存储、语音邮件和语音-文本转换等。
(4)图形图像:二维/三维图形图像处理、图像压缩与传输、图像识别、图像增强、图像转换、动画、电子地图、机器人视觉、虚拟现实系统和多媒体计算机等。
(5)军事:保密通信、雷达/声呐信号处理、导航制导、定位、电子对抗、搜索与跟踪、情报收集与处理等。
(6)仪器仪表:函数发生、数据采集、锁相环、频谱分析、暂态分析、能源/地质勘探、地震信号处理和工作站等。
(7)控制:引擎控制、发动机控制、声控、自动驾驶、机器人控制和磁盘/光盘控制等。
(8)医疗:助听器、超声设备、X射线扫描、心/脑电图、核磁共振仪和患者监护等。
(9)家用电器:高保真音响、家庭影院、音乐合成/控制、数码相机、智能玩具与游戏、高清晰数字电视(HDTV)、变频空调、智能洗衣机、智能冰箱和智能家居等。
1.1.5 DSP芯片的选择
在实际开发应用中,选择合适的DSP芯片至关重要,通常依据系统对运算速度、运算精度、成本及功耗等方面的要求来选择DSP芯片。由于应用场合、应用目的不同,不同的DSP应用系统对DSP芯片的选择一般应考虑的因素分析如下。
1. 运算速度
作为一项重要的性能指标,DSP芯片的运算速度是否符合应用要求是选择DSP需考虑的因素之一,常见的DSP运算速度指标有如下几个。
(1)指令周期:执行一条指令需要的平均时间,对于平均在一个周期内可以完成一条指令的DSP芯片,其值等于主频的倒数,常以ns(纳秒)为单位。
(2)MIPS:每秒执行百万条指令数。
(3)MOPS:每秒执行百万次操作数。
(4)MFLOPS:每秒执行百万次浮点操作数。
(5)BOPS:每秒执行十亿次操作数。
(6)MAC时间:执行一次乘法-累加运算需要的时间,大多数DSP芯片可在一个指令周期内完成一次乘法-累加操作。
(7)FFT执行时间:执行一个N点FFT运算需要的时间,由于FFT运算是数字信号处理中常用的典型算法,FFT执行时间用来综合衡量DSP的运算能力。
2. 运算精度
DSP算法格式主要分为定点运算和浮点运算。通常定点DSP的字长有16位、20位、24位或32位。浮点DSP的字长为32位,由于浮点算法较复杂,所以浮点DSP的成本和功耗一般比定点DSP高。在算法确定后,通过理论分析或软件仿真可确定算法所需的动态范围和精度,如果应用系统对成本和功耗的要求较严格,一般选用字长较小的定点DSP,如果要求易于开发、动态范围宽、精度高,可以考虑采用字长较大的定点DSP或浮点DSP。
3. 功耗
由于DSP越来越多地应用到便携式产品中,因此功耗逐渐成为DSP选型的一个重要因素。目前,常用的DSP芯片工作电压有5V、3.3V和1.8V等多种,对功耗有特殊要求的便携式或特殊工作场合的产品常选用3.3V供电的低功耗高速DSP芯片。
4. 价格
DSP芯片的价格是应用产品能否规模化、大众化的重要决定因素,因此在DSP系统设计中,应根据实际系统的应用场合,结合运算精度和功耗等需求,选择价格适中的DSP芯片。
5. 硬件资源
不同的DSP芯片内部集成的硬件资源不尽相同,如片内存储器RAM和ROM的数量,通过外部总线可扩展外部程序和数据空间,总线接口和I/O接口等。因此,要根据具体应用对片内集成硬件资源,特别是存储空间大小和外部总线接口的要求来选择DSP芯片。
6. 开发工具
便捷、高效的开发工具和完善的软硬件支持是开发大型、复杂DSP应用系统的必要条件,因此在选择DSP芯片时,要考虑其开发工具的支持情况。软件工具包括编译器、汇编器、链接器、调试器、代码库及实时操作系统等;硬件工具包括开发板和仿真器等,如TI的CCS(Code Composer Studio)集成开发环境及对应各种芯片型号的开发板和仿真器。
同时,选择DSP芯片还需考虑芯片的封装形式、质量标准、供货情况和生命周期等,此外,对于数据计算量较大的应用,还需考虑DSP芯片是否支持多核的互联扩展。