欢迎来到天天文库
浏览记录
ID:39474213
大小:32.50 KB
页数:4页
时间:2019-07-04
《基于FPGA的高效FIR滤波器设计与实现》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、基于FPGA的高效FIR滤波器设计与实现(1)2011-03-3101:08:45 来源:21IC 关键字:FPGAFIR滤波器MatlabModelsim 摘要:给出了一种基于FPGA的数字滤波器的设计方法。该方法先通过MATLAB设计出一个具有具体指标的FIR滤波器,再对滤波器系数进行处理,使之便于在FPGA中实现,然后采用基于分布式算法和CSD编码的滤波器结构进行设计,从而避免了乘法运算,节约了硬件资源,其流水线的设计方式也提高了运行速度。Matlab和Modelsim仿真表明,该设计功能正确,能实现快速滤波。 0引言 数字滤波器在语
2、音与图像处理、模式识别、雷达信号处理、频谱分析等应用中都具有重要作用。它能避免模拟滤波器所无法克服的温漂和噪声等问题,同时比模拟滤波器精度高、稳定性好、体积小、更加灵活,因而得到广泛应用。在声波测井中,通常需要对信号进行精确的滤波,并且对滤波器具有严格的实时性要求。本文利用辅助Matlab设计工具,设计了一种基于FPGA且可满足测井需求的高阶快速数字滤波器。 1线性相位FIR滤波器结构 数字滤波器的种类很多,分类的方法也不尽相同。从数字滤波器的单位冲击响应来看,数字滤波器分为有限冲激响应数字滤波器(FIR)和无限冲激响应数字滤波器(IIR)。相对于I
3、IR滤波器,FIR滤波器可以进行准确的线性相位设计,而且其结构具有稳定的量化滤波器系数。针对于声波测井处理具有线性相位要求的声波信号,FIR滤波器是首选。 在时域中,FIR滤波器的输入输出过程是一个输入信号与单位脉冲响应进行线性卷积的过程,其差分方程表达式为: 其中,y(n)为滤波输出,x(n)为采样数据,h(n)为滤波器抽头系数。其结构如图1(a)所示,图中,N-1阶FIR滤波器要用N个系数描述,通常,需要N个乘法器和N-1个两输入加法器才能实现。不难发现,乘法器的系数正好是传输函数的系数,因此,该结构且称为直接型结构。 对于系数对称的FIR线性
4、相位滤波器,可将式(1)写成如下形式: 系数对称的改进型FIR滤波器的结构如图1(b)所示。该结构把系数对称(相同或相反)的抽头合并之后再作乘法,这样可使乘法器数量降为原有的一半,但也增加了额外的加法器。图1FIR滤波器结构 2设计方法与指标 FDATool是Matlab信号处理工具箱里专用的滤波器设计分析工具,该工具的主要作用是按照设计指标提取滤波器系数。用FDATool设计数字滤波器的关键在于滤波器类型、窗函数、滤波器阶数、截止频率等参数的选择。其中窗函数用于决定阻带衰减和过渡带带宽,常用的窗函数有矩形窗、汉宁窗、海明窗和布莱克曼窗。矩形窗和汉
5、宁窗阻带衰减较小,而布莱克曼窗过渡带较大,相对来说,海明窗更符合设计要求,它的最小阻带可以达到54.5dB,归一化过渡带带宽为3.11π/M(滤波器阶数N=2M+1)。针对声波测井信号,设计时应进行表1所列的参数设置。表1滤波器参数选择 图2所示是该滤波器的幅频和相频响应曲线,该曲线在通带内保持线性相位,阻带衰减大于52dB,过渡带带宽为1.65kHz。抽头系数可以在工具箱中量化为定点整型数据,以便在FPGA实现阶数为127的滤波器,该滤波器一共有128个系数。对于阶数较大的滤波器来说,其量化对阻带衰减和过渡带的影响极小。图2滤波器幅频和相频响应特性曲
6、线 3基于FPGA的滤波器设计 用FPGA设计FIR滤波器的关键在于如何处理占用大量资源的乘法单元。分布式算法(DA)的提出可将乘法运算转换为移位相加运算,从而节约硬件资源。若令Hk为滤波器系数,xk(n)为n时刻的采样输入,y(n)为n时刻的系统响应,那么,式(1)就可以等效于下式: 把数据的源数据格式规定为2的补码形式,则有: 式中,xkb(n)为二进制数,可取值为0或1;xk0(n)为符号位,为1表示数据为负,为0表示数据为正。因此,将(4)式代入(3)式可得: 式(5)的形式被称为分布式算法。可以看出,方括号内表示输入变量的一个数据位
7、和所有滤波器抽头系数H0~HN的每一位进行“与”运算并求和。而指数部分则说明了求和结果的位权,整数乘以2b就是左移b位,对此可以通过硬件连线来实现,而不占用逻辑资源。这样就可以通过建立查找表来实现方括号中的运算。查找表可用所有输入变量的同一位进行寻址,这便是基于查找表的分布式算法(LUT-DA)。 LUT-DA算法的查找表大小为B·2Nbits,其中B为输入数据的位宽,N为滤波器阶数。随着滤波器阶数的增加,查找表大小是2的指数增长;当B为16,N为128时,查找表的大小已经不可想象。故将查找表分割成多个子表,可以有效解决这个问题,这也衍生了比较有效的串
8、行LUT-DA算法和并行LUT-DA算法,但两者都有不足的地方。对于串行结构,要
此文档下载收益归作者所有