当前位置:文档之家› DSP课程设计报告—刘雅琪

DSP课程设计报告—刘雅琪

一、课程设计的目的和要求1.1课程设计目的:本课程是DSP技术类课程配套的课程设计,要求学生通过高级语言或汇编语言编程实现较复杂的功能。

通过课程设计,使学生加深对DSP芯片TMS320C54的结构、工作原理的理解,获得DSP应用技术的实际训练,掌握设计较复杂DSP系统的基本方法。

1.2课程设计要求1、认真查阅资料2、课程设计前认真预习3、遵守课程设计时间安排4、认真保质保量完成设计要求5、认真书写报告二、系统功能介绍及总体设计方案2.1 功能介绍随着信息技术和计算机技术的飞速发展, 数字信号处理技术在众多领域得到广泛应用。

数字滤波器由于其精度高、稳定性好、使用灵活等优点, 广泛应用在各种数字信号处理领域。

数字滤波器根据冲击响应函数的时域特性, 可以分为FIR (有限长冲激响应滤波器)和IIR(无限长冲激响应滤波器)。

FIR滤波器与IIR 滤波器相比,具有严格的线性相位,幅度特性可任意等优点。

而且, FIR 滤波器的单位抽样响应是有限长的, 故一定是稳定的, 他又可以用快速傅里叶变换(FFT)算法来实现过滤信号,可大大提高运算效率。

本课程设计的是一个等波纹FIR 低通滤波器,其具体参数为:采样频率F s=1000Hz,通带频率F pass=150Hz截止频率F sg=250Hz,通带衰减A pass =0.5dB阻带衰减A stop=80dB。

2.2 总体设计方案:先进行Matlab 程序设计产生待滤波数据(借助设计工具FDATOOL 产生设计系数),将其导入CCS在CCS!进行仿真调试运行,得到了输入和输出的波形及其频谱。

三、主要设计内容和步骤3・1 FIR 数字滤波器的原理分析3.1.1FIR 数字滤波器数字滤波器原理一般具有如下差分方程N AN -1y(n) f a k X( n- k) 、b k y( n-k)k z 0k =0式中x(n)为输入序列,y(n)为输出序列,兔和b k 为滤波器系数,N 是滤波器阶N J数。

当所有的b k 均为零,则有 y (n)八 时(n-k) ⑵k=0(2) 式是FIR 滤波器的差分方程,其一般形式为N -1y(n)「h k x( n-k)(3)k £对(3)式进行z 变换,整理后可得FIR 滤波器的传递函数FIR 的直接型结构:x(n) ——B——h(0)n"(2) 'b ——■—— 1h(N £3)»_mh(N £2) I---- ■—1・ ■ ”£■1h(N £l)z £i z £iy(n)H(z) =迩 2X o-kh)k)z图2 FIR的直接型结构FIR滤波器最主要的特点是没有反馈回路,因此它是无条件稳定系统。

它的单位冲激响应h(n)是一个有限长序列。

如果h(n)是实数,且满足偶对称或奇对称的条件,即h(n)二h(N ^-n)或h(n)二-h(N -仁n),则滤波器具有线性相位特性。

偶对称线性相位FIR滤波器(N为偶数)的差分方程表达式为:N/2 Jy - q[x(n —i) x(n - N Vi)]i Q线性相位FIR滤波器是用得最多的FIR滤波器。

FIR滤波器不断地对输入样本x(n)延时后,再作乘法累加算法,将滤波结果y(n)输出,因此FIR滤波算法实际上是一种乘法累加运算。

在数字滤波器中,FIR滤波器的最主要特点是没有反馈回路,故不存在不稳定的问题。

同时可以在随意设置幅度特性的同时,保证精确无误的线性相位。

稳定的线性相位特性是FIR滤波器的突出优点。

