位置:51电子网 » 技术资料 » 其它综合

FIR数字滤波器分布式算法的原理及FPGA实现

发布时间:2008/5/29 0:00:00 访问次数:328

摘要:在利用fpga实现数字信号处理方面,分布式算法发挥着关键作用,与传统的乘积-积结构相比,具有并行处理的高效性特点。详细研究了基于fpga、采用分布式算法实现fir数字滤波器的原理和方法,并通过xilinx ise在modelsim下进行了仿真。

关键词:分布式算法 dalut fpga fir

数字滤波器正在迅速地代替传统的由r、l、c元件和运算放大器组成的模块滤波器并且日益成为dsp的一种主要处理环节。fpga也在逐渐取代asic和pdsp,用作前端数字信号处理的运算(如:fir滤波、cordic算法或fft)。乘累加运算是实现大多数dsp算法的重要途径,而分布式算法则能够大大提高乘累加运算的效能。

1 传统的乘累加结构fir数字滤波器基本理论

fir滤波器被称为有限长脉冲响应滤波器,与iir数字滤波器相对应,它的单位脉冲响应h(n)只有有限个数据点。输入信号经过线性时不变系系统输出的过程是一个输入信号与单位脉冲响应进行线性卷积的过程,即:

式中,x(n)是输入信号,y(n)是卷积输出,h(n)是系统的单位脉冲响应。可以看出,每次采样y(n)需要进行l次乘法和l-1次加法操作实现乘累加之和,其中l是滤波器单位脉冲响应h(n)的长度。可以发现,当l很大时,每计算一个点,则需要很长的延迟时间。

2 乘累加运算的位宽分配

dsp算法最主要的就是进行乘累加运算。假设采样信号的位宽用n来表示,则n位与n位的乘累结果需要2n位的寄存器来保存;如果两个操作数都是有符号数,则乘积只有2n-1个有效位,因为产生了两个符号位。

为了使累加器的结果不产生溢出,需要对累加器进行冗余设计,也就是说要在累加器2n的位宽上多设计出k位,累加器的长度m计算方式如下(l为滤波器的长度):

对于无符号数:m=2n+k=2n+log2 l

对于有符号数:m=2n=k=2n+log2 l-1

3 乘累加运算的分布式算法原理分析

得益于xilinx fpga查找表结构的潜能,分布式算法在滤波器设计方面显示出了很高的效率,自20世纪90年代初以来越来越受到人们的重要。分布式算法是基于查找表的一种计算方法,在利用fpga实现数字信号处理方面发挥着重要的作用,可以大大提高信号的处理效率。它主要应用于数字滤波、频率转换等数字信号处理的乘累加运算。

分布式算法推导如下:

设ak是已知常数(如滤波器系数、fft中的正弦/余弦基本函数等),xk(n)是变量,可以看作是n时刻的第k个采样输入数据,y(n)代表n时刻的系统响应。那么它们的内积为:

其中,xk(n)变量可以写成下面的格式:

式中,b为数据格式的字长,xkb是变量的二进制位,只有“0”和“1”两种状态。将(2)式代入(1)式得:

4 fpga实现过程中查找表的构造方法

根据以上论述,括号中的每一乘积项代表着输入变量的某一位与常量的二进制“与”操作,加号代表着算术和操作,指数因子对括号中的值加权。如果事先构造一个查找表,该表存储着括号中所有可能的组合值,就可以通过所有输入变量相对应位的组合向量(xnb,x(n-1)b,...x1b)对该表进行寻址,该查找表称为dalut。dalut的构造规则如表1所示。

5 采用分布式算法实现fir数字滤波器

为了说明问题,以一个三个系数的fir数字滤波器为例设计分布式算法,字宽也设置为三位。设fir数字滤波器系数为:h(0)=5,h(1)=2,h(2)=3。

在进行fpga设计时,该表以组件component形式构建,设置为rom结构,提供输入寻址端口table_in[2..0],输出端口tab

