书名:《dsp 芯片的原理与开发应用(第...

45
书名:《DSP 芯片的原理与开发应用(第 2 版)》 作者:张雄伟 曹铁勇 页数:306 开本:16 字数:480 千字 出版日期:2000 9 书号:7-5053-6127-9 内容简介:可编程DSP 芯片是一种应用非常广泛的微处理器。本书全面系统地介绍了 DSP 芯片的基本原理、开发和应用。首先,介绍了目前广泛使用的 DSP 芯片的基本结构和特 征,定点和浮点 DSP 处理中的一些关键问题。然后,对用 C 语言和 MATLAB 语言进行 DSP 算法的模拟进行了介绍。接着目前应用广的 TI DSP 芯片为例,介绍了定点和 浮点 DSP 芯片的软硬件设计方法,DSP 芯片的 C 语言和编语言的开发以及 DSP 片的开发工具及使用,并以三个应用系统的设计为例,介绍了定点和浮点 DSP 芯片的开 程。后,介绍了数字滤波器和 FFT 常用数字号处理算法的 DSP 实现本书旨在使DSP 芯片基本原理的基础上能较快掌握 DSP 芯片的系统 设计软硬件开发法。 本书的特点是:举例丰富,内容新颖性强本书可供通信电子等领域从事 DSP 芯片开发应用的广大科技人员教师阅读参 可作为相专业研究生科生教材---------------------------------------------------------- http://www.21ic.com 您永远朋友!!欢迎经光顾!

Upload: others

Post on 19-Oct-2020

26 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 书名:《DSP 芯片的原理与开发应用(第 版)》archive.ednchina.com/bbs.ednchina.com/uploadedn/Blog/2009/2/19/23… · 本书旨在使读者在了解DSP 芯片基本原理的基础上,能较快地掌握DSP

书名:《DSP芯片的原理与开发应用(第 2版)》 作者:张雄伟 曹铁勇 页数:306页 开本:16开 字数:480千字 出版日期:2000年 9月 书号:7-5053-6127-9 内容简介:可编程 DSP 芯片是一种应用非常广泛的微处理器。本书全面系统地介绍了 DSP芯片的基本原理、开发和应用。首先,介绍了目前广泛使用的 DSP 芯片的基本结构和特征,定点和浮点 DSP 处理中的一些关键问题。然后,对用 C 语言和 MATLAB 语言进行DSP 算法的模拟进行了介绍。接着,以目前应用最广的 TI DSP 芯片为例,介绍了定点和浮点 DSP 芯片的软硬件设计方法,DSP 芯片的 C 语言和汇编语言的开发方法以及 DSP 芯片的开发工具及使用,并以三个应用系统的设计为例,介绍了定点和浮点 DSP 芯片的开发过程。最后,介绍了数字滤波器和 FFT等常用数字信号处理算法的 DSP实现。 本书旨在使读者在了解 DSP 芯片基本原理的基础上,能较快地掌握 DSP 芯片的系统

设计和软硬件开发方法。 本书的特点是:举例丰富,内容新颖,实用性强。 本书可供通信和电子等领域从事 DSP 芯片开发应用的广大科技人员和教师阅读参

考,也可作为相关专业研究生和高年级本科生的教材。

----------------------------------------------------------

http://www.21ic.com 您永远的朋友!!欢迎经常光顾!

Page 2: 书名:《DSP 芯片的原理与开发应用(第 版)》archive.ednchina.com/bbs.ednchina.com/uploadedn/Blog/2009/2/19/23… · 本书旨在使读者在了解DSP 芯片基本原理的基础上,能较快地掌握DSP

第 1章 概 述

1.1 引 言

数字信号处理(Digital Signal Processing,简称 DSP)是一门涉及许多学科而又广泛应用于许多领域的新兴学科。20世纪 60年代以来,随着计算机和信息技术的飞速发展,数字信号处理技术应运而生并得到迅速的发展。在过去的二十多年时间里,数字信号处理已经在

通信等领域得到极为广泛的应用。 数字信号处理是利用计算机或专用处理设备,以数字形式对信号进行采集、变换、滤波、

估值、增强、压缩、识别等处理,以得到符合人们需要的信号形式。 数字信号处理是围绕着数字信号处理的理论、实现和应用等几个方面发展起来的。数字信

号处理在理论上的发展推动了数字信号处理应用的发展。反过来,数字信号处理的应用又

促进了数字信号处理理论的提高。而数字信号处理的实现则是理论和应用之间的桥梁。 数字信号处理是以众多学科为理论基础的,它所涉及的范围极其广泛。例如,在数学领

域,微积分、概率统计、随机过程、数值分析等都是数字信号处理的基本工具,与网络理

论、信号与系统、控制论、通信理论、故障诊断等也密切相关。近来新兴的一些学科,如

人工智能、模式识别、神经网络等,都与数字信号处理密不可分。可以说,数字信号处理

是把许多经典的理论体系作为自己的理论基础,同时又使自己成为一系列新兴学科的理论

基础。 数字信号处理的实现方法一般有以下几种: (1) 在通用的计算机(如 PC机)上用软件(如 Fortran、C语言)实现; (2) 在通用计算机系统中加上专用的加速处理机实现; (3) 用通用的单片机(如MCS-51、96系列等)实现,这种方法可用于一些不太复杂的数字信号处理,如数字控制等; (4) 用通用的可编程 DSP芯片实现。与单片机相比,DSP芯片具有更加适合于数字信号处理的软件和硬件资源,可用于复杂的数字信号处理算法; (5) 用专用的 DSP芯片实现。在一些特殊的场合,要求的信号处理速度极高,用通用 DSP芯片很难实现,例如专用于 FFT、数字滤波、卷积、相关等算法的 DSP芯片,这种芯片将相应的信号处理算法在芯片内部用硬件实现,无需进行编程。 在上述几种方法中,第 1种方法的缺点是速度较慢,一般可用于 DSP算法的模拟;第 2种和第 5种方法专用性强,应用受到很大的限制,第 2种方法也不便于系统的独立运行;第 3种方法只适用于实现简单的 DSP算法;只有第 4种方法才使数字信号处理的应用打开了新的局面。 虽然数字信号处理的理论发展迅速,但在 20世纪 80年代以前,由于实现方法的限制,数字信号处理的理论还得不到广泛的应用。直到 20世纪 70年代末 80年代初世界上第一片单片可编程 DSP芯片的诞生,才将理论研究结果广泛应用到低成本的实际系统中,并且推动了新的理论和应用领域的发展。可以毫不夸张地说,DSP芯片的诞生及发展对近 20年来通信、计算机、控制等领域的技术发展起到十分重要的作用。

1.2 DSP系统

1.2.1 DSP系统构成

图 1.1所示为一个典型的 DSP系统。图中的输入信号可以有各种各样的形式。例如,它可以是麦克风输出的语音信号或是电话线来的已调数据信号,可以是编码后在数字链路上传

Page 3: 书名:《DSP 芯片的原理与开发应用(第 版)》archive.ednchina.com/bbs.ednchina.com/uploadedn/Blog/2009/2/19/23… · 本书旨在使读者在了解DSP 芯片基本原理的基础上,能较快地掌握DSP

输或存储在计算机里的摄像机图像信号等。

输入 抗混叠

滤波A/D

DSP

芯片D/A

平滑 滤波

输出

图1.1 典型的DSP系统

输入信号首先进行带限滤波和抽样,然后进行 A/D(Analog to Digital)变换将信号变换成数字比特流。根据奈奎斯特抽样定理,为保证信息不丢失,抽样频率至少必须是输入带限

信号最高频率的 2倍。 DSP芯片的输入是 A/D变换后得到的以抽样形式表示的数字信号,DSP芯片对输入的数字信号进行某种形式的处理,如进行一系列的乘累加操作(MAC)。数字处理是 DSP的关键,这与其他系统(如电话交换系统)有很大的不同,在交换系统中,处理器的作用是

进行路由选择,它并不对输入数据进行修改。因此虽然两者都是实时系统,但两者的实时

约束条件却有很大的不同。最后,经过处理后的数字样值再经 D/A(Digital to Analog)变换转换为模拟样值,之后再进行内插和平滑滤波就可得到连续的模拟波形。 必须指出的是,上面给出的 DSP系统模型是一个典型模型,但并不是所有的 DSP系统都必须具有模型中的所有部件。如语音识别系统在输出端并不是连续的波形,而是识别结

果,如数字、文字等;有些输入信号本身就是数字信号(如 CD:Compact Disk),因此就不必进行模数变换了。

1.2.2 DSP系统的特点

数字信号处理系统是以数字信号处理为基础,因此具有数字处理的全部优点: (1) 接口方便。DSP系统与其他以现代数字技术为基础的系统或设备都是相互兼容的,与这样的系统接口以实现某种功能要比模拟系统与这些系统接口要容易得多; (2) 编程方便。DSP系统中的可编程 DSP芯片可使设计人员在开发过程中灵活方便地对软件进行修改和升级; (3) 稳定性好。DSP系统以数字处理为基础,受环境温度以及噪声的影响较小,可靠性高; (4) 精度高。16位数字系统可以达到 510− 的精度; (5) 可重复性好。模拟系统的性能受元器件参数性能变化比较大,而数字系统基本不受影响,因此数字系统便于测试、调试和大规模生产; (6) 集成方便。DSP系统中的数字部件有高度的规范性,便于大规模集成。 当然,数字信号处理也存在一定的缺点。例如,对于简单的信号处理任务,如与模拟交换

线的电话接口,若采用 DSP则使成本增加。DSP系统中的高速时钟可能带来高频干扰和电磁泄漏等问题,而且 DSP系统消耗的功率也较大。此外,DSP技术更新的速度快,数学知识要求多,开发和调试工具还不尽完善。 虽然 DSP系统存在着一些缺点,但其突出的优点已经使之在通信、语音、图像、雷达、生物医学、工业控制、仪器仪表等许多领域得到越来越广泛的应用。

1.2.3 DSP系统的设计过程

总的来说,DSP系统的设计还没有非常好的正规设计方法。图 1.2所示是 DSP系统设计的一般过程。

Page 4: 书名:《DSP 芯片的原理与开发应用(第 版)》archive.ednchina.com/bbs.ednchina.com/uploadedn/Blog/2009/2/19/23… · 本书旨在使读者在了解DSP 芯片基本原理的基础上,能较快地掌握DSP

软 件 编 程 硬 件 设 计

软 件 调 试 硬 件 调 试

选 择 D S P 芯 片

定 义 系 统 性 能 指 标

系 统 集 成

系 统 测 试 和 调 试

D S P 应 用

图1.2 DSP系统的设计流程

在设计 DSP 系统之前,首先必须根据应用系统的目标确定系统的性能指标、信号处理的要求,通常可用数据流程图、数学运算序列、正式的符号或自然语言来描述。 第二步是根据系统的要求进行高级语言的模拟。一般来说,为了实现系统的最终目标,需

要对输入的信号进行适当的处理,而处理方法的不同会导致不同的系统性能,要得到最佳

的系统性能,就必须在这一步确定最佳的处理方法,即数字信号处理的算法

(Algorithm),因此这一步也称算法模拟阶段。例如,语音压缩编码算法就是要在确定的压缩比条件下,获得最佳的合成语音。算法模拟所用的输入数据是实际信号经采集而获得

的,通常以计算机文件的形式存储为数据文件。如语音压缩编码算法模拟时所用的语音信

号就是实际采集而获得并存储为计算机文件形式的语音数据文件。有些算法模拟时所用的

输入数据并不一定要是实际采集的信号数据,只要能够验证算法的可行性,输入假设的数

据也是可以的。 在完成第二步之后,接下来就可以设计实时 DSP系统,实时 DSP系统的设计包括硬件设计和软件设计两个方面。硬件设计首先要根据系统运算量的大小、对运算精度的要求、系

统成本限制以及体积、功耗等要求选择合适的 DSP芯片。然后设计 DSP芯片的外围电路及其他电路。软件设计和编程主要根据系统要求和所选的 DSP芯片编写相应的 DSP汇编程序,若系统运算量不大且有高级语言编译器支持,也可用高级语言(如 C语言)编程。由于现有的高级语言编译器的效率还比不上手工编写汇编语言的效率,因此在实际应用系

统中常常采用高级语言和汇编语言的混合编程方法,即在算法运算量大的地方,用手工编

写的方法编写汇编语言,而运算量不大的地方则采用高级语言。采用这种方法,既可缩短

软件开发的周期,提高程序的可读性和可移植性,又能满足系统实时运算的要求。 DSP硬件和软件设计完成后,就需要进行硬件和软件的调试。软件的调试一般借助于 DSP开发工具,如软件模拟器、DSP开发系统或仿真器等。调试 DSP算法时一般采用比较实时结果与模拟结果的方法,如果实时程序和模拟程序的输入相同,则两者的输出应该一

致。应用系统的其他软件可以根据实际情况进行调试。硬件调试一般采用硬件仿真器进行

调试,如果没有相应的硬件仿真器,且硬件系统不是十分复杂,也可以借助于一般的工具

进行调试。 系统的软件和硬件分别调试完成后,就可以将软件脱离开发系统而直接在应用系统上运

行。当然,DSP系统的开发,特别是软件开发是一个需要反复进行的过程,虽然通过算法模拟基本上可以知道实时系统的性能,但实际上模拟环境不可能做到与实时系统环境完全

一致,而且将模拟算法移植到实时系统时必须考虑算法是否能够实时运行的问题。如果算

法运算量太大不能在硬件上实时运行,则必须重新修改或简化算法。

Page 5: 书名:《DSP 芯片的原理与开发应用(第 版)》archive.ednchina.com/bbs.ednchina.com/uploadedn/Blog/2009/2/19/23… · 本书旨在使读者在了解DSP 芯片基本原理的基础上,能较快地掌握DSP

1.3 可编程DSP芯片

1.3.1 什么是DSP芯片

DSP芯片,也称数字信号处理器,是一种特别适合于进行数字信号处理运算的微处理器,其主要应用是实时快速地实现各种数字信号处理算法。根据数字信号处理的要求,DSP芯片一般具有如下主要特点: (1) 在一个指令周期内可完成一次乘法和一次加法; (2) 程序和数据空间分开,可以同时访问指令和数据; (3) 片内具有快速 RAM,通常可通过独立的数据总线在两块中同时访问; (4) 具有低开销或无开销循环及跳转的硬件支持; (5) 快速的中断处理和硬件 I/O支持; (6) 具有在单周期内操作的多个硬件地址产生器; (7) 可以并行执行多个操作; (8) 支持流水线操作,使取指、译码和执行等操作可以重叠执行。 当然,与通用微处理器相比,DSP芯片的其他通用功能相对较弱些。

1.3.2 DSP芯片的发展

世界上第一个单片 DSP 芯片应当是 1978年 AMI公司发布的 S2811,1979年美国 Intel公司发布的商用可编程器件 2920是 DSP芯片的一个主要里程碑。这两种芯片内部都没有现代 DSP芯片所必须有的单周期乘法器。1980 年,日本 NEC 公司推出的μP D7720是第一个具有乘法器的商用 DSP 芯片。 在这之后,最成功的 DSP 芯片当数美国德州仪器公司(Texas Instruments,简称 TI)的一系列产品。TI 公司在 1982年成功推出其第一代 DSP 芯片 TMS32010及其系列产品TMS32011、TMS320C10/C14/C15/C16/C17等,之后相继推出了第二代 DSP芯片TMS32020、TMS320C25/C26/C28,第三代 DSP芯片 TMS320C30/C31/C32,第四代 DSP芯片 TMS320C40/C44,第五代 DSP 芯片 TMS320C5X/C54X,第二代 DSP芯片的改进型TMS320C2XX,集多片 DSP芯片于一体的高性能 DSP芯片 TMS320C8X以及目前速度最快的第六代 DSP芯片 TMS320C62X/C67X等。TI将常用的 DSP芯片归纳为三大系列,即:TMS320C2000系列(包括 TMS320C2X/C2XX)、TMS320C5000系列(包括TMS320C5X/C54X/C55X)、TMS320C6000系列(TMS320C62X/C67X)。如今,TI公司的一系列 DSP产品已经成为当今世界上最有影响的 DSP芯片。TI公司也成为世界上最大的 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(一次乘法和一次加法)时间已经从 20世纪 80年代初的 400ns(如TMS32010)降低到 10ns以下(如 TMS320C54X、TMS320C62X/67X等),处理能力提高了几十倍。DSP芯片内部关键的乘法器部件从 1980年的占模片区(die area)的 40%左右下降到 5%以下,片内 RAM数量增加一个数量级以上。从制造工艺来看,1980年

Page 6: 书名:《DSP 芯片的原理与开发应用(第 版)》archive.ednchina.com/bbs.ednchina.com/uploadedn/Blog/2009/2/19/23… · 本书旨在使读者在了解DSP 芯片基本原理的基础上,能较快地掌握DSP

采用 4μm 的 N沟道MOS(NMOS)工艺,而现在则普遍采用亚微米(Micron)CMOS工艺。DSP芯片的引脚数量从 1980年的最多 64个增加到现在的 200个以上,引脚数量的增加,意味着结构灵活性的增加,如外部存储器的扩展和处理器间的通信等。此外,DSP芯片的发展使 DSP系统的成本、体积、重量和功耗都有很大程度的下降。表 1.1 是 TI公司DSP芯片 1982年、1992年、1999年的比较表。表 1.2则是世界上主要 DSP芯片供应商的代表芯片的一些数据。

表1.1 TI DSP 芯片发展比较表(典型值)

年份 1982年 1992年 1999年

制造工艺 4µm NMOS 0.8µm CMOS 0.3µm CMOS

MIPS 5MIPS 40MIPS 100MIPS

MHz 20MHz 80MHz 100MHz 内部 RAM 144字 1K字 32K字

内部 ROM 1.5K字 4K字 16K字

价格 $150.00 $15.00 $5.00~$25.00 功耗 250mW/MIPS 12.5mW/MIPS 0.45mW/MIPS

集成晶体管数 50K 500K

表1.2 单片可编程DSP芯片

公司 DSP芯片 推出时间(年) MAC周期(ns) 定点位数 浮点位数

AMI S2811 1978 300 12/16

NEC µPD7720

µPD77230 1980 1985

250 150

16/32 32

TI

TMS32010 TMS32020

TMS320C25 TMS320C30 TMS320C40 TMS320C50

TMS320C203 TMS320LC549 TMS320C62X

1982 1987 1989 1989 1992 1990 1996 1996 1997

390 200 100 60 40 35

12.5 10 5

16/32 16/32 16/32 24/32

32 16/32 16/32 16/32 16/32

32/40 40

Motorola MC56001 MC96002 MC56002

1986 1990 1991

75 50 50

24 32/64 24/48

32/44

AT&T DSP32C DSP16A DSP3210

1988 1988 1992

80 25 60

16或 24 16/36

24

32/40

32/40

AD ADSP2101

ADSP21020 1990 1991

60 40

16 32

32/40

1.3.3 DSP芯片的分类

DSP芯片可以按照下列三种方式进行分类。 1.按基础特性分 这是根据 DSP芯片的工作时钟和指令类型来分类的。如果在某时钟频率范围内的任何时钟频率上,DSP芯片都能正常工作,除计算速度有变化外,没有性能的下降,这类 DSP芯片一般称为静态 DSP芯片。例如,日本 OKI 电气公司的 DSP芯片、TI公司的TMS320C2XX系列芯片属于这一类。 如果有两种或两种以上的 DSP芯片,它们的指令集和相应的机器代码机管脚结构相互兼容,则这类 DSP芯片称为一致性 DSP芯片。例如,美国 TI公司的 TMS320C54X就属于这一类。 2.按数据格式分

Page 7: 书名:《DSP 芯片的原理与开发应用(第 版)》archive.ednchina.com/bbs.ednchina.com/uploadedn/Blog/2009/2/19/23… · 本书旨在使读者在了解DSP 芯片基本原理的基础上,能较快地掌握DSP

这是根据 DSP芯片工作的数据格式来分类的。数据以定点格式工作的 DSP芯片称为定点DSP芯片,如 TI公司的 TMS320C1X/C2X、TMS320C2XX/C5X、TMS320C54X/C62XX系列,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、FUJITSU公司的MB86232和 ZORAN公司的 ZR35325等。 3.按用途分 按照 DSP的用途来分,可分为通用型 DSP芯片和专用型 DSP芯片。通用型 DSP芯片适合普通的 DSP应用,如 TI公司的一系列 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(纳秒)为单位。如TMS320LC549-80在主频为 80MHz时的指令周期为 12.5ns; (2) MAC时间:即一次乘法加上一次加法的时间。大部分 DSP芯片可在一个指令周期内完成一次乘法和加法操作,如 TMS320LC549-80的MAC时间就是 12.5ns; (3) FFT执行时间:即运行一个 N点 FFT程序所需的时间。由于 FFT运算涉及的运算在数字信号处理中很有代表性,因此 FFT运算时间常作为衡量 DSP芯片运算能力的一个指标; (4) MIPS:即每秒执行百万条指令。如 TMS320LC549-80的处理能力为 80 MIPS,即每秒可执行八千万条指令; (5) MOPS:即每秒执行百万次操作。如 TMS320C40的运算能力为 275 MOPS; (6) MFLOPS:即每秒执行百万次浮点操作。如 TMS320C31在主频为 40MHz时的处理能力为 40 MFLOPS; (7) BOPS:即每秒执行十亿次操作。如 TMS320C80的处理能力为 2 BOPS。 2.DSP芯片的价格。DSP芯片的价格也是选择 DSP芯片所需考虑的一个重要因素。如果采用价格昂贵的 DSP芯片,即使性能再高,其应用范围肯定会受到一定的限制,尤其是民用产品。因此根据实际系统的应用情况,需确定一个价格适中的 DSP芯片。当然,由于 DSP芯片发展迅速,DSP芯片的价格往往下降较快,因此在开发阶段选用某种价格稍贵的 DSP芯片,等到系统开发完毕,其价格可能已经下降一半甚至更多。 3.DSP芯片的硬件资源。不同的 DSP芯片所提供的硬件资源是不相同的,如片内RAM、ROM的数量,外部可扩展的程序和数据空间,总线接口,I/O接口等。即使是同一系列的 DSP芯片(如 TI的 TMS320C54X系列),系列中不同 DSP芯片也具有不同的内部硬件资源,可以适应不同的需要。 4.DSP芯片的运算精度。一般的定点 DSP芯片的字长为 16位,如 TMS320系列。但有的公司的定点芯片为 24位,如Motorola公司的MC56001等。浮点芯片的字长一般为 32位,累加器为 40位。 5.DSP芯片的开发工具。在 DSP系统的开发过程中,开发工具是必不可少的。如果没有

Page 8: 书名:《DSP 芯片的原理与开发应用(第 版)》archive.ednchina.com/bbs.ednchina.com/uploadedn/Blog/2009/2/19/23… · 本书旨在使读者在了解DSP 芯片基本原理的基础上,能较快地掌握DSP

开发工具的支持,要想开发一个复杂的 DSP系统几乎是不可能的。如果有功能强大的开发工具的支持,如 C语言支持,则开发的时间就会大大缩短。所以,在选择 DSP芯片的同时必须注意其开发工具的支持情况,包括软件和硬件的开发工具。 6.DSP芯片的功耗。在某些 DSP应用场合,功耗也是一个需要特别注意的问题。如便携式的 DSP设备、手持设备、野外应用的 DSP设备等都对功耗有特殊的要求。目前,3.3V供电的低功耗高速 DSP芯片已大量使用。 7.其他。除了上述因素外,选择 DSP芯片还应考虑到封装的形式、质量标准、供货情况、生命周期等。有的 DSP芯片可能有 DIP、PGA、PLCC、PQFP等多种封装形式。有些 DSP系统可能最终要求的是工业级或军用级标准,在选择时就需要注意到所选的芯片是否有工业级或军用级的同类产品。如果所设计的 DSP系统不仅仅是一个实验系统,而是需要批量生产并可能有几年甚至十几年的生命周期,那么需要考虑所选的 DSP芯片供货情况如何,是否也有同样甚至更长的生命周期等。 在上述诸多因素中,一般而言,定点 DSP芯片的价格较便宜,功耗较低,但运算精度稍低。而浮点 DSP芯片的优点是运算精度高,且 C语言编程调试方便,但价格稍贵,功耗也较大。例如 TI的 TMS320C2XX/C54X系列属于定点 DSP芯片,低功耗和低成本是其主要的特点。而 TMS320C3X/C4X/C67X属于浮点 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芯片能够实时处理。当然,在这个例子中,没有考虑其他的运算量。

表1.3 用DSP芯片实现数字滤波

应用 领域

采样率 (kHz)

采样周期 (µs)

256抽头 LMS滤波 运算量(MAC数)

每样点允许 MAC 指令数(200ns)

每样点允许 MAC 指令数(50ns)

每样点允许 MAC 指令数(25ns)

话音 8 125 768 625 2500 5000 声频 44.1 22.7 768 113 453 907

2.按帧处理 有些数字信号处理算法不是每个输入样点循环一次,而是每隔一定的时间间隔(通常称为

帧)循环一次。例如,中低速语音编码算法通常以 10ms或 20ms为一帧,每隔 10ms或20ms语音编码算法循环一次。所以,选择 DSP芯片时应该比较一帧内 DSP芯片的处理能力和 DSP算法的运算量。假设 DSP芯片的指令周期为 p(ns),一帧的时间为∆τ (ns),则该 DSP芯片在一帧内所能提供的最大运算量为 ∆τ/p条指令。例如TMS320LC549-80的指令周期为 12.5ns,设帧长为 20ms,则一帧内 TMS320LC549-80所能提供的最大运算量为 160万条指令。因此,只要语音编码算法的运算量不超过 160万条指令,就可以在 TMS320LC549-80上实时运行。

1.3.5 DSP芯片的应用

Page 9: 书名:《DSP 芯片的原理与开发应用(第 版)》archive.ednchina.com/bbs.ednchina.com/uploadedn/Blog/2009/2/19/23… · 本书旨在使读者在了解DSP 芯片基本原理的基础上,能较快地掌握DSP

自从 20世纪 70年代末 80年代初 DSP芯片诞生以来,DSP芯片得到了飞速的发展。DSP芯片的高速发展,一方面得益于集成电路技术的发展,另一方面也得益于巨大的市场。在

近 20年时间里,DSP芯片已经在信号处理、通信、雷达等许多领域得到广泛的应用。目前,DSP芯片的价格越来越低,性能价格比日益提高,具有巨大的应用潜力。DSP芯片的应用主要有: (1) 信号处理——如数字滤波、自适应滤波、快速傅立叶变换、相关运算、谱分析、卷积、模式匹配、加窗、波形产生等; (2) 通信——如调制解调器、自适应均衡、数据加密、数据压缩、回波抵消、多路复用、传真、扩频通信、纠错编码、可视电话等; (3) 语音——如语音编码、语音合成、语音识别、语音增强、说话人辨认、说话人确认、语音邮件、语音存储等; (4) 图形/图像——如二维和三维图形处理、图像压缩与传输、图像增强、动画、机器人视觉等; (5) 军事——如保密通信、雷达处理、声纳处理、导航、导弹制导等; (6) 仪器仪表——如频谱分析、函数发生、锁相环、地震处理等; (7) 自动控制——如引擎控制、声控、自动驾驶、机器人控制、磁盘控制等; (8) 医疗——如助听、超声设备、诊断工具、病人监护等; (9) 家用电器——如高保真音响、音乐合成、音调控制、玩具与游戏、数字电话/电视等。 随着 DSP芯片性能价格比的不断提高,可以预见 DSP芯片将会在更多的领域内得到更为广泛的应用。

Page 10: 书名:《DSP 芯片的原理与开发应用(第 版)》archive.ednchina.com/bbs.ednchina.com/uploadedn/Blog/2009/2/19/23… · 本书旨在使读者在了解DSP 芯片基本原理的基础上,能较快地掌握DSP

第 2章 DSP芯片的基本结构和特征

2.1 引 言

可编程 DSP芯片是一种具有特殊结构的微处理器,为了达到快速进行数字信号处理的目的,DSP芯片一般都具有程序和数据分开的总线结构、流水线操作功能、单周期完成乘法的硬件乘法器以及一套适合数字信号处理的指令集。本章将首先介绍 DSP芯片的基本结构,然后介绍 TI公司的各种 DSP芯片的特征,最后简要介绍其他公司的 DSP芯片的特点。

2.2 DSP芯片的基本结构

为了快速地实现数字信号处理运算,DSP芯片一般都采用特殊的软硬件结构。下面以TMS320系列为例介绍 DSP芯片的基本结构。 TMS320系列 DSP芯片的基本结构包括:(1)哈佛结构;(2)流水线操作;(3)专用的硬件乘法器;(4)特殊的 DSP指令;(5)快速的指令周期。 这些特点使得 TMS320系列 DSP芯片可以实现快速的 DSP运算,并使大部分运算(例如乘法)能够在一个指令周期内完成。由于 TMS320系列 DSP芯片是软件可编程器件,因此具有通用微处理器具有的方便灵活的特点。下面分别介绍这些特点是如何在 TMS320系列 DSP芯片中应用并使得芯片的功能得到加强的。

2.2.1 哈佛结构

哈佛结构是不同于传统的冯 诺曼(Von Neuman)结构的并行体系结构,其主要特点是将程序和数据存储在不同的存储空间中,即程序存储器和数据存储器是两个相互独立的存

储器,每个存储器独立编址,独立访问。与两个存储器相对应的是系统中设置了程序总线

和数据总线两条总线,从而使数据的吞吐率提高了一倍。而冯 诺曼结构则是将指令、数

据、地址存储在同一存储器中,统一编址,依靠指令计数器提供的地址来区分是指令、数

据还是地址。取指令和取数据都访问同一存储器,数据吞吐率低。 在哈佛结构中,由于程序和数据存储器在两个分开的空间中,因此取指和执行能完全重叠

运行。为了进一步提高运行速度和灵活性,TMS320系列 DSP芯片在基本哈佛结构的基础上作了改进,一是允许数据存放在程序存储器中,并被算术运算指令直接使用,增强了芯

片的灵活性;二是指令存储在高速缓冲器(Cache)中,当执行此指令时,不需要再从存储器中读取指令,节约了一个指令周期的时间。如 TMS320C30具有 64个字的 Cache。

2.2.2 流水线

与哈佛结构相关,DSP芯片广泛采用流水线以减少指令执行时间,从而增强了处理器的处理能力。TMS320系列处理器的流水线深度从 2~6级不等。第一代 TMS320处理器采用二级流水线,第二代采用三级流水线,而第三代则采用四级流水线。也就是说,处理器可以

CLKOUT1

执行

译码

取指 N

N-1

N-2

N+1

N-1

N+2

N

N

N+1

Page 11: 书名:《DSP 芯片的原理与开发应用(第 版)》archive.ednchina.com/bbs.ednchina.com/uploadedn/Blog/2009/2/19/23… · 本书旨在使读者在了解DSP 芯片基本原理的基础上,能较快地掌握DSP

并行处理 2~6条指令,每条指令处于流水线上的不同阶段。图 2.1所示为一个三级流水线操作的例子。

图2.1 三级流水线操作

在三级流水线操作中,取指、译码和执行操作可以独立地处理,这可使指令执行能完全重

叠。在每个指令周期内,三个不同的指令处于激活状态,每个指令处于不同的阶段。例

如,在第 N个指令取指时,前一个指令即第 N-1个指令正在译码,而第 N-2个指令则正在执行。一般来说,流水线对用户是透明的。

2.2.3 专用的硬件乘法器

在一般形式的 FIR滤波器中,乘法是 DSP的重要组成部分。对每个滤波器抽头,必须做一次乘法和一次加法。乘法速度越快,DSP处理器的性能就越高。在通用的微处理器中,乘法指令是由一系列加法来实现的,故需许多个指令周期来完成。相比而言,DSP芯片的特征就是有一个专用的硬件乘法器。在 TMS320系列中,由于具有专用的硬件乘法器,乘法可在一个指令周期内完成。从最早的 TMS32010实现 FIR的每个抽头算法可以看出,滤波器每个抽头需要一条乘法指令MPY:

LT ;装乘数到 T寄存器 DMOV ;在存储器中移动数据以实现延迟 MPY ;相乘 APAC ;将乘法结果加到 ACC中

其他三条指令用来将乘数装入到乘法器电路( LT),移动数据(DMOV)以及将乘法结果(存在乘积寄存器 P中)加到 ACC中(APAC)。因此,若采用 256抽头的 FIR滤波器,这四条指令必须重复执行 256次,且 256次乘法必须在一个抽样间隔内完成。在典型的通用微处理器中,每个抽头需要 30 ~ 40个指令周期,而 TMS32010只需 4条指令。如果采用特殊的 DSP指令或采用 TMS320C54X等新一代的 DSP芯片,可进一步降低 FIR抽头的计算时间。

2.2.4 特殊的DSP指令

DSP芯片的另一个特征是采用特殊的指令。2.2.3节中介绍的 DMOV就是一个特殊的 DSP指令,它完成数据移位功能。在数字信号处理中,延迟操作非常重要,这个延迟就是由

DMOV来实现的。TMS32010中的另一个特殊指令是 LTD,它在一个指令周期内完成LT、DMOV和 APAC三条指令。LTD和MPY指令可以将 FIR滤波器抽头计算从 4条指令降为 2条指令。在第二代处理器中,如 TMS320C25,增加了 2条更特殊的指令,即RPT和MACD指令,采用这 2条特殊指令,可以进一步将每个抽头的运算指令数从 2条降为 1条:

RPTK 255 ;重复执行下条指令 256次 MACD ;LT, DMOV, MPY 及 APAC

2.2.5 快速的指令周期

哈佛结构、流水线操作、专用的硬件乘法器、特殊的 DSP指令再加上集成电路的优化设计,可使 DSP芯片的指令周期在 200ns 以下。TMS320系列处理器的指令周期已经从第一代的 200ns降低至现在的 20ns 以下。快速的指令周期使得 DSP芯片能够实时实现许多DSP应用。

2.3 TI定点DSP芯片

自 1982年 TI推出第一个定点 DSP芯片 TMS32010以来,TI的定点 DSP芯片已经经历了TMS320C1X、TMS320C2X/C2XX、TMS320C5X 、TMS320C54X、TMS320C62X等几代产品,产品的性能价格比不断提高,应用越来越广泛。下面分别介绍这些芯片的主要特

Page 12: 书名:《DSP 芯片的原理与开发应用(第 版)》archive.ednchina.com/bbs.ednchina.com/uploadedn/Blog/2009/2/19/23… · 本书旨在使读者在了解DSP 芯片基本原理的基础上,能较快地掌握DSP

征。

2.3.1 TMS320C1X

2.3.1.1 基本特点

第一代 TMS320系列 DSP芯片包括:TMS32010、TMS32011、TMS320C10、 TMS320C15/E15和 TMS320C17/E17。其中,TMS32010和 TMS32011采用 2.4µm的 NMOS 工艺,而其他几种则采用 1.8µm CMOS工艺。这些芯片的典型工作频率为20MHz。TMS320第一代 DSP芯片的主要特点如下: • 指令周期:160ns/200ns/280ns • 片内 RAM:144字/256字(TMS320C15/E15/C17/E17) • 片内 ROM:1.5K字/4K字(TMS320C15/C17) • 4K字片内程序 EPROM(TMS320E15/E17) • 4K字外部全速存储器扩展 • 并行乘法器:乘积为 32位 • 桶形移位器:将数据从存储器移到 ALU • 并行移位器 • 允许文本交换的 4×12位堆栈 • 两个间接寻址的辅助寄存器 • 双通道串行口(TMS32011,TMS320C17/E17) • 片内压扩硬件(TMS32011,TMS320C17/E17) • 协处理器接口(TMS320C17/E17) • 器件封装:40脚双列直插(DIP)/44脚塑封(PLCC)

Page 13: 书名:《DSP 芯片的原理与开发应用(第 版)》archive.ednchina.com/bbs.ednchina.com/uploadedn/Blog/2009/2/19/23… · 本书旨在使读者在了解DSP 芯片基本原理的基础上,能较快地掌握DSP

2.3.1.2 TMS320C10

TMS320 DSP芯片的第一代产品是基于 TMS32010和它的 CMOS版本 TMS320C10的结构。TMS32010于 1982年推出,是第一个能够达到 5 个MIPS的微处理器。 TMS32010采用改进的哈佛结构,即程序和数据空间相互独立。程序存储器可在片内(1.5K字)或片外(4K字)。片内数据 RAM为 144字。有四个基本的算术单元:算术逻辑单元(ALU)、累加器(ACC)、乘法器和移位器。 (1) ALU:32位数据操作的通用算术逻辑单元。ALU可进行加、减和逻辑运算; (2) ACC:累加器存储 ALU的输出,也是 ALU的一个输入。它采用 32位字长操作,分高 16位和低 16位两部分。处理器提供高 16位和低 16位的专门指令:SACH(高 16位)和 SACL(低 16位); (3) 乘法器:16×16位并行乘法器由三个单元组成:T寄存器、P寄存器和乘法器阵列。T寄存器存储被乘数,P寄存器存储 32位乘积。为了使用乘法器,被乘数首先必须从数据RAM中装入到 T寄存器,可用 LT、LTA和 LTD指令。然后执行MPY(乘)或MPYK(乘立即数)指令。乘和累加器操作可用 LTA、LTD和MPY、MPYK指令在两个指令周期内完成; (4) 移位器:有两个移位器可用于数据移位。一个是桶形移位器,另一个是并行移位器。桶形移位器又称定标移位器。当数据存储器的数据送入累加器或与累加器中的数据进行运

算时,先通过这个移位器进行 0~16位左移,然后再进行运算。并行移位器即输出移位器,其作用是将累加器中的数据左移 0、1或 4位后再送入数据存储器中,以实现小数运算或小数乘积的调整。 在 TMS32010/C10基础上又派生了多个处理器,它们可提供不同的处理器速度、存储器扩展和各种 I/O集成。

2.3.1.3 TMS320C1X的其他芯片

1.TMS320C15/E15 TMS320C15/E15与 TMS32010的代码和管脚全兼容,提供 256字的片内 RAM和 4K字的片内 ROM(C15)或 EPROM(E15)。TMS320C15的指令周期有 200ns和 160ns(TMS320C15-25)两种。 2.TMS320C17/E17 TMS320C17/E17是一个专用的微处理器。它有 4K字的片内程序 ROM(C17)或 EPROM(E17),一个全双工串行通信的双通道串行口,片内硬件压扩器(µ律/A律),一个用于串行通信的串行口定时器,及一个协处理器接口。协处理器接口可以在处理器和 4/8/16位微处理器之间提供直接接口。TMS320C17/E17与 TMS32010目标代码兼容,且可用相同的开发工具。该处理器是基于 TMS320C10的 CPU内核,外加片内的外设存储器和 I/O模块。TMS320C17/E17可认为是半定制的 DSP芯片。表 2.1 是 TMS320第一代产品的比较表。

Page 14: 书名:《DSP 芯片的原理与开发应用(第 版)》archive.ednchina.com/bbs.ednchina.com/uploadedn/Blog/2009/2/19/23… · 本书旨在使读者在了解DSP 芯片基本原理的基础上,能较快地掌握DSP

表2.1 TMS320第一代处理器

DSP芯片 指令周期 (ns)

制造工艺 片内程序 ROM(字)

片内程序

EPROM(字)

片内数据 RAM(字)

片外程序

(字)

TMS32010 200 NMOS 1.5K 144 4K

TMS32010-25 160 NMOS 1.5K 144 4K

TMS32010-14 280 NMOS 1.5K 144 4K

TMS32011 200 NMOS 1.5K 144

TMS320C10 200 CMOS 1.5K 144 4K

TMS320C10-25 160 CMOS 1.5K 144 4K

TMS320C15 200 CMOS 4K 256 4K

TMS320C15-25 160 CMOS 4K 256 4K

TMS320E15 200 CMOS 4K 256 4K

TMS320C17 200 CMOS 4K 256

TMS320C17-25 160 CMOS 4K 256

TMS320E17 200 CMOS 4K 256

2.3.2 TMS320C2X 第二代 TMS320 DSP芯片包括 TMS32020、TMS320C25/E25、TMS320C26及TMS320C28。在这些芯片中,TMS32020是一个过渡的产品,其指令周期为 200ns,与TMS32010相当,而其硬件结构则与 TMS320C25一致。在第二代 DSP芯片中,TMS320C25是一个典型的代表,其他芯片都是由 TMS320C25派生出来的。其中TMS320E25将内部 4K字的 ROM改为 EPROM;TMS320C26去掉了内部的 4K字ROM,而将片内 RAM增加到 1.5K字;TMS320C28则将内部 ROM增加到 8K字。由于TMS320C25的典型性,下面就讨论 TMS320C25的基本特征和结构。

2.3.2.1 TMS320C25的基本特征

• 指令周期: TMS320C25:100ns,TMS320C25-33:120ns,TMS320C25-50:80ns • 片内掩膜 ROM:4K 字 • 片内 RAM:544字,分 B0、B1和 B2三块 • 程序和数据空间均为 64K字 • 具有 8级硬件堆栈、8个辅助寄存器 • 具有全静态双缓冲串行口,可与许多串行器件直接接口 • 与低速片外存储器通信的等待状态插入 • 采用 HOLD操作的 DMA • FFT变换用的比特反转寻址 • 扩展精度算术和自适应滤波支持 • 从外部存储器全速执行的MAC/MACD指令 • 具有在多处理器之间进行同步的能力,支持多处理器共享存储器 • 1.8μm CMOS工艺,68脚 PGA或 PLCC封装

2.3.2.2 TMS320C25的结构

TMS320C25是第二代 TMS320中与 TMS32020管脚全兼容的 CMOS版本,但指令执行速度是 TMS32020的 2倍,且增加了硬件和软件资源。指令集是 TMS32010和 TMS32020的超集,在源代码级与它们兼容。此外,在代码级与 TMS32020兼容,因此,TMS32020的程序可不用修改直接在 TMS320C25上运行。 100ns的指令周期可提供较强的运算能力。由于大部分指令在一个指令周期内执行,处理器在 1秒内可执行 1000万条指令(10MIPS)。运算能力的增加主要得益于乘累加指令

Page 15: 书名:《DSP 芯片的原理与开发应用(第 版)》archive.ednchina.com/bbs.ednchina.com/uploadedn/Blog/2009/2/19/23… · 本书旨在使读者在了解DSP 芯片基本原理的基础上,能较快地掌握DSP

(MAC)和带数据移位的乘累加指令(MACD)、具有专用算术单元的 8个辅助寄存器、适合于自适应滤波和扩展精度运算的指令集支持、比特反转寻址、快速的 I/O支持等。 指令集中提供在两个存储空间中进行数据移动的指令。在外部,程序和数据存储空间在同

一总线上复用,从而使得在尽量减少芯片引脚的情况下最大程度地扩大两个空间的地址范

围。在内部,TMS320C25结构通过保持程序和数据总线结构分离以使指令全速执行来获得最大的处理能力。 芯片内部的程序执行采用三级流水线形式。流水线对用户来说是透明的。但是,在某些情

况下流水线可能被打断(如跳转指令),在这种情况下,指令执行时间要考虑流水线必须

清空和重新填充。两块大的片内 RAM在系统设计时提供了很大的灵活性,其中一块既可配置为程序存储器也可配置为数据存储器。片外 64K字的数据空间可直接寻址,从而使DSP算法实现更为方便。片内 4K字的掩膜 ROM可用来降低系统成本,若程序不超过 4K字,可使 TMS320C25不用扩展片外程序存储器。剩下的 64K字程序空间在片外,大量的程序可在片外存储器中全速运行。程序也可从片外慢速 EPROM中装入到片内高速 RAM中全速运行。此外,还有硬件定时器、串行口和数据块搬移功能。 下面介绍 TMS320C25的存储器分配、中央算术逻辑单元(CALU)、硬件乘法器、控制操作、串行口和 I/O接口。 1.存储器分配 TMS320C25具有 4K字的片内程序 ROM和 544字的片内 RAM。RAM分为三块:B0、B1、B2。其中,B0块(256字)既可配置为数据存储器(用 CNFD指令),也可配置为程序存储器(用 CNFP指令)。其余 288字(B1和 B2块)只能是数据存储器。544字的片内 RAM可使 C25能处理 512字的数据阵列,如可进行 256点复数 FFT运算,且尚有32字用作中间结果的暂存。TMS320C25提供片外可直接寻址的程序和数据空间各 64K字。 寄存器组包含 8个辅助寄存器(AR0~AR7),它们可用作数据存储器的间接寻址和暂存,从而增加芯片的灵活性和效率。这些寄存器既可用指令直接寻址,也可用 3比特的辅助寄存器指针(ARP)间接寻址。辅助寄存器和 ARP既可从数据存储器装数,也可装入立即数。寄存器的内容也可存入数据存储器中。辅助寄存器组与辅助寄存器算术单元

(ARAU)相连接,用 ARAU访问信息表无需 CALU参与地址操作,这样可让 CALU进行其他操作。 2.中央算术逻辑单元 CALU包含一个 16位的定标移位器(Scaling),一个 16×16位的并行乘法器,一个 32位的累加器和一个 32位的算术逻辑单元(ALU)。移位器根据指令要求提供 0到 16位的数据左移。累加器和乘法器输出端的移位器适合于数值的归一化、比特提取、扩展精度算

术和溢出保护。 典型的 ALU指令实现包含以下三步: (1) 数据在数据总线上从 RAM中获取; (2) 数据移交给完成算术运算的定标移位器和 ALU; (3) 结果送回累加器。 32位累加器可分为 2个 16位以进行数据存储:SACH(高 16位)和 ACCL(低 16位)。累加器有一个进位位可方便加法和减法的多精度运算。 3.硬件乘法器 TMS320C25具有一个 16×16位的硬件乘法器,它能在一个指令周期内计算一个 32位乘积。有两个寄存器与乘法器相关:①16位暂存寄存器 TR,用于保存乘法器的一个操作数;②32位乘积寄存器 PR,用于保存乘积。 乘积寄存器的输出可左移 1位或 4位,这对于实现小数算术运算或调整小数乘积很有用。PR的输出也可右移 6位,这样可连续执行 128次乘/加而无溢出。无符号乘(MPYU)指令可方便扩展精度乘法。 4.I/O接口 I/O空间由 16个输入口和 16个输出口组成。这些口可提供全 16位并行 I/O接口。输入(IN)和输出(OUT)操作典型的是 2个周期,但若用重复指令,可变成单周期指令。I/O器件映射到 I/O地址空间,其方式与存储器映射方式相同。与不同速度的存储器或 I/O

Page 16: 书名:《DSP 芯片的原理与开发应用(第 版)》archive.ednchina.com/bbs.ednchina.com/uploadedn/Blog/2009/2/19/23… · 本书旨在使读者在了解DSP 芯片基本原理的基础上,能较快地掌握DSP

器件接口采用 READY线完成。 TMS320C25也支持外部程序/数据存储器的 DMA,其他处理器通过置 HOLD\ 为低后可完全控制 TMS320C25的外部存储器,使 C25将其地址、数据和控制线呈高阻状态。外部处理器和 C25的通信可通过中断来完成。TMS320C25芯片提供两种 DMA方式,一种是加上 HOLD后停止执行;另一种是 C25继续执行,但执行是在片内 ROM和 RAM中进行,这可大大提高性能。

2.3.2.3 TMS320C25的软件

TMS320C25的指令总共有 133条,其中 97条是单周期指令。在另外 36条指令中,21条包括跳转、调用、返回等,这些指令需重新装入程序计数器,使执行流水线中断。另外 7条指令是双字和长立即数指令。剩下的 8条指令(IN,OUT,BLKD,BLKP,TBLR,TBLW,MAC,MACD)支持 I/O操作、存储器之间的数据交换或提供处理器内部额外的并行操作,而且这 8条指令与重复计数器配合使用时可成为单周期指令。这主要利用了处理器的并行机制,使得复杂的计算可用很少的几条指令来完成。 由于大多数指令用单 16位字编码,故可在一个周期内完成。存储器寻址方式有三种:直接寻址、间接寻址和立即数寻址。直接寻址和间接寻址都用来访问数据存储器,立即数寻

址利用由程序计数器确定的存储器内容。 使用直接寻址方式时,指令字的 7位和 9位数据存储器页指针(DP)构成 16位的数据存储器地址。其中,每页长 128字,共有 512页,故可寻址 64K的数据空间。间接寻址借助于 8个辅助寄存器(AR0~AR7)。表 2.2 列出了 7种间接寻址方式。其中的比特反转寻址可大大提高 FFT运算的 I/O效率。其中,OP表示某种运算,NARP表示新的 ARP。

表2.2 TMS320C25的寻址方式

寻址方式 操 作

OP A 直接寻址

OP *(,NARP) 间接寻址;AR不变

OP *+(,NARP) 间接寻址;当前 AR加 1

OP *-(,NARP) 间接寻址;当前 AR减 1

OP *0+(,NARP) 间接寻址;AR0加到当前 AR

OP *0-(,NARP) 间接寻址;当前 AR减去 AR0

OP *BR0+(,NARP) 间接寻址;AR0加到 AR()

OP *BR0-(,NARP) 间接寻址;当前 AR减去 AR0()

2.3.3 TMS320C5X TMS320C5X是 TI公司的第五代产品,是继 TMS320C1X和 TMS320C2X之后的第三代定点 DSP处理器。它的核心中央处理器(CPU)以 TMS320C25的核心 CPU为基础,增强型结构大幅度地提高了整体性能。TMS320C5X工作速度是 TMS320C25的 2倍以上,对于 TMS320C1X和 TMS320C2X具有源代码向上兼容特性。这种兼容性保留了过去开发的软件,便于系统升级到更高性能的 DSP系统。TMS320C5X系列有TMS320C50/C51/C52/C53等多种产品,它们的主要区别是片内 RAM、ROM等资源的多少,如 TMS320C50内部具有 10K字 RAM和 2K字 ROM,其中 2K字 ROM已经固化了引导程序;TMS320C51内部具有 2K字 RAM和 8K字 ROM;TMS320C52内部具有 1K字 RAM和 4K字 ROM,减少了一个串行口;TMS320C53内部则有 4K字 RAM和 16K字ROM。芯片的其他性能则是完全相同的。下面以 TMS320C50为例介绍 TMS320C5X DSP 芯片。

2.3.3.1 TMS320C50的基本特征

TMS320C50的主要特点包括:

Page 17: 书名:《DSP 芯片的原理与开发应用(第 版)》archive.ednchina.com/bbs.ednchina.com/uploadedn/Blog/2009/2/19/23… · 本书旨在使读者在了解DSP 芯片基本原理的基础上,能较快地掌握DSP

• 25/35/50ns的指令周期(20 ~ 40 MIPS) • 224K×16位最大可寻址外部存储空间(64K程序、64K数据、64K I/O、32K全局) • 算术逻辑单元(ALU),32位累加器(ACC)以及 32位加法器的缓冲器(ACCB) • 并行逻辑单元(PLU) • 结果具有 32位的 16×16位并行乘法器 • 单周期乘累加指令 • 具有一个专用算术单元的 8个辅助寄存器,可用于间接寻址 • 8级硬件堆栈 • 0~16位数据左移和右移 • 两个间接寻址的循环缓冲器,用于循环寻址 • 程序代码的单指令重复和程序块重复 • 全双工同步串行口,用于完成 TMS320C5X与其他串行器件之间的直接通信 • 时分多址访问(TDM )串行口 • 内部定时器,可用软件控制 • 64K 并行 I/O 口,其中 16个有存储器映像 • 可软件编程的等待状态发生器 • 扩展保持操作,用于并发外部 DMA • 四级流水线操作,用于延迟跳转、调用、返回指令 • 比特反转寻址方式,用于 FFT运算 • JTAG扫描仿真接口(IEEE标准,P1149.1) 1.核心 CPU TMS320C5X CPU的增强功能在提高性能和通用性的同时,保持了对 TMS320C1X和TMS320C2X源代码的兼容性。硬件的改进包括:一个 32位累加器缓冲器,附加定标能力,利用附加硬件功能的新指令。新的控制功能包括:独立的并行逻辑单元(PLU)和一组文本交换寄存器。数据管理方面的改进包括:采用新的块搬移指令和存储器映像寄存器

指令。TMS320C50有 28个存储器映像寄存器和 16个存储器映像的 I/O口。 2.片内 ROM TMS320C50拥有 2K×16位掩蔽 ROM,内部固化了引导程序。该存储器把程序从外部ROM/EPROM、串行口或并行 I/O口引导至运行速度较快的 SRAM中。这块引导 ROM可通过 PMST状态寄存器中的MP/MC\ 位从程序存储空间去除。如果该 ROM未选,则TMS320C50由片外存储器启动执行。 3.片内数据 RAM TMS320C50具有 1056字的片内 RAM,这块 RAM 可在每个机器周期内访问两次(双寻址 RAM),只要两次访问不是“写”操作。这块存储空间主要用于存储数据,但是如果需要也可用于存储程序和数据。其配置有两种方式:所有的 1056字都作为数据存储区,或者将其中的 544字作为数据存储器,512字作为程序存储区。可通过状态寄存器 ST1中的 CNF位选择设置。 4.片内程序/数据 RAM TMS320C50还具有 9K字的片内 RAM。这一存储区可以由软件设置映射到程序或数据存储空间。程序从片外存储器引导后,可装入到该存储区全速运行。 5.片内存储器安全 TMS320C50可以通过可屏蔽选择来保护片内存储器的内容。当相关比特置位时,外部无法访问片内存储空间。 6.有地址映射的软件等待状态发生器 软件等待状态逻辑不需要任何外部硬件就可以实现 TMS320C50与速度较慢的片外存储器和 I/O设备接口。该电路系统拥有 16个等待状态发生器,其中可由用户编程操作的有 0,1,2,3和 7状态。 7.并行 I/O口 TMS320C50共有 64K I/O口,其中的 16个可映射在数据存储空间。这些口可由 IN或OUT指令寻址。具有存储器映像的 I/O口可按存储器的读写方式访问。I/O口的访问由 IS\

Page 18: 书名:《DSP 芯片的原理与开发应用(第 版)》archive.ednchina.com/bbs.ednchina.com/uploadedn/Blog/2009/2/19/23… · 本书旨在使读者在了解DSP 芯片基本原理的基础上,能较快地掌握DSP

线选通。增加简单的片外地址译码电路,就可实现 TMS320C50的 I/O口与外部 I/O设备的简单连接。 8.串行 I/O口 TMS320C50有两个高速串行口。串行口最快可按 1/4机器周期(CLKOUT1)操作。一个是同步全双工串行口,发送和接收都有缓冲,分别由可屏蔽外部中断信号控制,数据可按

照 8或 16位方式传输;另一个串行口为全双工串口,可设置为同步方式,也可设置为时分多址(TDM)方式,TDM串行口一般用于多处理机系统。 9.16位硬件定时器 16位硬件定时器可由软件进行控制,通过设置相应的状态位,定时器可工作在停止、重启动、复位或不工作等状态。 10.用户可屏蔽中断 TMS320C50有 4个外部中断线。片内的中断锁存电路可实现异步中断操作。此外,还有 5个内部中断:1个定时器中断和 4个串行口中断。 11.JTAG扫描逻辑 JTAG扫描逻辑电路用于仿真和测试,采用 JTAG可实现在线仿真。

2.3.3.2 TMS320C50的结构

TMS320C50采用了与 TMS320C25类似的哈佛型总线结构,通过两个独立的数据总线和程序总线,最大限度地提高运算速度。指令支持在两个存储区之间的数据传输。 TMS320C50使用 32位的 ALU和累加器以实现 2的补码运算。ALU是一个通用的算术单元,它所使用的运算数据(16位)来自数据 RAM或来自立即数指令,也可以是乘积寄存器中 32位的乘积结果。除此之外,ALU还可以执行位操作。累加器保存 ALU的输出,也为 ALU提供下一个输入。字长为 32位的累加器分为高字节和低字节。指令提供对低字节和高字节的单独存储。32位的累加器缓冲器用于临时快速地存储累加器的内容。 除了 ALU之外,并行逻辑单元(PLU)可以在不影响累加器内容的情况下对数据进行逻辑操作。PLU提供了高速控制器需要的位处理能力,并简化了控制和状态寄存器需要的置位、清零和测试操作。 乘法器以单指令周期完成 16×16位的乘法,结果为 32位。乘法器由三部分组成,分别是乘法器阵列、PREG(乘积寄存器)、TREG0(临时寄存器)。16位的 TREG0存储乘数,PREG保存 32位的乘积结果。乘法器中的数值来自数据存储器,当使用MAC/MACD/MADS/MADD指令时来自程序存储器,或者来自乘立即数指令(MPY #)。片内快速乘法器对执行诸如卷积、相关和滤波等基本的 DSP操作十分有效。 TMS320C50的定标移位器有一个 16位的输入来自数据总线,32位的输出连接到 ALU。定标移位器依照指令的编程使输入数据产生 0到 16位的左移。移位量取决于指令或移位计数寄存器(TREG1)中的定义值。输出的最低有效位(LSB)补零,最高有效位补 0或符号扩展(取决于状态寄存器 ST1的符号扩展模式位 SXM)。附加的移位能力使处理器能执行数值定标、二进制位提取、符号扩展运算和溢出防止等功能。 8级硬件堆栈用于在中断及子程序调用时保存程序计数器的内容。中断发生时,重要寄存器(ACC、ACCB、ARCR、INDX、PMST、PREG、ST0、ST1和 TREG)压入堆栈,中断返回时弹出,实现了无开销的中断文本切换。

Page 19: 书名:《DSP 芯片的原理与开发应用(第 版)》archive.ednchina.com/bbs.ednchina.com/uploadedn/Blog/2009/2/19/23… · 本书旨在使读者在了解DSP 芯片基本原理的基础上,能较快地掌握DSP

2.3.4 TMS320C2XX TMS320C2XX是继 TMS320C2X和 TMS320C5X之后出现的一种低价格、高性能定点DSP芯片,主要包括 TMS320C20X、TMS320C24X两个子系列。TMS320C2XX系列 DSP芯片具有如下特点: (1) 处理能力强。指令周期最短为 25ns,运算能力达 40MIPS; (2) 片内具有较大的闪烁存储器。TMS320C2XX是最早使用闪烁存储器的 DSP芯片。闪烁存储器具有比 ROM灵活、比 RAM便宜的特点。TMS320F206和 TMS320F207片内具有 32K字的闪烁存储器和 4.5K字的 RAM。利用闪烁存储器存储程序,不仅降低了成本,减小了体积,同时系统升级也比较方便; (3) 功耗低。TMS320C2XX系列 DSP芯片在 5V工作时每个MIPS消耗 1.9mA,在 3.3V工作时每个MIPS消耗 1.1mA。使用 DSP核的省电模式可进一步降低功耗; (4) 资源配置灵活。现有 10多种具有不同资源配置的芯片。表 2.3是 TMS320C2XX系列DSP芯片比较表。 此外,TMS320C24X系列芯片为数字控制系统的应用做了优化设计。

表2.3 TMS320C2XX系列芯片的资源配置

TMS320 C2XX

指令周期 (ns)

片内 ROM (字)

片内 RAM (字)

片内 FLM (字)

同步 串行口

异步 串行口

C203 25/35/50 544 1 1

C204 25/35/50 4K 544 1 1

C205 25/35/50 4.5K 1 1

F206 25/35/50 4.5K 32K 1 1

F207 25/35/50 4.5K 32K 2 1

C209 35/50 4K 4.5K

C240 50 16K 544 1 1

F240 50 544 16K 1 1

C241 50 8K 544 1 1

F241 50 544 8K 1 1

C242 50 4K 544 1 1

F243 50 544 8K 1 1

2.3.5 TMS320C54X TMS320C54X是为实现低功耗、高性能而专门设计的定点 DSP芯片,其主要应用是无线通信系统等。该芯片的内部结构与 TMS320C5X不同,因而指令系统与 TMS320C5X和TMS320C2X等是互不兼容的。 TMS320C54X的主要特点包括: (1) 运算速度快。指令周期为 25/20/15/12.5/10ns,运算能力为 40/50/66/80/100 MIPS; (2) 优化的 CPU结构。内部有 1个 40位的算术逻辑单元,2个 40位的累加器,2个 40位加法器,1个 17×17的乘法器和 1个 40位的桶形移位器。有 4条内部总线和 2个地址产生器。此外,内部还集成了维特比加速器,用于提高维特比编译码的速度。先进的 DSP结构可高效地实现无线通信系统中的各种功能,如用 TMS320C54X实现全速率的 GSM 需 12.7 MIPS,实现半速率 GSM 需 26.2 MIPS,而实现全速率 GSM 语音编码器仅需 2.3 MIPS,实现 IS-54/136 VSELP语音编码仅需 12.8 MIPS; (3) 低功耗方式。TMS320C54X可以在 3.3V或 2.7V电压下工作,三个低功耗方式(IDLE1、IDLE2和 IDLE3)可以节省 DSP的功耗,TMS320C54X特别适合于无线移动设备。用 TMS320C54X实现 IS54/136 VSELP语音编码仅需 31.1mW,实现 GSM 语音编码器仅需 5.6mW; (4) 智能外设。除了标准的串行口和时分复用(TDM)串行口外,TMS320C54X还提供了自动缓冲串行口 BSP(auto-Buffered Serial Port)和与外部处理器通信的 HPI(Host Port Interface)接口。BSP可提供 2K字数据缓冲的读写能力,从而降低处理器的额外开销,指

Page 20: 书名:《DSP 芯片的原理与开发应用(第 版)》archive.ednchina.com/bbs.ednchina.com/uploadedn/Blog/2009/2/19/23… · 本书旨在使读者在了解DSP 芯片基本原理的基础上,能较快地掌握DSP

令周期为 20ns时,BSP的最大数据吞吐量为 50M bit/s,即使在 IDLE方式下,BSP也可以全速工作。HPI可以与外部标准的微处理器直接接口。 表 2.4是 TMS320C54X系列部分 DSP芯片比较表。

表2.4 TMS320C54X的资源配置

TMS320C54X 指令周期

(ns) 工作电压

(V) 片内 RAM(字)

片内 ROM(字)

串行口 BSP HPI

C541 20/25 5/3.3/3.0 5K 28K 2个标准口

C542 20/25 5/3.3/3.0 10K 2K 1个 TDM口 1 1

C543 20/25 3.3/3.0 10K 2K 1个 TDM口 1

C545 20/25 3.3/3.0 6K 48K 1个标准口 1 1

C546 20/25 3.3/3.0 6K 48K 1个标准口 1

C548 15/20/25 3.3/3.0 32K 2K 1个 TDM口 2 1

LC/VC549 10/12.5/15 3.3/2.5 32K 16K 1个 TDM口 2 1

VC5402 10 3.3/1.8 16K 4K 2 1

2.3.6 TMS320C62X 这是 TI公司于 1997年开发的一种新型定点 DSP芯片。该芯片的内部结构与以前的 DSP芯片不同,内部集成了多个功能单元,可同时执行 8条指令,运算能力达 1600MIPS。其主要特点有: (1) 运行速度快。指令周期为 5ns,运算能力为 1600MIPS; (2) 内部结构不同于一般 DSP芯片。内部同时集成了 2个乘法器和 6个算术运算单元,且它们之间是高度正交的,使得在一个指令周期内最大能支持 8条 32bit的指令; (3) 指令集不同。为充分发挥其内部集成的各执行单元的独立运行能力,TI公司使用了VelociTT 超长指令字(VLIW)结构。它在一条指令中组合了几个执行单元,结合其独特的内部结构,可在一个时钟周期内并行执行几个指令; (4) 大容量的片内存储器和大范围的寻址能力。片内集成了 512K字程序存储器和 512K字数据存储器,并拥有 32bit的外部存储器界面; (5) 智能外设。内部集成了 4个 DMA接口,2个多通道缓存串口,2个 32bit 计时器; (6) 低廉的使用成本。在一个无线基站的应用中,每片 TMS320C62X能同时完成 30路的语音编解码,每路成本为 3美元,而以前的 DSP系列最大只能完成 5路,每路的成本为 7美元。 这种芯片适合于无线基站、无线 PDA、组合Modem、GPS导航等需要大运算能力的应用场合。

2.4 TI浮点DSP芯片

2.4.1 TMS320C3X TMS320C3X是 TI的第三代产品,也是第一代浮点 DSP芯片。TMS320C3X中目前具有TMS320C30、TMS320C31和 TMS320C32三种。TMS320C31是 TMS320C30的简化和改进型,它在 TMS320C30的基础上去掉了一般用户不常用的一些资源,降低了成本,是一个性能价格比较高的浮点处理器,在国内已得到了较广泛的应用。TMS320C32是TMS320C31的进一步简化和改进。表 2.5示出了三种芯片的比较。

表2.5 三种TMS320C3X芯片的比较

特征 TMS320C30 TMS320C31 TMS320C32

Page 21: 书名:《DSP 芯片的原理与开发应用(第 版)》archive.ednchina.com/bbs.ednchina.com/uploadedn/Blog/2009/2/19/23… · 本书旨在使读者在了解DSP 芯片基本原理的基础上,能较快地掌握DSP

数据/程序总线

主总线 STRB: 32位数据,24位地址 扩展总线 IOSTRB:

32位数据,13位地址

STRB: 32位数据,24位地址

STRB0:8/16/32 位 STRB1: 8/16/32位

IOSTRB:32位

内部 RAM 2K字 2K字 512字

串行 I/O口 2个串行口 1个串行口 1个串行口

用户程序、数据 ROM 4K字/16K字节 无 无

DMA控制器 单通道 单通道 双通道

程序和数据 存储器宽度

32位 32位 程序 16/32位可选 数据 8/16/32 位可选

外部中断触发 电平触发 电平触发 电平/边沿可选

中断矢量表地址 固定 固定 用户可重定位

程序引导 无 用户可选 用户可选

TMS320C30的指令周期为 50/60/74ns,TMS320C31的指令周期为 33/40/50/60/74ns,TMS320C32的指令周期则为 33/40/50ns。

2.4.1.1 TMS320C3X的硬件资源

TMS320C30的硬件资源相当丰富。其内部包含了 2K×32位的快速 RAM块。分开的程序总线、数据总线和 DMA总线使得取指、读写数据和 DMA操作可并行进行,如 CPU可以在一个周期内完成下列操作: 在一个 RAM块中存取两个数据值,进行一次外部取指,DMA装入到另一个 RAM块。64×32位的指令 Cache用来存储经常使用的代码块,这可大大减少片外访问的次数,从而提高程序运行速度。由于主总线的地址总线是 24位,因此 TMS320C30可以访问多达 16M的 32位字的存储器空间,程序、数据和 I/O空间都包含在 TMS320C30这个 16M字的空间中。 TMS320C30有一个 40/32位的浮点/整数乘法器,这个乘法器可以在单周期内完成 24位整数和 32位浮点值的乘法,为了达到更高的性能,可以采用并行指令在单周期内完成一次乘法和 ALU操作。当乘法器进行浮点乘法时,输入是 32位单精度浮点值,而输出则是 40位的扩展精度浮点数。整数乘法时,输入是 24位,而输出则是 32位。 TMS320C30的整数/浮点算术逻辑运算单元 ALU可以进行单周期的 32位整数、32位逻辑数和 40位的浮点数操作,ALU的运算结果是 32位整数或 40位浮点数。内部的桶形移位器可以在单周期内进行高达 32位的左移或右移。内部总线 CPU1/CPU2和 REG1/REG2可从存储器中取两个操作数和从寄存器取两个操作数,这就使得对四个操作数进行乘和加/减可以在单周期内完成。 TMS320C30内有两个辅助寄存器算术单元(ARAU0和 ARAU1), 它们可以在单周期内产生两个地址。ARAU 的操作是和乘法器及 ALU的操作并行进行的。ARAU支持多种寻址方式。 TMS320C30提供 28个寄存器,这些寄存器可以由乘法器和 ALU操作,可以用作通用的寄存器。但是,它们也有一些特殊的功能,如 8个扩展精度的寄存器(R0~R7)可当累加器使用,特别适合用于存放扩展精度的浮点结果。8个辅助寄存器(AR0~AR7)支持一系列间接寻址方式,并且可以用作通用的 32位整数和逻辑寄存器。其他寄存器提供一些系统功能,如寻址、堆栈管理、处理器状态、中断和块重复等。 TMS320C30的外设是通过存储器映射的寄存器对外设总线进行控制的,外设总线由 32位数据总线和 24位地址总线组成,允许与外设直接通信。TMS320C30的外设包括两个可支持 8/16/24/32位数据交换的串行口和两个 32位定时器。串行口的时钟可以由内部产生也可由外部提供,串行口的引脚可以配置为通用的 I/O引脚,特殊的握手方式可保证TMS320C30与串行口的同步。定时器是通用的 32位定时器或事件计数器,具有两种信号方式,可由内部或外部提供时钟,每个定时器对应有一个 I/O引脚,可作为定时器的输入时钟或输出时钟,也可配置为通用的 I/O引脚。 片内的 DMA功能使得 CPU与 I/O操作可同时进行。DMA控制器可以在存储器的任何地

Page 22: 书名:《DSP 芯片的原理与开发应用(第 版)》archive.ednchina.com/bbs.ednchina.com/uploadedn/Blog/2009/2/19/23… · 本书旨在使读者在了解DSP 芯片基本原理的基础上,能较快地掌握DSP

址进行读写操作而不干扰 CPU的操作,因此 TMS320C30可与外部的慢速存储器或外设接口而不降低 CPU的吞吐量。 两个通用的外部引脚(XF0,XF1)可由软件设置为输入或输出,这两个引脚也用作TMS320C30的互锁操作,用于多处理器之间的通信。 除了主总线之外,TMS320C30还有一条扩展总线。扩展总线的数据线为 24位,地址线为13位,其操作可与主总线操作同时进行,也可独立于主总线。与主总线相比,扩展总线上的 I/O口的读写周期为 2个 H1周期,即是主总线的 2倍。扩展总线通常用于 I/O操作,如 A/D、D/A等。 TMS320C30内部有 4K字的 ROM,在微计算机方式下,程序由内部开始运行。 TMS320C31是 TMS320C30的简化和改进型,它去掉了扩展总线、一个串行口和内部的4K字 ROM,增加了程序的引导功能。当MCBL/MP\引脚为高电平时,工作于微计算机自引导方式,在这种方式下,TMS320C31可从三个特定的地址装入程序(BOOT1,BOOT2,BOOT3),也可从串行口装入程序。与 EPROM接口时,用户可用软件设定等待周期个数,当然也可用硬件来产生等待周期,可设定是按字节(8位)、半字(16位)或字(32位)装入,应用灵活。从串行口装入时,采用固定的 32位突发方式。装入方式设置是通过复位之后设置四个外部中断之一来实现。 TMS320C32是 TMS320C31的简化和改进型。简化主要是将内部的 RAM由 2K字减少为512字,以降低成本。改进之处包括:外部存储器宽度可变,中断矢量表可重定位,外部中断可由软件选择是电平触发还是边沿触发,DMA控制器增加了一个通道,此外,还增加了两种节电运行方式。 TMS320C3X均提供 HOLD功能和 JTAG仿真功能。

2.4.1.2 TMS320C3X的软件资源

1.丰富的指令系统 TMS320C3X的汇编语言指令集特别适合于数字信号处理。所有指令占一个机器字长,大部分指令是单周器的。指令集共有 113条指令,可以分为六类: 数据传送类、二操作数算术/逻辑类、三操作数算术/逻辑类、程序控制类、互锁操作类及并行操作类。12条数据传送指令可从存储器中读一个字装入寄存器,将一个字从寄存器中存入存储器中及进行堆栈

操作。二操作数指令有 35条,提供整数、浮点、逻辑运算及多精度算术操作。17条三操作数指令可以在一个指令周期内完成具有三个操作数的运算,其中两个是源操作数,另一

个是目的操作数。程序控制指令共 16条,它们影响程序的流向,其中有块重复指令 RPTB和单指令重复指令 RPTS。除了有标准跳转指令外,还有延迟跳转指令,有些指令具有条件运算功能。5条互锁操作指令主要用来进行多处理器之间的通信。剩下的 28条指令都是并行操作指令,每条并行指令由两条指令用符号“||”连接,并行操作指令可使“||”前后的两条指令并行完成。需要注意的是,并不是任意两条指令都可构成并行指令。 2.灵活的程序控制 TMS320C3X提供相当灵活的程序流控制。软件的程序控制包括重复、跳转、调用、陷阱及返回等。 TMS320C3X重复方式可以实现无开销循环。块重复指令 RPTB可以使一块代码重复执行指定的次数,而单指令重复指令 RPTS使一条指令重复执行指定的次数,由于 RPTS取指次数只有一次,因此减少了总线冲突的机会。这里需要特别注意的是,RPTS指令禁止中断,而 RPTB无此禁忌。因此在需要中断的场合,建议采用 RPTB指令代替 RPTS指令。 TMS320C3X提供两种类型的跳转:标准跳转和延迟跳转。标准跳转首先将流水线清空然后执行跳转,这可保证程序计数器的正确管理,但却使跳转指令需 4个周期才能执行完毕。延迟跳转则相反,它并不将流水线清空,而是保证在程序跳转之前执行它下面的 3条指令,这样使得跳转指令本身仅需 1个指令周期。当然有些指令(如 CALL、RPTB等)不能出现在延迟跳转指令下面的 3条指令。延迟跳转指令在它下面 3条指令完成前禁止中断。 互锁操作可用来实现多个 TMS320C3X之间的通信。通过采用外部信号(XF0,XF1),互锁操作指令提供强有力的同步机制,可用来实现忙等待循环、两个 TMS320C3X之间的

Page 23: 书名:《DSP 芯片的原理与开发应用(第 版)》archive.ednchina.com/bbs.ednchina.com/uploadedn/Blog/2009/2/19/23… · 本书旨在使读者在了解DSP 芯片基本原理的基础上,能较快地掌握DSP

同步(无需额外的硬件支撑)和多个计数器控制等。 3.流水线操作 流水线操作是 TMS320C3X具有高性能的特性之一。5个功能单元控制 TMS320C3X的操作:取指(F)、译码(D)、读操作数(R)、执行(E)和 DMA。流水线操作就是一个基本指令的取指、译码、读操作数和执行的并行操作。流水线的结构如图 2.2所示。

周期 F D R E m-3 W m-2 X W m-1 Y X W m Z Y X W ←完全重叠 m+1 Z Y X m+2 Z Y m+3 Z

注:W、X、Y、Z代表指令;F、D、R、E分别代表取指、译码、读操作数和执行。

图2.2 TMS320C3X的流水线结构

图中在 m周期,流水线完全重叠,4个单元的操作同时进行。5个功能单元的优先级从高到低依次是 E、R、D、F、DMA。当一条指令的处理已经准备好到流水线的下一级,但那一级还没有准备好接收新的输入时,就出现所谓的流水线冲突。在这种情况下,低优先级

的单元处于等待状态直到高优先级的单元完成它的当前操作。尽管 DMA的优先级最低,但由于 DMA控制器具有自己的数据和地址总线,因此,通过合适的数据结构,DMA与CPU的冲突可以减少甚至消除。 流水线冲突可以分为下列三大类:跳转冲突、寄存器冲突和存储器冲突。这三类冲突都可

以采取相应的一些手段予以解决,如由于标准跳转引起的跳转冲突可以采用延迟跳转的方

法来克服。 4.寻址方式多样 TMS320C3X支持 5类寻址方式,在这些类中又可采用 6种寻址类型。5类寻址方式是:①通用寻址方式;②三操作数寻址方式;③并行寻址方式;④长立即数寻址方式;⑤条件

跳转寻址方式。6种寻址类型是:①寄存器寻址;②直接寻址;③间接寻址;④短立即数寻址;⑤长立即数寻址;⑥相对寻址。此外,TMS320C30还有两种数字信号处理中非常有用的寻址方式,一种是圆周寻址方式,主要用于卷积和相关等运算中存储器循环缓冲;另一种寻址方式是比特反转寻址,主要用于 FFT运算。

2.4.2 TMS320C4X TMS320C4X系列浮点处理器是专门为实现并行处理和满足其他一些实时应用的需求而设计的。其主要性能包括 275 MOPS的惊人速度和 320Mbyte/s的吞吐量。

2.4.2.1 TMS320C40的主要特征

(1) 具有 6个用于处理器间高速通信的通信口。每个口的最大数据吞吐量可达 20Mbyte/s的异步传输速率。处理器之间可直接对通,应用方便、灵活; (2) 6个 DMA通道实现了 I/O操作与 CPU操作的并行化。每个 DMA通道都具备自初始化的能力,无需 CPU来完成初始化的工作,从而最大限度地保证了 CPU的性能,数据可以在处理器内存映像的任意范围内传递,具有高度的灵活性; (3) CPU的处理能力达 275 MOPS,数据吞吐量为 320Mbyte/s。由于高度的并行化,TMS320C40 的 CPU在每个周期内可以完成 11次操作。指令周期的时间为 40ns和 50ns。40/32位的单周期浮点/整数乘法为大运算量的算法提供了高性能。单周期 IEEE浮点格式转换为 IEEE兼容的处理器提供了一个有效的界面。硬件支持除法和平方根倒数运算。具有字节和半字长控制的能力,以实现快速数据压缩和解压。源代码与 TMS320C3X兼容,可移植性好。支持线性、循环和比特反转的寻址方式。单周期跳转、调用和返回,以实现

快速程序控制。0~31bit的单周期桶形循环左右移位; (4) 两条分开的外部数据、地址总线支持共享存储器系统和高速数据速率、单周期传输。端口数据传输速率高达 100Mbyte/s。16G字连续的程序/数据/外设地址空间为系统设计带来最大的灵活性。状态管脚标明存储器访问类型,以在共享存储器系统中实现快速、智能

Page 24: 书名:《DSP 芯片的原理与开发应用(第 版)》archive.ednchina.com/bbs.ednchina.com/uploadedn/Blog/2009/2/19/23… · 本书旨在使读者在了解DSP 芯片基本原理的基础上,能较快地掌握DSP

化的总线仲裁。分离的地址、数据和控制使能管脚可实现高速总线仲裁。4组存储器控制信号支持硬件上不同速率的存储器,使用者可以灵活有效地利用各种高、低速率存储器; (5) 片内分析模块支持高效的并行处理调试。为程序、数据和 DMA访问提供了分离的断点比较器,为快速调试和开发提供了片内硬中断的能力。为硬件追踪设置了非连续栈,可

方便快速地调试、开发。具有事件计数器。为标准系统连接留有 JTAG界面; (6) 片内程序高速缓冲存储器(Cache)和双向存取/单周期 RAM提高了存储器访问的性能。片内存储器包括:128字的指令高速缓冲存储器;2K字的单周期双向存取程序/数据RAM;ROM中的引导程序支持从 8/16/32位中的任一种存储器通过任一通信端口装入程序; (7) 分开的内部程序、数据和 DMA总线使程序和数据的 I/O操作高度并行化,最大限度地保证了 CPU的性能。

2.4.2.2 TMS320C40的结构

TMS320C40的高性能是通过其高精度、宽动态范围的浮点处理单元,大容量的片内存储器,高度的并行化,以及 6个 DMA协处理器通道体现出来的。 1.CPU TMS320C40有一个基于寄存器的 CPU,其组成部分如下: (1) 浮点/整数乘法器 通过高度的并行化措施,TMS320C40可以在一个 40ns的指令周期内对 32位的整型数或40位的浮点数完成一次乘法操作。若输入为 40位的浮点数,则输出也是 40位的浮点数;若输入为 32位的整型数,则乘积为 64位,输出既可以是 32个高有效位,也可以是 32个低有效位。 (2) 算术逻辑单元(ALU) ALU对 32位的整型数、32位的逻辑数、40位的浮点数执行单周期操作,包括单周期的整型和浮点转换。桶形移位寄存器用来完成单周期的 32位左右移位。 内部总线 CPU1/CPU2和 REG1/REG2分别连接存储器和内部寄存器,这样就允许在单周期内对 4个整型或浮点数并行进行加/减和乘法运算。 (3) 辅助寄存器运算单元(ARAU) 2个辅助寄存器运算单元(ARAU0和 ARAU1)可在单周期内产生 2个地址。ARAU与乘法器及 ALU并行操作。它们支持带有偏移的寻址、变址寄存器(IR0和 IR1)寻址、循环寻址和比特反转寻址。 (4) CPU主寄存器组 TMS320C40具有 32个主寄存器,其中包括 12个 40位的扩展精度寄存器(R0~R11),8个 32位的辅助寄存器(AR0~AR7),1个 32位的数据页指针(DP),32位变址寄存器(IR0和 IR1),32位块长寄存器(BK),32位的系统栈指针(SP),状态寄存器(ST),DMA中断允许寄存器(DIE),CPU内部中断允许寄存器(IIE),I/O标志寄存器,32位的重复计数器(RC)及 32位的重复起始地址寄存器(RS)和重复终止地址寄存器(RE)。程序计数器(PC)是一个 32位寄存器,装有下一条要提取指令的地址。虽然 PC不是 CPU寄存器组的成员,但用修改程序流的指令可对它进行修改。 (5) CPU扩展寄存器组 扩展寄存器组包括 2个特殊的指针寄存器:IVTP指向中断矢量表,TVTP指向陷阱矢量表。 2.存储器组织 TMS320C40总的存储器空间可达 4G×32位字。程序存储器(片内 RAM或 ROM和外部存储器)、定时器、通信口和 DMA通道等都包含在这一空间内。这样就使得系数、表、程序代码或数据既可存储在 RAM中,亦可存储在 ROM中,从而使存储器的利用率达到最高,存储器空间可按要求分配地址。 通过控制一个外部管脚(ROMEN),存储器起始的 1M字节的地址空间(0000 0000h到000F FFFFh)既可以映射到局部地址总线的一部分,也可以在使用装入程序时指向片内ROM。

Page 25: 书名:《DSP 芯片的原理与开发应用(第 版)》archive.ednchina.com/bbs.ednchina.com/uploadedn/Blog/2009/2/19/23… · 本书旨在使读者在了解DSP 芯片基本原理的基础上,能较快地掌握DSP

(1) RAM、ROM和高速缓冲存储器 TMS320C40的片内包含 2个 4K字节(1K×32位)的 RAM区。片内 ROM区保留用作引导程序区。每一个 RAM和 ROM区都支持单周期内两次存取。分开的程序总线、数据总线和 DMA总线,使得指令的读取、数据的读写及 DMA操作可以并行进行。例如,在一个周期内 CPU可在一个 RAM块上存取 2个数据,执行一次外部指令的读取,同时 DMA可对另一个 RAM块作直接存储器存取。 一个 128×32位的指令高速缓冲存储器用来存储经常重复的代码段,从而大大地减少了必要的片外存取次数。这样就使代码能存储在较慢的、价格较低的片外存储器。外部总线还

可被释放,以供 DMA、外部存储器操作或系统中的其他设备使用。 (2) 内部总线操作 TMS320C40的高性能在很大程度上归功于其内部总线结构及由之带来的并行性。分开的程序总线、数据总线和 DMA总线使指令的读取、数据的存取和 DMA操作可以并行进行。这些总线连结 C40支持的所有物理空间。 程序计数器(PC)与 32位的程序地址总线相连,指令寄存器(IR)与 32位的程序数据总线相连,在每一个机器周期内可以读取一个指令字。 32位的数据地址总线和 32位的数据总线在每一个机器周期中支持两次数据的存储器操作。数据总线通过 CPU1和 CPU2总线传送数据到 CPU。CPU1和 CPU2总线在每一机器周期可传送 2个数据存储器操作数到乘法器、ALU及寄存器组。在 CPU内部还有 2条寄存器总线 REG1和 REG2,它们在每一机器周期内,可从寄存器组传送 2个数据到乘法器。 DMA控制器由 32位地址总线和 32位数据总线支持。这些总线使 DMA能与数据及程序总线并行地执行存储器操作。 (3) 外部总线操作 TMS320C40具有 2个外部接口:全局总线和局部总线。它们都包含 1个 32位的数据总线、1个 31位的地址总线和 2组控制信号。这些总线都可用来对外部程序/数据存储器或I/O进行寻址。这些总线还有一个外部 RDY信号,用于等待状态的产生。可在软件控制下插入附加的等待状态。 (4) 外设 TMS320C40的外设是通过存储器映射寄存器,由一专用的外设总线控制。这一外设总线可以直接与外部设备进行通信。TMS320C40的外设包括 2个定时器和 2个串行口。 (5) 直接存储器访问(DMA) 6个通道的片内 DMA控制器可以读写存储器中的任意单元,而不必涉及 CPU的操作。因此 TMS320C40可以与相对较慢的外部存储器和外设接口而不降低 CPU的处理能力。DMA控制器有自己的地址发生器、源地址和目的地址寄存器及传输计数器。专用的 DMA地址和数据总线使 CPU与 DMA控制器之间的冲突降到了最低的程度。一个 DMA操作包括对存储器做一块或单个字的存取操作。DMA协处理器的一个关键特性就是它的每一个通道在进行一次数据传输之前都有自动重新初始化的功能。 总而言之,由于有一个功能强大的 CPU、大规模的存储器以及有足够宽的总线来支持其速度,TMS320C40是一个功能强大的 DSP芯片。 3.CPU寄存器、存储器和高速缓冲存储器 CPU主寄存器组包括 32个寄存器,用来存放乘法器和 ALU的操作数。这个寄存器组包括辅助寄存器、扩展精度寄存器和变址寄存器等。这些寄存器支持寻址、浮点/整型操作、栈操作、处理器状态记录、块重复、分支跳转和中断等功能。 CPU扩展寄存器组包括中断矢量表指针(IVTP)和陷阱矢量表(TVTP)。 TMS320C40能够访问的最大存储器范围为 4G个 32位字(16G字节)的程序、数据和 I/O空间。2个片内 RAM块均为 1K×32位。片内 ROM块包含有自引导程序,每块都支持单周期内 2次访问操作。 1个 128×32位的指令高速缓存可以装入指令代码中重复率高的部分。高速缓存大大减少了片外操作的次数,这样就允许将指令代码存放在片外的低速、廉价的存储器中而又不降

低系统的性能。同时由于高速缓存减少了总线上程序指令的读取次数,使得在同一物理空

Page 26: 书名:《DSP 芯片的原理与开发应用(第 版)》archive.ednchina.com/bbs.ednchina.com/uploadedn/Blog/2009/2/19/23… · 本书旨在使读者在了解DSP 芯片基本原理的基础上,能较快地掌握DSP

间内进行的数据存取速度大大加快。CPU状态寄存器中的 3个比特控制着高速缓冲存储器的清除、允许和冻结。 (1) CPU寄存器 TMS320C40提供了 32个 CPU主寄存器(不包括程序计数器 PC)和 2个扩展寄存器。 主寄存器都可以用作 32位的通用寄存器,存放乘法器及 ALU的操作数。除此之外,还有一些更适合于这些寄存器的特殊功能。例如 12个扩展精度特别适用于存放扩展精度的浮点运算结果;8个辅助寄存器支持各种间接寻址方式;其余寄存器提供寻址、堆栈管理、处理器状态、中断和块重复等系统功能。 (2) 存储器分配 TMS320C40总的存储器空间为 4G字。有两种地址编排方式,其区别仅在前 1M字之内,由外部引脚 ROMEN的值控制:ROMEN=1时,0000 0000h~0000 0FFFh为一个可访问的片内 ROM区(保留用作引导程序),0000 01FFh~000F FFFFh保留;ROMEN=0时,片内ROM不在 C40的存储器空间中,0000 0000h~000F FFFFh被映射到局部总线上。 (3) 指令高速缓冲存储器(Cache) 128×32位的指令高速缓存不但减少了片外取指的次数,同时也将外部总线从程序取指中解脱出来,从而可以被 DMA或其他系统部件所采用。 Cache能以完全自动的方式工作而无需用户的干预。它使用的是 LRU(Least recently used,最近最少使用)算法。 4.数据格式与浮点操作 在 TMS320C40的体系结构中,数据有 3种基本类型:整型、无符号整型和浮点型。TMS320C40对有符号和无符号整型支持短格式和单精度格式,而对于浮点数则支持短格式、单精度和扩展精度 3种格式。 浮点操作具有迅速、简单、正确和精度高的特点。特别是 TMS320C40可以以整型运算的速度来执行浮点操作,同时还可以避免整型运算中的溢出等问题。 5.寻址 TMS320C40有以下 5种寻址类型: (1) 寄存器寻址: 在一个 CPU的寄存器中包含有操作数; (2) 直接寻址:数据地址由数据页指针(DP)的 16个低有效位和指令字中的 16个低有效比特组成; (3) 间接寻址:间接寻址是通过一个辅助寄存器和变址寄存器的内容来操作在存储器中的地址。地址运算是由辅助寄存器运算单元来完成的,并且是无符号的。(辅助寄存器和变

址寄存器的所有 32位都在间接寻址中用到); (4) 立即寻址:操作数是指令字中的 16个低有效位构成的 1个 16位的立即数; (5) PC相对寻址:PC相对寻址用于分支转移。它用指令字中的 16或 24个低有效比特来替换程序计数器(PC)的当前值。 TMS320C40的寻址方式包括:通用寻址方式、三操作数寻址方式、并行寻址方式、条件转移寻址方式、圆周寻址方式和比特反转寻址方式。

2.4.3 TMS320C67X 这是 TI公司继定点 DSP芯片 TMS320C62X系列后开发的一种新型浮点 DSP芯片。该芯片的内部结构在 TMS320C62X的基础上加以改进,内部同样集成了多个功能单元,可同时执行 8条指令,其运算能力可达 1G FLOPS。除了具有 TMS320C62X系列的特点外,其主要特点还有: (1) 运行速度快。指令周期为 6ns,峰值运算能力为 1336 MIPS,对于单精度运算可达 1G FLOPS,对于双精度运算可达 250M FLOPS; (2) 硬件支持 IEEE格式的 32 比特 单精度与 64比特双精度浮点操作; (3) 集成了 32×32 比特的乘法器,其结果可为 32或 64比特; (4) TMS320C67X的指令集在 TMS320C62X的指令集基础上增加了浮点执行能力,可以看作是 TMS320C62X指令集的超集。TMS320C62X指令能在 TMS320C67X上运行,而无需任何改变。 与 TMS320C62X系列芯片一样,由于其出色的运算能力、高效的指令集、智能外设、大

Page 27: 书名:《DSP 芯片的原理与开发应用(第 版)》archive.ednchina.com/bbs.ednchina.com/uploadedn/Blog/2009/2/19/23… · 本书旨在使读者在了解DSP 芯片基本原理的基础上,能较快地掌握DSP

容量的片内存储器和大范围的寻址能力,这个系列的芯片适合于对运算能力和存储量有高

要求的应用场合。

2.5 多处理器DSP芯片TMS320C8X

TI公司除了生产定点和浮点两类 DSP芯片之外,还推出了功能强大的多处理器 DSP芯片TMS320C80。该芯片内部集成了 5个微处理器,处理速度达到每秒 20亿次操作,与外部交换数据的速度为每秒 400Mbyte,特别适合于会议电视等多媒体应用。 1.TMS320C80结构 图 2.3所示为 TMS320C80的内部结构。

图2.3 TMS320C80的内部结构

从图中可以看出,TMS320C80是一个多处理器芯片,它集 4个可并行处理的高性能 DSP芯片、1个 RISC主处理器、1个传输控制器、1个视频控制器和 50K字节的 SRAM等资源于一体,从而使其处理能力达到每秒 20亿次操作(2 BOPS)。该芯片可实时实现新一代的视频压缩和解压缩,可广泛应用于会议电视、可视电话、高速电信、多媒体、图像和

视频处理、二维和三维图形加速、虚拟现实、保密、雷达和声纳处理等应用场合。

2.并行 DSP芯片 TMS320C80上集成了 4个高性能的 DSP芯片,这 4个 DSP芯片既可独立运行,也可并行工作。采用 64位的指令字,以便于在单个周期内进行多个并行操作。每个处理器具有专用的高速指令缓冲 Cache和专用的数据 RAM。 每个 DSP芯片具有 4个主要的功能单元,即 1个程序控制器(PFC)、1个数据单元和 2个地址单元。PFC处理所有的指令执行,包括程序计数器增量、跳转和中断。3组无开销循环控制器跟踪循环计数和循环的起始及结束地址,而不增加额外的开销。循环控制器在

1个公共的循环结束地址内可支持多至 3个嵌套的循环。 数据单元可使单周期乘法和算术逻辑单元(ALU)数据通路操作并行执行。32位的 ALU可以分解为 2个 16位 ALU或 4个 8位 ALU,以便于对低精度的数据进行更多的并行操作。ALU数据通路内独特的扩展器单元可复制 1个 1比特值 32次、2个 1比特值 16次或4个 8比特数 8次以填满 1个 32位字。这些特征对于减少图像算法中的软件开销很有帮助。 3.传输控制器 TMS320C80可以每秒 400M字节的速度与外部交换数据,这个性能主要依赖于片内的传输控制器。在这里,传输控制器起智能 DMA控制器的作用,进行对片外存储器的访问,使主处理器不增加任何负担。传输控制器可对二维图形进行线性和二维寻址,支持三维图

形缓冲。 直接存储器接口提供了对多种存储器的灵活操作,包括 DRAM、SDRAM、VRAM和

DSP DSP DSP RISCMP

FPU

Crossbar

50K×Ö½ÚµÄSRAM

ÊÓƵ¿ØÖÆÆ÷

´«Êä

¿ØÖÆÆ÷

·Â

Õæ

¿Ú

3264

64 64

ÏÔʾ²¶»ñ

´æ´¢Æ÷

DSPG L I G L I G L I G L I

32 32 64 32 32 64 32 32 64 32 32 64

图2.3 TMS320C80的内部结构

Page 28: 书名:《DSP 芯片的原理与开发应用(第 版)》archive.ednchina.com/bbs.ednchina.com/uploadedn/Blog/2009/2/19/23… · 本书旨在使读者在了解DSP 芯片基本原理的基础上,能较快地掌握DSP

SRAM。此外,优先级任务管理器支持动态的总线宽度,可支持 8至 64位数据传输。灵活的总线宽度满足了如会议电视等的宽带应用,而不需专用的接口。 4.RISC主处理器 RISC主处理器(MP)进行整个芯片的管理并协调与系统内其他处理器的通信。该处理器是一个 32位的 RISC处理器,内部具有一个 运 算能力为 100 MFLOPS 并符合 IEEE-754标准的浮点单元(FPU),用以实现高效 C语言和作为操作系统的平台。该处理器主要是适应高级语言并协调片内的多处理器资源,可在单周期内完成 1个 64位数据的访问和 1个 32位取指。与基本的 RISC设计相比,其独特之处在于MP具有完整的浮点指令和一组特殊的矢量浮点指令,这些功能对于图像处理和三维图形来说都是必需的。此外,MP还具有 31个 32位的寄存器,为整数和浮点操作提供了极大的便利。 5.存储器 Crossbar结构 TMS320C80的一个重要特征是存储器 Crossbar结构。TMS320C80内部有 50K字节的SRAM,这些存储器被配置为较小的存储器块以便于通过这个独特的 Crossbar开关结构实现多个并行的存储器访问。Crossbar开关还便于片内处理器共享板上 RAM。在TMS320C80中,Crossbar在每个时钟周期内可进行 5次取指和 10次并行数据访问,从而使传输速率达到每秒 4.2G字节。硬件控制的优先级机制使得在同一个周期内仅有一个处理器访问一个特定的 RAM。存储器 Crossbar结构增强了系统的高速并行性能。 6.视频控制器 视频控制器具有 2个可编程的帧定时器,可按水平或纵向格式同时捕获和显示图像。帧定时器可用于任何捕获/显示的组合中,对不同速率的图像捕获可按异步或同步方式工作。由于帧定时器是软件可编程的,故可用作通用定时器。 在 TMS320C80基础上,TI公司还推出了简化型的多处理器芯片 TMS320C82,其内部包含 2个处理器、44K字节的 SRAM,性能为每秒 15亿次操作,由于省略了 2个处理器和视频控制器,其价格约为 TMS320C80的一半。表 2.6所示为两者的性能比较。

表2.6 TMS320C80/C82的主要性能比较

芯片 DSP数 RISC 主处理器

视频 控制器

传输 控制器

指令周期 (ns)

寻址空间 (字节)

片内 RAM (字节)

处理能力

(BOPS) 时钟

(MHz)

C80 4 1 1 1 20,25 4G 50K 2 50,40

C82 2 1 0 1 20 4G 44K 1.2 50

2.6 其他DSP芯片简介

2.6.1 AD公司DSP芯片

美国 AD公司在 DSP芯片市场上也占有一定的份额。与 TI公司相比,AD公司的 DSP芯片有自己的特点,如系统时钟一般不经分频直接使用,串行口带有硬件压扩,可从 8位EPROM引导程序,可编程等待状态发生器等。 AD公司的 DSP芯片可以分为定点 DSP芯片和浮点 DSP芯片两大类。ADSP21XX系列为定点 DSP芯片,ADSP21XXX系列为浮点 DSP芯片。目前,定点 DSP芯片主要有ADSP2101/2103/2105,ASDP2111/2115,ADSP2161/2162/2163/2164/2165/2166以及ADSP2171/2173/2181等。浮点 DSP芯片主要有 ADSP21000/21020,ADSP21060/21062等。 AD公司的定点 DSP芯片的程序字长为 24位,数据字长为 16位。运算速度较快,内部具有较为丰富的硬件资源,一般具有 2个串行口、1个内部定时器和 3个以上的外部中断源,此外还提供 8位 EPROM程序引导方式。具有一套高效的指令集,如无开销循环、多功能指令、条件执行等。 ADSP2101的指令周期有 80ns、60ns和 50ns三种,内部有 2K字的程序 RAM和 1K字的数据 RAM。ADSP2103与 ADSP2101相比,指令周期为 100ns,工作电压为 3.3V。

Page 29: 书名:《DSP 芯片的原理与开发应用(第 版)》archive.ednchina.com/bbs.ednchina.com/uploadedn/Blog/2009/2/19/23… · 本书旨在使读者在了解DSP 芯片基本原理的基础上,能较快地掌握DSP

ADSP2105是 ADSP2101的简化,指令周期为 72ns,内部的程序 RAM为 1K字,数据RAM为 512字,串行口减为 1个。 ADSP216X系列的指令周期为 50ns~100ns,与其他定点芯片相比,具有较大的内部程序ROM,如 ADSP2161/2163内部提供了 8K的程序 ROM,ADSP2162/2164内部提供 4K程序 ROM,工作电压为 3.3V,这些芯片的内部数据 RAM均为 512字。而 ADSP2165/2166除了具有 1K字的程序 ROM外,还提供了 12K字的程序 RAM和 4K字的数据 RAM,其中,ADSP2166的工作电压为 3.3V。 ADSP2171的指令周期为 30ns,速度达 33.3MIPS,是 AD公司 DSP芯片中运算速度最快的定点芯片之一。内部具有 2K字的程序 RAM和 2K字的数据 RAM。ADSP2173的资源与 ADSP2171相同,工作电压为 3.3V。 目前 ADSP的定点 DSP芯片中,处理能力最强的当数 ADSP2181。这种芯片具有以下几个特点: (1) 运算速度快。指令周期为 30ns,运算能力为 33.3MIPS; (2) 片内空间大。内部的程序和数据 RAM均为 16K字,共 80K字节; (3) 数据交换速度快。内部具有数据直接存储传输接口(IDMA),便于其他处理器高速存储 ADSP2181的片内 RAM。为了扩展数据存储能力,设计了字节数据直接存储传输接口(BDMA),最大可以扩展到 4M字节。2个串行口都具有自动数据缓冲功能,并且支持DMA传输; (4) 支持 8位 EPROM和通过 IDMA方式的程序引导; (5) 如果采用基 4 FFT做 1024点复数 FFT运算,运算时间仅为 1.07ms。 ADSP2181在一个处理器周期内可以完成以下功能: • 产生下一个程序地址 • 取下一个指令 • 进行 1个或 2个数据移动 • 更新 1个或 2个数据地址指针 • 进行 1次数据运算 与此同时,还可从 2个串行口发送或接收数据,通过 IDMA或 BDMA发送或接收数据以及内部定时器计数。 AD公司的浮点 DSP芯片包括 ADSP21020、21060和 21062等,程序存储器为 48位,数据存储器为 40位,支持 32位单精度和 40位扩展精度的 IEEE浮点格式,内部具有 32×48位的程序 Cache,有 3~4个外部中断源。 ADSP21060采用超级的哈佛结构,具有 4条独立的总线(2条数据总线、1条程序总线和1条 I/O总线),内部集成了大容量的 SRAM和专用 I/O总线支持的外设,指令周期为25ns,是一个高性能的浮点 DSP芯片。其主要特点包括: (1) 运算速度达 40 MIPS和 80 MFLOPS ,最高达 120 MFLOPS。每条指令均在 1个周期内完成; (2) 片内具有 4M位的 SRAM,可灵活地进行配置,如配置为 128K字的数据存储器(32位)和 80K字的程序存储器(48位)。可寻址 4G字的外部存储器; (3) 具有取模和比特反转的双数据地址产生器; (4) 10个 DMA通道。6个点到点连接口,传输速率为 240Mbyte/s; (5) 支持多处理器连接,提供与 16/32位微处理器的接口。外部微处理器可直接读写内部RAM; (6) 2个具有µ/A律压扩功能的同步串行口; (7) 支持可编程等待状态发生,可用 8位 EPROM或外部处理器引导程序; (8) 1024点复数 FFT的运算时间为 0.46ms; (9) 支持 IEEE JTAG 1149.1 标准仿真接口。

2.6.2 AT&T公司DSP芯片

AT&T是第一家推出高性能浮点 DSP芯片的公司。AT&T公司的 DSP芯片包括定点和浮点两大类。定点 DSP芯片中有代表性的主要包括 DSP16、DSP16A、DSP16C、DSP1610

Page 30: 书名:《DSP 芯片的原理与开发应用(第 版)》archive.ednchina.com/bbs.ednchina.com/uploadedn/Blog/2009/2/19/23… · 本书旨在使读者在了解DSP 芯片基本原理的基础上,能较快地掌握DSP

和 DSP1616等。浮点 DSP芯片中比较有代表性的包括 DSP32、DSP32C和 DSP3210等。 AT&T定点 DSP芯片的程序和数据字长均为 16位,有 2个精度为 36位的累加器,1个深度为 15字的指令 Cache,支持最多 127次的无开销循环。DSP16的指令周期为 55ns和75ns,累加器长度为 36位,片内有 2K字的程序 ROM和 512字的数据 RAM。DSP16A速度最快的版本为 25ns的指令周期,片内有 12K字的程序 ROM和 2K字的数据 RAM。DSP16C的指令周期为 38.5ns和 76.9ns,片内存储器资源与 DSP16A相同,增加了片内的Codec,此外,还有 1个 4引脚的 JTAG仿真口。DSP1610片内有 512字的引导 ROM和8K字的双口 RAM,支持硬件和软件等待状态。DSP1616片内有 12K字的 ROM和 2K字的双口 RAM,支持软件等待状态。DSP1610和 1616提供了仿真接口。 DSP32C是 DSP32的增强型,是性能较优的一种浮点 DSP芯片。其主要特点包括: (1) 80/100 ns的指令周期; (2) 地址和数据总线可以在单个指令周期内访问 4次; (3) 片内具有 3个 512字的 RAM块,或 2个 512字的 RAM块加 1个 4K字的 ROM块。可以寻址 4M字的外部存储器; (4) 具有串行和并行 I/O接口。串行 I/O采用双缓冲,支持 8/16/24/32位串行数据传输,外部微处理器可以控制 DSP32C的 8/16位并行口; (5) 采用专用的浮点格式,可在单周期内与 IEEE-754浮点格式进行转换; (6) 具有 4个 40位精度的累加器和 22个通用寄存器; (7) 支持无开销循环和硬件等待状态。 DSP3210内部具有 2个 1K字的 RAM块和 512字的引导 ROM,外部寻址空间达 4G字节,可以用软件编程产生等待状态,具有串行口、定时器、DMA控制器和一个与Motorola和 Intel微处理器兼容的 32位总线接口。

2.6.3 Motorola公司DSP芯片

Motorola公司的 DSP芯片可分为定点、浮点和专用三种。 定点 DSP芯片以MC56000、MC56001、MC56002为代表。程序和数据字长为 24位,有 2个精度为 56位的累加器。DSP56001的指令周期为 60ns和 74ns两种。片内具有 512字的程序 RAM、512字的数据 RAM和 512字的数据 ROM。三个分开的存储器空间,每个均可寻址 64K字。片内 32字的引导程序可以从外部 EPROM装入程序。支持 8位异步和8~24位同步串行 I/O接口。并行接口可与外部微处理器接口,支持硬件和软件等待状态产生。MC56000是 ROM型的 DSP芯片,内部具有 2K字的程序 ROM。MC56002则是一个低功耗型芯片,可以在 2.0V~5.5V电压范围内工作。 浮点 DSP芯片以MC96002为代表,采用 IEEE-754标准浮点格式,累加器精度达 96位,可支持双精度浮点数。该芯片的指令周期为 50/60/74ns。片内有 3个 32位地址总线和 5个32位数据总线。内部具有 1K字的程序 RAM、1K字的数据 RAM和 1K字的数据 ROM。64字的引导 ROM可以从外部 8位 EPROM引导程序。内部具有 10个 96位或 30个 32位基于寄存器的累加器。 支持无开销循环、硬件和软件等待状态产生。具有三个独立的存储空间,每个空间可寻址 4G字。 MC56200是一种基于MC56001 DSP核,适合于自适应滤波的专用定点 DSP芯片,指令周期为 97.5ns,程序字长和数据字长分别为 24位和 16位。内部的程序和数据 RAM均为256字,累加器精度为 40位。MC56156则是一个在片内集成了过取样∑-∆话带 Codec模数转换器和锁相环的 DSP芯片,主要用于蜂窝电话等通信应用,其指令周期为 33/50ns。 除了以上介绍的一些 DSP芯片之外,还有一些公司的 DSP芯片也较著名。例如 NEC公司的µPD77C25、µPD77220定点 DSP芯片和µPD77240浮点 DSP芯片等。

2.7 小 结

本章首先介绍了 DSP芯片的基本结构,比较详细地介绍了 TI公司的系列 DSP芯片的基本特征,并简要介绍了 AD等公司的 DSP芯片。了解 DSP芯片的结构和特征是采用 DSP芯片设计 DSP系统的基础。需要特别指出的是,由于 DSP芯片的发展速度很快,用户在选

Page 31: 书名:《DSP 芯片的原理与开发应用(第 版)》archive.ednchina.com/bbs.ednchina.com/uploadedn/Blog/2009/2/19/23… · 本书旨在使读者在了解DSP 芯片基本原理的基础上,能较快地掌握DSP

用 DSP芯片时,必须根据市场行情选用生产厂家主推的产品。如 TI公司目前比较流行的定点 DSP芯片是 TMS320C2XX、TMS320C54X、TMS320C62X等,即使是同一系列的DSP芯片,如 TMS320C54X,该系列中的某些芯片也已过时,因而建议不要使用。

Page 32: 书名:《DSP 芯片的原理与开发应用(第 版)》archive.ednchina.com/bbs.ednchina.com/uploadedn/Blog/2009/2/19/23… · 本书旨在使读者在了解DSP 芯片基本原理的基础上,能较快地掌握DSP

第 3章 DSP芯片的定点运算

3.1 数 的 定 标

在定点 DSP芯片中,采用定点数进行数值运算,其操作数一般采用整型数来表示。一个整型数的最大表示范围取决于 DSP芯片所给定的字长,一般为 16位或 24位。显然,字长越长,所能表示的数的范围越大,精度也越高。如无特别说明,本书均以 16位字长为例。 DSP芯片的数以 2的补码形式表示。每个 16位数用一个符号位来表示数的正负,0表示数值为正,1则表示数值为负。其余 15位表示数值的大小。因此 二进制数 0010000000000011b=8195 二进制数 1111111111111100b=-4 对 DSP芯片而言,参与数值运算的数就是 16位的整型数。但在许多情况下,数学运算过程中的数不一定都是整数。那么,DSP芯片是如何处理小数的呢?应该说,DSP芯片本身无能为力。那么是不是说 DSP芯片就不能处理各种小数呢?当然不是。这其中的关键就是由程序员来确定一个数的小数点处于 16位中的哪一位。这就是数的定标。 通过设定小数点在 16位数中的不同位置,就可以表示不同大小和不同精度的小数了。数的定标有 Q表示法和 S表示法两种。表 3.1列出了一个 16位数的 16种 Q表示、S表示及它们所能表示的十进制数值范围。 从表 3.1可以看出,同样一个 16位数,若小数点设定的位置不同,它所表示的数也就不同。例如: 16进制数 2000H=8192,用 Q0表示 16进制数 2000H=0.25,用 Q15表示 但对于 DSP芯片来说,处理方法是完全相同的。 从表 3.1还可以看出,不同的 Q所表示的数不仅范围不同,而且精度也不相同。Q越大,数值范围越小,但精度越高;相反,Q越小,数值范围越大,但精度就越低。例如,Q0的数值范围是-32768到+32767,其精度为 1,而 Q15的数值范围为-1到 0.9999695,精度为 1/32768 = 0.00003051。因此,对定点数而言,数值范围与精度是一对矛盾,一个变量要想能够表示比较大的数值范围,必须以牺牲精度为代价;而想提高精度,则数的表示范

围就相应地减小。在实际的定点算法中,为了达到最佳的性能,必须充分考虑到这一点。 浮点数与定点数的转换关系可表示为:

浮点数(x)转换为定点数( xq ): Qqx 2x(int) ∗=

定点数( qx )转换为浮点数(x): Qqx −∗= 2)float(x

例如,浮点数 x=0.5,定标 Q=15,则定点数 qx = 16384327685.0 =× ,式中 表示下取整。反之,一个用 Q=15 表示的定点数 16384,其浮点数为 16384×2-15

=16384/32768=0.5。

Page 33: 书名:《DSP 芯片的原理与开发应用(第 版)》archive.ednchina.com/bbs.ednchina.com/uploadedn/Blog/2009/2/19/23… · 本书旨在使读者在了解DSP 芯片基本原理的基础上,能较快地掌握DSP

表3.1 Q表示、S表示及数值范围

Q表示 S表示 十进制数表示范围

Q15 S0.15 -1≤X≤0.9999695

Q14 S1.14 -2≤X≤1.9999390

Q13 S2.13 -4≤X≤3.9998779

Q12 S3.12 -8≤X≤7.9997559

Q11 S4.11 -16≤X≤15.9995117

Q10 S5.10 -32≤X≤31.9990234

Q9 S6.9 -64≤X≤63.9980469

Q8 S7.8 -128≤X≤127.9960938

Q7 S8.7 -256≤X≤255.9921875

Q6 S9.6 -512≤X≤511.9804375

Q5 S10.5 -1024≤X≤1023.96875

Q4 S11.4 -2048≤X≤2047.9375

Q3 S12.3 -4096≤X≤4095.875

Q2 S13.2 -8192≤X≤8191.75

Q1 S14.1 -16384≤X≤16383.5

Q0 S15.0 -32768≤X≤32767

3.2 高级语言:从浮点到定点

在编写 DSP模拟算法时,为了方便,一般都是采用高级语言(如 C语言)来编写模拟程序。程序中所用的变量一般既有整型数,又有浮点数。如例 3.1程序中的变量 i是整型数,而pi是浮点数,hamwindow则是浮点数组。 例 3.1 256点汉明窗计算

int i; float pi=3.14159; float hamwindow[256]; for(i=0;i<256;i++) hamwindow[i]=0.54-0.46*cos(2.0*pi*i/255);

如果要将上述程序用某种定点 DSP芯片来实现,则需将上述程序改写为 DSP芯片的汇编语言程序。为了 DSP程序调试的方便及模拟定点 DSP实现时的算法性能,在编写 DSP汇编程序之前一般需将高级语言浮点算法改写为高级语言定点算法。下面讨论基本算术运算

的定点实现方法。

3.2.1 加法/减法运算的C语言定点模拟

设浮点加法运算的表达式为: float x,y,z; z=x+y;

将浮点加法/减法转化为定点加法/减法时最重要的一点就是必须保证两个操作数的定标值一样。若两者不一样,则在做加法/减法运算前先进行小数点的调整。为保证运算精度,需使 Q值小的数调整为与另一个数的 Q值一样大。此外,在做加法/减法运算时,必须注意结果可能会超过 16位表示。如果加法/减法的结果超出 16位的表示范围,则必须保留 32位结果,以保证运算的精度。 1.结果不超过 16位表示范围

设 x的 Q值为 Qx,y的 Q值为 Qy,且 Qx>Qy,加法/减法结果 z的定标值为 Qz,则

Page 34: 书名:《DSP 芯片的原理与开发应用(第 版)》archive.ednchina.com/bbs.ednchina.com/uploadedn/Blog/2009/2/19/23… · 本书旨在使读者在了解DSP 芯片基本原理的基础上,能较快地掌握DSP

z=x+y ⇒ yxz Q

qQ

qQ

q yxz −−− ⋅+⋅=⋅ 222

= xyxx QQQq

Qq yx −−− ⋅⋅+⋅ 222 )(

= xyx QQQqq yx −− ⋅⋅+ 2]2[ )( ⇒

)()( 2]2[ xzyx QQQQqqq yxz −− ⋅⋅+=

所以定点加法可以描述为: int x,y,z; long temp; /*临时变量*/ temp=y<<(Qx-Qy); temp=x+temp; z=(int)(temp>>(Qx-Qz)), 若 Qx≥Qz z=(int)(temp<<(Qz-Qx)), 若 QxQ≤z

例 3.2 定点加法 设 x=0.5,y=3.1,则浮点运算结果为 z=x+y=0.5+3.1=3.6; Qx=15,Qy=13,Qz=13,则定点加法为: x=16384;y=25395; temp=25395<<2=101580; temp=x+temp=16384+101580=117964; z=(int)(117964L>>2)=29491;

因为 z的 Q值为 13,所以定点值 z=29491即为浮点值 z=29491/8192=3.6。 例 3.3 定点减法

设 x=3.0,y=3.1,则浮点运算结果为 z=x-y=3.0-3.1=-0.1; Qx=13,Qy=13,Qz=15,则定点减法为: x=24576;y=25295; temp=25395; temp=x-temp=24576-25395=-819;

因为 Qx<Qz,故 z=(int)(-819<<2)=-3276。由于 z的 Q值为 15,所以定点值 z=-3276即为浮点值 z=-3276/32768≈-0.1。 2.结果超过 16位表示范围 设 x的 Q值为 Qx,y的 Q值为 Qy,且 Qx>Qy,加法结果 z的定标值为 Qz,则定点加法为:

int x,y; long temp,z; temp=y<<(Qx-Qy); temp=x+temp; z=temp>>(Qx-Qz),若 Qx≥Qz z=temp<<(Qz-Qx),若 Qx≤Qz

例 3.4 结果超过 16位的定点加法 设 x=15000,y=20000,则浮点运算值为 z=x+y=35000,显然 z>32767,因此 Qx=1,Qy=0,Qz=0,则定点加法为: x=30000;y=20000; temp=20000<<1=40000; temp=temp+x=40000+30000=70000; z=70000L>>1=35000;

因为 z的 Q值为 0,所以定点值 z=35000就是浮点值,这里 z是一个长整型数。 当加法或加法的结果超过 16位表示范围时,如果程序员事先能够了解到这种情况,并且需要保证运算精度时,则必须保持 32位结果。如果程序中是按照 16位数进行运算的,则

Page 35: 书名:《DSP 芯片的原理与开发应用(第 版)》archive.ednchina.com/bbs.ednchina.com/uploadedn/Blog/2009/2/19/23… · 本书旨在使读者在了解DSP 芯片基本原理的基础上,能较快地掌握DSP

超过 16位实际上就是出现了溢出。如果不采取适当的措施,则数据溢出会导致运算精度的严重恶化。一般的定点 DSP芯片都设有溢出保护功能,当溢出保护功能有效时,一旦出现溢出,则累加器 ACC的结果为最大的饱和值(上溢为 7FFFH,下溢为 8001H),从而达到防止溢出引起精度严重恶化的目的。

3.2.2 乘法运算的C语言定点模拟

设浮点乘法运算的表达式为: float x,y,z; z = xy;

假设经过统计后 x的定标值为 Qx,y的定标值为 Qy,乘积 z的定标值为 Qz,则 z = xy ⇒

zQqz −⋅ 2 = )(2 yx QQ

qq yx +−⋅⋅ ⇒

qz = )(2)( yxz QQQqq yx +−

所以定点表示的乘法为: int x,y,z; long temp; temp = (long)x; z = (temp×y) >> (Qx+Qy-Qz);

例 3.5 定点乘法 设 x = 18.4,y = 36.8,则浮点运算值为 z =18.4×36.8 = 677.12; 根据上节,得 Qx = 10,Qy = 9,Qz = 5,所以 x = 18841;y = 18841; temp = 18841L; z = (18841L*18841)>>(10+9-5) = 354983281L>>14 = 21666;

因为 z的定标值为 5,故定点 z = 21666即为浮点的 z = 21666/32 = 677.08。

3.2.3 除法运算的C语言定点模拟

设浮点除法运算的表达式为: float x,y,z; z = x/y;

假设经过统计后被除数 x的定标值为 Qx,除数 y的定标值为 Qy,商 z的定标值为 Qz,则 z = x/y ⇒

zQqz −⋅ 2 =

y

x

Qq

Qq

y

x−

2

2 ⇒

q

QQQq

q yx

zyxz )(2 +−⋅

=

所以定点表示的除法为: int x,y,z; long temp; temp = (long)x; z = (temp<<(Qz-Qx+Qy))/y;

例 3.6 定点除法 设 x = 18.4,y = 36.8,浮点运算值为 z = x/y = 18.4/36.8 = 0.5; 根据上节,得 Qx = 10,Qy = 9,Qz = 15;所以有 x = 18841, y = 18841; temp = (long)18841; z = (18841L<<(15-10+9))/18841 = 308690944L/18841 = 16384;

因为商 z的定标值为 15,所以定点 z = 16384即为浮点 z = 16384/215= 0.5。

Page 36: 书名:《DSP 芯片的原理与开发应用(第 版)》archive.ednchina.com/bbs.ednchina.com/uploadedn/Blog/2009/2/19/23… · 本书旨在使读者在了解DSP 芯片基本原理的基础上,能较快地掌握DSP

3.2.4 程序变量的Q值确定

在前面几节介绍的例子中,由于 x、y、z的值都是已知的,因此从浮点变为定点时 Q值很好确定。在实际的 DSP应用中,程序中参与运算的都是变量,那么如何确定浮点程序中变量的 Q值呢? 从前面的分析可以知道,确定变量的 Q值实际上就是确定变量的动态范围,动态范围确定了,则 Q值也就确定了。 设变量的绝对值的最大值为 max ,注意 max 必须小于或等于 32767。取一个整数 n,使它满足

nn 2max2 1 <<− 则有

)15(15 2222 nnQ −−−− =×= Q = 15-n

例如,某变量的值在-1至+1之间,即 max <1,因此 n = 0,Q=15-n = 15。 确定了变量的 max 就可以确定其 Q值,那么变量的 max 又是如何确定的呢?一般来说,确定变量的 max 有两种方法:一种是理论分析法,另一种是统计分析法。 1.理论分析法 有些变量的动态范围通过理论分析是可以确定的。例如: (1) 三角函数,y = sin(x)或 y = cos(x),由三角函数知识可知,|y|≤1; (2) 汉明窗,y(n) = 0.54-0.46cos [2πn/(N-1)] ,0≤n≤N-1。因为-1≤cos [2πn/(N-1)]≤1,所以 0.08≤y(n)≤1.0;

(3) FIR卷积。y(n)= ∑−

=

−1

0)()(

N

kknxkh ,设∑

=

=1

00.1)(

N

kkh ,且 x(n)是模拟信号 12位量化值,即

有 )(nx ≤211,则 )(ny ≤211; (4) 理论已经证明,在自相关线性预测编码(LPC)的程序设计中,反射系数 ik 满足下列不等式:

0.1<ik ,i= 1,2,…,p, p为 LPC的阶数。 2.统计分析法 对于理论上无法确定范围的变量,一般采用统计分析的方法来确定其动态范围。所谓统计

分析,就是用足够多的输入信号样值来确定程序中变量的动态范围,这里输入信号一方面

要有一定的数量,另一方面必须尽可能地涉及各种情况。例如,在语音信号分析中,统计

分析时就必须采集足够多的语音信号样值,并且在所采集的语音样值中,应尽可能地包含

各种情况,如音量的大小、声音的种类(男声、女声) 等。只有这样,统计出来的结果才能具有典型性。 当然,统计分析毕竟不可能涉及所有可能发生的情况,因此,对统计得出的结果在程序设

计时可采取一些保护措施,如适当牺牲一些精度,Q值取比统计值稍大些,使用 DSP芯片提供的溢出保护功能等。

3.2.5 浮点至定点变换的C程序举例

本节通过一个例子来说明 C程序从浮点变换至定点的方法。这是一个对语音信号(0.3kHz~3.4kHz)进行低通滤波的 C语言程序,低通滤波的截止频率为 800Hz,滤波器采用19点的有限冲击响应 FIR滤波。语音信号的采样频率为 8kHz,每个语音样值按 16位整型数存放在 insp.dat文件中。 例 3.7 语音信号 800Hz 19点 FIR低通滤波 C语言浮点程序

#include <stdio.h> const int length = 180 /*语音帧长为 180点=22.5ms@8kHz采样*/ void filter(int xin[ ],int xout[ ],int n,float h[ ]); /*滤波子程序说明*/ /*19点滤波器系数*/

Page 37: 书名:《DSP 芯片的原理与开发应用(第 版)》archive.ednchina.com/bbs.ednchina.com/uploadedn/Blog/2009/2/19/23… · 本书旨在使读者在了解DSP 芯片基本原理的基础上,能较快地掌握DSP

static float h[19]= {0.01218354,-0.009012882,-0.02881839,-0.04743239,-0.04584568,

-0.008692503,0.06446265,0.1544655,0.2289794,0.257883, 0.2289794,0.1544655,0.06446265,-0.008692503,-0.04584568, -0.04743239,-0.02881839,-0.009012882,0.01218354};

static int x1[length+20]; /*低通滤波浮点子程序*/ void filter(int xin[ ],int xout[ ],int n,float h[ ])

{ int i,j; float sum; for(i=0;i<length;i++) x1[n+i-1]=xin[i]; for (i=0;i<length;i++)

{ sum=0.0; for(j=0;j<n;j++) sum+=h[j]*x1[i-j+n-1]; xout[i]=(int)sum;

} for(i=0;i<(n-1);i++) x1[n-i-2]=xin[length-1-i];

}

/*主程序*/ void main( ) {

FILE *fp1,*fp2; int frame,indata[length],outdata[length]; fp1=fopen(insp.dat,"rb"); /*输入语音文件*/ fp2=fopen(outsp.dat,"wb"); /*滤波后语音文件*/ frame=0; while(feof(fp1)==0) { frame++; printf("frame=%d\n",frame); for(i=0;i<length;i++) indata[i]=getw(fp1); /*取一帧语音数据*/ filter(indata,outdata,19,h); /*调用低通滤波子程序*/ for(i=0;i<length;i++) putw(outdata[i],fp2); /*将滤波后的样值写入文件*/ } fcloseall( ); /*关闭文件*/ return(0);

} 例 3.8 语音信号 800Hz 19点 FIR低通滤波 C语言定点程序

#include <stdio.h> const int length=180; void filter(int xin[ ],int xout[ ],int n,int h[ ]); static int h[19]={399,-296,-945,-1555,-1503,-285,2112,5061,7503,8450, 7503,5061,2112,-285,-1503,-1555,-945,-296,399}; /*Q15*/ static int x1[length+20]; /*低通滤波定点子程序*/ void filter(int xin[ ],int xout[ ],int n,int h[ ])

{ int i,j; long sum;

Page 38: 书名:《DSP 芯片的原理与开发应用(第 版)》archive.ednchina.com/bbs.ednchina.com/uploadedn/Blog/2009/2/19/23… · 本书旨在使读者在了解DSP 芯片基本原理的基础上,能较快地掌握DSP

for(i=0;i<length;i++) x1[n+i-1]=xin[i]; for (i=0;i<length;i++)

{ sum=0; for(j=0;j<n;j++) sum+=(long)h[j]*x1[i-j+n-1]; xout[i]=sum>>15;

} for(i=0;i<(n-1);i++) x1[n-i-2]=xin[length-i-1];

} 主程序与浮点的完全一样。

3.3 DSP定点算术运算

定点 DSP芯片的数值表示是基于 2的补码表示形式。每个 16位数用 1个符号位、i个整数位和 15-i个小数位来表示。因此数 00000010.10100000表示的值为

311 222 −− ++ =2.625,这个数可用 Q8格式(8个小数位)来表示,它表示的数值范围为-

128~+127.996,一个 Q8定点数的小数精度为 1/256=0.004。 虽然特殊情况(如动态范围和精度要求)必须使用混合表示法,但是,更通常的是全部以Q15格式表示的小数或以 Q0格式表示的整数来工作。这一点对于主要是乘法和累加的信号处理算法特别现实,小数乘以小数得小数,整数乘以整数得整数。当然,乘积累加时可

能会出现溢出现象,在这种情况下,程序员应当了解数学里面的物理过程以注意可能的溢

出情况。下面讨论乘法、加法和除法的 DSP定点运算,汇编程序以 TMS320C25为例。

3.3.1 定点乘法

2个定点数相乘时可以分为下列 3种情况: 1.小数乘小数

Q15×Q15=Q30 例 3.9 0.5*0.5 = 0.25

0.100000000000000 ;Q15 × 0.100000000000000 ;Q15

00.010000000000000000000000000000=0.25 ;Q30 2个 Q15的小数相乘后得到 1个 Q30的小数,即有 2个符号位。一般情况下相乘后得到的满精度数不必全部保留,而只需保留 16位单精度数。由于相乘后得到的高 16位不满 15位的小数精度,为了达到 15位精度,可将乘积左移 1位,下面是上述乘法的 TMS320C25程序:

LT OP1 ;OP1=4000H(0.5/Q15) MPY OP2 ;OP2=4000H(0.5/Q15) PAC SACH ANS,1 ;ANS=2000H(0.25/Q15)

2.整数乘整数 Q0×Q0 = Q0

例 3.10 17×(-5)=-85 0000000000010001=17

× 1111111111111011=-5 11111111111111111111111110101011=-85 3.混合表示法 许多情况下,运算过程中为了既满足数值的动态范围又保证一定的精度,就必须采用 Q0与 Q15之间的表示法。比如,数值 1.2345,显然 Q15无法表示,而若用 Q0表示,则最接近的数是 1,精度无法保证。因此,数 1.2345最佳的表示法是 Q14。

Page 39: 书名:《DSP 芯片的原理与开发应用(第 版)》archive.ednchina.com/bbs.ednchina.com/uploadedn/Blog/2009/2/19/23… · 本书旨在使读者在了解DSP 芯片基本原理的基础上,能较快地掌握DSP

例 3.11 1.5×0.75 = 1.125 01.10000000000000 = 1.5 ;Q14

× 00.11000000000000 = 0.75 ;Q14 0001.0010000000000000000000000000 = 1.125;Q28

Q14的最大值不大于 2,因此,2个 Q14数相乘得到的乘积不大于 4。 一般的,若一个数的整数位为 i位,小数位为 j 位,另一个数的整数位为 m 位,小数位为 n 位,则这两个数的乘积为 ( i + m )位整数位和(j + n)位小数位。这个乘积的最高 16位可能的精度为( i + m )整数位和(15 - i - m)小数位。 但是,若事先了解数的动态范围,就可以增加数的精度。例如,程序员了解到上述乘积不

会大于 1.8,就可以用 Q14数表示乘积,而不是理论上的最佳情况 Q13。例 3.11的TMS320C25程序如下:

LT OP1 ;OP1 = 6000H(1.5/Q14) MPY OP2 ;OP2 = 3000H(0.75/Q14) PAC SACH ANS,1 ;ANS=2400H(1.125/Q13)

上述方法为了保证精度均对乘的结果舍位,结果所产生的误差相当于减去 1个 LSB(最低位)。采用下面简单的舍入方法,可使误差减少二分之一。

LT OP1 MPY OP2 PAC ADD ONE,14 (上舍入) SACH ANS,1

上述程序说明,不管 ANS为正或负,所产生的误差是 1/2 LSB,其中存储单元 ONE的值为 1。

3.3.2 定点加法

乘的过程中,程序员可不考虑溢出而只需调整运算中的小数点。而加法则是一个更加复杂

的过程。首先,加法运算必须用相同的 Q点表示;其次,程序员或者允许其结果有足够的高位以适应位的增长,或者必须准备解决溢出问题。如果操作数仅为 16位长,其结果可用双精度数表示。下面举例说明 16位数相加的两种途径。 1.保留 32位结果

LAC OP1 ;(Q15) ADD OP2 ;(Q15) SACH ANSHI ;(高 16位结果) SACL ANSLO ;(低 16位结果)

2.调整小数点保留 16位结果 LAC OP1,15 ;(Q14数用 ACCH表示) ADD OP2,15 ;(Q14数用 ACCH表示) SACH ANS ;(Q14)

加法运算最可能出现的问题是运算结果溢出。TMS320提供了检查溢出的专用指令 BV,此外,使用溢出保护功能可使累加结果溢出时累加器饱和为最大的整数或负数。当然,即

使如此,运算精度还是大大降低。因此,最好的方法是完全理解基本的物理过程并注意选

择数的表达方式。

3.3.3 定点除法

在通用 DSP芯片中,一般不提供单周期的除法指令,为此必须采用除法子程序来实现。二进制除法是乘法的逆运算。乘法包括一系列的移位和加法,而除法可分解为一系列的减

法和移位。下面来说明除法的实现过程。 设累加器为 8位,且除法运算为 10除以 3。除的过程就是除数逐步移位并与被除数比较的过程,在每一步进行减法运算,如果能减则将位插入商中。

Page 40: 书名:《DSP 芯片的原理与开发应用(第 版)》archive.ednchina.com/bbs.ednchina.com/uploadedn/Blog/2009/2/19/23… · 本书旨在使读者在了解DSP 芯片基本原理的基础上,能较快地掌握DSP

(1) 除数的最低有效位对齐被除数的最高有效位。 00001010 - 00011000 11110010 (2) 由于减法结果为负,放弃减法结果,将被除数左移一位再减。

Page 41: 书名:《DSP 芯片的原理与开发应用(第 版)》archive.ednchina.com/bbs.ednchina.com/uploadedn/Blog/2009/2/19/23… · 本书旨在使读者在了解DSP 芯片基本原理的基础上,能较快地掌握DSP

00010100 - 00011000 11111000 (3) 结果仍为负,放弃减法结果,被除数左移一位再减。 00101000 - 00011000 00010000 (4) 结果为正,将减法结果左移一位后加1,作最后一次减。 00100001 - 00011000 00001001 (5) 结果为正,将结果左移一位加 1得最后结果。高4位代表余数,低 4位表示商。 00010011 即商为 0011=3,余数为 0001=1。 TMS320没有专门的除法指令,但使用条件减指令 SUBC可以完成有效灵活的除法功能。使用这一指令的唯一限制是两个操作数必须为正。程序员必须事先了解其可能的运算数的

特性,如其商是否可以用小数表示及商的精度是否可被计算出来。这里每一种考虑可影响

如何使用 SUBC指令的问题。下面给出两种不同情况下的 TMS320C25除法程序。 (1) 分子小于分母

DIV_A: LT NUMERA MPY DENOM PAC SACH TEMSGN ;取商的符号 LAC DENOM ABS SACL DENOM ;使分母为正 ZALH NUMERA ;使分子为正 ABS RPTK 14 SUBC DENOM ;除循环 15次 SACL QUOT LAC TEMSGN BGEZ A1 ;若符号为正,则完成 ZAC SUB QUOT SACL QUOT ;若为负,则商为负

A1: RET 这个程序中,分子在 NUMERA中,分母在 DENOM中,商存在 QUOT中,TEMSGN为暂存单元。 (2) 规定商的精度

DIV_B: LT NUMERA MPY DENOM PAC SACH TEMSGN ;取商的符号 LAC DENOM ABS SACL DENOM ;使分母为正 LACK 15 ADD FRAC SACL FRAC ;计算循环计数器 LAC NUMERA

Page 42: 书名:《DSP 芯片的原理与开发应用(第 版)》archive.ednchina.com/bbs.ednchina.com/uploadedn/Blog/2009/2/19/23… · 本书旨在使读者在了解DSP 芯片基本原理的基础上,能较快地掌握DSP

ABS ;使分子为正 RPT FRAC SUBC DENOM ;除循环 16+FRAC次 SACL QUOT LAC TEMSGN BGEZ B1 ;若符号为正,则完成 ZAC SUB QUOT SACL QUOT ;若为负,则商为负

B1: RET 与 DIV_A相同,这个程序中,分子在 NUMERA中,分母在 DENOM中,商存在 QUOT中,TEMSGN为暂存单元。FRAC中规定商的精度,如商的精度为 Q13,则调用程序前FRAC单元中的值应为 13。

3.4 非线性运算的定点快速实现

在数值运算中,除基本的加减乘除运算外,还有其他许多非线性运算,如对数运算、开方

运算、指数运算、三角函数运算等,实现这些非线性运算的方法一般有:(1)调用 DSP编译系统的库函数;(2)查表法;(3)混合法。下面分别介绍这三种方法。 1.调用 DSP编译系统的库函数 TMS320C2X/C5X 的 C编译器提供了比较丰富的运行支持库函数。在这些库函数中,包含了诸如对数、开方、三角函数、指数等常用的非线性函数。在 C程序中(也可在汇编程序中)只要采用与库函数相同的变量定义,就可以直接调用。例如,在库函数中,定义了以10为底的常用对数 log10( ):

#include <math.h> double log10(double x);

在 C程序中按如下方式调用: float x,y; x = 10.0; y = log10(x);

从上例可以看出,库函数中的常用对数 log10( )要求的输入值为浮点数,返回值也为浮点数,运算的精度完全可以保证。直接调用库函数非常方便,但由于运算量大,很难在实时

DSP中得到应用。 2.查表法 在实时 DSP应用中实现非线性运算,一般都采取适当降低运算精度来提高程序的运算速度。查表法是快速实现非线性运算最常用的方法。采用这种方法必须根据自变量的范围和

精度要求制作一张表格。显然输入的范围越大,精度要求越高,则所需的表格就越大,即

存储量也越大。查表法求值所需的计算就是根据输入值确定表的地址,根据地址就可得到

相应的值,因而运算量较小。查表法比较适合于非线性函数是周期函数或已知非线性函数

输入值范围这两种情况,例 3.12和例 3.13分别说明这两种情况。 例 3.12 已知正弦函数 y=cos(x),制作一个 512点表格,并说明查表方法。 由于正弦函数是周期函数,函数值在-1至+1之间,用查表法比较合适。 由于 Q15的表示范围为-1至 32767/32768之间,原则上讲-1至+1的范围必须用 Q14表示。但一般从方便和总体精度考虑,类似情况仍用 Q15表示,此时+1用 32767来表示。 (1) 产生 512点值的 C语言程序如下所示:

#define N 512 #define pi 3.14159 int sin_tab[512]; void main( ) {

Page 43: 书名:《DSP 芯片的原理与开发应用(第 版)》archive.ednchina.com/bbs.ednchina.com/uploadedn/Blog/2009/2/19/23… · 本书旨在使读者在了解DSP 芯片基本原理的基础上,能较快地掌握DSP

int i; for(i=0;i<N;i++) sin_tab[i]=(int)(32767*sin(2*pi*i/N));

} (2) 查表 查表实际上就是根据输入值确定表的地址。设输入 x在 0~2π之间,则 x对应于 512点表的地址为:index = (int)(512*x/2π),则 y = sin(x) = sin_tab[index]。 如果 x用 Q12定点数表示,将 512/2π用 Q8表示为 20861,则计算正弦表的地址的公式为:index = (x*20861L)>>20。 例 3.13 用查表法求以 2为底的对数,已知自变量取值范围为 0.5~1,要求将自变量范围均匀划分为 10等分。试制作这个表格并说明查表方法。 (1) 做表: y = log2(x),由于 x在 0.5到 1之间,因此 y在-1到 0之间,x和 y均可用 Q15表示。由于对 x均匀划分为 10段,因此,10段对应于输入 x的范围如表 3.2所示。若每一段的对数值都取第 1点的对数值,则表中第 1段的对数值为 y0(Q15) = (int)(log2(0.5)×32768),第2段的对数值为 y1(Q15) = (int)(log2(0.55)×32768),依次类推。

表3.2 logtab0 10点对数表(输入0.5~1)

地址 输入值 对数值(Q15)

0 0.50~0.55 -32768

1 0.55~0.60 -28262

2 0.60~0.65 -24149

3 0.65~0.70 -20365

4 0.70~0.75 -16862

5 0.75~0.80 -13600

6 0.80~0.85 -10549

7 0.85~0.90 -7683

8 0.90~0.95 -4981

9 0.95~1.00 -2425

(2) 查表: 查表时,先根据输入值计算表的地址,计算方法为:index=((x-16384)×20)>>15。式中,index就是查表用的地址。例如,已知输入 x= 26869,则 index=6,因此 y=-10549。 3.混合法 (1) 提高查表法的精度 上述方法查表所得结果的精度随表的大小而变化,表越大,则精度越高,但存储量也越

大。当系统的存储量有限而精度要求也较高时,查表法就不太适合。那么能否在适当增加

运算量的情况下提高非线性运算的精度呢?下面介绍一种查表结合少量运算来计算非线性

函数的混合法,这种方法适用于在输入变量的范围内函数呈单调变化的情形。 混合法是在查表的基础上采用计算的方法以提高当输入值处于表格两点之间时的精度。提

高精度的一个简便方法是采用折线近似法,如图 3.1所示。 仍以求以 2为底的对数为例(例 3.13)。设输入值为 x,则精确的对数值为 y,在表格值的两点之间作一直线,用 y'作为 y的近似值,则有:

y'=y0+∆ y 其中 y0由查表求得。现在只需在查表求得 y0的基

础上增加∆ y即可。∆ y的计算方法如下: ∆ y=(∆ x/∆ x0)∆ y=∆ x(∆ y0/∆ x0)

式中∆ y0/∆ x0对每一段来说是一个恒定值,可作

一个表格直接查得。此外计算∆ x时需用到每段横坐标的起始值,这个值也可作一个表格。这样共

有三个大小均为 10的表格,分别为存储每段起点对数值的表 logtab0、存储每段∆ y0/∆ x0 值的表

y

y '

x0 x

y0∆x

∆x0

∆y

∆y0

图 3.1 提高精度的折线近似法

Page 44: 书名:《DSP 芯片的原理与开发应用(第 版)》archive.ednchina.com/bbs.ednchina.com/uploadedn/Blog/2009/2/19/23… · 本书旨在使读者在了解DSP 芯片基本原理的基础上,能较快地掌握DSP

logtab1和存储每段输入起始值 x0的表 logtab2,表 logtab1和表 logtab2可用下列两个数组表示:

int logtab1[10]={22529,20567,18920,17517,16308, 15255,14330,13511,12780,12124}; /*∆ y0/∆ x0 : Q13*/ int logtab2[10]={16384,18022,19660,21299,22938, 24576,26214,27853,29491,31130}; /* x0: Q15*/

综上所述,采用混合法计算对数值的方法可归纳为: ①根据输入值,计算查表地址:index=((x-16384)×20)>>15; ②查表得 y0=logtab0[index]; ③计算∆ x=x-logtab2[index]; ④计算∆ y=(∆ x×logtab1[index])>>13; ⑤计算得结果 y=y0+∆ y。 例 3.14 已知 x=0.54,求 log2(x)。 0.54的精确对数值为 y=log2(0.54)=-0.889。 混合法求对数值的过程为: ①定标 Q15,定标值 x=0.54*32768=17694; ②表地址 index=((x-16384)×20)>>15=0; ③查表得 y0=logtab0[0]=-32768; ④计算∆ x=x-logtab2[0]=17694-16384=1310; ⑤计算∆ y=(∆ xlogtab1[0])>>13=(1310*22529L)>>13=3602; ⑥计算结果 y=y0+∆ y=-32768+3602=-29166。 结果 y为 Q15定标,折算成浮点数为-29166/32768=-0.89,可见精度较高。 (2) 扩大自变量范围 如上所述,查表法比较适用于周期函数或自变量的动态范围不是太大的情形。对于像对数

这样的非线性函数,输入值和函数值的变化范围都很大。如果输入值的变化范围很大,则

作表就比较困难。那么能否比较好地解决这个问题,既不使表格太大,又能得到比较高的

精度呢?下面讨论一种切实可行的方法。 设 x是一个大于 0.5的数,则 x可以表示为下列形式:

x = e2m ⋅ 式中,0.5≤m≤1.0,e为整数。则求 x 的对数可以表示为:

log2(x) = log2( e2m ⋅ ) = log2(m) + log2( e2 ) = e + log2(m) 也就是说,求 x的对数实际上只要求 m的对数就可以了,而由于 m的数值在 0.5~1.0之间,用上面介绍的方法是完全可以实现的。例如:

log2(10000) = log2(0.61035× 142 ) = log2(0.61035) + 14 = 13.2877 可见,如果一个数可以用比较简便的方法表示为上面的形式,则求任意大小数的对数也是

比较方便的。TMS320C2X/C5X指令集提供了一条用于对 ACC中的数进行规格化的指令 NORM ,该指令的作用就是使累加器中的数左移,直至数的最高位被移至累加器的第 30位。例如,对数值 10000进行规格化的 TMS320C25程序为:

LAC #10000 SACL TEMP ZALH TEMP LAR AR1,#0FH RPT 14 NORM *-

上述程序执行后,AR1=#0eH,ACCH=2000(10进制)。对一个 16位整数 x 进行上述程序处理实际上就是做这样一个等效变换:

x = Q15Q

232768

2x −⋅⋅

其中,寄存器 AR1包含的值为 15-Q,累加器 ACC高 16位包含的值为 Q2⋅x ,其数值在

16384~32768之间。

Page 45: 书名:《DSP 芯片的原理与开发应用(第 版)》archive.ednchina.com/bbs.ednchina.com/uploadedn/Blog/2009/2/19/23… · 本书旨在使读者在了解DSP 芯片基本原理的基础上,能较快地掌握DSP

例 3.15 实现以 2为底的对数的 C定点模拟程序 int logtab0[10]={-32768,-28262,-24149,-20365,-16862, -13600,-10549,-7683,-4981,-2425}; /*Q15*/ int logtab1[10]={22529,20567,18920,17517,16308, 15255,14330,13511,12780,12124}; /*Q13*/ int logtab2[10]={16384,18022,19660,21299,22938, 24576,26214,27853,29491,31130}; /*Q15*/ int log2_fast(int Am) {

int point,point1; int index,x0,dx,dy,y; point=0; while(Am<16384) {point++;Am=Am<<1;} /*对 Am进行规格化*/ point1=(15-point-4)*512; /*输入为 Q4,输出为 Q9*/ index=((Am-16384)*20L)>>15; /*求查表地址*/ dx=Am-logtab2[index]; dy=((long)dx*logtab1[index])>>13; y=(dy+logtab0[index])>>6; /*Q9*/ y=point1+y; return (y);

} 上述程序中,输入值 Am采用 Q4表示,输出采用 Q9表示,如果输入输出的 Q值与上面程序中的不同,则应做相应的修改。

3.5 小 结

本章讨论了 DSP芯片进行定点运算所涉及的一些基本问题,这些问题包括:数的定标,DSP程序的定点模拟,DSP芯片的定点运算以及定点实现非线性函数的快速实现方法等。充分理解这些问题对于用定点芯片实现 DSP算法具有非常重要的作用。