第1章 DSP应用系统开发基础
数字信号处理(Digital Signal Processor,简称DSP)是一门涉及许多学科而又广泛应用于许多领域的新兴学科。20世纪60年代以来,随着计算机和信息技术的飞速发展,数字信号处理技术应运而生并得到迅速的发展。在过去的二十多年时间里,数字信号处理已经在通信等领域得到极为广泛DSP技术图解的应用。数字信号处理是利用计算机或专用处理设备,以数字形式对信号进行采集、变换、滤波、估值、增强、压缩、识别等处理,以得到符合人们需要的信号形式。
本章主要讲述DSP应用系统开发的基础知识,共分三部分。
第一部分是关于DSP应用系统开发的基础知识,主要包括DSP总体方案设计、DSP芯片选型、硬件电路设计、软件程序设计、DSP应用系统集成;
第二部分是关于DSP应用系统开发工具的知识,分别介绍了常用DSP的软件和硬件开发工具;
第三部分简单介绍了一个DSP应用实例,即基于TMS320F2812DSP(美国德州仪器TI的集成电路)的最小系统设计的基本步骤和方法。
在设计一个DSP应用系统时,不仅要熟悉芯片的硬件结构、指令系统等,还要熟悉DSP开发、调试工具的使用,从而使后续各章的学习目标更加明确。充分理解这些知识对于后续各章的学习具有非常重要的作用。
1.1 DSP应用系统开发流程
1.1.1 DSP总体方案设计利用DSP芯片设计一个DSP系统的大致步骤如图1.1所示。现对图1.1所列各步骤作简要说明。
图1.1 DSP总体设计框图
在进行DSP系统设计之前,首先要明确设计任务,给出设计任务书。在设计任务书中,应该将系统要达到的功能描述准确、清楚。描述的方式可以是人工语言,也可以是流程图或算法描述。在此之后应该把设计任务书转化为量化的技术指标。结合DSP系统的设计,这些技术指标主要包括:
①由信号的频率决定的系统采样频率。
②由采样频率完成任务书最复杂的算法所需最大时间及系统对实时程度的要求判断系统能否完成工作。
③由数据量及程序的长短决定片内RAM的容量,是否需要扩展片外RAM及片外RAM容量。
④由系统所要求的精度决定是16位还是32位,是定点还是浮点运算。
⑤根据系统是计算用还是控制用来决定对输入输出端口的要求。
在一些特殊的控制场合还有一些专门的芯片可供选用。如电机控制领域很适合用TMS320C2812系列,因为它上面集成了2路A/D输入、6路PWM输出及强大的人机接口。由上述的一些技术指标,大致可以确定应该选用的DSP芯片的型号。根据选用的DSP芯片及上述技术指标,还可以初步确定A/D、D/A、RAM的性能指标及可供选择的产品。当然在产品选型时,还须考虑:成本、供货能力、技术支持(资料、第三方部门)、开发系统(开发系统可能很贵,这时还要考虑成本)、体积、功耗、工作环境温度(这在一些场合是非常重要的)。在确定DSP芯片选型之后,应当先进行系统的总体设计。首先采用高级语言或MATLAB等对算法进行仿真,确定最佳算法并初步确定参数,对系统中的哪些功能用软件来实现、哪些功能用硬件实现进行初步的分工,如FFT、FIR等是否需要用专用芯片来实现等。
1.1.2 DSP芯片选型
在设计DSP应用系统时,选择DSP芯片是非常重要的一个环节。只有选定了DSP芯片才能进一步设计其外围电路及系统的其他电路。总的来说,DSP芯片的选择应根据实际的应用系统需要而确定。随着应用场合和设计目标的不同,DSP选择的依据重点也不同,通常需要考虑以下因素:
(1)DSP芯片的运算速度运算速度是DSP芯片一个最重要的性能指标,也是选择DSP芯片时所需要考虑的一个主要因素。设计者先由输入信号的频率范围确定系统的最高采样频率,再根据算法的运算量和实时处理限定的完成时间确定DSP运算速度的下限。DSP芯片的运算速度可以用以下几种指标来衡量。
①指令周期:即执行一条指令所需的时间,通常以纳秒(ns)为单位。如TMS320F2812A在主频为150MHz时的指令周期为7ns。
②MAC时间:即一次乘法加上一次加法的时间。大部分DSP芯片可在一个指令周期内完成一次乘法和加法操作,如TMS320F2812A的MAC时间就是7ns。
③FFT执行时间:即运行一个N点FFT程序所需的时间。由于FFT涉及的运算在数字信号处理中很有代表性,因此FFT运算时间常作为衡量DSP芯片运算能力的一个指标。
④MIPS:即每秒执行百万条指令。如TMS320F2812A的处理能力为150MIPS,即每秒可执行1.5亿条指令。
⑤MOPS:即每秒执行百万次操作。如TMS320C40的运算能力为275MOPS。
⑥MFLOPS:即每秒执行百万次浮点操作。如TMS320C31在主频为40MHz时的处理能力为40MFLOPS。
⑦BOPS:即每秒执行十亿次操作。如TMS320C80的处理能力为2BOPS。
(2)DSP芯片的运算精度
由系统所需要的精度确定是采用定点运算还是浮点运算。参加运算的数据字长越长精度越高,目前,除少数DSP处理器采用20位、24位或32位的格式外,绝大多数定点DSP都采用16位数据格式。由于其功耗小和价格低廉,实际应用的DSP处理器绝大多数是定点处理器。为了保证底数的精度,浮点DSP的数据格式基本上都做成32位,其数据总线、寄存器、存储器等的宽度也相应是32位。在实时性要求很高的场合,往往考虑使用浮点DSP处理器。与定点DSP处理器相比,浮点DSP处理器的速度更快,但价格比较高,开发难度也更大一些。
(3)片内硬件资源
由系统数据量的大小确定所使用的片内RAM及需要扩展的RAM的大小;根据系统是作计算用还是控制用来确定I/O端口的需求。不同的DSP芯片所提供的硬件资源是不相同的,如片内RAM、ROM的数量,外部可扩展的程序和数据空间,总线接口、I/O接口等。即使是同一系列的DSP芯片(如TI的TMS320C54x系列),系列中不同DSP芯片也具有不同的内部硬件资源,以适应不同的需要。在一些特殊的控制场合有一些专门的芯片可供选用,如TMS320C281x系列自身带有2路A/D输入和6路PWM输出及强大的人机接口,特别适合于电动机控制场合。
(4)DSP芯片的功耗
在某些DSP应用场合,功耗也是一个很重要的问题。功耗的大小意味着发热的大小和能耗的多少。如便携式的DSP设备、手持设备(手机)和野外应用的DSP设备,对功耗都有特殊的要求。
(5)DSP芯片的开发工具
快捷、方便的开发工具和完善的软件支持是开发大型复杂DSP系统必备的条件,有强大的开发工具支持,就会大大缩短系统开发时间。现在的DSP芯片都有较完善的软件和硬件开发工具,其中包括Simulator软件仿真器、Emulator在线仿真器和C编译器等。如TI公司的CCS集成开发环境、XDSP实时软件技术等,为用户快速开发实时高效的应用系统提供了巨大帮助。
(6)DSP芯片的价格
在选择DSP芯片时一定要考虑其性能价格比。如价格过高,即使其性能较高,在应用中也会受到一定的限制,如应用于民用品或批量生产的产品中就需要较低廉的价格。另外,DSP芯片发展迅速,价格下降也很快。因此在开发阶段可选择性能高、价格稍贵的DSP芯片,等开发完成后,会具有较高的性价比。
(7)其他因素
除了上述因素外,选择DSP芯片还应考虑到封装的形式、质量标准、供货情况、生命周期等。有的DSP芯片可能有DIP、PGA、PLCC、PQFP等多种封装形式。有些DSP系统可能最终要求的是工业级或军用级标准,在选择时就需要注意到所选的芯片是否有工业级或军用级的同类产品。如果所设计的DSP系统不仅仅是一个实验系统,而是需要批量生产并可能有几年甚至十几年的生命周期,那么需要考虑所选的DSP芯片供货情况如何,是否也有同样甚至更长的生命周期等。
上述各因素中,确定DSP应用系统的运算量是非常重要的,它是选用不同处理能力的DSP芯片的基础,运算量小则可以选用处理能力不是很强的DSP芯片,从而可以降低系统成本。相反,运算量大的DSP系统则必须选用处理能力强的DSP芯片,如果DSP芯片的处理能力达不到系统要求,则必须用多个DSP芯片并行处理。如何确定DSP系统的运算量并选择DSP芯片,主要考虑以下两种情况。
①按样点处理 所谓按样点处理,就是DSP算法对每一个输入样点循环一次。数字滤波就是这种情况,在数字滤波器中,通常需要对每一个输入样点计算一次。
例如,一个采用LMS算法的256抽头的自适应FIR滤波器,假定每个抽头的计算需要3个MAC周期,则256抽头计算需要256×3=768个MAC周期如果采样频率为8kHz,即样点之间的间隔为125μs,DSP芯片的MAC周期为200ns,则768个MAC周期需要768×200ns=153.6μs由于计算1个样点所需的时间153.6μs大于样点之间的间隔125μs,显然无法实时处理,需要选用速度更高的DSP芯片。若选DSP芯片的MAC周期为100ns,则768个MAC周期需要768×100ns=76.8μs由于计算1个样点所需的时间76.8μs小于样点之间的间隔125μs,可实现实时处理。
②按帧处理 有些数字信号处理算法不是每个输入样点循环一次,而是每隔一定的时间间隔(通常称为帧)循环一次。中低速语音编码算法通常以10ms或20ms为一帧,每隔10ms或20ms语音编码算法循环一次。所以,选择DSP芯片时应该比较一帧内DSP芯片的处理能力和DSP算法的运算量。
例如,假设DSP芯片的指令周期为p,一帧的时间为Δt,则该DSP芯片在一帧内所能提供的最大运算量为最大运算量=Δt/p条指令
例如, TMS320VC5402-100的指令周期为10ns,设帧长为20ms,则一帧内TMS320VC5402-100所能提供的最大运算量为最大运算量=200ms/10ns=200万条指令
因此,只要语音编码算法的运算量不超过200万条指令(单周期指令),就可以在TMS320VC5402-100上实时运行。
1.1.3 硬件电路设计
DSP硬件系统可能由一个DSP及外围总线组成,也可能由多个DSP组成,这完全取决于DSP处理的要求。DSP硬件系统的主要任务是将前向通道输出的信号按照一定的算法进行处理,然后将处理的结果以数据流的形式输出给后向通道。后向通道主要由D/A、f/V、平滑滤波器及功率放大器等部分组成。DSP硬件系统设计阶段一般分为以下几步进行。
第一步:设计硬件实现方案。所谓硬件实现方案是指根据性能指标、工期、成本等,确定最优硬件实现方案(考虑到实际的工作情况,最理想的方案不一定是最优的方案),并画出其硬件系统框图,如图1.2所示。这时对于具体器件的要求应该已经比较明确。