摘要:在利用fpga实现数字信号处理方面,分布式算法发挥着关键作用,与传统的乘积-积结构相比,具有并行处理的高效性特点。详细研究了基于fpga、采用分布式算法实现fir数字滤波器的原理和方法,并通过xilinx ise在modelsim下进行了仿真。

关键词:分布式算法 dalut fpga fir

数字滤波器正在迅速地代替传统的由r、l、c元件和运算放大器组成的模块滤波器并且日益成为dsp的一种主要处理环节。fpga也在逐渐取代asic和pdsp,用作前端数字信号处理的运算(如:fir滤波、cordic算法或fft)。乘累加运算是实现大多数dsp算法的重要途径,而分布式算法则能够大大提高乘累加运算的效能。

1 传统的乘累加结构fir数字滤波器基本理论

fir滤波器被称为有限长脉冲响应滤波器,与iir数字滤波器相对应,它的单位脉冲响应h(n)只有有限个数据点。输入信号经过线性时不变系系统输出的过程是一个输入信号与单位脉冲响应进行线性卷积的过程,即:

式中,x(n)是输入信号,y(n)是卷积输出,h(n)是系统的单位脉冲响应。可以看出,每次采样y(n)需要进行l次乘法和l-1次加法操作实现乘累加之和,其中l是滤波器单位脉冲响应h(n)的长度。可以发现,当l很大时,每计算一个点,则需要很长的延迟时间。

2 乘累加运算的位宽分配

dsp算法最主要的就是进行乘累加运算。假设采样信号的位宽用n来表示,则n位与n位的乘累结果需要2n位的寄存器来保存;如果两个操作数都是有符号数,则乘积只有2n-1个有效位,因为产生了两个符号位。

为了使累加器的结果不产生溢出,需要对累加器进行冗余设计,也就是说要在累加器2n的位宽上多设计出k位,累加器的长度m计算方式如下(l为滤波器的长度):

对于无符号数:m=2n+k=2n+log2 l

对于有符号数:m=2n=k=2n+log2 l-1

3 乘累加运算的分布式算法原理分析

得益于xilinx fpga查找表结构的潜能,分布式算法在滤波器设计方面显示出了很高的效率,自20世纪90年代初以来越来越受到人们的重要。分布式算法是基于查找表的一种计算方法,在利用fpga实现数字信号处理方面发挥着重要的作用,可以大大提高信号的处理效率。它主要应用于数字滤波、频率转换等数字信号处理的乘累加运算。

分布式算法推导如下:

设ak是已知常数(如滤波器系数、fft中的正弦/余弦基本函数等),xk(n)是变量,可以看作是n时刻的第k个采样输入数据,y(n)代表n时刻的系统响应。那么它们的内积为:

其中,xk(n)变量可以写成下面的格式:

式中,b为数据格式的字长,xkb是变量的二进制位,只有“0”和“1”两种状态。将(2)式代入(1)式得:

4 fpga实现过程中查找表的构造方法

根据以上论述,括号中的每一乘积项代表着输入变量的某一位与常量的二进制“与”操作,加号代表着算术和操作,指数因子对括号中的值加权。如果事先构造一个查找表,该表存储着括号中所有可能的组合值,就可以通过所有输入变量相对应位的组合向量(xnb,x(n-1)b,...x1b)对该表进行寻址,该查找表称为dalut。dalut的构造规则如表1所示。

5 采用分布式算法实现fir数字滤波器

为了说明问题,以一个三个系数的fir数字滤波器为例设计分布式算法,字宽也设置为三位。设fir数字滤波器系数为:h(0)=5,h(1)=2,h(2)=3。

在进行fpga设计时,该表以组件component形式构建,设置为rom结构,提供输入寻址端口table_in[2..0],输出端口tab

相关IC型号

热门点击

 

推荐技术资料

罗盘误差及补偿
    造成罗盘误差的主要因素有传感器误差、其他磁材料干扰等。... [详细]
版权所有:51dzw.COM
深圳服务热线:13751165337  13692101218
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!