软件设计及应用课件

上传人:我*** 文档编号:144106898 上传时间:2020-09-06 格式:PPT 页数:74 大小:931.50KB
返回 下载 相关 举报
软件设计及应用课件_第1页
第1页 / 共74页
软件设计及应用课件_第2页
第2页 / 共74页
软件设计及应用课件_第3页
第3页 / 共74页
软件设计及应用课件_第4页
第4页 / 共74页
软件设计及应用课件_第5页
第5页 / 共74页
点击查看更多>>
资源描述

《软件设计及应用课件》由会员分享,可在线阅读,更多相关《软件设计及应用课件(74页珍藏版)》请在金锄头文库上搜索。

1、第四章 DSP软件设计及应用,4.1 FIR滤波器的DSP实现 4.2 IIR数字滤波器的DSP实现 4.3 FDCT运算的DSP实现 4.4 混合编程技术,4.1 FIR滤波器的DSP实现,4.1.1 线性缓冲区法 4.1.2 循环缓冲区法 4.1.3 系数对称FIR滤波器的DSP实现,返回首页,数字滤波是DSP的最基本应用,利用MAC指令和循环寻址可以方便地完成滤波运算。 FIR(有限冲激响应)滤波器 IIR(无限冲激响应)滤波器 设FIR滤波器的系数为h(0),h(1), .,h(N-1),X(n)表示滤波器在n时刻的输入,则n时刻的输出为:,滤波器有关概念,其对应的滤波器传递函数为:

2、如图4-0所示为横截型(又称直接型或卷积型)FIR数字滤波器的结构图。 主要操作:乘法累加运算,输入数据的移位、更新,图4-0 横截型FIR数字滤波器的结构图,线性缓冲区法又称延迟线法: (1)对于N抽头FIR滤波器,在数据存储器中开辟一个N单元的缓冲区,存放最新的N个样本x(n); (2)滤波时从最老的样本开始,每读一个样本后,将此样本向下移位, x(n-i) 变成x(n-i-1) ; (3)读完最后一个样本后,输入最新样本x(n+1)至缓冲区的顶部。 以上过程,可以用N=6的线性缓冲区示意图来说明,如图4-1所示:,4.1.1 线性缓冲区法,图4-1 N=6的线性缓冲区示意图,返回本节,h

3、N-2,h1,h0,hN-1,ARx,yn,yn+1,yn+2,线性缓冲区实现FIR: 存储器,hN-1,h1,a1,a2,a3,a4,a5,a0,hN-1,h1,x(n-3),x(n-2),x(n-1),x(n),y(n),x(n-4),x(n-5),AR1,x,COEF,线性缓冲区实现FIR: 存储器,hN-1,h1,a1,a2,a3,a4,a5,a0,hN-1,h1,x(n-3),x(n-2),x(n-1),x(n),y(n),x(n-4),AR1,x,COEF,x(n-5),线性缓冲区实现FIR: 存储器,hN-1,h1,a1,a2,a3,a4,a5,a0,hN-1,h1,x(n-3)

