基于DA算法的FIR数字滤波器的FPGA设计
时间:2025-04-30
时间:2025-04-30
电信技术 fpga、dsp
总第248期2010年第6期
计算机与数字工程
Computer&DigitalEngineeringVol.38No.6
165
基于DA算法的FIR数字滤波器的FPGA设计
张秀娟 纪晓佳
(山东科技大学信息科学与工程学院 青岛 266510)
*
摘 要 凭借规整的内部逻辑块阵列和丰富的连线资源,FPGA特别适合细粒度和高并行度结构特点的数字信号处理任务。文章提出一种采用分布式算法实现16阶FIR低通滤波器的FPGA设计方法。通过MATLAB提取符合设计指标的参数,采用VerilogHDL描述数字逻辑设计过程,在Quartus 集成开发环境下进行综合,并且在Modelsim中进行实验仿真和验证。
关键词 FIR数字滤波器;分布式算法;查找表LUT;VerilogHDL中图分类号 TN713
FPGADesignofFIRDigitalFilterBasedonDistributedArithmetic
ZhangXiujuan JiXiaojia
(CollegeofInformationScienceandTechnology,ShandongUniversityofScienceandTechnology1),Qingdao 266510)Abstract Withthestructuredinternallogicblockarrayandabundantconnectionresources,FPGAparticularlysuitableforfine grainedandhighparallelstructuraldigitalsignalprocessingtasks.Thepaperpresentsadesignmethodtorealize16 orderFIRlow passfilterusingDistributedArithmetic.ExtractingtheparameterinlinewithdesignindexesthroughMatlab,usingVerilogHDLtodescribethedigitallogicdesignprocess,andsynthesizingintheintegrateddevelopmentenvironmentofQuartus andcarryoutthesimulationandverificationoftheexperimentthroughModelsim.
KeyWords FIRdigitalfilter,distributedarithmetic,LUT,VerilogHDLClassNumber TN713
1 引言
随着现代电子技术的发展,采用FPGA(FieldProgrammableGateAarry)
[1]
2 FIR理论
数字滤波器通常都是应用于修正或改变时域或频域中信号的属性[2]。最为普遍的数字滤波器就是线性时间不变量(lineartime invariant,LTI)滤波器。带有常系数的FIR滤波器是一种LTI数字滤波器。N阶或者长度为N的FIR输出对应于输入时间序列x[n]的关系由一种有限卷积数量形式给出,具体形式如下:
N-1
进行数字信号处理
技术得到广泛应用。任何检测的信号都含有噪声,而滤波是去除噪声的基本手段。数字滤波器是一种用来过滤时间离散信号的数字系统,通过对抽样数据进行数学处理来达到滤波的目的。实现一个数字滤波器需要几种基本的运算单元 加法器、单位延时和常数乘法器。分布式算法以实现乘加运算为目的,相对于传统算法它大大减少了硬件电路的规模,提高了运算速度。在此基础上,本文通过VerilogHDL对滤波器各个功能模块进行描述,最终完成整个系统的设计和仿真测试。
*
y[n]=x[n]*h[n]=
i=0
x[i]h[n-
i]
其中从h[0]!0一直到h[N-1]!0均是滤波器的N阶的系数,同时也对应于FIR的脉冲响应。图1给出了N阶LTI型FIR滤波器的图解。
收稿日期:2010年1月10日,修回日期:2010年2月10日
作者简介:张秀娟,女,教授,硕士生导师,研究方向:计算机应用、微电子信息与电路设计自动化、智能机器人控制技:
电信技术 fpga、dsp
166张秀娟等:基于DA算法的FIR数字滤波器的FPGA设计第38
卷
h(1)=h(14)=-0.005847101945177h(2)=h(13)=0.011458170812710h(3)=h(12)=-0.014704303573437h(4)=h(11)=0.004196276291807
图1 直接形式的FIR滤波器
h(5)=h(10)=0.037518071298571h(6)=h(9)=-0.147187051993503h(7)=h(8)=0.612807364480984
由MATLAB求出的滤波器系数是用浮点数表示的并且有正负,但FPGA是定点数运算,在MATLAB命令主窗口键入:Num*(2^16)将系数
[4]
可以看出,FIR滤波器是由一个 抽头延迟线#加法器和乘法器的集合构成的。传给每个乘法器的操作数就是一个FIR系数[3]。
3 分布式算法
分布式算法(distributedarithmetic,DA)
的
主要特点是巧妙的利用查找表将固定系数的乘累加(Multiply accumulator,MAC)运算转化为查找表操作。与传统算法相比,分布式算法是用各系数与各输入信号的一位相乘得到部分积,再将处于信号同一位的部分积累加作为中间值,当所有位累加结束后再将各中间值移位并累加。分布式算法的原理如下:
N-1
量化成整数,得到
h(0)=h(15)=206 h(1)=h(14)=-383h(2)=h(13)=751 h(3)=h(12)=964h(4)=h(11)=275 h(5)=h(10)=2459h(6)=h(9)=9646 h(7)=h(8)=40161滤波器的单位脉冲响应和幅频特性如图2所示。
y=
i=0
h(i)x(i)
其中h(i)为已知常量,即滤波器的系数;x(i)是变量,即输入信号的采样值。在数字系统中,x(i)可以表示为
K-1
x(i)=
N-1
k=0
xk(i)*2,xk(i) [0,1]
K-1
N-1K-1
k
其中xk(i)表示x(i)的第i位,则:
y=xk(i)2k
分布式算法主要在于移位和累加。由于FP GA是基于查找表(Look Up Table)结构的,其本质上就是一个RAM,所以将式中所有可能的结果写入RAM,每输入一个信号进行逻辑运算就等于输入一个地址进行查表,找出地址对应的内容,然后输出即可。
h(i)%
i=0k=0
xk(i)%2=
k
i=0k=0
h(i)
图2 16阶FIR低通滤波器的Matlab设计结果
5 16阶FIR数字低通滤波器硬件电
路设计
该系统包括移位寄存器模块、多路选择器模块、LUT、乘累加模块和控制信号模块[5]。
系统结构框图如图3所示。
4 滤波器系数的设计
本文以一个16阶低通FIR滤波器为例进行说明。设计指标为:采样频率Fs=8kHZ,通带截止频率Fc=3.4Khz,阻带衰减As大约为10dB左右,输入数据宽度16位。
根据以上指标,首先用MATLAB软件仿真并确定抽头系 …… 此处隐藏:4781字,全部文档内容请下载后查看。喜欢就下载吧 ……
下一篇:《祝福》优秀课件