DSP 芯片的原理与开发应用
张雄伟 编著
電子工業出版社 ·
Publishing House of Electronics Industry
1.1 引 言
数字信号处理(Digital Signal Processing,简称 DSP)是一 门涉及许多学科且广泛应用于许多 领域的新兴学科。本世纪60年代以来,随着计算机和信息学科的飞速发展,数字信号处理技 术应运而生并得到迅速的发展。在过去的十几年里,数字信号处理已经成为通信等领域里的 一项极为重要的技术。
数字信号处理是利用计算机或专用处理设备,以数字形式对信号进行采集、变换、滤波、估 值、增强、压缩、识别等处理,以得到符合人们需要的信号形式。
数字信号处理是围绕着数字信号处理的理论、实现和应用等几个方面发展起来的。数字 信号处理在理论上的发展推动了数字信号处理应用的发展,反过来,数字信号处理的应用又促 进了数字信号处理理论的提高,而数字信号处理的实现则是理论和应用之间的桥梁。
数字信号处理是以众多的学科为理论基础的,它所涉及的范围极其广泛。例如,在数学领 域,微积分、概率统计、随机过程、数值分析等都是数字信号处理的基本工具,同时,与网络理 论、信号与系统、控制论、通信理论、故障诊断等也密切相关。近来新兴的一些学科,如人工智 能、模式识别、神经网络等,都是与数字信号处理密不可分的。可以说,数字信号处理是把许多 经典的理论体系作为自己的理论基础,同时又使自己成为一系列新兴学科的理论基础。
数字信号处理的实现方法一般有以下几种:(1)在通用的计算机(如PC 机)上用软件(如 Fortran、C语言)实现。(2)在通用计算机系统中加上专用的加速处理机。(3)用通用的单片机 ( 如 MCS-51系列等)实现,这种方法可用于一些不太复杂的数字信号处理,如数字控制等。(4) 用通用的可编程 DSP芯片实现。与单片机相比,DSP 芯片具有更加适合于数字信号处理的软 件和硬件资源,可用于复杂的数字信号处理算法。(5)用专用的 DSP芯片实现。在一些特殊 的场合,要求的信号处理速度极高,用通用DSP 芯片很难实现,例如专用于 FFT、数字滤波、卷 积、相关等算法的 DSP芯片,这种芯片将相应的信号处理算法在芯片内部用硬件实现,无需进 行编程。
在上述几种方法中,第一种方法的缺点是速度较慢, 一般可用于 DSP 算法的模拟。第二 种和第五种方法专用性强,应用受到很大的限制。第二种方法不适合于复杂的 DSP算法。只 有第三种方法才使数字信号处理的应用打开了新的局面。
虽然数字信号处理的理论发展迅速,但在80年代以前,由于实现方法的限制,数字信号处 理的理论还得不到广泛的应用。直到70年代末80年代初世界上第一个单片可编程 DSP芯 片 的诞生,才将理论研究结果广泛应用到低成本的实际系统中,并且推动了新的理论和应用领域 的发展。可以毫不夸张地说,DSP芯片的诞生及发展对近十几年来通信、计算机、控制等领域 的发展起到十分重要的作用。
1.2 DSP 系 统
1.2.1 DSP 系统构成
图1. 1示出了一个典型的DSP系统。图中的输人信号可以有各种各样的形式,例如,它可 以是麦克风输出的语音信号或是电话线来的已调数据信号,也可以是编码后在数字链路上传 输或存储在计算机里的摄象机图象信号等。

