《高通滤波器设计报告》由会员分享,可在线阅读,更多相关《高通滤波器设计报告(11页珍藏版)》请在金锄头文库上搜索。
1、目录一、设计项目 2FIR 滤波器设计二、设计目的2三、设计任务 2任务简介四、设计原理 3(1)FIR 的原理和参数生成公式(2) 用 MATLAB 计算滤波系数(3) 程序的自编函数及其功能五、设计方案 5六、设计代码及相关截图6七、设计结果 9八、设计结论 11九、设计心得11一设计项目设计一个FIR高通滤波器,其阶数为33,通带边界频率1440 HZ,采样频率为9000HZ二设计目的掌握用窗函数法设计 FIR 数字滤波器的原理和方法。熟悉线性相位 FIR 数字滤波器特性。了解各种窗函数对滤波器特性的影响。三设计任务3.1 任务要求设计一个FIR低通(或高通、带通)滤波器。此次选择运用M
2、ATLAB窗函数法进行设计FIR 低通滤波器(1)通带边界频率为1440Hz,通带纹波小于1dB;、(2)设计高通滤波器2000Hz,阻带衰减大于40dB;(3)采样频率 9000Hz3.2FIR 滤波器介绍有限长单位冲激响应滤波器,是数字信号处理系统中最基本的元件,它可以在保 证任意幅频特性的同时具有严格的线性相频特性,同时其单位抽样响应是有限长 的,因而滤波器是稳定的系统。因此, FIR 滤波器在通信、图像处理、模式识别 等领域都有着广泛的应用。3.3 工作原理在进入FIR滤波器前,首先要将信号通过A/D器件进行模数转换,把模拟信号转 化为数字信号;为了使信号处理能够不发生失真,信号的采样
3、速度必须满足乃奎 斯特定理,一般取信号频率上限的 4-5 倍做为采样频率;一般可用速度较高的逐 次逼进式A/D转换器,不论采用乘累加方法还是分布式算法设计FIR滤波器,滤 波器输出的数据都是一串序列,要使它能直观地反应出来,还需经过数模转换, 因此由FPGA构成的FIR滤波器的输出须外接D/A模块。FPGA有着规整的内部逻 辑阵列和丰富的连线资源,特别适合于数字信号处理任务,相对于串行运算为主 导的通用DSP芯片来说,其并行性和可扩展性更好,利用FPGA乘累加的快速算 法,可以设计出高速的FIR数字滤波器。有限长单位冲激响应(FIR)滤波器有以下特点:(1)系统的单位冲激响应h (n)在有限个
4、n值处不为零 系统函数H(z)在|z|0处收敛,极点全部在z = 0处(因果系统)(3) 结构上主要是非递归结构,没有输出到输入的反馈,但有些结构中(例如频 率抽样结构)也包含有反馈的递归部分。设FIR滤波器的单位冲激响应h (n)为一个N点序列,0 W n WN 1,则滤波 器的系统函数为H(z)=E h( n)*z-n就是说,它有(N1 )阶极点在z = 0处,有(N1)个零点位于有限z平面的 任何位置。四设计原理4.1FIR 的原理和参数生成公式N/2-1y(n)二工 h(k)x(n-k)+(n-(N-1+K)N=0,1,2,3K=0FIR 设计原理:根据系数h是偶对称为了简化运算产生如
5、下计算方法如果一个FIR滤波有一个冲激响应,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 :用来决定滤波器的类
6、型,当 ftype=high 时,可设计高通滤波器;当 ftype=stop 时,可设计带阻滤波器。Window:用来指定滤波器采用的窗函数类型,其默认值为汉明(hamming)窗。采用汉明窗设计低通FIR滤波器使用b=fir1(n, Wn)可得到低通滤波。0WWnW1, Wn=1相当于0.5fs。格式: b=fir1(n, Wn)4.3 程序的自编函数及其功能(1) .global start, fir 设定全局变量。(2) COFF_FIR_START: .sectcoff_firIn elude lowpass.i nc(设定系数文件)提示:“lowpass.inc”提供低通系数(用MA
7、TLAB计算得出)。(3)K_FIR_BFFR .set 32(滤波阶数)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
8、2 (5000)。2 .设计步骤设计准备运用MATLAB建立工程“highpass”生成一个.INC文件(滤波系数); 再建立一个新工程“dt in put”生成.DAT文件(滤波器输入高通信号)。 并将之前生成的.INC文件和.DAT文件放入后面CCS 2工程目录HIGH中。启动“Code Composer Studio Setup”,在 “Import Configuration” 对话框中单击 “clear”按钮,消除原系统设置。在“Available Configurations” 列表中选择 C5402 Simulator,关闭窗口,重启 CCS。 编译并下载程序。打开观察窗口选择菜
9、单 “view” “Graph” “Time/Frequency.” 进行如下设置: 地址分别为 input 和 output,buffersize:1,display data size:200,sampling rate:8000,dsp data type 选择 16 位。在弹出的图形窗口中单击鼠标右键,选择“clear display”。设置断点和探点在标号“firoop”下面的“NOP”语句设置软件断点和探针。选择菜单“file I/O”;加载之前“HIGH”文件夹中的.DAT文件,并在“adress” 中输入d_filin,在“length”中输入1;在“warp around”项
10、前面加上选中符号; 单击 “probe point” 列表中的“FIR.asm line 38” 行;在“connect” 项选择“FILE IN:C:.dtinput.dat” ;单击“replace”。运行并观察结果1. 选择“debug”菜单的“animate”项,或按F12键运行程序。2. 观察“input”、“output”窗口中时域图形;观察滤波效果。3. 设置“in put”、“output”的时域图形窗口为频域窗口,即设置“display type” 为 “FFT magitude”。4. 按 F12 运行程序。5. 观察“input”、“output”窗口中频域图形;理解滤波
11、效果。 停止程序运行并退出。六、设计代码及相关截图MATLAB计算highpass.inc滤波系数以及滤波器输入输入信号滤波器系数宀:匚uwAaml VuhAov【 !匚 | X |Fl 1 s Zdl t UbLu7 i nilov HLp-TU 苦u L JL L AL E-LJj !=! UL-L IS.J. I l*H I LUC J上 U.L X* CJIUJ. L. I_ LUI L LUC JJE-Lp MCJ IU-冲 b=firL(33? 10/90002, hih7):Wsmins? Odd order syrmertric FIR filters mst hsvm a g
12、ain of sero st th日 X(yqui3t freiiuericy. The ordgr is bRine increassd by one. In fi%汛哺 fraaal.filS round (fir 1(33, 40/0000*2. gti1 *32?flBWarmrisi Odd otder syiiMttii: FIR fillers iiust have a a am of z&ro;the Nyquist ii5qu.tncy Ihe crdet ls being: zmxue刁墨ud. by cne.In珀匚L at85:.2Colmunr thfc-ujh. E
13、as2L- fidf openC dt input, dat ,) r fprintf(fid/ L6512010n ); fprintf (fidi %dn t jj j fclcse(fid)ans =高通滤波器源程序:HIGHPASS .set 1.global start,fir.mmregsCOFF_FIR_START: .sect coff_fir.include highpass.incK_FIR_BFFR .set 33 d_data_buffer .usect fir_bfr,64FIR_DP.usectfir_vars,0d_filin.usectfir_vars,1output.usectfir_vars,1input.usectfir_v