欢迎来到天天文库
浏览记录
ID:33794454
大小:54.20 KB
页数:4页
时间:2019-03-01
《基于fpgafir滤波器设计》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、基于FPGAFIR滤波器设计摘要介绍了基于FPGA芯片进行FIR滤波器的设计过程,具体涉及到MATLAB对FIR滤波器的仿真、数据的量化和生成;FPGA对FIR滤波器的设计、仿真和数据生成,最后形成FPGA和MATLAB联合设计FIR滤波器。关键词FGPA;FIR;MATLAB中图分类号:TN911文献标识码:A文章编号:1671-7597(2014)03-0034-01滤波器在信息领域应用非常广泛。随着现代技术的发展,如何在FPGA上进行滤波器设计是非常迫切的。FPGA是通过硬件描述语言进行程序设计的,要把基于数学基础的滤
2、波器在FPGA上设计出来还是有一定难度的。而用MATLAB进行滤波器设计又显的非常简单。因此需要把MATLAB和FPGA技术结合起来,进行滤波器设计,这样就能事半功倍。本文将以一个简单的FIR滤波器为例,用MATLAB和FPGA进行联合设计滤波器。1基本流程一般采用MATLAB和FPGA联合设计有多种方法。一种是由MATLAB软件设计出滤波器系统,并在MATLAB中利用工具直接转换成VHDL代码;一种是由MATLBA软件设计出FIR关键系数和测试文件,然后在FPGA中使用系数设计滤波器,使用测试文件形成测试结果,最后再由MA
3、TLAB把测试结果验证,证明FPGA设计滤波器的正确性。第一种方法在滤波器系统较为复杂的时候,很难满足设计要求,调试时反而显得复杂。本文采用第二种方法进行滤波器的联合设计。2MATLAB的FIR系数和测试文件生成在设计时,使用MATLAB产生滤波器系数和测试文件。MATLAB里有各种专门的FIR滤波器系数生成函数,如B=firl(N,Wn,high')函数。B:表示返回的FIR滤波器的单位脉冲响应,长度为N+loN:表示滤波器的阶数。Wn:表示滤波器的截至频率。High:表示是高通滤波器。用户只要按滤波器设计要求,获取B系数
4、就能得到浮点数表示的FIR滤波器系数。滤波器系数生成后,需要有测试文件测试滤波器的特性。用户可以根据滤波器的特性,利用MATLAB自动生成测试文件。如利用MATLAB程序:sin_t=0:1/fs:0.1;sin_cl=2*pi*f_l*sin_t;sin_c2=2*pi*f_2*sin_t;sj=l/3*sin(sin_cl)+sin(sin_c2);自动就生产了含有2个频率成份的浮点数表示的sj信号。若仅仅是检测MATLAB设计的FIR滤波器是否正确,可以把sj输入到FIR滤波器中,观察滤波器输出就可以判断。目前是要在F
5、PGA中设计并验证滤波器。所以需要把MATLAB生成的滤波器系数和测试文件量化成符writefori=l:length(sj_quan_12)forj二1:bin_longfprintf(fidout,,%s‘,sj_quan_12(i,j));ifmod(j,bin_long)=0fprintf(fidout,,r");endendendfclose(fidout);3FPGA程序设计本文利用XILINX公司的FPGA芯片XC6SLX45作为硬件载体,使用VHDL语言进行FIR程序编写。具体元件说明如下:COMPON
6、ENThr_bookPORT(rst:INstd_logic;--复位信号输入elk:INstd_logic;--时钟输入xin:INstd_logic_vector(11downto0);一一测试文件/实际信号输入yout:OUTstd_logic_vector(28downto0)—FIR滤波输出);ENDCOMPONENT;xin为FIR滤波器的输入端,同时也是仿真时,MATLAB生成的测试文件输入端。yin是xin经过FPGA内部设计的FIR滤波器滤波后的输出信号。在FPGA中输入MATLAB的测试文件的程序如下:f
7、ileinvect:textis"e:\matlab_studyresult.txt”;ifnot(endfile(invect))thenreadline(invect,vline);read(vline,v);xin
此文档下载收益归作者所有