4、,x(n-2),x(n-1),x(n),y(n),x(n-4),AR1,x,COEF,线性缓冲区实现FIR: 存储器,hN-1,h1,a1,a2,a3,a4,a5,a0,hN-1,h1,x(n-2),x(n-1),x(n),y(n),x(n-3),x(n-4),AR1,x,COEF,线性缓冲区实现FIR: 存储器,hN-1,h1,a1,a2,a3,a4,a5,a0,hN-1,h1,x(n-2),x(n-1),x(n),y(n),x(n-3),x(n-4),AR1,x,COEF,线性缓冲区实现FIR: 存储器,hN-1,h1,a1,a2,a3,a4,a5,a0,hN-1,h1,x(n-2),x(

5、n-1),x(n),y(n),x(n-3),x(n-4),AR1,x,COEF,线性缓冲区实现FIR: 存储器,hN-1,h1,a1,a2,a3,a4,a5,a0,hN-1,h1,x(n-2),x(n-1),x(n),y(n),x(n-3),x(n-4),AR1,x,COEF,线性缓冲区实现FIR: 存储器,hN-1,h1,a1,a2,a3,a4,a5,a0,hN-1,h1,x(n-2),x(n-1),x(n),y(n),x(n-3),x(n-4),AR1,x,COEF,线性缓冲区实现FIR: 存储器,hN-1,h1,a1,a2,a3,a4,a5,a0,hN-1,h1,x(n+1),x(n-2

6、),x(n-1),x(n),y(n),x(n-3),x(n-4),AR1,x,COEF,线性缓冲区实现FIR: 存储器,hN-1,h1,a1,a2,a3,a4,a5,a0,hN-1,h1,x(n+1),x(n-2),x(n-1),x(n),y(n),x(n-3),x(n-4),AR1,x,COEF,线性缓冲区实现FIR代码,.bss x,6 PA0.set 0 PA1 .set 1 .data COEF.word 5*32768/10,4*32768/10 .word3*32768/10 .word 2*32768/10,32768/10,.text _c_int00: SSBXFRCT ST

7、M #x+6,AR1 STM#5,AR0 LD#x+1,DP PORTR PA1, x+1 FIR:RPTZA,#5 MACD*AR1-,COEF,A STHA,*AR1;保存y(n) PORTW *AR1+,PA0;输出 PORTR PA1 *AR1+0;读入 BFIR .end (MACD: COFF地址增加),4.1.2 循环缓冲区法,对于N抽头FIR滤波器,在数据存储区开辟一个具有N个单元的循环缓冲区,存放最新的N个输入数据。 每次输入新的数据时,新数据替换滑窗中最老的数据,其他数据则不需要移动。 图4-2说明了使用循环寻址实现FIR滤波器的方法。,图4-2 FIR滤波器循环缓冲区存储