图1.1 典型的DSP系统
输入信号首先进行带限滤波和抽样,然后进行模数(A/D) 变换将信号变换成数字比特流。 根据奈奎斯特抽样定理,为保持信息的不丢失,抽样频率至少必须是输入带限信号最高频率的 2 倍 。
DSP 芯片的输入是 A/D 变换后得到的以抽样形式表示的数字信号,DSP 芯片对输入的数 字信号进行某种形式的处理,如进行一系列的乘累加操作(MAC) 。 数字处理是 DSP的关键,这 与其它系统,如电话交换系统有很大的不同,在交换系统中,处理器的作用是进行路由选择,它 并不对输入数据进行修改。因此虽然两者都是实时系统,但两者的实时约束条件却有很大的 不同。最后,经过处理后的数字样值再经D/A 变换转换为模拟样值,之后再进行内插和平滑 滤波就可得到连续的模拟波形。
必须指出的是,上面给出的 DSP 系统模型是一个典型模型,但并不是所有的 DSP 系统都 必须具有模型中的所有部件。如语音识别系统在输出端并不是连续的波形而是识别结果,如 数字、文字等。有些输入信号本身就是数字信号(如CD), 因此就不必进行模数变换了。
1.2.2 DSP 系统的特点
数字信号处理系统是以数字信号处理为基础,因此具有数字处理的全部优点:
(1)接口方便。 DSP 系统与其它以现代数字技术为基础的系统或设备都是相互兼容的,与 这样的系统接口以实现某种功能要比模拟系统与这些系统接口要容易的多。
(2)编程方便。 DSP 系统中的可编程 DSP芯片可使设计人员在开发过程中灵活方便地对 软件进行修改和升级。
(2)稳定性好。 DSP 系统以数字处理为基础,受环境温度以及噪声的影响较小,可靠性高。
(3)精度高。16位数字系统可以达到的精度。
(4)可重复性好。模拟系统的性能受元器件参数性能变化比较大,而数字系统基本不受影 响,因此数字系统便于测试、调试和大规模生产。
(5)集成方便。 DSP 系统中的数字部件有高度的规范性,便于大规模集成。
当然,数字信号处理也存在一定的缺点。例如,对于简单的信号处理任务,如与模拟交换 线的电话接口,若采用DSP 则使成本增加。 DSP 系统中的高速时钟可能带来高频干扰和电磁泄漏等问题,而且 DSP 系统消耗的功率也较大。此外,DSP 技术更新的速度快,数学知识要求 多,开发和调试工具还不尽完善。
虽然 DSP 系统存在着一些缺点,但其突出的优点已经使之在通信、语音、图象、雷达、生物 医学、工业控制、仪器仪表等许多领域得到越来越多的应用。
1.2.3 DSP系统的设计过程
总的说来,DSP 系统的设计还没有非常好的正规设计方法。图1 . 1是DSP 系统设计的 一般过程。

