第5章
CHAPTER 5


数字信号处理器






本章主要内容包括
 数字信号处理器的特点; 
 DSP选型与系统开发; 
 数字信号处理器简介。
5.1引言
DSP(Digital Signal Processor,数字信号处理器芯片)是一种适合于进行实时数字信号处理运算的微处理器,其主要应用是实时快速地实现各种数字信号处理算法。自20世纪70年代末第一片DSP问世以来,DSP芯片就以数字器件特有的稳定性、可重复性、可大规模集成,特别是可编程性高和易实现自适应处理等特点,给数字信号处理的发展带来了巨大的机遇,并使信号处理的手段更灵活,功能更复杂,应用领域也拓宽到国民经济生活的各个方面。
第一代DSP系统,以AMD2900、NEC7720和TMS32010为代表,其中TI公司的TMS32010第一次使用了哈佛总线结构和硬件乘法器。由于开发工具的问题,最初的DSP系统开发非常困难,要设计并实现一个基于DSP的系统是一个专业性很强的工作。TI公司给DSP系统引入了许多通用计算机微处理器的特点,并为其产品开发了汇编语言和C语言代码产生工具以及各种软件调试工具,使得DSP系统的开发难度大大降低,并且在20世纪80年代末和90年代初进入了快速发展时期。现在,TI公司的DSP系统包括了定点、浮点和多处理器3个类型的产品,每个类型又有不同性能和价格的具体系列可以供用户选择。
在过去的20多年时间里,DSP芯片得到了极为迅速的发展。如今生产DSP芯片的厂家主要有: TI(Texas Instruments)公司、AD(Analog Device)公司、Motorola公司等,其中以TI公司生产的系列DSP芯片应用最为广泛。它目前拥TMS320C2000、TMS320C5000和TMS320C6000三大DSP系列。TI公司的一系列DSP产品已经成为当今世界上最有影响的DSP芯片。TI公司也成为世界上最大的DSP芯片供应商,其DSP芯片份额大约占全世界份额的50%。
随着半导体制造工艺的发展和计算机体系结构等方面的改进,DSP芯片的功能越来越强大,速度越来越快,并且价位越来越低,其应用将更加广泛,将会普及电子学应用的每个领域.如通用数字信号处理、声音/语音处理、图形/图像处理、控制、仪器仪表、军事、通信、消费电子、工业、医学等领域都有广泛的应用。
5.2数字信号处理器的特点
DSP芯片是专为数字信号处理算法而设计的,因此在其功能和结构上都有其独特的特点。下面分别从这两个方面来加以阐述。




