高通滤波器设计报告_第1页
高通滤波器设计报告_第2页
高通滤波器设计报告_第3页
高通滤波器设计报告_第4页
高通滤波器设计报告_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

1、目录一、 设计项目-2FIR滤波器设计二、 设计目的 -2三、 设计任务-2任务简介四、设计原理-3(1) FIR的原理和参数生成公式(2) 用MATLAB计算滤波系数(3) 程序的自编函数及其功能五、设计方案-5六、设计代码及相关截图-6七、设计结果-9八、设计结论-11九、设计心得-11一设计项目设计一个FIR高通滤波器,其阶数为33,通带边界频率1440 HZ,采样频率为9000 HZ二设计目的 掌握用窗函数法设计FIR数字滤波器的原理和方法。 熟悉线性相位FIR数字滤波器特性。 了解各种窗函数对滤波器特性的影响。三设计任务3.1任务要求设计一个FIR低通(或高通、带通)滤波器。此次选择

2、运用MATLAB窗函数法进行设计FIR低通滤波器(1) 通带边界频率为1440Hz,通带纹波小于1dB;、(2) 设计高通滤波器2000Hz,阻带衰减大于40dB;(3) 采样频率9000Hz3.2 FIR滤波器介绍有限长单位冲激响应滤波器,是数字信号处理系统中最基本的元件,它可以在保证任意幅频特性的同时具有严格的线性相频特性,同时其单位抽样响应是有限长的,因而滤波器是稳定的系统。因此,FIR滤波器在通信、图像处理、模式识别等领域都有着广泛的应用。3.3工作原理在进入FIR滤波器前,首先要将信号通过A/D器件进行模数转换,把模拟信号转化为数字信号;为了使信号处理能够不发生失真,信号的采样速度必

3、须满足乃奎斯特定理,一般取信号频率上限的4-5倍做为采样频率;一般可用速度较高的逐次逼进式A/D转换器,不论采用乘累加方法还是分布式算法设计FIR滤波器,滤波器输出的数据都是一串序列,要使它能直观地反应出来,还需经过数模转换,因此由FPGA构成的FIR滤波器的输出须外接D/A模块。FPGA有着规整的内部逻辑阵列和丰富的连线资源,特别适合于数字信号处理任务,相对于串行运算为主导的通用DSP芯片来说,其并行性和可扩展性更好,利用FPGA乘累加的快速算法,可以设计出高速的FIR数字滤波器。有限长单位冲激响应(FIR)滤波器有以下特点:(1) 系统的单位冲激响应h (n)在有限个n值处不为零(2) 系

