新闻中心

EEPW首页>嵌入式系统>设计应用> 基于FPGA+MATLAB的串行多阶FIR滤波器设计

基于FPGA+MATLAB的串行多阶FIR滤波器设计

作者: 时间:2014-04-08 来源:网络 收藏

摘要 FIR滤波器的设计分为滤波器系数计算和滤波器结构的具体两个部分。为说明使用实现FIR的灵活性,文中列举了一个多阶串行FIR滤波器实例,并给出主要的源代码和相关模块的时序和功能说明,最后使用Matlab和Quartusii联合仿真验证了硬滤波器工程的正确性。

本文引用地址://m.amcfsurvey.com/article/236081.htm

关键词;FIR数字滤波器;Matlab;仿真

数字滤波器是用于过滤时间离散信号的数字系统,通过对抽样数据进行数学处理达到频域滤波的目的。根据单位冲激响应函数的时域特性可分为两类:无限冲激响应(Infinite Impulse Response,IIR)滤波器和有限冲激响应(Finite Inpulse Response,FIR)滤波器。与IIR滤波器相比,FIR滤波器的实现是非递归的,较稳定;且FIR滤波器可获得严格的线性相位特性。因此,应用领域较广。

FIR滤波器具有成熟的结构,使用Matlab强大的功能使得本来繁重的计算工作变得轻松。在具体应用时,要根据工程当中信号的特点:采样速率、信号带宽等具体使用Matlab得到FIR滤波器系数。滤波器的结构实现可以使用PC软件、单片机、微处理器、FPGA、通用DSP芯片。其需根据信号特性选择。文中主要使用FPGA实现高速时钟下的串行FIR滤波器结构,达到速度和逻辑资源情况下的最佳均衡。

1 FIR的特点

有限长单位冲激响应(FIR)滤波器的特点:(1)系统的单位冲激响应h(n)在有限个n值处不为零。(2)系统函数H(z)在|z|>0处收敛,极点全部在z=0处。(3)结构上主要是非递归结构,没有输出到输入的反馈,但有些结构中也包含有反馈的递归部分。

设FIR滤波器的单位冲激响应h(n)为一个N点序列,0≤n≤N-1,则滤波器的系统函数为

h.jpg

即有N-1阶极点在z=0处,有N-1个零点位于有限z平面的任何位置。

2 使用MatIab Fdatool设计FIR滤波器

FDATool(Fliter Design & Analysis Tool)是Matlab信号处理工具箱专用的滤波器设计分析工具,操作简单、灵活,可采用多种方法设计FIR和IIR滤波器。在Matlab命令窗口输入FDATool后回车就会弹出FDATool界面。

带通滤波器设计已知滤波器的阶数n=1 024,beta=3.4。首先在Fiher Ttype中选择Bandpass;在Design Method选项中选择FIRWindow,接着在Window选项中选取Blackman—Harris;指定Filter Order项中的Specify Order为1 024;采样频率Fs=8 000 Hz,截止频率Fc1=900 Hz,Fc2=1 200 Hz。设置完以后点击窗口下方的Design Filter,在窗口上方就会看到所设计滤波器的幅频响应,通过菜单选项Analysis还可看到滤波器的相频响应、组延迟、脉冲响应、阶跃响应、零极点配置等,如图1所示。

这样选择File菜单当中的Export导出滤波器系数到文件中。因为得到系数是浮点数,为适合在FPGA中使用,要编写一个M文件对系数进行整型量化处理并在此文件当中生成FPGA能够使用的.mif表格文件。

3 FPGA设计和仿真验证

当已知滤波器系数,信号速率为8 kHz,周期125μs。根据FIR滤波器的结构可知,只要在125μs之内完成1 024次乘加运算,那么就可达到对8 kHz速率的语音信号的有效滤波。文中使用QuartusII9.1开发平台,FPGA芯片选用EP3C5E144C8,主时钟25 MHz,周期40 ns进行1 024次运算,耗时40.96 μs<<125μs。

首先新建在QuartusII中新建一个工程FIR1024,然后使用原理图和VHDL混合的方式设计出以下FPGA程序。把fircoef.mif表格文件代入到系数ROM存储器中。

输入管脚:CLK主时钟25 MHz;DIN[15..0]语音数据输入;AFCLK数据速率时钟8 kHz;信号数据1 024点缓存RAM和滤波器系数ROM。

滤波器相关文章:滤波器原理


fpga相关文章:fpga是什么


滤波器相关文章:滤波器原理


电源滤波器相关文章:电源滤波器原理


数字滤波器相关文章:数字滤波器原理

上一页 1 2 下一页

关键词:FPGAMATLAB

评论


相关推荐

技术专区

关闭