5.2.1功能特点
数字信号处理任务通常需要完成大量的实时计算,如在DSP中常用的FIR滤波和FFT算法。数字信号处理中的数据操作具有高度复杂的特点,特别是乘加操作Y=A·B+C在滤波、卷积和FFT等常见DSP算法中用得最多。DSP系统在很大程度上就是针对上述运算特点设计的。与通用微处理器相比,DSP系统在寻址和计算能力等方面作了扩充和增强。在相同时钟频率和芯片集成度下,DSP系统完成FFT算法的速度比通用微处理器要快2到3个数量级(如对于1024点的FFT算法,时钟相同,集成度相仿的IBM PC/AT386和TMS320C30,运算时间分别是0.3s和1.5ms,速度相差200倍)。
5.2.2结构特点
DSP系统的结构特点在很大程度上体现了DSP算法的要求。下面介绍DSP系统在结构上的主要特点。
1. 算术单元
1) 硬件乘法器  
由于DSP系统的功能特点,乘法操作是DSP系统的一个主要任务。而在通用微处理器内通过微程序实现的乘法操作往往需要100多个时钟周期,十分耗时,因此在DSP系统内部设有硬件乘法器来完成乘法操作,以提高乘法速度。硬件乘法器是DSP系统区别于通用微处理器的一个重要标志。
2) 多功能单元
为了进一步提高速度,可以在CPU内设置多个并行操作的功能单元(ALU、乘法器和地址产生器等)。如C6000的CPU内部就有8个功能单元,包括两个乘法器和6个ALU。这8个功能单元最多可以在一个周期内同时执行8条32位的指令。由于多个功能单元的并行操作的DSP系统在相同时间内能够完成更多的操作,因而提高了程序的执行速度。针对乘加运算,多数DSP系统的乘法器和ALU都支持一个周期内同时完成一次乘法和一次加法操作。另外很多定点DSP系统还支持在不增加操作时间的前提下对操作数或操作结果的任意位移位。而且,DSP的算法特点和数据流特点还可以使现代DSP系统采用指令比较整齐划一的精简指令集(RISC),有利于DSP系统结构的简化和成本的降低。
2. 总线结构
通用微处理器是为计算机设计的。基于成本上的考虑,传统的微处理器通常采用冯·诺依曼总线结构: 统一的程序和数据空间,共享的程序和数据总线。由于总线的限制,微处理器执行指令时,取指和存取操作数共享内部数据总线,因而程序指令只能串行执行。
对于面向数据密集型算法的DSP系统而言,冯·诺依曼总线结构使系统性能受到很大的限制,因此,DSP系统采用了程序总线和数据总线分离的哈佛结构,这样使DSP系统能够同时取指和取操作数了。而且很多DSP系统甚至有两套或两套以上的内部数据总线结构,这种总线结构称为修正的哈佛结构。对于乘法或加法等运算,一条指令要从存储器中取两个操作数,如果采用多套数据总线就可以同时取两个操作数,因此提高了程序的效率。
C6000系列的DSP系统则采用了新的VLIW(Very Long Instruction Word,甚长指令字)结构,片内提供8个独立的运算单元、256位的程序总线、两套32位的数据总线和一套32位的DMA专用总线。灵活的总线结构大大缓解了数据瓶颈对系统性能的限制。VLIW体系结构DSP系统中,是由一个超长的机器指令字来驱动内部的多个功能单元的(这也是VLIW名字的由来)。每个指令字包括多个字段(指令),字段之间相互独立,各自控制一个功能单元,因此可以单周期发射多条指令,实现很高的指令级并行效率。编译器在对汇编程序进行编译的过程中,决定代码中哪些指令合成一个甚长机器指令,在一个周期中并行执行。这种指令上的并行安排是静态的,一旦决定,无论DSP任何时候运行,它都保持不变。
3. 专用寻址单元
DSP系统面向的是数据密集型应用,随着频繁的数据访问,数据地址的计算时间也线性地增长。如果不在地址计算上作特殊的考虑,有时计算地址的时间比实际的算术操作时间还长。例如,8086做一次加法需要3个时钟周期,但是计算一次地址却需要5~12个时钟周期。因此, DSP系统通常都支持地址计算单元地址产生器。地址产生器与ALU并行工作,因此地址的计算不再额外占用CPU时间。由于有些算法通常需要一次从存储器中取两个操作数,所有DSP系统内的地址产生器一般也有两个。
4. 片内存储器
由于DSP系统面向的是数据密集型应用,因此存储器访问速度对处理器的性能影响很大。现代微处理器内部一般都集成有高速缓存器(cache),但是片内一般不设存储程序的ROM和存储数据的RAM。这是因为通用微处理器的程序一般很大,片内存储器不会给处理器的性能带来明显改善。而DSP算法的特点是需要大量的简单计算,相应地其程序就比较短小,存放在DSP系统片内就可以减少指令的传输时间,并有效缓解芯片外部总线接口的压力。除了片内程序存储器外,DSP系统内一般还集成有数据RAM,用于存放参数和数据。片内数据存储器不存在外部存储器的总线竞争问题和访问速度不匹配问题,因此访问速度快,可以缓解DSP系统的数据瓶颈,充分利用DSP系统强大的处理能力。C6000系列的DSP系统内部集成有1~8MB的程序RAM和数据RAM,对有些片种,这些存储器还可以配置为程序cache或数据cache来使用。
5. 流水处理
除多功能单元外,流水技术是提高DSP系统程序执行效率的另一个主要手段。流水技术可以使两个或更多不同的操作重叠执行。处理器内,每条指令的执行分为取指、解码和执行等若干个阶段,每个阶段称为一级流水。流水处理使得若干条指令的不同执行阶段可以并行执行,因而能够提高程序的执行速度。理想情况下,一条k段流水能在k+(n-1)个周期内处理n
条指令。其中前k个周期用于完成第一条指令的执行,其余n-1条指令的执行需要n-1个周期。而在非流水处理器上执行n条指令则需要nk个周期。当指令条数n较大时,流水线的填充和排空时间就可以忽略不计,可以认为每个周期内执行的最大指令个数为k,即流水线在理想情况下的效率为1。但是由于程序中存在数据相关、程序分支、中断以及一些其他因数,这种理想情况很难达到。
图5.2.1是TMS320C5000的4级流水示意图。C50在执行一条指令时,要经过取指、解码、读操作数和执行4个阶段。