图 1. 2 硬件设计系统框图
第二步:进行器件的选型。一般系统中常用A/D、D/A、内存、电源、逻辑控制、通信、人机接口、总线等
基本部件。下面将大致介绍它们的确定原则。
A/D:根据采样频率、精度来确定A/D型号,是否要求芯片自带采样保护、多路器、基准电源等。
D/A:信号频率、精度是否要求自带基准电源、多路器、输出运放等。
内存:包括SRAM、EPROM(或EEPROM、FLASHMEMORY),在TMS320C6000等一些产品中还有SDRAM、SBSRAM。所有这些的选型主要考虑工作频率、内存容量位长(8位/16位/32位)、接口方式(串行还是并行)、工作电压是5V还是3.3V或其他。
逻辑控制:首先是确定用PLD、CPLD还是FPGA。其次根据自己的特长和公司芯片的特点决定采用哪家公司的哪一系列的产品。最后还须根据DSP的频率决定芯片的工作频率以确定使用的芯片。
通信:通信的要求一般系统都是需要的。首先需要根据通信的速率决定采用的通信方式。一般采用串口只能到达19.2kbps(RS-232),而并口则可达到1Mbps以上。如果还有更高的要求则应考虑通过总线进行通信。
总线:一般有PCI、ISA、现场总线如CAN,3×bus等。采用哪一种总线主要看使用的场合、数据传输速率的高低(总线宽度、频率高低、同步方式等)。
人机接口:有键盘、显示器等,它们可以通过与80C196等单片机的通信来构成,也可以在DSP的基础上直接构成,视情况而定。
电源:主要是电压的高低以及电流的大小。电压要匹配,电流容量要足够。
上述这些部件的选择可能会相互有些影响。同时,在选型时还必须充分考虑到供货能力、性能价格比、技术支持、使用经验等因素。
第三步:进行原理图设计。在这一步之前的工作基本上是分析工作。而从这一步起,则开始综合的工作,逐步开始系统的集成。在所有的综合工作中,原理图的设计是关键的一步。在原理
图的设计时必须清楚了解器件的使用和系统的开发,对于一些关键的环节有必要做一定的仿真。随着大规模集成芯片和可编程逻辑芯片的发展,硬件原理设计的难度得以降低,但它依然是DSP系统集成中关键的一步。原理图设计的成功与否是DSP系统能否正常工作的最重要的一个因素。第四步:PCB图设计。PCB图的设计要求DSP系统的设计人员既要熟悉系统工作原理,还要清楚布线工艺和系统结构设计。第五步:硬件调试。对DSP系统整体的硬件方案的确定、各种器件的选型、原理的设计和各种硬件电路进行详细分析与调试。
1.1.4 软件程序设计在成功的DSP技术应用中,好的编程技术扮演了重要的角色。开始开发时,首先要确定编程的结构方法和好的证明方法。在写任何程序步骤之前,花一些时间制定信号处理任务的综合计划有好处。这个计划应该考虑到需要的存储器大小、强加在处理器上程序长度方面的限制、执行时间等。图1.3所示为DSP软件开发的流程图。该图详细指出了一个典型工程所需要的步骤。这里的描述比较完整,在流程图的中间阶段,所需文件的输入与输出类型也给出来了。