8、器图,ARx,y(n) y(n+1) y(n+2,FIR滤波器设计举例,设计一个FIR低通滤波器,通带边界频率为1500Hz,通带波纹小于1dB;阻带边界频率为2000Hz,阻带衰减大于40dB;采样频率为8000Hz。 FIR滤波器的设计可以用MATLAB窗函数法进行。 可以改变上述指标,得到不同阶数、不同系数的低通滤波器,然后参考实验代码实现。,2. 循环缓冲区法FIR:存储器,hN-1,h1,b4,b3,b2,b1,b0,b5,hN-1,h1,x(n-3),x(n-2),x(n-1),x(n),y(n),x(n-4),x(n-5),AR2,y,data,xn,AR3,b6,x(n-6),

9、hN-1,h1,x(n-3),x(n-2),x(n-1),x(n),y(n+1),x(n-4),x(n-5),AR2,y,xn,x(n+1),3. FIR代码,.bss y,1 xn.usect “.xn”,7 b0.usect “.b0”,7 PA0.set 0 PA1 .set 1 .data table.word 5*32768/10,4*32768/10 .word 2*32768/10,32768/10 .text _c_int00: SSBXFRCT STM #b0,AR1 RPT#6 MVPD table,*AR1+,STM #xn+6,AR2 STM #b0+6,AR3 STM

10、#7,BK STM#-1,AR0 LD#xn,DP PORTR PA1 xn FIR: RPTZ A,#6 MAC *AR2+0%, *AR3+0%,A STH A,y;保存y(n) PORTW y,PA0;输出 PORTR PA1 ,*AR2+0%; 读入x(n+1) BFIR .end,4. CMD文件中循环缓冲区设置方法,要保证循环缓冲区低N位地址为0: SECTIONS .xn: align(8)DARAM PAGE 1 .b0: align(8)DARAM PAGE 1 ,5产生滤波器输入信号的文件,按照通常的程序调试方法,先用Simulator逐步调试各子程序模块,再用硬件仿真器在

11、实际系统中与硬件仪器联调。 使用CCS的Simulator进行滤波器特性测试时,需要输入时间信号x(n)。本例设计一个采样频率Fs为8000Hz,输入信号频率为1000Hz和2500Hz的合成信号,通过设计的低通滤波器将2500Hz信号滤掉,余下1000Hz信号。,6CCS集成开发环境下上机操作过程,(1)在CCS上建立fir工程并运行fir.out程序。 (2)观察输入信号的波形及频谱(图4-34-5)。 (3)观察输出信号的波形及频谱(图4-6、4-7 )。,图4-3 Graph 属性设置窗口,图4-4 输入信号的时域波形,图4-5 输入信号的频谱图,图4-6 滤波器输出信号时域波形,图4

12、-7 滤波器输出信号频谱图,返回本节,4.1.3 系数对称FIR滤波器的DSP实现,即:ai=aN-1-i,且N为偶数,循环缓冲区示意图:,h1,a1,a0,a2,h1,x(n),x(n+1),x(n-3),x(n-2),AR2,AR3,a3,x(n-1),h1,x(n-4),x(n-5),x(n-6),x(n-7),COEF,New区,Old区,xnew,xold,循环缓冲区示意图:,h1,a1,a0,a2,h1,x(n),x(n-3),x(n-2),AR2,AR3,a3,x(n-1),h1,x(n-4),x(n-5),x(n-6),x(n-7),COEF,New区,Old区,xnew,xo

13、ld,循环缓冲区示意图:,h1,a1,a0,a2,h1,x(n),x(n-3),x(n-2),AR2,AR3,a3,x(n-1),h1,x(n-4),x(n-5),x(n-6),x(n-7),COEF,New区,Old区,xnew,xold,循环缓冲区示意图:,h1,a1,a0,a2,h1,x(n),x(n-3),x(n-2),AR2,AR3,a3,x(n-1),h1,x(n-4),x(n-5),x(n-6),x(n-7),COEF,New区,Old区,xnew,xold,循环缓冲区示意图:,h1,a1,a0,a2,h1,x(n),x(n-3),x(n-2),AR2,AR3,a3,x(n-1)

14、,h1,x(n-4),x(n-5),x(n-6),x(n-7),COEF,New区,Old区,xnew,xold,循环缓冲区示意图:,h1,a1,a0,a2,h1,x(n),x(n+1),x(n-2),AR2,AR3,a3,x(n-1),h1,x(n-4),x(n-5),x(n-6),x(n-3),COEF,New区,Old区,xnew,xold,循环缓冲区示意图二:,h1,a1,a0,a2,h1,x(n-3),x(n+1),x(n-2),x(n-1),AR2,AR3,a3,x(n),h1,x(n-4),x(n-5),x(n-6),x(n-7),COEF,New区,Old区,xnew,xold

15、,系数对称FIR滤波器实现要点:,1在数据存储器中开辟两个循环缓冲区: New区:存放N/2=4个新数据(设N=8),AR2指向New 缓冲区中最新的数据; Old区:存放4个老数据, AR3指向Old 缓冲区中最老的数据; 循环缓冲区的长度为N/2。 2. 在程序存储器中设置系数表a0,a1,,a N/2 。 (注意:系数长度N为偶数时,只能实现低通、带通滤波,要想实现高通、带阻,N应为基数,如何实现?),3.使用 FIRS指令,FIRS Xmem,Ymem,pmad (1) (AH)系数ai+(B)B, (2) XmemYmem)16 A,即XmemYmem在AH中。 (3) PAR1 PAR 实现: FIRS *AR2+0%,*AR3+0%,COEF (AH)系数ai+(B)B *(AR2)+*(AR3)AH(累加器A的高位) AR2-1AR2,AR3-1AR3 将累加器B清0,重复执行FIRS 指令N/2次 保存或输出结果(结果在BH中)。,4修正数据指针,更新缓冲区数据,开始:将AR2和AR3分别指向New缓冲区中最新的数据和Old 缓冲区中最老的数据。 AR2-x(n),

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号