1有限冲激响应滤波器FIR算法硬件实现.doc_第1页
1有限冲激响应滤波器FIR算法硬件实现.doc_第2页
1有限冲激响应滤波器FIR算法硬件实现.doc_第3页
1有限冲激响应滤波器FIR算法硬件实现.doc_第4页
1有限冲激响应滤波器FIR算法硬件实现.doc_第5页
免费预览已结束,剩余15页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

有限冲激响应滤波器FIR算法硬件实现一,摘要:通过掌握A/D转换的基本过程和程序处理过程,有限冲激响应数字滤波器的基础理论,模拟滤波器原理(巴特沃斯滤波器、切比雪夫滤波器、椭圆滤波器、贝塞尔滤波器),数字滤波器系数的确定方法,设计低通FIR滤波器熟悉FIR滤波器及其参数的调整,通过对采样值进行计算产生混频波形,滤波器参数确定之后便可编写程序,利用CCS软件进行仿真。 二,引言:有限冲击响应滤波器FIR算法窗函数法设计FIR数字滤波器的原理及方法, 设计低通FIR滤波器 。通过掌握A/D转换程序处理,对采样值进行计算产生混频波形,对FIR滤波器参数调整。用Code Composer Studio 2.21进行仿真。三,原理:1对单位冲激的输入信号的响应为有限长序列的数字滤波器。它的主要特点是具有精确线性相位特性。有限冲激响应数字滤波器一般实现为非递归型结构,因此,又称为非递归型数字滤波器。非递归型滤波器具有绝对稳定的特性,而且,运算有限字长所产生的输出噪声也较小。按所处理信号的类型可分为一维有限冲激响应数字滤波器和二维或多维有限冲激响应数字滤波器。一维有限冲激响应数字滤波器又称一维非递归型数字滤波器,处理单变量信号序列。)。设计一维有限冲激响应数字滤波器常用的方法有:窗函数法、频率采样法和等波纹机助优化设计法。设计有限冲激响应数字滤波器最直接的方法就是把无限冲激响应序列截短,得到有限长度的冲激响应。设所要求的理想频率响应为Hd(),其单位冲激响应Hd(n)为Hd()的傅里叶反变换。Hd(n)是非因果无限长序列。为使得所设计的数字滤波器的有限冲激响应h(n)逼近hd(n),采用对hd(n)加窗的方法,即令 h(n)hd(n)w(n)式中w(n)为有限长度窗序列。由褶积定理可求得所设计的滤波器的频率响应。根据要求设计低通FIR滤波器要求:通带边缘频率10kHz,阻带边缘频率22kHz,阻带衰减75dB,采样频率50kHz。设计:-过渡带宽度=阻带边缘频率-通带边缘频率=22-10=12kHz-采样频率:f1=通带边缘频率+(过渡带宽度)/2=10000+12000/2=16kHz1=2f1/fs=0.64-理想低通滤波器脉冲响应:h1n=sin(n1)/n/=sin(0.64n)/n/-根据要求,选择布莱克曼窗,窗函数长度为:N=5.98fs/过渡带宽度=5.98*50/12=24.9-选择N=25,窗函数为:wn=0.42+0.5cos(2n/24)+0.8cos(4n/24)-滤波器脉冲响应为:hn=h1nwn |n|12hn=0 |n|12-根据上面计算,各式计算出hn,然后将脉冲响应值移位为因果序列。-完成的滤波器的差分方程为:yn=-0.001xn-2-0.002xn-3-0.002xn-4+0.01xn-5 -0.009xn-6-0.018xn-7-0.049xn-8-0.02xn-9+0.11xn-10+0.28xn-11+0.64xn-12+0.28xn-13-0.11xn-14-0.02xn-15+0.049xn-16-0.018xn-17-0.009xn-18+0.01xn-19-0.002xn-20-0.002xn-21+0.001xn-22程序流程图2模数转换工作过程-模数转换模块接到启动转换信号后,按照设置进行相应通道的数据采样转换。 -经过一个采样时间的延迟后,将采样结果放入AD数据寄存器中保存。-等待下一个启动信号。3模数转换的程序控制模数转换相对于计算机来说是一个较为缓慢的过程。一般采用中断方式启动转换或保存结果,这样在CPU忙于其他工作时可以少占用处理时间。设计转换程序应首先考虑处理过程如何与模数转换的时间相匹配,根据实际需要选择适当的触发转换的手段,也要能及时地保存结果。4混频波形产生将接收到的两路AD采集信号进行相加,并对结果的幅度进行限制,从而产生混合后的输出波形。实验中采用了同相位混频方法,也可修改程序完成异相混频法。5. FIR滤波器工作原理在进入FIR滤波器前,首先要将信号通过AD器件进行模数转换,使之成为8bit的数字信号,一般可用速度较高的逐次逼进式AD转换器,不论采用乘累加方法还是分布式算法设计FIR滤波器,滤波器输出的数据都是一串序列,要使它能直观地反应出来,还需经过数模转换,因此由FPGA构成的FIR滤波器的输出须外接DA模块。FPGA有着规整的内部逻辑阵列和丰富的连线资源,特别适合于数字信号处理任务,相对于串行运算为主导的通用DSP芯片来说,其并行性和可扩展性更好,利用FPGA乘累加的快速算法,可以设计出高速的FIR数字滤波器。1. 程序设计Fir滤波器工作原理及参数计算: 通带边缘频率10kHz,阻带边缘频率22kHz,阻带衰减75kHz,采样频率50kHz。设计:-过渡带宽度=阻带边缘频率-通带边缘频率=22-10=12 kHz -采样频率:F1=通带边缘频率+(过渡带宽度)/2=10000+12000/2=16 kHz 1=2f1/fs=0.64-理想低通滤波器脉冲响应:h1n=sin(n1)/n/=sin(0.64n)/n/-根据要求,选择布莱克曼窗,窗函数长度为:N=5.98fs/过渡带宽度=5.98*50/12=24.9 -选择N=25,窗函数为:Wn=0.42+0.5cos(2n/24)+0.8cos(4n/24) -滤波器脉冲响应为:hn=h1nWn |n|12 hn=0 |n|12-根据上面计算,各式计算出hn,然后将脉冲响应值移位为因果序列。-完成滤波器的差分方程为:Yn=0.001xn-2-0.002xn-3-0.002xn-4+0.01xn-5- 0.009xn-6-0.018xn-7-0.049xn-8-0.02xn-9+0.11xn-10+ 0.28xn-11+0.64xn-12+0.28xn-13-0.11xn-14-0.02xn-15+0.049xn-16-0.018xn-17-0.009xn-18+0.01xn-19- 0.002xn-20-0.002xn-21+0.001xn-226源程序及注释本实验程序在AD中断中对AD进行连续采样。由于需要进行实时混频,所以交替转换通道0和通道1(ICETEK-F2812-EDU实验箱上ADCIN0和ADCIN1)。汇编语言实现fir滤波器程序清单:.title “FIR1.ASM”.mmregs.def startx .usect “x”,8PA0 .set 0PA1 .set 1.dataCOEF: .word 1*32768/10.word 2*32768/10.word -4*32768/10.word 3*32768/10.word -4*32768/10.word 2*32768/10.word 1*32768/10.textstart: SSBX FRCT STM #x+7,AR2STM #6,AR0LD #x+1,DPPORTR PA1,x+1FIR1: RPTZ A,#6MACD *AR2-,COEF,ASTH A,*AR2PORTW *AR2+,PA0BD FIR1PORTR PA1,*AR2+0.end 用循环缓冲区实现FIR滤波器 程序清单:.title “FIR2.ASM”.mmregs .def start.bss y,1xn .usect “xn”,7b0 .usect “b0”,7PA0 .set 0PA1 .set 1.datatable: .word 1*32768/10.word 2*32768/10.word 3*32768/10.word 4*32768/10.word 5*32768/10.word 6*32768/10.word 7*32768/10.text start: SSBX FRCT STM #b0,AR1RPT #6MVPD table,*AR1+STM #xn+6,AR2STM #b0+6,AR3STM #7,BKSTM #-1,AR0LD #xn,DPPORTR PA1,xnFIR2: RPTZ A,#6MAC *AR2+0%,*AR3+0%,ASTH A,yPORTW y,PA0BD FIR2PORTR PA1,*AR2+0%.end链接命令文件FIR2.objvectors.obj-o FIR2.out-m FIR2.map-e startMEMORY PAGE0: EPROM:org=0E000h, len=1000h VECS: org=0FF80h, len=0080h PAGE1: SPRAM:org=0060h, len=0020h DARAM:org=0080h, len=1380h SECTIONS .text:EPROM PAGE 0 .data:EPROM PAGE 0 .bss :SPRAM PAGE 1 xn:align(8)DARAM PAGE 1 b0:align(8)DARAM PAGE 1 .vections:VECS PAGE 0五,硬件框图:六,程序流程图:七,调试过程及步骤1, 实验准备(1)连接实验设备。(2)准备信号源进行AD输入。取出试验箱附带的信号线用一根信号线连接试验箱左侧信号源的波形输出A端口和“A/D输入”模块的“ADCIN0”插座注意插头要插牢,到底。这样,信号源波形输出A的输出波形即可送到ICETEK-F2812A板的输入通道。用一根信号线连接试验箱左侧信号源的波形输出端口和“输入”模块的“”插座注意插头要插牢,到底。这样,信号源波形输出的输出波形即可送到ICETEK-F2812板的输入通道。设置波形输出:向内侧按波形频率选择按钮,直到标有正弦波的指示灯 点亮。上下调节波形频率选择旋钮,直到标有H的指示灯亮。调节幅值调整旋钮,将波形输出的幅值调到适当位 置。设置波形输出: 向内侧按波形频率选择按钮,直到标有正弦波的指示灯点亮。上下调节波形频率选择旋钮,直到标有的指示灯亮。 调节幅值调整旋钮,将波形输出幅值调到适当位置。2,设置Code Computer Studio 2.21在硬件(Emulator)方式下行。3,启动Code Computer Studio 2.21选择菜单DebugReset CPU 4,打开工程文件:工程目录:Ddspt8mixerfirmixerfir.pjt 5,编译、下载程序,选择菜单Debug-Go Main 。使程序运行到main函数入口位置。6,观察窗口打开程序adc.c,查看源代码。7,运行程序观察结果按CTR控制板的K6键,实现滤波显示,K7键实现混频显示,按K8键实现A,B两信号源分屏显示。8,观察动态效果,调节信号源输出,观察滤波器输出。改变信号源输入的波形,频率参数,观察动态结果。9,退出CCS八,实验结果 (a)有错误 (b)K6键 (c)K7键实现混频 (d)K8实现A,B的分频显示九,结果分析 实验过程中遇到的问题及解决方法1, 硬件(cc2000)初始化时提示错误,未初始换成功。原因有硬件的选着,以及DSP实验箱硬件连接是否完整,还有下载线及usb插孔。变换电脑主机上的usb插孔后硬件配置成功2, 工程建立过程:编译之前要将所需不同类型的工程文件全部加载,否则及时程序没有错误编译也会失败.原因是这些文件有些包含头文件,有些则负责为程序分配存储。3, 程序下载到f2812,首次运行时显示评上显示的是一组上下两行宽模糊频谱噪声并且已经吧原来的信号淹没如图(a),原因分析,(1)先是排除显示屏问题(先前实验能够正常显示);(2)认为信号源没有实现AD转换或者转换时效果不好(排除);(3) 认为程序段中输出显示有问题,加断点循环时发现程序运行到显示输出时进入死循环,原因:flage=1; /修改地方, for(;) if(flage=1) flage=0; LCDSetScreenBuffer(nScreenBuffer); LCDCLS();/ 清除显示内存*/ if(keyflage=0) 循环时flage应该为1,是if语句正常运行4, 程序修改后能够正常显示波形图像,从实验结果图示可知,对于混频以及A B 各自的波形能够正确的显示 ,但是滤波后波形会在衰减边缘处有冲激大幅度波形出现,分析原因,应该是元器件系统不可避免的引入的噪声引起5,对程序滤波的精确度的测试,或者说滤波能力:程序中给出的是对B 2k以上的波形能够很好地滤除,但是相对于只有1001k的波形A这种滤波器效果体现不出其精度,当把

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论