基于DA算法的FIR数字滤波器的FPGA设计

时间: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字,全部文档内容请下载后查看。喜欢就下载吧 ……

基于DA算法的FIR数字滤波器的FPGA设计.doc 将本文的Word文档下载到电脑

    精彩图片

    热门精选

    大家正在看

    × 游客快捷下载通道(下载后可以自由复制和排版)

    限时特价:7 元/份 原价:20元

    支付方式:

    开通VIP包月会员 特价:29元/月

    注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
    微信:fanwen365 QQ:370150219