在设计 DSP 系统之前,首先必须根据应用系统的目标确定系统的性能指标、信号处理的 要求,通常可用数据流程图、数学运算序列、正式的符号或自然语言来描述。
第二步是根据系统的要求进行高级语言的模拟。 一般来说,为了实现系统的最终目标,需 要对输入的信号进行适当的处理,而处理方法的不同会导致不同的系统性能,要得到最佳的系 统性能必须在这一步确定最佳的处理方法,即数字信号处理的算法(Algorithm), 因此这 一 步也 称算法模拟阶段。例如,语音压缩编码算法就是要在确定的压缩比条件下,获得最佳的合成语 音。算法模拟所用的输入数据是实际信号经采集而获得的,通常以计算机文件的形式存储为 数据文件。如语音压缩编码算法模拟时所用的语音信号就是实际采集而获得并存储为计算机 文件形式的语音数据文件。有些算法模拟时所用的输入数据并不一定要是实际采集的信号数 据,只要能够验证算法的可行性,输入假设的数据也是可以的。
在完成第二步之后,接下来就可以设计实时 DSP 系统,实时 DSP 系统的设计包括硬件设 计和软件设计两个方面。硬件设计首先要根据系统运算量的大小、对运算精度的要求、系统成 本限制以及体积功耗等要求选择一合适的DSP 芯片。然后设计 DSP 芯片的外围电路及其它 电路。软件设计和编程主要根据系统要求和所选的DSP 芯片编写相应的 DSP 汇编程序,若系 统运算量不大且有高级语言编译器支持,也可用高级语言(如 C 语言)编程。当然,由于现有 的高级语言编译器的效率还比不上手工编写汇编语言的效率,因此在实际应用系统中常常采
用高级语言和汇编语言的混合编程方法,即在算法运算量大的地方,用手工编写的方法编写汇编语言,而运算量不大的地方则采用高级语言。采用这种方法,既可缩短软件开发的周期,提 高程序的可读性和可移植性,又能满足系统实时运算的要求。
DSP硬件和软件设计完成后,就需要进行硬件和软件的调试。软件的调试一般借助于 DSP开发工具,如软件模拟器、DSP开发系统或仿真器等。调试 DSP算法时一般采用对实时结 果与模拟结果进行的方法,如果实时程序和模拟程序的输人相同,则两者的输出应该一致。应 用系统的其它软件可以根据实际情况进行调试。硬件调试一般采用硬件仿真器进行调试,如 果没有相应的硬件仿真器,且硬件系统不是十分复杂,也可以借助于一般的工具进行调试。
系统的软件和硬件分别调试完成后,就可以将软件脱离开发系统而直接在应用系统上运 行。当然,DSP系统的开发,特别是软件开发是一个需要反复进行的过程,虽然通过算法模拟 基本上可以知道实时系统的性能,但实际上模拟环境不可能做到与实时系统环境完全一致,而 且将模拟算法移植到实时系统时必须考虑算法是否能够实时运行的问题。如果算法运算量太 大不能在硬件上实时运行,则必须重新修改或简化算法。
1.3 可编程 DSP芯片
1.3.1 什么是 DSP 芯片
DSP 芯 片 , 也 称 数 字 信 号 处 理 器 , 是 一 种 特 别 适 合 于 进 行 数 字 信 号 处 理 运 算 的 微 处 理 器 , 其 主 要 应 用 是 实 时 快 速 地 实 现 各 种 数 字 信 号 处 理 算 法 。 根 据 数 字 信 号 处 理 的 要 求 ,DSP 芯 片 一 般 具 有 如 下 一 些 主 要 特 点 :
(1) 在 一 个 指 令 周 期 内 可 完 成 一 次 乘 法 和 一 次 加 法 。
(2)A分M开,通,常可可以通同过时独访立问的指数令据和总数线据在。两块中同时访问。
(4)具有低开销或无开销循环及跳转的硬件支持。
(5)快速的中断处理和硬件I/O 支持。
(6)具有在单周期内操作的多个硬件地址产生器。
(7)可以并行执行多个操作。
(8)支持流水线操作,使取指、译码和执行等操作可以重叠执行。
当然,与通用微处理器相比,DSP芯片的其它通用功能相对较弱些。
1.3.2 DSP芯片的发展
世界上第一个单片 DSP 芯片是1978年 AMI 公司宣布的 S2811,1979年美国 Intel公司宣 布的商用可编程器件2920是 DSP芯片的一个主要里程碑。这两种芯片内部都没有现代 DSP 芯片所必须有的单周期乘法器。1980年,日本 NEC公司推出的 uPD7720 是第一个具有乘法器 的商用DSP 芯片。
在这之后,最成功的 DSP芯片当数美国德克萨斯仪器公司(Texas Instruments,简称TI)的一 系列产品,TI公司在1982年成功推出其第一代 DSP 芯片 TMS32010 及其系列产品TMS32011、 [MS320C10/C14/C15/C16/C17 等,之后相继推出了第二代 DSP 芯片 TMS32020、TMS320C25/ C26/C28, 第三代 DSP芯 片TMS320C30/C31/C32,第四代 DSP芯片TMS320C40/C44,第五代 DSP 芯片TMS320C50/C51/C52/C53以及集多个 DSP 芯片于一体的高性能 DSP芯片 TMS320C80/C82等。如今,T 的一系列 DSP产品已经成为当今世界上最有影响的 DSP芯片。T 公司已经 成为世界上最大的 DSP芯片供应商,其 DSP市场份额占50%左右。
第一个采用CMOS 工艺生产浮点DSP 芯片的是日本的 Hitachi公司,它于1982年推出了浮 点DSP芯片。1983年日本Fujitsu公司推出的MB8764,其指令周期为120ns, 且具有双内部总 线,从而使处理的吞吐量发生了一个大的飞跃。而第一个高性能的浮点 DSP 芯片应是 AT&T 公司于1984年推出的DSP32。
与其它公司相比,Motorola 公司在推出 DSP芯片方面相对较晚。1986年,它推出了定点处 理器 MC56001 。1990年,它推出了与IEEE 浮点格式兼容的浮点 DSP芯片 MC96002。
美国模拟器件公司(Analog Devices,简称 AD) 在 DSP 芯片市场上也占有一定的份额,相继 推出了一系列具有自己特点的DSP芯片,其定点DSP芯片有ADSP2101/2103/2105、ASDP2111/2115、ADSP2161/2162/2164 以 及 ADSP2171/2181, 浮 点 DSP 芯 片 有 ADSP21000/21020、 ADSP21060/21062等。
自1980年以来,DSP芯片得到了突飞猛进的发展,DSP芯片的应用越来越广泛。从运算 速度来看,MAC(一次乘法和一次加法)时间已经从80年代初的400ns(如 TMS32010)降低到 40ns以下(如TMS320C40),处理能力提高了10多倍。 DSP芯片内部关键的乘法器部件从1980 年的占模片区(die area)的40%左右下降到5%以下,片内RAM增加一个数量级以上。从制造 工艺来看,1980年采用4!m 的 N 沟道 MOS(NMOS)工艺,而现在则普遍采用亚微米(Micron) CMOS工艺。DSP芯片的引脚数量从1980年的最多64个增加到现在的200个以上,引脚数量 的增加,意味着结构灵活性的增加,如外部存储器的扩展和处理器间的通信等。此外,DSP 芯 片的发展,使 DSP系统的成本、体积、重量和功耗都有很大程度的下降。表1.1是TI 公 司DSP 芯片1992年与1982年的比较表。表1.2则是世界上主要 DSP芯片供应商的代表芯片的一些 数 据 。


1.3.3 DSP 芯片的分类
DSP芯片可以按照下列三种方式进行分类。
1.按基础特性分
这是根据 DSP芯片的工作时钟和指令类型来分类的。如果在某时钟频率范围内的任何 时钟频率上,DSP芯片都能正常工作,除计算速度有变化外,没有性能的下降,这类DSP芯片一 般称之为静态DSP芯片。例如,日本0KI电气公司的DSP芯片属于这一类。这种DSP芯片在 存取速度较慢的存储器时不必再插人等待状态。
如果有两种或两种以上的 DSP芯片,它们的指令集和相应的机器代码机管脚结构相互兼 容,则这类DSP芯片称为一致性DSP芯片。例如,美国TI 公司的TMS320C1X就属于这一类。
2. 按数据格式分
这是根据 DSP芯片工作的数据格式来分类的。数据以定点格式工作的DSP芯片称为定 点DSP芯片,如 T 公司的 TMS320C1X/C2X/C5X 系列、AD公司的ADSP21XX 系列、AT&T公司 的 DSP16/16A、Motolora公司的MC56000 等。以浮点格式工作的称为浮点DSP 芯片,如TI公司 的 TMS320C3X/C4X/C8X、AD公司的 ADSP21XXX系列、AT&T公司的 DSP32/32C、Motolora公司 的 MC96002等 。
不同浮点 DSP芯片所采用的浮点格式不完全一样,有的 DSP芯片采用自定义的浮点格 式,如TMS320C3X;而有的 DSP芯片则采用IEEE的标准浮点格式,如Motorola公司的MC96002、 FUJIISI公司的MB86232和 ZORAN公司的ZR35325等。
3. 按用途分
按照 DSP 的用途来分,可分为通用型 DSP 芯片和专用型 DSP 芯片。通用型 DSP 芯片适合 普通的 DSP应用,如TⅡ公司的一系列DSP芯片属于通用型 DSP芯片。专用DSP 芯片是为特 定的 DSP 运算而设计,更适合特殊的运算,如数字滤波、卷积和 FFT, 如 Motorola 公司的 DSP56200、Zoran公司的ZR34881、Inmos公司的 IMSA100等就属于专用型的DSP芯片。
本书主要讨论通用型的 DSP芯片。
1.3.4 DSP芯片的选择
设计DSP应用系统,选择 DSP芯片是非常重要的一个环节。只有选定了DSP芯片才能进 一步设计其外围电路及系统的其它电路。总的来说,DSP 芯片的选择应根据实际的应用系统 需要而确定。不同的DSP 应用系统由于应用的场合、应用目的等不尽相同,对 DSP 芯片的选 择也是不同的。一般来说,选择 DSP 芯片时应考虑到如下诸多因素。
1.DSP芯片的运算速度。运算速度是 DSP芯片的一个最重要的性能指标,也是选择 DSP 芯片时所需要考虑的一个主要因素。DSP 芯片的运算速度可以用以下几种性能指标来衡量:
(1)指令周期:就是执行一条指令所需的时间,通常以ns 为单位。如 TMS320C25 在主频为 40MHz 时的指令周期为100ns。
(2)MAC 时间:即一次乘法加上一次加法的时间。大部分 DSP 芯片可在一个指令周期内 完成一次乘法和加法操作,如TMS320C25的 MAC时间就是100ns。
(3)FFT 执行时间:即运行一个 N点 FFT程序所需的时间。由于FFT运算涉及的运算在数 字信号处理中很有代表性,因此 FFT运算时间常作为衡量 DSP芯片运算能力的一个指标。
(4)MIPS:即每秒执行百万条指令。如TMS320C25 在时钟为40MHz 时的处理能力为10 MIPS,即每秒执行一千万条指令。
(5)MOPS: 即每秒执行百万次操作。如TMS320C40 的运算能力为275 MOPS。
(6)MFLOPS:即每秒执行百万次浮点操作。如TMS320C30在主频为33.33MHz时的处理能 力为33.33 MFLOPS。
(7)BOPS:即每秒执行十亿次操作。如 TMS320C80的处理能力为2 BOPS。
2.DSP 芯片的价格。DSP 芯片的价格也是选择DSP 芯片所需考虑的一个重要因素。如果 采用价格昂贵的DSP 芯片,即使性能再高,其应用范围肯定会受到一定的限制。因此根据实 际系统的应用情况,需确定一个价格适中的DSP芯片。当然,由于DSP芯片发展迅速,DSP芯 片的价格往往下降较快,因此在开发阶段选用某种价格稍贵的 DSP芯片,等到系统开发完毕, 其价格可能已经下降一倍甚至更多。
3.DSP芯片的硬件资源。不同的 DSP芯片所提供的硬件资源是不相同的,如片内RAM、 ROM的数量,外部可扩展的程序和数据空间,总线接口、I/O 接口等。即使是同一系列的DSP 芯片,如TI的 TMS320C5X 系列,不同的DSP芯片也可以适应不同的需要。
4.DSP 芯片的运算精度。一般的定点 DSP 芯片的字长为16位,如TMS320 系列。但有的 公司的定点芯片为24位,如 Motorola公司的MC56001等。浮点芯片的字长一般为32位,累加 器为40位。
5.DSP 芯片的开发工具。在DSP 系统的开发过程中,开发工具是必不可少的。如果没有 开发工具的支持,要想开发 DSP系统几乎是不可能的。如果有功能强大的开发工具的支持, 如C 语言支持,则开发的时间就会大大缩短。所以,在选择DSP芯片的同时必须注意其开发 工具的支持情况,包括软件和硬件的开发工具。
6.DSP 芯片的功耗。在某些DSP应用场合,功耗也是一个需要特别注意的问题。如便携 式的DSP设备、手持设备、野外应用的DSP设备等对功耗有特殊的要求。
7. 其它。除了上述因素外,选择 DSP芯片还应考虑到封装的形式、质量标准、供货情况、 生命周期等。有的DSP芯片可能有 DIP、PGA、PLCC、PQFP等多种封装形式。有些DSP 系统可 能最终要求的是工业级或军用级标准,在选择时就需要注意到所选的芯片是否有工业级或军用级的同类产品。如果所设计的 DSP 系统不仅仅是一个实验系统,而是需要批量生产并可能 有几年甚至十几年的生命周期,那么需要考虑所选的 DSP 芯片供货情况如何,是否也有同样 甚至更长的生命周期,等等。
在上述诸多因素中,一般而言,定点 DSP芯片的价格较为便宜、功耗较低,但运算精度稍 低。而浮点DSP芯片的优点是运算精度高、C 语言编程调试方便,但价格稍贵、功耗较大。例 如 TI的 TMS320C25 属于定点DSP 芯片,低功耗和低成本是其主要的特点。而TMS320C30 属于 浮点DSP 芯片,运算精度高,用C 语言编程方便,开发周期短,但同时其价格和功耗也较高。
DSP 应用系统的运算量是确定选用处理能力多大的DSP 芯片的基础。运算量小则可以选 用处理能力不是很强的 DSP 芯片,从而可以降低系统成本。相反,运算量大的 DSP 系统则必 须选用处理能力强的DSP芯片,如果DSP 芯片的处理能力达不到系统要求,则必须用多个 DSP 芯片并行处理。那么如何确定DSP 系统的运算量以选择 DSP 芯片呢?下面我们来考虑两种 情况。
1. 按样点处理
所谓按样点处理就是 DSP 算法对每一个输入样点循环一次。数字滤波就是这种情况。 在数字滤波器中,通常需要对每一个输入样点计算一次。例如,一个采用LMS算法的256抽 头的自适应 FIR 滤波器,假定每个抽头的计算需要3个 MAC 周期,则256抽头计算需要256× 3=768个MAC 周期。如果采样频率为8kHz,即样点之间的间隔为125μs,DSP 芯片的 MAC 周 期为200ns,则768个MAC 周期需要153.6μs 的时间,显然无法实时处理,需要选用速度更高的 DSP 芯片。表1.3示出了两种信号带宽对三种 DSP 芯片的处理要求,三种DSP 芯片的 MAC 周 期分别为200ns、50ns和25ns。从表中可以看出,对话带的应用,后两种 DSP 芯片可以实时实 现,对声频应用,只有第三种 DSP芯片能够实时处理。当然,在这个例子中,没有考虑其它的运算量。

2. 按帧处理
有些数字信号处理算法不是每个输入样点循环一次,而是每隔一定的时间间隔(通常称为 帧)循环一次。例如,低速语音编码算法通常以20ms 为一帧,每个20ms 语音编码算法循环一 次。所以,选择DSP 芯片时应该比较一帧内DSP 芯片的处理能力和 DSP 算法的运算量。假设 DSP 芯片的指令周期为 P(ns),一帧的时间为△7(ns),则该DSP 芯片在一帧内所能提供的最大 运算量为△/P 条指令。例如 TMS320C25 的指令周期为100ns, 设帧长为20ms, 则 一 帧内 TMS320C25 所能提供的最大运算量为20m/100ns=20 万条指令。因此,只有语音编码算法的 运算量不超过20万条指令,就可以在TMS320C25 上实时运行。
更多内容见附件
免责声明:
本页面/内容部分素材来源于互联网公 开 信 息,旨在传递更多信息,不代表本平台立场。
版权归原作者或机构所有,如涉及侵权,请通过平台联系我们,我们将在核实后第一时间处理。
本平台对转载内容的真实性、准确性不作任何保证,用户需自行判断并承担使用风险。