图1.3 DSP软件开发的流程图
(1)DSP软件编程的特点在此仅对DSP系统软件开发流程做简单的介绍。
①与计算机的汇编语言比起来,由于TI公司汇编语言的指令系统比计算机汇编语言的指令系统要简单一些,而且由于有许多专门为数字信号处理器而设计的指令,因此比较容易掌握并运用于数字信号处理的编程中。
②与高级语言比起来,使用DSP汇编语言的用户一定要熟悉DSP芯片内部结构和指令系统。尤其是在多DSP并行处理的场合,或在便携电话、磁盘驱动器等编程空间很小的场合,这对偏重高效的DSP软件是非常重要的。
③高级语言(如C语言)的开发工具不断完善,随着TI公司C语言编译器、优化器的不断改进,以及一些第三部门的不断努力,C语言的编译效率已经得到了很大的提高。在C3X中,其编译效率大约为汇编语言的1/10,而到了C6X系列,其编译效率提高了3倍。
④在实时要求高的场合或实时要求高的算法中,用汇编语言开发;实时要求低的场合用C语言编程。将两者结合起来,既能保持算法的实时性,又能做到程序结构的清晰明了。
(2)软件编程的步骤
①用汇编语言、C语言或汇编语言和C语言的混编来编写程序,然后把它们分别转化成TMS320的汇编语言并送到汇编语言编译器进行编译,生成目标文件。
②将目标文件送入连接器进行连接,得到可执行文件。
③将可执行文件调入到调试器(包括软件仿真、软件开发系统、评测模块、系统仿真器,一般在系统调试中,系统仿真器是最常用的)进行调试,检查运行结果是否正确。如果正确进入第④步;如果不正确,则返回第一步。
④进行代码转换,将代码写入FLASHROM,并脱离仿真器运行程序,检查结果是否正确。如果不正确,返回第③步;如果正确,进入下一步。⑤软件测试。如果测试结果合格,软件调试完毕;如果不合格,返回第一步。
1.1.5 DSP系统集成在完成系统的软硬件设计之后,将进行DSP系统集成。所谓系统集成是将软硬件结合起来,组装成一台样机,并在实际DSP系统中运行,进行DSP系统测试。如果DSP系统调试结果符合指标,则样机的设计完毕。但由于在软硬件调试阶段调试的环境是模拟的,因此在DSP系统测试中往往可能会出现一些问题,如精度不够、稳定性不好等。出现问题时,一般采用修改软件的方法。如果软件修改无法解决问题,则必须必须调整硬件,这时问题就较为严重了。
1.2 DSP应用系统开发工具
对于DSP开发工程师来说,除必须了解和熟悉DSP本身的结构和技术指标外,大量的时间和精力要花费在熟悉和掌握其开发工具和环境上。此外,通常情况下开发一个嵌入式系统,80%的复杂程度取决于软件。所以,设计人员在为实时系统选择处理器时,都极为看重先进的、易于使用的开发环境与工具。因此,各DSP生产厂商以及许多第三方公司做了极大的努力,为DSP系统集成和硬软件的开发提供了大量有用的工具,使其成为DSP发展过程中最为活跃的领域之一,随着DSP技术本身的发展而不断地发展与完善。
1.2.1 软件开发工具DSP软件可以使用汇编语言或C语言编写源程序,通过编译、连接工具产生DSP的执行代码。在调试阶段,可以利用软仿真(Simulator)在计算机上仿真运行;也可以利用硬件调试工具(如XDS510)将代码下载到DSP中,并通过计算机监控、调试运行该程序。当调试完成后,可以将该程序代码固化到EPROM中,以便DSP目标系统脱离计算机单独运行。下面简要介绍几种常用的软件开发工具。
(1)代码生成工具代码生成工具包括编译器、连接器、优化C编译器、转换工具等。可以使用汇编语言或C语言(最新版的CCS中带的代码生成工具可以支持C++)编写的源程序代码。编写完成后,使用代码生成工具进行编译、连接,最终形成机器代码。
(2)软仿真器软仿真器(Simulator)是一个软件程序,使用主机的处理器和存储器来仿真
TMS320DSP的微处理器和微计算机模式,从而进行软件开发和非实时的程序验证。可以在没有目标硬件的情况下作DSP软件的开发和调试。在PC上,典型的软仿真速度是每秒几百条指令。早期的软仿真器软件与其他开发工具(如代码生成工具)是分离的,使用起来不太方便。现在,软仿真器作为CCS的一个标准插件已经被广泛应用于DSP的开发中。(3)集成开发环境CCSCCS(CodeComposerStudio)是一个完整的DSP集成开发环境,包括了编辑、编译、汇编、连接、软件模拟、调试等几乎所有需要的软件,是目前使用最为广泛的DSP开发软件之一。它有两种工作模式:一是软件仿真器,即脱离DSP芯片,在PC上模拟DSP指令集与工作机制,主要用于前期算法和调试;二是硬件开发板结合在线编程,即实时运行在DSP芯片上,可以在线编制和调试应用程序。
1.2.2 硬件开发工具
下面简要介绍几种常用的硬件开发工具。
(1)硬仿真器(Emulator)硬仿真器(Emulator)由插在PC内PCI卡或接在USB口上的仿真器和目标板组成。C54x硬件扫描仿真口通过仿真头(JTAG)将PC中的用户程序代码下载到目标板的存储器中,并在目标板内实时运行。TMS320扩展开发系统XDS(eXtendedDevelopmentSystem)是功能强大的全速仿真器,用于系统级的集成与调试。扫描式仿真(Scan-BasedEmulator)是一种独特的、非插入式的系统仿真与集成调试方法。程序可以从片外或片内的目标存储器实时执行,在任何时钟速度下都不会引入额外的等待状态。XDS510/XDS510WS仿真器用户界面友好,是以PC或SUN工作站为基础的开发系统,对C2000、C5000、C6000、C8x系列的各片种实施全速扫描式仿真。因此,可以用来开发软件和硬件,并将它们集成到目标系统中。XDS510适用于PC,XDS510WS适用于SPARC工作站。
(2)DSK系列评估工具及标准评估模块DSP入门套件DSK(DSPStarterKit)、评估模块EVM(EvaluationModule)是TI或TI的第三方为TMS320DSP的使用者设计和生产的一种评估平台,目前可以为C2000、C3x、C5000、C6000等系列片种提供该平台。DSK或EVM除了提供一个完整的DSP硬件系统外(包括A/D&D/A、外部程序/数据存储器、外部接口等),还提供有完整的代码生成工具及调试工具。用户可以使用DSK或EVM来做DSP的实验,进行诸如控制系统、语音处理等应用;也可以用来编写和运行实时源代码,并对其进行评估;还可以用来调试用户自己的系统。在DSP应用系统开发过程中,需要开发工具支持的情况如表1.1所示。
表 1. 1 DSP应用系统开发工具支持
1. 3 实例: 基于TMS320F2812A的DSP最小系统设计
一个DSP硬件系统可以分为最小硬件系统设计和外围接口设计两个部分。
一个DSP最小硬件系统包括电源、复位电路、时钟电路、总线接口和仿真接口等部分, 缺一不可。 给出最小系统原理框图,如图 1. 4 所示。
实例:搭建一个基于TMS320F2812ADSP的最小系统。下面给出一个完整的TMS320F2812A芯片的最小系统的原理图,它是一个独立的最小系统。
整个设计包括4张图,分别为最小系统原理框图(图1.4)、DSP外围扩展电路图(图1.5)、JTAG仿真口端子图(图1.6)、DSP与JTAG仿真口连接图(图1.7)。
图1.5 DSP外围扩展电路图


图1.7 DSP与JTAG仿真口连接图