1、第7章 数字信号处理方法及其DSP实现u7.1 数字滤波器的基本概念数字滤波器的基本概念u7.2 有限冲击响应滤波器有限冲击响应滤波器(FIR)的原理结构的原理结构u7.3 无限冲击响应滤波器无限冲击响应滤波器(IIR)的原理结构及设计的原理结构及设计u 7.4 快速傅里叶变换快速傅里叶变换(FFT)u7.5 本章小结本章小结u习题与思考题习题与思考题在第1章里,我们讲到了经典的数字信号处理有时域上的FIR、IIR以及频域上的FFT。本章通过几个任务的讲解,介绍FIR滤波器、IIR滤波器以及FFT的基本概念及其DSP实现。数字滤波,是数字信号处理的基本核心内容之一,占有极重要的地位。它是语音、
2、图像处理、软件无线电、通信、模式识别、谱分析等应用中的一个基本处理算法。数字滤波器是一个具有按预定的算法,将输入离散时间信号转换为所要求输出的离散时间信号的特定功能装置,是一个离散时间系统。与模拟滤波器相比,数字滤波器不用考虑器件的噪声、电压漂移、温度漂移等问题,可以容易地实现不同幅度和相位频率等特性指标。7.1 数字滤波器的基本概念数字滤波器的基本概念几乎每一科学和工程领域如声学、物理学、数据通信、控制系统和雷达等都涉及到信号,在应用中都希望根据期望的指标把一个信号的频谱加以修改、整形或运算,这些过程都可能包含衰减一个频率范围、阻止或隔离一些频率成分。数字滤波作为数字信号处理的重要组成部分有
3、着十分广泛的应用前景。数字滤波器的实现方法一般如下有几种:(1)在通用计算机上用软件编程实现。(2)用加法器、乘法器、延时器设计实现专用的滤波电路。(3)用单片机实现。(4)用通用的可编程DSP芯片实现。(5)用专用的DSP芯片实现。(6)用FPG、CPLD等可编程器件来设计实现,开发数字滤波算法。在这几种方法中,第一种方法的速度比较慢,主要用来进行算法的模拟仿真,只能用于非实时系统;;第二种和第五种方法是专用的,应用范围不广;第三种方法比较容易实现人机接口,但系统比较复杂,对乘法运算的速度很慢;;第四种方法因DSP芯片的哈佛结构、并行结构、指令系统等特点,使得数字滤波器比较容易实现;;第六种
4、方法是通过软件编程用硬件实现特定的数字滤波算法,具有通用性,可以实现算法的并行运算,在当今研究的也比较多。数字信号是通过采样和转换得到的,而转换的位数是有限的(一般为6、8、10、12、16位),所以存在量化误差;另外,计算机中的数表示也总是有限的,由经此表示的滤波器的系数同样存在量化误差,在计算过程中因有限字长也会造成误差。7.1.1 数字滤波器结构的表示方法数字滤波器结构的表示方法一个数字滤波器可以用描述输入/输出关系的常系数线性差分方程来表示:(7-1)对初始状态为零的情况,差分方程所描述的系统是线性非移变(LSI)系统。对式(7-1)两边取变换,得到该系统的系统函数为MkkNkkknx
5、bknyany01)()()(7-2)LSI系统的很多特性都是通过H(z)反映出来的。NkkkMkkkzazbzXzYzH101)()()(由式(7-1)可以看出,实现一个数字滤波器需要三个基本的运算单元:加法器、单位延迟器和常数乘法器。这些基本单元可以有两种表示法:方框图法和信号流图法。因而一个数字滤波器的运算情况(网络结构)也有这样两种表示法,如图7-1所示。线性信号流图本质上与方框图表示法等效,只是符号上有差异。用方框图表示较明显直观,用流图表示则更加简单方便。以二阶数字滤波器y(n)=a1y(n-1)+a2y(n-2)+b0 x(n)为例,滤波器方框图结构如图7-2(a)所示,其等效信
6、号流图如图7-2(b)所示。图7-1 基本运算的方框图及流图表示(a)方框图表示;(b)流图表示图7-2 二阶数字滤波器方框图及流图结构(a)方框图结构;(b)流图结构图中节点1、2、3、4、5称为网络节点,x(n)处为输入节点或称为源节点,表示外部输入或信号源,y(n)处为输出节点或称为吸收节点。节点之间用有向支路相连接,任一节点的节点值等于它的所有输入支路的信号之和。输入支路的信号值等于这一支路起点处的节点信号值乘以支路增益(传输系数)。如果支路箭头旁边未标增益符号,则认为支路增益为1。而延迟支路则用延迟算子z-1表示,它表示单位延迟。7.1.2 一般数字滤波器的设计方法概述一般数字滤波器
7、的设计方法概述1.数字滤波器的分类数字滤波器的分类数字滤波器按照不同的分类方法,有许多种类,但总体来讲可以分成两大类。一类称为经典滤波器,即一般滤波器,特点是输入信号中有用的频率成分和希望滤除的频率成分各占有不同的频带,通过一个合适的选频滤波器达到滤波的目的;另一类称为现代滤波器,其理论研究的主要内容是从含有噪声的数据记录(又称时间序列)中估计出信号的某些特征或信号本身。现代滤波器理论源于维纳在20世纪40年代及其以后的工作,因此维纳滤波器便是这一类滤波器的典型代表,此外还有卡尔曼滤波器、线性预测器、自适应滤波器等。经典滤波器从功能上总的可以分为低通、高通、带通、带阻和全通等滤波器。此种分类方
8、法是和模拟滤波器是一样的,它们的理想幅度频率响应如图7-3所示。这些理想滤波器均是不可能实现的,因为它们的单位冲激响应均是非因果且是无限长的,。设计者只能按照某些准则设计实际滤波器,使之尽可能逼近它,因此图7-3所示的理想滤波器可作为逼近的标准。图7-3 各种数字滤波器的理想幅度频率响应数字滤波器从实现的网络结构或单位冲激响应分类,可以分成无限长单位冲激响应(IIR)滤波器和有限长单位冲激响应(FIR)滤波器。它们的系统函数分别表示为 (7-3)(7-4)NkkkMkkkzazbzXzYzH101)()()(10)()(NkkzkhzH式(7-3)中,一般满足MN,这类系统称为N阶IIR系统;
9、当MN时,H(z)可看成一个N阶IIR子系统与一个(M-N)阶FIR子系统(多项式)的级联。式(7-4)所示系统称为(N-1)阶FIR系统。2.数字滤波器的技术要求数字滤波器的技术要求对于图7-3所示的各种理想滤波器,必须设计对应的因果滤波器去实现。在实际应用中,同时也要考虑系统的复杂性与成本问题。因此,在一般情况下,滤波器的性能要求往往以频率响应的幅度特性的允许误差来表征,亦即实用中通带和阻带都允许有一定的误差容限。3.数字滤波器的设计方法简介数字滤波器的设计方法简介实际中的数字滤波器设计都是用有限精度算法实现的线性非移变系统,一般的设计内容和步骤包括:(1)根据实际需要确定数字滤波器的技术
10、指标,例如滤波器的频率响应的幅度特性和截止频率等。(2)用一个因果稳定的离散线性非移变系统的系统函数去逼近这些性能指标。具体来说,就是用这些指标来计算系统函数H(z)。(3)利用有限精度算法来实现这个系统函数。这里包括选择运算结构、进行误差分析和选择合适的字长等。(4)实际的数字滤波器实现技术,包括采用通用的计算机软件或专用的数字滤波器硬件来实现,或采用通用或专用的数字信号处理器(DSP)来实现。7.2.1 FIR滤波器的基本原理滤波器的基本原理数字滤波器主要分为两类:FIR和IIR。FIR滤波器,就如同其名字那样,与所有的模拟滤波器不同,具有一个有限长度的脉冲响应。所以,当在FIR滤波器的输
11、入端输入一个脉冲,那么根据滤波器的长度,输出端仅产生一定数量的采样值变化。7.2 有限冲击响应滤波器有限冲击响应滤波器(FIR)的原理结构及设计的原理结构及设计FIR滤波器的主要吸引人之处就是它能提供理想的线性相位响应,从而在整个频带上获得常数群时延,这正是零失真信号处理所需要的。而且,它可以采用十分简单的算法进行实现,事实上,各种算法除了滤波器长度其他方面都是一样的。有限冲击响应滤波器(FIR)有以下优点:很容易获得严格的线性相位,避免被处理的信号产生相位失真,这一特点在宽频带信号处理、阵列信号处理、数据传输等系统中非常重要;可得到多带幅频特性;无稳定性问题;任何一个非因果的有限长序列,总可
12、以通过一定的延时转变为因果序列,所以因果性总是满足的;无反馈运算,运算误差小。有限冲击响应滤波器(FIR)有以下缺点:要获得好的过渡带特性,需以较高的阶数为代价;无法利用模拟滤波器的设计结果,一般无解析设计公式,要借助计算机辅助设计程序完成。7.2.2 FIR滤波器的设计方法滤波器的设计方法如果希望得到的滤波器的理想频率响应为,那么FIR滤波器的设计就在于寻找一个传递函数 (7-5)去逼近。,逼近方法有三种:窗口设计法(时域逼近)、频率采样法(频域逼近)和最优化设计(等波纹逼近)。此处只介绍窗口设计法。10jje)()e(NnnnhH)e(jdH窗口设计法又称为傅氏级数法,是一种最简单的方法,
13、其设计是在时域进行的。该方法从单位脉冲响应序列着手,使h(n)逼近理想的单位脉冲响应序列hd(n)。我们知道hd(n)可以从理想频响通过傅氏反变换获得,即 (7-6)de)e(21)(jjd2 0 dnHnh但一般来说,理想频响是分段恒定,在边界频率处有突变点,所以,这样得到的理想单位脉冲响应hd(n)往往都是无限长序列,而且是非因果的。但FIR的h(n)是有限长的,问题是怎样用一个有限长的序列去近似无限长的hd(n)。最简单的办法是直接截取一段hd(n)代替h(n)。这种截取可以形象地想象为h(n)是通过一个“窗口”所看到的一段hd(n),因此,h(n)也可表达为h(n)和一个“窗函数”的乘
14、积,即 (7-7)()()(dnhnwnh)e(jdH在这里窗口函数就是矩形脉冲函数RN(n)。当然以后我们还可看到,为了改善所设计的滤波器的特性,窗函数还可以有其他的形式,相当于在矩形窗内对hd(n)作一定的加权处理。一、任务目的一、任务目的(1)掌握用窗函数法设计FIR 数字滤波器的概念和方法。(2)熟悉线性相位FIR 数字滤波器的特性。(3)了解各种窗函数对滤波器特性的影响。任务任务15 有限冲击响应滤波器有限冲击响应滤波器(FIR)算法实现算法实现二、所需设备二、所需设备PC兼容机一台,操作系统为Windows 2000(或Windows 98,Windows XP,以下默认为Wind
15、ows 2000),安装CCS 2.21软件。三、相关原理三、相关原理(1)有限冲激响应数字滤波器的基础理论。(2)模拟滤波器原理(巴特沃斯滤波器、切比雪夫滤波器、椭圆滤波器、贝塞尔滤波器)。(3)数字滤波器系数的确定方法。(4)根据要求设计低通FIR滤波器。要求:通带边缘频率10 kHz,阻带边缘频率22 kHz,阻带衰减75 dB,采样频率50 kHz。设计:过渡带宽度=阻带边缘频率-通带边缘频率=22-10=12 kHz采样频率为f1=通带边缘频率+=10000+=16 kHz2过渡带宽度21200064.02s1ff理想低通滤波器的脉冲响应:根据要求,选择布莱克曼窗,窗函数长度为N=5
16、.9850/12=24.9)64.0sin()sin(11nnnnnh过渡带宽度s98.5f选择N=25,窗函数为滤波器脉冲响应为,|n|12,|n|12根据上面计算,各式计算出hn,然后将脉冲响应值移位为因果序列。244cos8.0242cos5.042.0nnn1nnhnh0nh完成的滤波器的差分方程为:(5)程序流程图如图7-4所示。22001.021002.020002.0 1901.018009.017018.016049.0 1502.01411.01328.0 1264.01128.01011.0 902.08049.07018.06009.0 501.04002.03002.0
17、2001.0)(nxnxnxnxnxnxnxnxnxnxnxnxnxnxnxnxnxnxnxnxnxny图7-4 程序流程图四、任务步骤四、任务步骤(1)准备。设置CCS为软件仿真模式。启动CCS。(2)打开工程并浏览程序。(3)编译并下载程序。(4)打开观察窗口。选择菜单ViewGraphTime/Frequency,如图7-5所示。按图中所示进行设置。图7-5 图形界面设置1选择菜单View-Graph-Time/Frequency,如图7-6所示。按图中所示进行如下设置。在弹出的图形窗口中单击鼠标右键,选择“Clear Display”。(5)设置断点。在有注释“break point”
18、的语句设置软件断点。(6)运行并观察结果。选择“Debug”菜单的“Animate”项,或按F12键运行程序。观察“Input”、“Output”窗口中的时域图形,观察滤波效果。图7-6 图形界面设置2 鼠标右键单击“Input”和“Output”窗口,选择“Properties”项,设置“Display Type”为“FFT Magitude”,再单击“OK”按钮结束设置。观察“Input”、“Output”窗口中的频域图形,理解滤波效果。(7)退出CCS。五、任务结果五、任务结果图7-7所示为程序运行输出界面。由图可见,输入波形为一个低频率的正弦波与一个高频的正弦波叠加而成。通过观察频域和
19、时域图,得知:输入波形中的低频波形通过了滤波器,而高频部分则大部分被滤除。图7-7 程序运行输出界面六、问题与思考六、问题与思考试选用合适的高通滤波参数滤掉输入波形中的低频信号。7.3.1 IIR滤波器的基本概念滤波器的基本概念顾名思义,IIR滤波器(理论上)具有无限的脉冲响应。所以,当我们在IIR滤波器的输入端输入一个脉冲时,输出端会产生无限期的变化。由于这些变化在一段时间之后会变得很小,所以,对任何实际用途,滤波器都被定为有限状态。但是理论上,这些变化仍然存在。7.3 无限冲击响应滤波器无限冲击响应滤波器(IIR)的的原理结构及设计原理结构及设计IIR滤波器不具有理想的线性相位响应,它通过
20、增加一些复杂度,可以获得近似的线性相位响应。通常情况下,这一复杂度远远超过了同等FIR滤波器的实现,这就使IIR滤波器成为大多数要求波形失真低时的第二选择。但是IIR滤波器也有两大优点,保证了它们不会被埋没。第一,它们可以用来模仿大多数模拟滤波器的响应。所以,如果的确需要获得四阶的巴特沃斯滤波器响应,那么使用IIR滤波器就可以相当精确地实现。第二,对于一个给定的响应,与FIR相比较,IIR对存储空间的要求少得多,而且执行循环次数也少许多。在缺点方面,实现IIR滤波器的算法更为复杂。它们对定点处理器有限字长更加敏感,会产生更多的舍入噪声,而且,在奇数阶的情况下,如果设计不完全正确的话,还会产生令
21、人讨厌的振荡。7.3.2 IIR滤波器的设计方法简介滤波器的设计方法简介1模拟滤波器的设计方法模拟滤波器的设计方法为了从模拟滤波器出发设计IIR数字滤波器,必须先设计一个满足技术指标的模拟滤波器,亦即要把数字滤波器的指标转换成模拟滤波器的指标,因此必须先设计对应的模拟原型滤波器。设计模拟滤波器是根据一组设计规范来设计模拟系统函数Ha(s),使其逼近某个理想滤波器的特性。但在实际中模拟滤波器的相频特性要符合线性的要求往往是很困难的,为此在相位失真比较严重的情况下,常常采取在原滤波器后级联上一个相移网络,即全通滤波器(幅频等于常数,相频是频率的函数),在相位上给以均衡补偿,使之接近无失真传输的条件
22、。模拟低通滤波器的幅度响应常用振幅平方函数来表示由于一般情况下,滤波器冲激响应ha(t)是实函数,因而满足2a|)j(|H)j()j(|)j(|*aa2aHHH)j(aH)j()j(a*aHH所以由于冲激响应ha(t)为实函数,因此极点(或零点)必以共轭对形式出现,所得到的对称型式称为象限对称的。由于任何实际可实现的滤波器都是稳定的,因此其系统函数Ha(s)的极点一定落在s的左半平面,所以落在左半平面的极点一定属于Ha(s),落在右半平面的极点一定属于Ha(-s)。ssHsHHHHjaaaa2a|)()()j()j(|)j(|综上所述,由确定Ha(s)的方法如下:(1)将代入得到象限对称的s平
23、面函数;(2)将因式分解,得到各零点和极点。将左半平面的极点归于Ha(s);如无特殊要求,可取以虚轴为对称的零点的任一半作为Ha(s)的零点;如要求是最小相位延时滤波器,则应取左半平面的零点作为Ha(s)的零点;虚轴上的零点或极点都是偶次的,其中一半属于Ha(s)。(3)按照与Ha(s)的低频或高频特性就可确定其增益常数。(4)由求出的零点、极点及增益常数,可完全确定系统函数Ha(s)。从给定的指标设计模拟滤波器的中心问题是如何寻找一个恰当的近似函数来逼近理想特性,即所谓的逼近问题。其中最常用的具有优良性能的滤波器有:巴特沃斯(Butterworth)滤波器,切比雪夫(Chebyshev)滤波
24、器和椭圆(elliptic)函数或考尔(Cauer)滤波器以及实现线性相位的贝塞尔滤波器等。2.冲激响应不变法冲激响应不变法冲激响应不变法(或阶跃响应不变法)仅适合于基本上是限带的低通或带通滤波器。该方法主要用于设计某些要求在时域上能模仿模拟滤波器功能(如控制冲激响应或阶跃响应)的数字滤波器。这样可把模拟滤波器时域特性的许多优点在相应的数字滤波器中保留下来。在其他情况下设计IIR数字滤波器时,一般采用下面介绍的双线性变换法。3.双线性变换法双线性变换法双线性变换法是使数字滤波器的频率响应与模拟滤波器的频率响应相似的一种变换方法,为了克服多值映射这一缺点,首先把整个s平面压缩变换到某一中介的s1
25、平面的一条横带里(宽度为2/T,即从-/T到/T),其次再通过上面讨论过的标准变换关系z=将此横带变换到整个z平面上去,这样就使s平面与z平面是一一对应的关系,消除了多值变换性,也就从根本上消除了频谱混叠现象。Ts1e4.频率变换法频率变换法 设计高通、带通、带阻等数字滤波器通常可归纳为两种常用设计方法。方法一:方法一:首先设计一个模拟原型低通滤波器,然后通过频率变换成所需要的模拟高通、带通或带阻滤波器,最后再使用冲激不变法或双线性变换法变换成相应的数字高通、带通或带阻滤波器。方法二:方法二:首先设计了一个模拟原型低通滤波器,然后采用冲激响应不变法或双线性变换法将它转换成数字原型低通滤波器,最
26、后通过频率变换把数字原型低通滤波器变换成所需要的数字高通、带通或带阻滤波器。方法一的缺点是,由于产生混叠失真,因此不能用冲激不变法来变换成高通或带阻滤波器,本节只讨论方法二。在方法二中,从模拟低通滤波器到数字滤波器的转换在前面已经讨论过了,因此下面只讨论数字低通滤波器到数字高通、带通和带阻滤波器的转换问题。一、任务目的一、任务目的(1)掌握设计IIR数字滤波器的概念和方法。(2)熟悉IIR数字滤波器特性。(3)了解IIR数字滤波器的设计方法。任务任务16 无限冲击响应滤波器无限冲击响应滤波器(IIR)算法实现算法实现二、所需设备二、所需设备PC 兼容机一台,操作系统为Windows 2000(
27、或Windows 98,Windows XP,以下默认为Windows 2000),安装CCS 2.21软件。三、相关原理三、相关原理(1)无限冲激响应数字滤波器的基础理论。(2)模拟滤波器原理(巴特沃斯滤波器、切比雪夫滤波器、椭圆滤波器、贝塞尔滤波器)。(3)数字滤波器系数的确定方法。(4)根据要求设计低通IIR 滤波器:要求:低通巴特沃斯滤波器在其通带边缘1 kHz处的增益为-3 dB,12 kHz处的阻带衰减为30 dB,采样频率为25 kHz。设计:确定待求通带边缘频率fp1、待求阻带边缘频率fs1和待求阻带边缘衰减。模拟边缘频率为:fp1=1000 Hz,fs1=12 000 Hz
28、阻带边缘衰减为:=30 dB 用把由赫兹表示的待求边缘频率转换成弧度表示的数字频率,得到和。slg20slg20s/2ff p11s弧度弧度计算预扭曲模拟频率以避免双线性变换带来的失真。由求得和,单位为弧度/秒。08.0000 251000 22sp1p1ff 96.0000 25000 12 22ss1s1ff)2/tan(2sfp1s1=6316.5弧度/秒=794 727.2弧度/秒由已给定的阻带衰减确定阻带边缘增益。)2tan(2p1sp1f)2tan(2s1ss1fslg 20s因为=30,所以=-30/20,=0.031 62。计算所需滤波器的阶数:n因此,一阶巴特沃斯滤波器就足以
29、满足要求。slg 20slgs714.05.63162.727 794lg 21)62 031.0(1lglg 211lg2p1s12s一阶模拟巴特沃斯滤波器的传输函数为由双线性变换定义s=2fs得到数字滤波器的传输函数为H(z)5.6316(6.6316)()(p1p1sssH)1()1(zz117757.01)1(1122.05.631611000 505.6316zzzz因此,差分方程为(5)程序流程图如图7-8所示。11122.01122.0 17757.0nxnxnyny图7-8 程序流程图四、任务步骤四、任务步骤(1)准备。设置CCS为软件仿真模式;启动CCS。(2)打开工程并浏览
30、程序。(3)编译并下载程序。(4)打开观察窗口。选择菜单ViewGraphTime/Frequency,如图7-9所示。按照图中所示进行设置。选择菜单ViewGraphTime/Frequency,如图7-10所示。按照图中所示进行如下设置。图7-9 图形界面设置1图7-10 图形界面设置2(5)清除显示。在以上打开的窗口中单击鼠标右键,选择弹出式菜单中“Clear Display”功能。(6)设置断点。在程序iir.c中有注释“break point”的语句上设置软件断点。(7)运行并观察结果。选择“Debug”菜单的“Animate”项,或按F12键运行程序。观察“IIR”窗口中的时域图形
31、,观察滤波效果。(8)退出CCS。五、任务结果五、任务结果图7-11所示为程序输出界面。由图可见,输入波形为一个低频率的正弦波与一个高频的余弦波叠加而成。通过观察频域和时域图,得知:输入波形中的低频波形通过了滤波器,而高频部分则被衰减。图7-11 程序输出界面图7-12 程序流程图六、问题与思考六、问题与思考试微调(0.0001)改变程序中fU的取值,观察步长因子在自适应算法中所起的作用。一、任务目的一、任务目的(1)掌握A/D转换的基本过程和程序处理过程;(2)学习通过对采样值进行计算产生混频波形;(3)熟悉FIR滤波器及其参数的调整。任务任务17 用用FIR滤波器实现信号滤波滤波器实现信号
32、滤波二、所需设备二、所需设备计算机、ICETEK-VC5509-EDU 实验箱(或ICETEK仿真器+ICETEK-VC5509-A系统板+相关连线及电源)。三、相关原理三、相关原理(1)A/D转换原理。(2)模数转换工作过程:模数转换模块接到启动转换信号后,按照设置进行相应通道的数据采样转换;经过一个采样时间的延迟后,将采样结果放入A/D数据寄存器中保存;等待下一个启动信号。(3)模数转换的程序控制:模数转换相对于计算机来说是一个较为缓慢的过程。一般采用中断方式启动转换或保存结果,这样在CPU忙于其他工作时可以少占用处理时间。设计转换程序应首先考虑处理过程如何与模数转换的时间相匹配,既要能根
33、据实际需要选择适当的触发转换的手段,也要能及时地保存结果。由于TMS320VC5509DSP片内的A/D转换精度是10位的,转换结果(16位)的最高位(第15位)表示转换值是否有效(0有效),第1412位表示转换的通道号,低10位为转换数值,所以在保留时应注意取出结果的低10位,再根据高4 位进行相应保存。(4)混频波形产生:将接收到的两路A/D采集信号进行相加,并对结果的幅度进行限制,从而产生混合后的输出波形。程序中采用了同相位混频方法,也可修改程序完成异相混频法。(5)FIR滤波器工作原理及参数计算:滤波器参数:采样频率20364.8 Hz,带通滤波500Hz5 kHz,增益40 dB,阶
34、数64。(6)源程序及注释:本程序在主循环中对A/D进行连续采样,每次采样首先设置A/D转换控制寄存器(ADCCTL),发送转换通道号和启动命令,然后循环等待转换结果,最后将结果保存。由于需要进行实时混频,所以交替转换通道0和通道1(ICETEK-VC5509-EDU实验箱上ADCIN2 和ADCIN3)。混频的波形通过FIR滤波器,得到输出波形。由于采用了带通滤波,输入频率在500 Hz5 kHz之间的才能通过滤波器。(7)程序流程图如图7-12所示。四、任务步骤四、任务步骤(1)准备。连接设备。准备信号源进行A/D输入。设置CCS 2.21在硬件仿真(Emulator)方式下运行。启动CC
35、S 2.21。(2)打开工程文件。(3)编译、下载程序。选择菜单DebugGo Main,使程序运行到main 函数入口位置。(4)设置软件断点和观察窗口。打开源程序main.c,在有注释“在此加软件断点”的行上加软件断点。选择菜单ViewGraphTime/Frequency,如图7-13所示。按照图中所示进行设置。选择菜单ViewGraphTime/Frequency,如图7-14所示。按照图中所示进行设置。图7-13 图形界面设置1图7-14 图形界面设置2选择菜单ViewGraphTime/Frequency,如图7-15所示。按照图中所示进行设置。选择菜单ViewGraphTime/
36、Frequency,如图7-16所示。按照图中所示进行设置。图7-15 图形界面设置3图7-16 图形界面设置4(5)运行程序并观察结果。按“F5”键运行到断点,注意观察窗口“AD0”和“AD1”中的输入波形,同时分析“Mixing”窗口中混频合成的波形与输入波形的关系。(6)观察动态效果。选择菜单DebugAnimate,运行程序,同时改变信号源输入的波形、频率参数,观察动态效果。(7)调节信号源输出并观察滤波器输出。将信号源的“频率选择”旋钮调节到“100 Hz1 kHz”挡,调节“频率微调”旋钮到最大,这时,信号源的输出波形保持1 kHz左右的频率。将信号源的“频率选择”旋钮调节到“10
37、 Hz100 Hz”挡,调节“频率微调”旋钮到最大,这时,信号源的输出波形保持100 Hz左右的频率。观察“Mixing”窗口中的混叠波形,再观察“Output”窗口中的输出。输出的波形与“AD0”窗口中波形的频率相同,而滤除了“AD1”窗口的波形。将信号源的“频率选择”旋钮调节到“1 kHz10 kHz”挡,调节“频率微调”旋钮到最小,这时,信号源的输出波形保持1 kHz左右的频率,信号的波形也仍保持原来1 kHz左右的频率。这时,两个波形均能通过滤波器,逐渐顺时针旋转信号源的“频率微调”旋钮,当其超过某一值(5 kHz)后,波形输出中AD1波形被滤除。随意调整两个信号源频率,只要频率超出5
38、00 Hz5 kHz范围就被滤除。将“AD0”和“AD1”窗口属性的“Display Type”项改成“FFT Magnitude”,将“Sampling Rate(Hz)”改成20464.8,观察频域上的效果。试用观察窗口观察滤波器系数(数组h64)的时域和频域图形。(8)保留工作区。选择菜单FileWorkspaceSave Workspace As,起个易记的文件名,将环境设置保存在工程目录中。下次若需调入工作区,可选择菜单FileWorkspaceLoad Workspace,再选择工作区文件即可恢复现场。(9)退出CCS。五、任务结果五、任务结果程序输出波形界面如图7-17所示。图7
39、-17 程序输出波形界面六、问题与思考六、问题与思考请思考本任务中实现FIR算法的方法与任务15有何不同。有限长序列可以通过离散傅里叶变换(DFT)将其频域也离散化成有限长序列,但其计算量太大,很难实时地处理问题,因此引出了快速傅里叶变换(FFT)。FFT并不是一种新的变换形式,它只是DFT的一种快速算法,并且根据对序列分解与选取方法的不同而产生了FFT的多种算法。7.4 快速傅里叶变换快速傅里叶变换(FFT)正是因为有了FFT,数字信号处理技术才得以飞速地发展。FFT可以使我们较容易地在频域里研究随时间变化的时域信号的频率特性,如图7-18所示。同时,FFT在离散傅里叶反变换、线性卷积和线性
40、相关等方面也有重要应用。图7-18 信号在时域和频域的对应关系一、任务目的一、任务目的(1)掌握用窗函数法设计FFT快速傅里叶变换的原理和方法;(2)熟悉FFT快速傅里叶变换特性;(3)了解各种窗函数对快速傅里叶变换特性的影响。任务任务18 FFT算法实现算法实现二、所需设备二、所需设备PC兼容机一台,操作系统为Windows 2000(或Windows 98,Windows XP,以下默认为Windows 2000),安装CCS 2.0 软件。三、相关原理三、相关原理(1)FFT的原理和参数生成公式。x(k)=FFT并不是一种新的变换,它是离散傅里叶变换(DFT)的一种快速算法。由于我们在计
41、算DFT时一次复数乘法需用四次实数乘法和二次实数加法;一次复数加法则需二次实数加法。)()()()(212/212/02/112/0kXWkXWrxWWrxkNrkNNrkNrkNNr每运算一个X(k)需要4N次复数乘法及2N+2(N-1)=2(2N-1)次实数加法。所以整个DFT运算总共需要4N2次实数乘法和N2(2N-1)=2N(2N-1)次实数加法。如此一来,计算时乘法次数和加法次数都是和N2成正比的,当N很大时,运算量是可观的,因而需要改进对DFT的算法,提高运算速度。根据傅里叶变换的对称性和周期性,我们可以将DFT运算中的有些项合并。我们先设序列长度为N=2L(L为整数)。将N=2L
42、的序列x(n)(n=0,1,N-1),按N的奇偶分成两组,也就是说我们将一个N点的DFT分解成两个N/2点的DFT,他们又重新组合成一个如下式所表达的N点DFT:一般来说,输入被假定为连续的。当输入为纯粹的实数的时候,我们就可以利用左右对称的特性更好的计算DFT。/2 1/2 11/22/21200()()()()()NNrkkrkkNNNNrrx kx r WWx r WX kW Xk我们称这样的RFFT优化算法是包装算法:首先2N点实数的连续输入称为“进包”;其次N点的FFT被连续运行;最后作为结果产生的N点的合成输出是“打开”成为最初的与DFT相符合的2N点输入。使用这一思想,我们可以划
43、分FFT的大小,它有一半花费在包装输入的操作和打开输出上。这样的RFFT算法和一般的FFT算法同样迅速,计算速度几乎都达到了两次DFT的连续输入。(2)程序流程图如图7-19所示。图7-19 任务18程序流程图四、任务步骤四、任务步骤(1)准备。设置CCS软件仿真模式;启动CCS。(2)打开工程并浏览程序。(3)编译并下载程序。(4)打开观察窗口。选择菜单ViewGraphTime/Frequency,如图7-20和图7-21所示。按照图中所示进行设置。图7-20 图形界面设置1图7-21 图形界面设置2(5)清除显示。在以上打开的窗口中单击鼠标右键,选择弹出式菜单中的“Clear Displ
44、ay”功能。(6)设置断点。在程序FFT.c中有注释“break point”的语句上设置软件断点。(7)运行并观察结果。选择“Debug”菜单的“Animate”项,或按F12 键运行程序;观察“Test Wave”窗口中的时域图形;在“Test Wave”窗口中点击右键,选择属性,更改图形显示为FFT,观察频域图形;观察“FFT”窗口中由CCS计算出的正弦波的FFT。(8)退出CCS。五、任务结果五、任务结果程序输出波形界面如图7-22所示。通过观察频域和时域图,可见程序计算出的测试波形的功率谱与CCS 计算的FFT 结果相近。图7-22 程序输出波形界面本章对经典的DSP算法进行了简单介绍,并且安排了几个任务,希望给读者以感性的认识。在实际编程中我们可以通过相关的软件工具,先将数字滤波器的参数给出,然后调用TI公司提供的标准算法或者第三方提供的算法就可以了。对于FFT,也可以调用针对不同芯片专门设计的标准算法。7.5 本本 章章 小小 结结1.比较FIR与IIR的区别。简述它们各有什么优缺点。2.简述FFT是如何做到减少计算量的。习题与思考题习题与思考题