
《DSP原理及应用 (乔瑞萍)(TMS320C54X)》由会员分享,可在线阅读,更多相关《DSP原理及应用 (乔瑞萍)(TMS320C54X)(41页珍藏版)》请在文档大全上搜索。
1、第第1 1章章 绪论绪论 第第1章章 绪论绪论 1.1 引言引言 1.2 DSP芯片概述芯片概述 1.3 运算基础运算基础 第第1 1章章 绪论绪论 1.1 引引 言言 1数字信号处理概述 数字信号处理,或者说对信号的数字处理,是利用计算机或专用的数字设备对数字信号进行采集、变换、滤波、估值、增强、压缩和识别等加工处理,以得到符合人们需要的信号形式并进行有效的传输与应用,它是20世纪60年代发展起来的并广泛应用于许多领域的新兴学科。数字信号处理系统是以数字信号处理为基础的。图1-1所示为一个典型的DSP系统。 第第1 1章章 绪论绪论 图1-1 数字信号处理系统简化框图 D/ADSFA/D10
2、010100111001010111010100101 100101011 10101001011000100100011101000010110第第1 1章章 绪论绪论 DSP系统的输入信号可以有各种各样的形式,例如:声音、图像、温度、压力等。假设我们输入的是语音信号,DSP系统首先对语音信号进行带限滤波和抽样,根据奈奎斯特定理,抽样频率至少必须是输入带限信号最高频率的2倍,以防止信号频谱混叠,保证语音信息不丢失。 第第1 1章章 绪论绪论 2单片机与数字信号处理器 单片机是从Z80发展而来的,它将微处理器和部分外围功能(如ROM、RAM及外部串口等)集成在一个芯片上,组成微型计算机。数字信
3、号处理器(Digital Signal Processor,DSP)是功能更强大的单片机,是现代电子技术、大规模集成电路、计算机技术和数字信号处理技术相结合的产物,特别适合于数字信号处理运算,主要应用于实时快速实现各种数字信号处理算法(如卷积运算、FFT、DFT、矩阵乘法等)。 第第1 1章章 绪论绪论 DSP芯片与单片机的主要区别在于数值处理和高速控制。 DSP有硬件乘法器,存储容量大得多。DSP采用的是改进的哈佛结构并广泛采用流水线技术,多个控制和运算部件并行工作,从而大大提高了运算速度。 DSP芯片内有多条数据、地址和控制总线,另外,它还有特殊指令:MAC(连乘加指令,单周期同时完成乘法
4、和加法运算)、RPTS和RPTB(硬件判断循环边界条件,避免破坏流水线);特殊寻址方式:位倒序寻址(实现FFT快速倒序)和循环寻址。 第第1 1章章 绪论绪论 1.2 DSP芯片概述芯片概述 1DSP芯片的发展 美国德州仪器公司(TI,Texas Instruments)成功地推出了DSP芯片的一系列产品。TMS320是包括定点、浮点和多处理器在内的数字信号处理器(DSP)系列,其结构非常适合于做实时信号处理。 第第1 1章章 绪论绪论 图1-2 TMS320系列DSP发展示意图 FutureFutureFutureTMS320C8xTMS320C6xTMS320C4xTMS320C54xTM
5、S320C3xTMS320C5xTMS320C2xxTMS320C2xTMS 320C1x多处理器DSP浮点DSP定点DSP第第1 1章章 绪论绪论 2TMS320系列的典型应用 自从20世纪70年代末第一个DSP芯片诞生以来,DSP芯片取得了飞速的发展。在20年里,DSP芯片已经在信号处理、音/视频、通信、消费、军事等诸多领域得到了广泛的应用。随着DSP芯片性价比的不断提高,单位运算量功耗的显著降低,DSP芯片的应用领域将会不断扩大。表1-1列出了TMS320系列DSP的典型应用。第第1 1章章 绪论绪论 表1-1 TMS320系列DSP的典型应用 第第1 1章章 绪论绪论 TI作为全球DS
6、P的领导者,目前主推三个DSP平台:TMS320C2000、TMS320C5000和TMS320C6000。其中包括多个子系列,数十种DSP器件,为用户提供广泛的选择,以满足各种不同应用的需求。第第1 1章章 绪论绪论 TMS320C2000系列DSP主要用于代替MCU,应用于各种工业控制领域,尤其是电机控制领域。 TMS320C5000系列DSP是为实现低功耗、高性能而专门设计的16位定点DSP芯片,它主要应用于通信和消费类电子产品,如手机、数码相机、无线通信基础设备、VoIP网关、IP电话、MP3等。 TMS320C6000系列的DSP主要应用于高速宽带和图像处理等高端应用,如宽带通信、3
7、G基站和医疗图像处理等。第第1 1章章 绪论绪论 1.3 运运 算算 基基 础础 1.3.1 数据格式 DSP有定点DSP和浮点DSP两种。本书介绍的TMS320C54x是16位定点DSP。在定点DSP中,数据有两种基本的表示方法:整数表示方法和小数表示方法。第第1 1章章 绪论绪论 1整数 DSP芯片和所有微处理器一样,以2的补码形式表示有符号数。16位定点DSP整型数格式为:Sxxxxxxxxxxxxxxx,其中最高位S为符号位,0代表正数,l代表负数,其余位为数据位。数的范围为-32 76832 767。整数的最大取值范围取决于DSP的字长,字长越长,所能表示的数据范围越大,精度越高。假
8、定一个整数字长为n,则其取值范围为-2n2n -1。整数的最小分辨率为1。第第1 1章章 绪论绪论 【例1】 若字长n=8,求以下带符号整数的二进制、十六进制和十进制之间的转换。 正整数 0100 1011B=4 BH=26+23+21+20=64+8+2+1=75 负整数 1111 1101B=FDH=-3 在本书介绍的TMS320C54x DSP中,整数一般用于控制操作、地址计算和其他非信号处理的应用。 第第1 1章章 绪论绪论 2小数 在16位定点DSP中,小数表示为:S.xxxxxxxxxxxxxxx,最高位S为符号位,其他的各位采用2的补码表示,小数点紧接着符号位,无整数位,数的范围
9、为(-1,1)。小数的最小分辨率为2-15。第第1 1章章 绪论绪论 【例2】 正小数 0101 0000B=2-1+2-3=0.5+0.125=0.625 负小数 1101 0000B=-1+2-1+2-3=-1+0.5+0.125=-0.375 对于求负小数的十进制真值,也可先求数值位的原码,即对1101 0000B求补,然后再求真值,即 1101 0000B补 =1011 0000B=- (2-2+2-3)= -(0.25+0.125)= -0.375 小数主要用于数字和各种信号处理算法的计算。第第1 1章章 绪论绪论 3数的定标 显然,定点表示并不意味着就一定是整数表示。在许多情况下,
10、需要由编程来确定一个数的小数点的位置,即数的定标。定点数最常用的是Q表示法或Qm.n表示法。它可将整数和小数表示方法统一起来。其中,m表示数的2补码的整数部分,n表示数的2补码的小数部分,1位符号位,数的总字长为m+n+l位。表示数的整数范围为-2m2m -1,小数的最小分辨率为 2- n。表1-2给出了16种Q表示法及其所表示的十进制数范围。第第1 1章章 绪论绪论 表1-2 Q表示法及其表示的十进制数范围 第第1 1章章 绪论绪论 1) Q15.0格式 Q15.0格式的字长为16位,其每位的具体表示为:Sxxxxxxxxxxxxxxx。 2) Q3.12格式 Q3.12格式的字长为16位,
11、其每位的具体表示为:Sxxxyyyyyyyyyyyy。 3) Q0.15(或Q.15)格式 Q.15格式的字长为16位,其每位的具体表示为:S.xxxxxxxxxxxxxxx。第第1 1章章 绪论绪论 4) Q0.31(或Q.31)格式 Q.31格式的字长为32位,需要2个16位的存储器字来表示。它实际上是Q.15格式的扩展表示。其每位的具体表示为:Sxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxx。第第1 1章章 绪论绪论 4定点数格式的选择 在具体应用中,为保证在整个运算过程中数据不会溢出,应选择合适的数据格式。例如,对于Q.15格式,其数据范围(-1,1),这样就必须保证
12、在所有运算中,其结果都不能超过这个范围,否则,芯片将结果取其极大值-1或l,而不管其真实结果为多少。 第第1 1章章 绪论绪论 5定点格式数据的转换 同一个用二进制表示的定点数,当采用不同的Qm.n表示方法时,其代表的十进制数是不同的。 例如: 用Q15.0表示方法,十六进制数3000H=12 288; 用Q0.15表示方法,十六进制数3000H=0.375; 用Q3.12表示方法,十六进制数3000H=3。第第1 1章章 绪论绪论 (1) 将十进制数表示成Qm.n格式。首先将数乘以2n,变成整数,然后再将整数转换成相应的Qm.n格式。 (2) 将某种动态范围较小的Qm.n格式转换为动态范围较
13、大的Qm.n格式。 第第1 1章章 绪论绪论 1.3.2 定点算术运算 1两个定点数的加/减法 定点数的加/减法必须保证两个操作数的格式一致。如果两个数的Q值不同,可将Q值小的数调整为与另一个数的Q值一样大,但必须在保证数据精度不变的前提下。另外,注意有符号和无符号数加/减运算的溢出问题。第第1 1章章 绪论绪论 【例3】 若x、y为正数,x=4.125,y=0.125,求x+y。 解 x=4.125,采用Q3.12格式表示的十六进制码为x212=4.125212=4200H; y=0.125,采用Q.15格式表示的十六进制码为x215=0.125215=1000H。 由于Q3.12格式与Q.
14、15格式的整数位相差3位,因此将y的Q.15格式表示的十六进制码1000H右移3位;由于1000H为正数,因此将整数部分补零,得到用Q3.12格式表示的0.125为0200H。将4200H加上0200H得到4400H,该数的格式为Q3.12,x+y=4.25。第第1 1章章 绪论绪论 【例4】 若x为正数,y为负数,x=5.625,y=-0.625,求x+y。 解 x=5.625,采用Q3.12格式表示的十六进制码为5A00H; y=-0.625,采用Q.15格式表示的十六进制码为B000H。 将y表示为Q3.12格式时,将它右移3位,因为是负数,所以整数部分符号位扩展后结果为F600H。将F
15、600H加到5A00H上,结果为5000H,x+y的Q3.12格式的值等于5。 第第1 1章章 绪论绪论 【例5】 若x、y为负数,x=-1.625,y=-0.125,求x+y。 解 x=-1.625,采用Q3.12格式表示的十六进制码为E600H; y=-0.125,采用Q.15格式表示的十六进制码为F000H。 将y表示为Q3.12格式后,其十六进制码为FE00H。将FE00H加到E600H上,结果为E40OH,x+y的Q3.12格式的值等于-1.75。 第第1 1章章 绪论绪论 【例6】 若x为负数,y为正数,x=-4.025,y=0.425,求x+y。 解 x=-4.025,采用Q3.
16、12格式表示的十六进制码为BF9AH; y=0.425,采用Q.15格式表示的十六进制码为3666H。 将y表示为Q3.12格式后,其十六进制码为06CCH。将06CCH加到BF9AH上,结果为C666H,x+y的Q3.12格式的值等于-3.6,结果正确。第第1 1章章 绪论绪论 2两个定点数的乘法 两个16位定点数的乘法分以下几种情况。 1) 纯小数乘以纯小数(数据用Q.15表示) Q.15Q.15Q.30 Sxxxxxxxxxxxxxxx ;Q.15 Syyyyyyyyyyyyyyy ;Q.15 SSzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz ;Q.30第第1 1章章 绪
17、论绪论 【例7】 0.50.5 = 0.25。 0.100000000000000 ;Q.15 0.100000000000000 ;Q.15 00.010000000000000000000000000000 = 0.25 ;Q.30第第1 1章章 绪论绪论 2) 整数乘整数(数据用Q15.0表示) Q15.0Q15.0 = Q30.0【例8】 12(-5)= -60。 0000000000001100 (12) ;Q15.0 1111111111111011 (-5) ;Q15.0 11111111111111111111111111000100 (-60);Q30.0第第1 1章章 绪论
18、绪论 3) 混合表示法 两个16位整数相乘,乘积总是“向左增长”,积为32位,难于进行后续的递推运算;两个小数相乘,乘积总是“向右增长”,且存储高16位乘积,用较少资源来保存结果(这是DSP芯片采用小数乘法的原因)用于递推运算。 许多情况下,运算过程中为了既满足数值的动态范围,又保证一定的精度,就必须采用Q15.0与Q.15之间的Q表示法,即混合表示。例如,数值1.0125显然用Q.15格式无法表示,而若用Q15.0格式表示,则最接近的数是1,精度无法保证。因此,数1.0125最佳的表示法是Q1.14格式。第第1 1章章 绪论绪论 【例9】 1.50.75 = 1.125。 01.100000
19、00000000 ( 1.5 ) ;Q1.1400.11000000000000 ( 0.75 ) ;Q1.14 0001.0010000000000000000000000000 = 1.125;Q2.13 由于Q1.14的最大值不大于2,因此,2个Q1.14数相乘得到的乘积不大于4。第第1 1章章 绪论绪论 3两个定点数的除法 在通用DSP芯片中,一般不提供单周期的除法指令,为此必须采用除法子程序来实现。二进制除法是乘法的逆运算。乘法包括一系列的移位和加法,而除法可分解为一系列的减法和移位。下面说明除法的实现过程。 设累加器为8位,且除法运算为91除以4。除的过程就是除数逐步移位并与被除数
20、比较的过程。在这过程中,每一步都进行减法运算,如果够减,则将1插入商中,否则补0。 第第1 1章章 绪论绪论 除法一般用有规律的减法去做,如: 1 0 1 1 0 商220100 0 1 0 1 1 0 1 1 被除数91 0 1 0 0 除数4 右移3位 1 1 0 1 0 0 1 0 1 1 0 0 1 1 余3被除数位置不动商位置不动除数右移第第1 1章章 绪论绪论 TMS320C54x利用带条件减法SUBC来实现除法运算,除数不动,被除数、商左移。TMS320没有专门的除法指令,但使用条件减法指令SUBC加上重复指令RPT就可以完成有效灵活的除法功能。使用SUBC的惟一限制是两个操作数
21、必须为正。程序员必须事先了解其可能的运算数的特性,如其商是否可以用小数表示及商的精度是否可被计算出来。这里每一种考虑都会影响到如何使用SUBC指令的问题。第第1 1章章 绪论绪论 如上例中:(1) 被除数减除数: 0 1 0 1 1 0 1 1 - 0 1 0 0 0 0 0 1 1 0 1 1 第第1 1章章 绪论绪论 (2) 够减,将结果左移一位后加1再减: 0 0 1 1 0 1 1 1 - 0 1 0 0 1 1 1 1 0 1 1 1 (3) 不够减,放弃减法结果,被除数左移一位再减: 0 1 1 0 1 1 1 0 - 0 1 0 0 0 0 1 0 1 1 1 0第第1 1章章 绪论绪论 (4) 够减,将结果左移一位后加1再减: 0 1 0 1 1 1 0 1 - 0 1 0 0 0 0 0 1 1 1 0 1第第1 1章章 绪论绪论 (5) 够减,将结果左移一位后加1再减: 0 0 1 1 1 0 1 1 - 0 1 0 0 1 1 1 1 1 0 1 1 (6) 不够减,放弃减法结果,被除数左移一位,得最后结果: 0 1 1 1 0 1 1 0 即商为10110B=22,余数为011B=3。