4、统函数H(z)在|z|0处收敛,极点全部在z = 0处(因果系统)(3) 结构上主要是非递归结构,没有输出到输入的反馈,但有些结构中(例如频率抽样结构)也包含有反馈的递归部分。设FIR滤波器的单位冲激响应h (n)为一个N点序列,0 n N 1,则滤波器的系统函数为H(z)=h(n)*z-n就是说,它有(N1)阶极点在z = 0处,有(N1)个零点位于有限z平面的任何位置。四设计原理4.1 FIR的原理和参数生成公式N/2-1y(n)= h(k)x(n-k)+(n-(N-1+K) N=0,1,2,3. K=0FIR设计原理: 根据系数h是偶对称为了简化运算产生如下计算方法如果一个FIR滤波有一

5、个冲激响应,h(0),h(1),.,h(N-1),和x(n)描绘输入的时常滤波n,输出滤波y(n)的n给出以下方程式:Y(n)=h(0)+h(1)x(n-1)+h(2)x(n-2)+.+h(N-1)xn-(n-1)4.2用MATLAB计算滤波系数用来设计标准频率响应的基于窗函数的FIR滤波器,可实现加窗线性相位FIR数字滤波器的设计。语法: b=fir1(n,Wn) b=fir1(n,Wn,ftype) b=fir1(n,Wn,Window) b=fir1(n,Wn,ftype,Window)n:滤波器的阶数;Wn:滤波器的截止频率;ftype:用来决定滤波器的类型, 当ftype=high时

6、,可设计高通滤波器; 当ftype=stop时,可设计带阻滤波器。 Window:用来指定滤波器采用的窗函数类型,其默认值为汉明(hamming)窗。采用汉明窗设计低通FIR滤波器使用b=fir1(n, Wn)可得到低通滤波。0Wn1,Wn=1相当于0.5fs。 格式:b=fir1(n, Wn)4.3程序的自编函数及其功能(1) .global start, fir 设定全局变量。(2) COFF_FIR_START: .sectcoff_fir Include lowpass.inc(设定系数文件) 提示:“lowpass.inc”提供低通系数(用MATLAB计算得出)。(3) K_FIR_

7、BFFR .set 32(滤波阶数)(4) d_filin(存放输入波形)(5)d_filout(存放输出波形)(6)指定寄存器:指定AR4为FIR_DATA_P数据寄存器。指定AR6为INBUF_P输入数据寄存器。指定AR7为OUTBUF_P输出数据寄存器。汇编程序部分说明:Start 部分:程序初始化部分指定寄存器,清空寄存器。fir_loop部分:循环调入输入数据,并调用子程序fir进行计算。main_end部分:跳转至循环部分。fir部分:子程序部分。其中fir_task部分:进行计算并返回计算结果五设计方案1.设计设备 计算机,CCS 2(5000)。2 .设计步骤设计准备运用MAT

8、LAB建立工程“highpass”生成一个.INC文件(滤波系数);再建立一个新工程“dtinput”生成.DAT文件(滤波器输入高通信号)。并将之前生成的.INC文件和.DAT文件放入后面CCS 2工程目录HIGH中。 启动“Code Composer Studio Setup” ,在“Import Configuration”对话框中单击“clear” 按钮,消除原系统设置。 在“Available Configurations” 列表中选择C5402 Simulator,关闭窗口,重启CCS。编译并下载程序。打开观察窗口 选择菜单“view”“Graph”“Time/Frequency.

9、”进行如下设置: 地址分别为input和output, buffersize:1, display data size:200, sampling rate:8000, dsp data type 选择16位。 在弹出的图形窗口中单击鼠标右键,选择“clear display”。设置断点和探点在标号“fir_loop”下面的“NOP”语句设置软件断点和探针。选择菜单“file I/O”;加载之前“HIGH”文件夹中的.DAT文件,并在“adress”中输入d_filin,在“length”中输入1;在“warp around”项前面加上选中符号;单击“probe point”列表中的“FIR.

10、asm line 38”行;在“connect”项选择“FILE IN:C:.dtinput.dat”;单击“replace”。 运行并观察结果 1.选择“debug”菜单的“animate”项,或按F12键运行程序。 2.观察“input”、“output”窗口中时域图形;观察滤波效果。 3.设置“input”、“output”的时域图形窗口为频域窗口,即设置“display type”为“FFT magitude”。 4.按F12运行程序。 5.观察“input”、“output”窗口中频域图形;理解滤波效果。 停止程序运行并退出。六、设计代码及相关截图 MATLAB计算highpass.

11、inc滤波系数以及滤波器输入输入信号滤波器系数滤波系数产生程序y=round(fir1(33,1440/9000*2)*32768);fid=fopen(highpass.inc,w);fprintf(fid, .word %dn,y);fclose(fid);滤波器输入信号产生的程序高通滤波器源程序:HIGHPASS.set1.globalstart,fir.mmregsCOFF_FIR_START: .sect coff_fir.includehighpass.incK_FIR_BFFR.set33d_data_buffer.usectfir_bfr,64FIR_DP.usectfir_v

12、ars,0d_filin.usectfir_vars,1output.usectfir_vars,1input.usect fir_vars,1d_filout .usectfir_vars,100hstacksize .set 256stack .usect fir_vars,stacksize.asg AR4,FIR_DATA_P.asg AR6,INBUF_P.asg AR7,OUTBUF_P.asg AR3,OUTBUF.asg AR2,INBUF.sec tfir_prog nopstart:stm #stack+stacksize,SPLD#FIR_DP,DPSTM#d_data_

13、buffer,FIR_DATA_PRPTZ A,#K_FIR_BFFR-1STLA,*FIR_DATA_P+STM#d_filin,INBUF_PSTM#d_filout,OUTBUF_P STM#output,OUTBUFSTM#input,INBUFSTM#100h,BKfir_loop: NOP ;Add Breakpoint & porbe pointLD*INBUF_P,ASTLA,*INBUFCALLfirSTHA,*OUTBUF_P+%STHA,*OUTBUFmain_end:bfir_loop fir:SSBXSXM SSBX FRCT STM#d_data_buffer,FI

14、R_DATA_PSTLA,*FIR_DATA_PSTM#(d_data_buffer+K_FIR_BFFR-1),FIR_DATA_P fir_task: RPTZA,#K_FIR_BFFR-1MACD*FIR_DATA_P-,COFF_FIR_START,ARET.end.CMD代码:MEMORYPAGE 0:PROG:o= 80h,l= 1000h PAGE 1:DATA1:o= 2600h, l= 1000hDATA2:o= 2100h, l= 100hDATA3:o= 2200h,l= 100hDATA4:o= 2300h,l= 100hDATA5:o= 2400h,l= 100hDA

15、TA6:o= 2500h,l= 100hSECTIONS coff_fir : PROGPAGE 0fir_prog : PROGPAGE 0fir_vars : DATA1PAGE 1 fir_coff : DATA2PAGE 1fir_bfr : DATA3PAGE 1七设计结果高通滤波器MATLAB仿真图频域图放大图时间与频域完整图此图四个窗口,分别是“input”和“output”的时域与频域窗口。窗口一:输入信号的频域波形 输入信号由2个信号叠加而成,一个为1000赫兹,一个为3000赫兹窗口二:输出信号的频域波形 从图可以看出两个信号中,低于通带边界频率1440Hz被滤掉(1000

16、Hz)剩下3000Hz不受影响窗口三:输入信号的时域波形 输入信号由2个信号叠加而成,一个为1000赫兹,一个为3000赫兹窗口四:输出信号的时域波形 滤波之后,波形规律性强八设计结论课程设计项目,我选择的是FIR高通滤波器的设计,其中使用到MATLAB为滤波器设计计算参数(highpass.inc),滤波器输入信号(dtinput.dat)以及MATLAB仿真图;在设计过程中查找一些资料,编写FIR高通滤波器程序等,最终成功将混合信号1000Hz,3000Hz中的低频信号滤掉。九设计心得设计的第一天,自己遇到了很多问题:首先就是不知道如何使用MATLAB,所以整个上午都感觉无从下手,highpass.inc ,dtinput.dat 文件是通过自己手动输入的,相当的麻烦。回去查阅资料后知道了MATLAB的使用,以及.inc .dat文件可以用其直接使用代码生产,这个过程做完

温馨提示

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

评论

0/150

提交评论