摘要 FIR滤波器的规划分为滤波器系数核算和滤波器结构的详细两个部分。为阐明运用FPGA完结FIR的灵敏性,文中列举了一个多阶串行FIR滤波器实例,并给出首要的源代码和相关模块的时序和功用阐明,终究运用Matlab和Quartusii联合仿真验证了FPGA硬滤波器工程的正确性。
关键词 FPGA;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,则滤波器的体系函数为
即有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 μs125μs。
首要新建在QuartusII中新建一个工程FIR1024,然后运用原理图和VHDL混合的方法规划出以下FPGA程序。把fircoef.mif表格文件代入到系数ROM存储器中。
输入管脚:CLK主时钟25 MHz;DIN[15..0]语音数据输入;AFCLK数据速率时钟8 kHz;信号数据1 024点缓存RAM和滤波器系数ROM。
时序操控单元是规划的中心部分。AFCLK作为整个FIR滤波器体系的发动信号,此模块检测到AFCLK上升沿到来时会进行以下几个过程的处理:(1)首要发动WEN写使能信号把当时DIN写入缓存中,写地址WRADDER累加一次。(2)然后发动读地址计数器RDADDER开端进行1 024次计数,一起把信号缓存和系数ROM中的数据送到乘加器中做1 024乘加运算,RST的作用是在第一个有用数据到来时进行累加器清零,RST_EN的作用是在完结1 024次运算时,精确地把成果锁存到输出端口,如图6所示。
因为语音信号数据位宽是16位,经过1 024次乘加,和滤波器系数是32位整型量化处理的一切终究成果要做必要的量化处理,以得到正确的成果。
经过编译归纳后,发现占用逻辑单元158,仅占EP3C5逻辑单元的3%,RAM单元约占12%,9位乘法器4个,如图7所示,作用抱负。
4 FPGA数字滤波器功用仿真验证
QuartusII不支撑Testbench,选用*.vwf文件进行仿真需求手艺输入鼓励,人工查看输出成果,此程序反应,且功率较低。因为Quartus II的工程文件都是文本文件,一切的数据都以文件方式存储,所以能够编写文本过滤程序,将文本文件中的有用数据提取出来,然后进行后期处理,既提高了灵敏性,又提高了功率。
QuartusII支撑*.vwf、*.vec等鼓励输入,因为*.vec的文本操作性优于*.vwf文件,所以文中挑选*.vec文件作为鼓励输入。运用Matlab发生8 000 Hz速率800 Hz,1000 Hz,1 300 Hz共3种频率的混合信号的仿真样本序列,带入到QuartusII中进行仿真,发生的仿真文件再导出到Matlab中进行显现,成果如图8所示。
由图中能够看出,经过FPGA滤波往后,800 Hz和1 300 Hz的信号都被滤波器滤除,仅有1 000 Hz信号保存。
5 结束语
经过规划实例,介绍了高速串行多阶FIR滤波器的规划思路和流程。仿真成果阐明,FPGA在FIR数字滤波器完结方面比较通用和专用DSP芯片具有更灵敏的运用办法,能够做到速度和逻辑资源占用方面的均衡。