3.1.2系数对称的FIR滤波器对于系数对称的FIR滤波器,由于其具有线性相位特性,因此应用很广,特别是对相位失真要求很高的场合,如调制解调器(MODEM一个N=8的FIR滤波器,若a(n)=a(N“-n),就是对称FIR滤波器,其输出方程为:y(n) = a o x(n) a i x(n -1) a2x(n - 2) a3x(n - 3) a3X(n - 4) a2x(n - 5) ®x(n - 6) a°x(n - 6) 总共有8次乘法和7次加法。

如果改写成:y(n) = a°[x(n) x(n - 7)] a1 [x(n -1) x(n - 6)] a2[x(n -2) x(n - 5)] a3[x(n - 3) x(n - 4)] 则变成4次乘法和7次加法。

可见乘法运算的次数减少了一半。

这是对称FIR的有一个优点。

对称FIR滤波器的C54x实现的要点(1)在数据存储区中开辟两个循环缓冲区,New循环缓冲区中存放N/2=4个新数据;Old循环缓冲区中存放老数据。

循环缓冲区的长度为N/2。

数据存储器NeW循环缓冲区Old循环缓冲区程序存储器系数表(2) 设置循环缓冲区指针,AR2指向中最新的数据,AR3指向中最老的数据 (3) 在程序存储器中设置系数表。

(4) (AR2) (AR3) > AH (累加器 A 的高位)(AR2) -1 > AR2(AR3) -1》AR3⑸ 将累加器B 清0,重复执行4次(i=0,1,2,……) (AH)*系数a i +(B)T B 系数指针(PAR 加1(AR2) (AR3) > AHAR2和 AR3减 1(6) 保存和输出结果(结果在BH 中)(7) 修正数据指针,让AR2和AR3分别指向NeW 爰冲区中最新的数据和Old 缓 冲区中最老的数据。

(8) 用NeW 爰冲区中最老的数据替代 Old 缓冲区中最老的数据。

Old 缓冲区指 针减1。

(9) 输入一个新数据替代New 缓冲区中最老的数据低地址咼地址重复执行第(4) ~ ( 9)步3.1.3关键指令在编程中要用到FIRS (系数对称有限冲激响应滤波器)指令,其操作如下:FIRS Xmem,Ymem,Pmad执行Pmad》PAR当(RC) = 0(B)+(A(32-16))*( 由PAR#址Pmem)》B((Xmem +(Ymer) <<16T A(PAR +1 > PAR(RC)-1 > RCFIRS指令在同一个机器周期内,通过C和D总线读2次数据存储器,同时通过P总线读一个系数。

3.2Matlab的仿真及滤波器系数的确定设计FIR滤波器,关键是得到正确的滤波器系数。

按照技术指标的要求,进行Matlab程序设计。

运行后生成的图像如下:观察图像可知在频率为50和350Hz上有波形,后面为镜像显示。

利用Matlab中FDATOO工具设计好滤波器,从FDATOO向CCS输出滤波器系数。

Matlab中FDATOOL X具设计好滤波器以后,可以利用C语言头文件输出滤波器系数,将头文件添加到工程中,编译连接生成可执行文件。

在把可执行文件加载到目标DSP后,会给头文件中的滤波器系数分配一个静态存储空间,滤波器系数就放入此存储空间中。

或者可以直接把滤波器系数输出到DSP的存储器中。

FDATOO设计分析后产生的幅频特性及滤波器系数表输出的滤波器系数为:.word 15, -3, -158, -448, -583, -172, 663, 1008, 2.word -1764, -2046, 1075, 6744, 11298, 11298, 6744, 1075, -2046.word -1764, 2, 1008, 663, -172, -583, -448, -158, -3.word 15四、详细设计给定FIR数字低通滤波器的技术指标为分别为50Hz和350Hz采样频率均为1kHz。

利用Matlab设计FIR低通滤波器的系数得DSP中滤波器系数列表.用.word汇编命令将各滤波器系数直接输入到DSP程序中;模拟输入数据由C语言程序实现,然后用.copy命令将C语言程序生成的数据文件拷贝到DSP 程序中。

DSP程序实现读入数据、滤波、显示波形等方面的任务。

完成FIR滤波器的程序框图如图4所示,可知FI R滤波器的DSP实现主要由以下4方面的内容组成:(1)模拟输入数据的生成用C语言程序生成输入数据,通过.copy汇编命令将生成的数据文件拷贝到汇编程序中,作为FIR滤波器的输入数据。

(2) DSP初始化程序.title "FIR.asm" .mmregs.def _c_int00N .set 28size .set N/2 ;FIR 滤波器阶数x_new .usect "x_new",N/2 ; 自定义数据空间x_old .usect "x_old",N/2 ; 自定义数据空间KS .set 256 ; 输入样本数据个数input .usect "input",KSoutput .usect "output",KS.data.copy "fdacoefs4.h" ;FIR 滤波器系数.text图4主程序流程图(3)滤波算法子程序:滤波算法流程图滤波算法子程序代码:FIR: SSBX FRCTSTM #x_new,AR2STM #x_old+(size-1),AR3 STM #-1,AR0STM #output,AR5STM #in put,AR4STM #KS-1,BRCRPTBD LOOP-1STM #size,bkLD *AR4+,ASTL A,*AR2ADD *AR2+0%,*AR3+0%,ARPTZ B,#size-1FIRS *AR2+0%,*AR3+0%,COEFSTH B,*AR5+MAR *+AR2 (2) %MAR *AR3+%MVDD *AR2,*AR3+0%(4)复位程序:中断流程图复位程序代码:.title "FIR_V.asm".ref _c_in tOO.sect "VECTORS"reset:b _c_int00.end五、调试过程编辑好.asm和.cmd文件之后并加入工程中进行编译,修改出现的错误直至无误,然后加载.out文件。

选择File菜单下的data,加入.dat文件,运行程序并打开CCS的输入输出图形界面,观察对比滤波前后的时域波形与频谱图调试过程中出现的错误及警告:(1) warning: creati ng output sect ion n ewdata without SECTIONS specificati on分析:汇编语言源程序中的未初始化段名n ewdata与链接命令文件不一致解决:将链接命令文件中相应的未初始化段名改为n ewdata(2) "fir .asm", ERROR! at line 13: [E1000] Include/Copy file not foundor opened分析:用FDATOO工具产生的系数表文件名与源程序中引用的不一致解决:保持产生的系数表文件名与源程序中引用的一致(3)分析产生的波形图不理想,有时是因为不同的参数设计出的滤波器的阶数可能不同,要注意修改源程序中滤波器阶数值(4)在CCS程序中,应先加载正确的中断向量文件,所用芯片的CMD配置文件,编译才会有效。

相关主题