图5.2.1TMS32C5000的指令流水线



对于流水操作还有有一个特殊的延迟间隙(delay slot)问题,即如果某条指令的执行时间不是单周期,则在指令结果可以使用前会有一个或几个周期的等待时间,称为延迟间隙。对于多数DSP系统,延迟时间会给编程带来一些困难。但是对于C6000系列DSP系统,这个问题在线性汇编语言编程中完全不用考虑。而且采用线性汇编语言编程,程序效率可以达到标准汇编效率的95%~100%。
5.2.3典型的数字信号处理器
在现有的DSP芯片中,以TI公司的TMS320C54X DSP最为经典、应用最为广泛。下面简单介绍一下TMS320C54X DSP。
C54X的时钟频率为40/50/66/80MHz,相应的,时钟周期为25/20/15/12.5ns,运算能力为40/50/66/80MIPS; 片上RAM在5~256KB之间,片上ROM在2~48KB之间,随系列内型号的不同而不同,RAM又分为双访问RAM(DARAM)和单访问RAM(SARAM)。C54X是16位定点DSP,内部集成有如下部件。
(1) 一个40位的ALU。
(2) 两个40位的累加器A和B。
(3) 一个17×17位的乘法器,它和一个40位的加法累计器一起在一个单指令周期内完成二进制补码的乘法运算。
(4) 桶型移位器,其输入连接到40位的累加器或数据存储器(CB,DB),40位的输出连接到ALU或数据存储器(EB),它可将输入数据作0~31位的左移,或者作0~16位的右移。
(5) 由COMP、TRN和TC组成的比较、选择和存储单元。
(6) 指数编码器(EXP),用于支持指数EXP的快速运算。
(7) 8个16位通用寄存器。
C54X采用多总线结构。内部总共有八组总线,四组为地址总线。图5.2.2中PB为程序总线,传送从程序存储器来的指令代码和立即数; PAB为程序地址总线; CB、DB、EB为三组数据总线,连接到各种器件,如CPU、数据存储器等。CAB、DAB、EAB
是这三组数据总线对应的地址总线。CB和DB传送从数据存储器读出的数,EB传送写入到数据存储器的数。Sign ctr为符号控制器。C54X利用两个辅助寄存器单元(ARAU0,ARAU1)在单个周期内产生两个数据存储器的地址。


图5.2.2TMS320C54X系列的内部结构

C54X的大部分产品的I/O口供电为3.3V,CPU核的供电为3.3V,C5402、C5409、C5401的核采用1.8V供电,I/O口一般用3.3V供电。低电压供电可大大降低功耗。有关C54X结构与性能的详细内容请参见相应的用户手册。

