基于FPGA的FIR滤波器设计
2014-04-21周剑敏谢文雷葛斌陈虞苏
周剑敏+谢文雷+葛斌+陈虞苏
摘 要 介绍了基于FPGA芯片进行FIR滤波器的设计过程,具体涉及到MATLAB对FIR滤波器的仿真、数据的量化和生成;FPGA对FIR滤波器的设计、仿真和数据生成,最后形成FPGA和MATLAB联合设计FIR滤波器。
关键词 FGPA;FIR;MATLAB
中图分类号:TN911 文献标识码:A 文章编号:1671-7597(2014)03-0034-01
滤波器在信息领域应用非常广泛。随着现代技术的发展,如何在FPGA上进行滤波器设计是非常迫切的。FPGA是通过硬件描述语言进行程序设计的,要把基于数学基础的滤波器在FPGA上设计出来还是有一定难度的。而用MATLAB进行滤波器设计又显的非常简单。因此需要把MATLAB和FPGA技术结合起来,进行滤波器设计,这样就能事半功倍。本文将以一个简单的FIR滤波器为例,用MATLAB和FPGA进行联合设计滤波器。
1 基本流程
一般采用MATLAB和FPGA联合设计有多种方法。一种是由MATLAB软件设计出滤波器系统,并在MATLAB中利用工具直接转换成VHDL代码;一种是由MATLBA软件设计出FIR关键系数和测试文件,然后在FPGA中使用系数设计滤波器,使用测试文件形成测试结果,最后再由MATLAB把测试结果验证,证明FPGA设计滤波器的正确性。第一种方法在滤波器系统较为复杂的时候,很难满足设计要求,调试时反而显得复杂。本文采用第二种方法进行滤波器的联合设计。
2 MATLAB的FIR系数和测试文件生成
在设计时,使用MATLAB产生滤波器系数和测试文件。MATLAB里有各种专门的FIR滤波器系数生成函数,如B=fir1(N,Wn,'high')函数。
B:表示返回的FIR滤波器的单位脉冲响应,长度为N+1。
N:表示滤波器的阶数。
Wn:表示滤波器的截至频率。
High:表示是高通滤波器。
用户只要按滤波器设计要求,获取B系数就能得到浮点数表示的FIR滤波器系数。……