5.3DSP选型
在DSP系统设计中,DSP芯片的选择显得十分重要,它的选取必须结合实际应用要求和价格等多方面来综合考虑。以下这些方面在芯片选取时需要考虑。
(1) 根据实际情况(数据格式和精度等)选择定点或浮点DSP芯片。定点DSP的特点是结构相对简单,乘法累加(MAC)的速度快。但是,由于字长有限,其运算精度低、动态范围小; 浮点DSP的主要特点是运算精度高,动态范围大,可在高性能的实时信号处理中应用。
(2) 根据系统要求,选择特定速度的DSP芯片。指令周期可能是评价DSP速度最简单的办法。它是执行一条指令所需要的时间。它的倒数对于定点DSP是MIPS,即每秒百万条指令; 对于浮点DSP是MFLOPS,即每秒百万次浮点运算。新的快速DSP技术引入了BOPS(每秒十亿次运算)以及GFLOPS(每秒十亿次浮点运算),这里的G代表giga或者是109。这些度量的问题是,一条指令所完成的有用的工作量随处理器的不同而不同。单独一条指令也许对某个DSP是足够的,而别的DSP可能需要三条或者四条指令去做同样的工作。在DSP设计中特定硬件的选择决定了执行各种任务的难度和速度。
(3) 根据公司提供的开发器、开发软件、编译器等选择DSP芯片。开发工具是系统设计开发的必备条件和系统性能的先决条件,好的开发器、开发软件、编译器将使系统设计开发事半功倍。所以,在选择DSP芯片时,必须考虑与芯片配套的开发器、开发软件、编译器的性能。
(4) 根据片上提供的功能单元选择DSP芯片。特定的应用环境要求特定的功能,特定功能的实现依赖于芯片的片上功能,选择有利于特定功能实现的片上资源的DSP芯片,将使系统设计变得更加方便和简单。这些功能单元包括片上存储器、片上CPU功能单元、外设单元和接口单元等。
(5) 根据功耗选择DSP芯片。在嵌入式系统设计中,系统功耗是一个需要注意的重要方面。大部分DSP芯片都提供低电压工作选择,也提供睡眠模式,可在不需要计算时使功耗降低至接近零。根据系统的要求不同,选择不同功耗的DSP芯片。
(6) 根据成本选择DSP芯片。市场上,商品价位是一个很重要的指标。因此,在保证系统性能的前提下,选择最低价位的DSP芯片,降低系统的成本。
5.4DSP系统开发
自投入市场以来,DSP芯片在国民经济和社会生活的各个方面得到了广泛的应用,特别是随着信息技术的发展和互联网的普及,机顶盒、网络电话以及个人数字设备等信息家电的涌现如雨后春笋,DSP技术有了更广阔的消费品市场,其发展又有了一次空前的机遇。
5.4.1DSP应用系统组成
图5.4.1显示了一个典型的DSP应用系统。


图5.4.1典型的DSP系统



图中的输入信号可以是各种各样的形式,例如,它可以是麦克风输出的语音信号或是电话线来的已调数据信号,可以是编码后在数字链路上传输或存储在计算机里的图像信号。输入信号首先进行带限滤波和采样,然后进行模数(A/D)转换,将模拟信号转换成数字比特流。DSP芯片的输入是A/D转换后的采样数字信号,DSP芯片对输入的数字信号进行某种形式的处理,如进行一系列的乘累加操作,最后,经过处理后的数字信号再经过数模(D/A)转换,将数字比特流转换为模拟样值,之后再进行内插和平滑滤波就可以得到连续的模拟波形。
上面给出的DSP系统模型是一个典型的模型,但并不是所有的DSP系统必须具备模型中的所有部件。如语音识别系统在输出端并不是连续的波形,而是识别结果,如数字、文字等; 有些输入信号本身就是数字信号,因此就不需要模数(A/D)转换了。
5.4.2DSP应用系统的开发流程
DSP应用系统设计的一般流程如图5.4.2所示。


图5.4.2DSP应用系统的设计流程图


首先,在设计DSP系统之前,必须根据应用系统的目标确定系统性能指标和信号处理的要求,通常可用数据流程图、数学运算序列、正式的符号或自然语言来描述。
其次,根据系统的要求进行高级语言的模拟。一般说来,为了实现系统的最终目标,需要对输入的信号进行适当的处理,而处理方法的不同会导致不同的系统性能,要得到最佳的系统性能,就必须在这一步确定最佳的处理方法,即数字信号处理的算法,因此这一步也称算法模拟阶段。例如语音压缩编码算法就是在确定的压缩比条件下,获得最佳的合成语音。算法模拟所用的输入数据是实际信号经采集而获得的,通常以计算机文件的形式存储为数据文件。有些算法模拟时所用的输入数据并不一定要实际采集的信号数据,只要能够验证算法的可行性,输入假设的数据也是可以的。
在完成上一步之后,接下来就可以设计实时DSP系统,实时DSP系统的设计包括硬件设计和软件设计两个方面。硬件设计首先要根据系统的运算量的大小、对运算精度的要求、系统成本限制以及体积、功耗等要求选择合适的DSP芯片。然后设计DSP芯片的外围电路及其他电路。软件设计和编程主要根据系统要求和所选的DSP芯片编写相应的DSP汇编程序,若系统运算量不大且有高级语言编译器支持,也可用高级语言(如C语言)编程。由于现有的高级语言编译器的效率还比不上手工编写汇编语言的效率,因此在实际应用系统中常常采用高级语言和汇编语言的混合编程方法,即在算法运算量大的地方,用手工编写的方法编写汇编语言,而运算量不大的地方采用高级语言。采用这种方法,既可缩短软件开发的周期,提高程序的可读性和可移植性,又能满足系统实时运算的要求。
DSP硬件和软件设计完成后,就需要进行硬件和软件的调试。软件的调试一般借助于DSP开发工具,如软件模拟器、DSP开发系统和仿真器等。调试DSP算法时一般采用比较实时结果与模拟结构的方法,如实时程序和模拟程序的输入相同,则两者的输出应该一致。应用系统的其他软件可以根据实际情况进行调试。硬件调试一般采用硬件仿真器进行调试,如果没有相应的硬件仿真器,且硬件系统不是很复杂,也可以借助于一般的工具进行调试。
系统调试完成以后,就可以将软件脱离开发系统而直接在应用系统上运行。当然,DSP系统的开发,特别是软件开发是一个需要反复进行的过程,虽然通过算法模拟基本上可以知道实时系统的性能,但实际上模拟环境不可能做到与实时系统环境完全一致,而且将模拟算法移植到实时系统时必须考虑算法是否能够实时运行的问题。如果算法运算量太大不能在硬件上实时运行,则必须重新修改或简化算法。
5.5部分数字信号处理器简介
TMS320系列曾是TI公司的DSP的主流产品,包括TMS320C2000、TMS320C5000、TMS320C6000系列。C5000系列中有三种,一种是C5402,速度保持100MIPS,片内存储空间稍小一些,RAM为16×1024字、ROM为4×1024字。主要应用对象是无线调制解调器、新一代PDA、网络电话和其他电话系统以及消费类电子产品。第二种是C5420,它拥有两个DSP核,速度达到200MIPS,200×1024字片内RAM,功耗0.32mA/MIPS,200MIPS全速工作时不超过120mW。C5420是集成度较高的定点DSP,适合于做多通道基站、服务器、调制解调器和电话系统等要求高性能、低功耗、小尺寸的场合。第三种是C5416,它是TI公司0.15μm器件中的第一款,速度为160MIPS,有三个多通道缓冲串行口,能够直接与T1或E1线路连接,不需要外部逻辑电路,有128×1024字片内RAM。应用对象是VoIP、通信服务器、PBX(专用小交换机)和计算机电话系统等。TI公司推出的应用于3G开发的OMAP平台集成了多个C54xx处理器,提高了数据处理能力。
TMS320C6000是TI公司1997年推向市场的高性能DSP,具有最佳的性价比和低功耗。C6000系列中又分成定点和浮点两类。
(1) C62xx 16位定点DSP,速度为1200~2000MIPS,用于无线基站、ADSL调制解调器、网络系统、中心局交换机、数字音频广播设备等。
(2) C67xx 32位浮点DSP,速度为1GFLOPS,用于基站数字波束形成、医学图像处理、语音识别、3D图形等。
达芬奇(da Vinci)技术是基于信号处理的数字视频应用解决方案。TI根据应用的不同推出了基于不同达芬奇处理器的解决方案。达芬奇处理器大致可以分为三类: 基于TMS320C64x+DSP内核的处理器、基于TMS320DM64x+DSP和ARM926内核的处理器,以及基于TMS320DM3x的ARM926内核(带协处理器)的处理器。
第一类包括TMS320DM643x和TMS320DM647/TMS320DM648。TMS320DM643x数字媒体处理器基于 TMS320C64x+DSP 内核。它适用于空中娱乐系统、机器视觉系统、机器人、视频安全设备和视频电话、车用视觉系统。TMS320DM647/TMS320DM648基于TMS320C64x+DSP内核,适用于多通道视频安全和基础设施应用。应用对象为数码摄影机(DVR)、IP视频服务器、机器视觉系统和高性能成像应用。
第二类包括TMS320DM644x 和TMS320DM646x。TMS320DM646x可实现实时、多格式 HD 视频代码转换,其性能是原处理器的 10 倍,但价格却只有原来的 1/10。它适用于媒体网关、多点控制单元、数字媒体适配器、用于安防市场的数字视频服务器和录像机以及 IP 机顶盒。TMS320DM644x 是高度集成的 SoC,基于 ARM926 处理器和 TMS320C64x+ DSP 内核。应用于视频电话、汽车信息娱乐系统、数码相机、流媒体和 IP 机顶盒。
第三类为TMS320DM3x。针对便携式和其他低功耗 HD 视频产品进行了优化,使 HD 产品的电池寿命延长了一倍。非常适合于数码相机/便携式摄像机、便携式媒体播放器、IP 网络摄像机、数码相框、视频门铃、婴儿视频监控和数字标牌等应用。
对于终端厂商来说,无线网络面临的设计挑战主要来自两个方面: 一是用户体验,即对于多媒体、上网浏览,使用的方便性的需求; 二是在保证用户体验的情况下实现最低功耗。对此,TI的OMAP处理器平台提供了强大的硬件与软件支持,其平台的核心是一套完美结合了低功耗和高性能特性的功能强大的片上系统。OMAP处理器在四大引擎的处理能力间实现了完美平衡,包括: 基于TMS320C64x+DSP及低功耗、多格式硬件加速器的可编程多媒体引擎; 支持对称多处理 (SMP)、基于双核 ARM CortexA9 MPCore 的通用处理引擎,每颗内核的速度可超过 1GHz; 高性能可编程图形引擎; 视频与图像性能无与伦比的图像信号处理器 (ISP)。此外,OMAP平台还包含综合而全面的软件套件、电源管理技术以及其他支持性组件,从而可为创建以极低功耗实现优异移动计算性能的设备提供必要的基础。
OMAP处理器分为两大类: OMAP35x和OMAPL1x。OMAP35x应用处理器基于ARM CortexA8 内核,拥有超出当今 300MHz ARM9 器件 4 倍的处理性能,超标量 600MHz CortexA8 内核已集成于四款新型 OMAP35x 应用处理器中。OMAPL1x 应用处理器包含 RM9 和 ARM9plusDSP 架构,提供用于联网的各种外设,并运行 Linux 或 DSP/BIOS实时内核以实现操作系统灵活性。该产品系列还与TMS320C674x和C640x 产品系列中的各种器件引脚兼容。功耗范围从 8mW(待机模式)至 400mW(总功耗)。
5.6本章小结
硬件实现是“DSP处理算法”向“DSP系统”映射的最关键的一环。本章初步介绍了数字信号处理器的结构特点,开发流程和当今市面上最为流行的TMS320处理器家族各个系列的使用特征。这仅仅是想给读者提供一些基本的概念。实际上,FPGA、ASIC以及带有IP核的SOPC系统也同样为这种算法——硬件的映射提供了非常强大而又灵活的折中处理手段。我们鼓励读者多去了解一些这些工具的同时,更希望读者能够踏踏实实地进行一些这方面的实践。