当前位置:首页 >> 信息与通信 >>

FIR滤波器的FPGA实现方法


FIR 滤波器的 FPGA 实现方法
时间:2011-02-12 14:12:45 来源:现代电子技术 作者:徐远泽,戴立新,高晓蓉,王 黎,郭建强

在数字信号处理系统中,有限脉冲响应(finite impulse response,FIR)数字滤波器 是一个非常重要的基本单元。近年来,由于 FPGA 具有高速度、高集成度和高可靠性的特点 而得到快速发展。随着现代数字通信系统对于高精度、高处理速度的需求,越来越多的研究 转向采用 FPGA 来实现 FIR 滤波器。而对于 FIR 滤波器要充分考虑其资源与运行速度的合理 优化,各种不同的 FIR 滤波结构各具优缺点,在了解各种结构优 缺点后才能更好地选择合适结构来实现 FIR 滤波。 1 FIR 数字滤波器 FIR 数字滤波器由有限个采样值组成,设计中在满足幅值特性时,还能保证精确、严格 的相位特性,因此在信号处理等领域得到广泛的应用。 对于 FIR 滤波器,其输出 y(n)表示为如下形式:

式中:N 为滤波器的阶数(或抽头数);x(i)表示第 i 时刻的输入样本;h(i)为 FIR 滤波 器的第 i 级抽头系数。 由于 FIR 滤波器的冲击响应为一个有限序列,其系统函数可表示为:

FIR 滤波器的基本结构如图 1 所示。FIR 滤波器只在原点处存在极点,所以这使得 FIR 滤波器具有全局稳定性。 同时 FIR 滤波器满足线性相位条件, 其冲击响应序列为实数且满足 奇对称或偶对称条件,即:

2 实现方法 运用 FPGA 来实现 FIR 数字滤波器的结构多种多样,但是主要有以下几类:串行结构、 并行结构、转置型结构、基于 FFT 算法结构、分布式结构。其他类型的 FIR 滤波器结构都可 以由以上几种结构衍生而来。 2.1 串行结构 由表达式(1)可知,FIR 滤波器实质是做一个乘累加运算,其滤波器的阶数决定了一次 乘累加的次数,其串行结构如图 2 所示。

串行结构的 FIR 滤波器结构简单, 硬件资源占用少, 只需要复用 1 个乘法器和 1 个加法 器,所以成本较低。但是,这种结构的 FIR 滤波器要经过多个时钟周期才有输出,同时,内 部时钟周期还受到乘法器运算速度的影响, 所以该结构的 FIR 滤波器处理速度慢, 只适用于 滤波阶数较低且处理速度要求低的系统。 2.2 并行结构 将串行结构的 FIR 滤波器展开就可以得到并行结构的 FIR 滤波器, 并行 FIR 滤波器结构 又称作直接型 FIR 滤波器结构, 这种结构是直接根据图 1 的滤波器结构, 用多个乘法器和加 法器并行实现。通常考虑到其滤波器系数的对称性,先对输入值进行加法运算,再进行乘法 运算,最后累加输出,以此来减少乘法器的个数,其结构如图 3 所示。

并行结构的 FIR 滤波器在 1 个周期内可以完成 1 次滤波, 运行速度快, 虽然利用滤波系 数对称性,但仍要占用大量的乘法器和加法器,特别对于滤波阶数高的滤波器,其资源占用 较多,如对于 256 阶的滤波器,其需要 128 个乘法器来实现。为提高滤波器速度,常引入流 水线结构, 即在每次加法或者乘法运算后加入 1 个寄存器存储数据, 使得滤波器可以运行在 更高的频率上。 2.3 转置型结构 根据转置定理,如果将网络中所有的支路方向倒转,并将输入 x(n)和输出 y(n)相互交 换,则其系统函数 H(z)不变。通过转置定理,将并行结构的 FIR 滤波器变换就可以得到转 置型 FIR 滤波器,其结构如图 4 所示。

基于并行结构的转置型 FIR 滤波器实现了数据的并行输入,在 1 个周期内就能完成 1 次滤波,并且各级结构相同,在每个阶段都可以读出数据,可以对滤波阶数进行扩展或者缩 减,实现任意阶数的滤波器。但是由于基于的是并行结构,便有着并行结构的一些缺点,主 要是对于高阶的滤波器,其资源占用量是巨大的,设计成本高。虽然这样,转置型 FIR 滤波 器仍是应用广泛的一种滤波器。 2.4 基于 FFT 的结构 应用快速傅里叶变换(fast fourier transform,FFT)实现 FIR 滤波器是一种快速实现 滤波算法的重要途径。由式(1)可知,FIR 滤波器的输出 y(n)是输入 x(n)与系统冲击响应序 列 h(n)的卷积, 应用 FFT 可以快速实现卷积变换。 如图 5 所示, 先将输入信号 x(n)通过 FFT 变换为它的频谱采样值 X(k),然后再与 FIR 滤波器的频响采样值 H(k)相乘,H(k)可事先存 放在存储器中,最后再将乘积 X(k)H(k)通过快速傅里叶反变换(IF-FT)还原为时域序列,即 得到输出 y(n)。

为实现 FFT,根据两有限长序列的线性卷积可用其循环卷积代替而不发生混叠,必须选 择循环卷积长度 N≥N1+N2-1,即将 x(n)和 h(n)补零至长度为 N 的序列,即:

在基于 FFT 的 FIR 滤波器结构中,求 X(k),H(k)以及反傅里叶变换 y(n)需要的乘法次 数均为 N/2log2N,而计算 X(k)H(k)需要 N 次乘法,所以基于 FFT 的总乘法次数为 mf=3/ 2Nlog2N+N。由于 h(n)满足式(3)条件,所以直接卷积所需的乘法次数为 md=1/2N1N2。假设

N1=N2,则比较这两种乘法计算量有:

从表 1 可知,当 N1<42 时,FFT 法的运算量小于直接卷积的运算量,当 N1=42 时,FFT 法的运算量与直接卷积的运算量相当, N1>42 时, 法的运算量大于直接卷积的运算量, 当 FFT 并且随着 N1 增加,FFT 法的运算速度越来越快,特别是 N1=8 192 时,FFT 法的运算速度与 直接卷积相比快上将近 100 倍。

2.5 分布式结构 2.5.1 分布式算法原理 分布式算法(distributed arithmetic,DA)于 1973 年就由 Croisier 提出,但是直到 FPGA 出现,才广泛的被应用于 FPGA 中计算乘累积和。 对于有符号数 x(n)可以用下式的补码形式表示:

对于式(7)中的 h(i)xb(n-i)代表着输入数据 x(n-i)的第 i 位与抽头系数 h(i)的乘积, 对于 FIR 滤波器,其系数 h(i)是常数,所以可以事先构造一个查找表。该查找表存储所有

h(i)xb(n-i)的乘积值,通过输入(xb(N-1),xb(N-2),…,xb(0))对该表寻址,然后将查得 的值乘上 2b 后移位累加便得到滤波器输出 y(n)。该查找表构造规则如表 2 所示。

2.5.2 基于分布式算法的 FIR 滤波器结构 基于分布式算法的 FIR 滤波器主要有 3 种结构类型。 (1)第一种结构为串行分布式结构。串行分布式 FIR 滤波器的原理为,首先用所有 N 个 输入量的最低位对 DA 查找表进行寻址查值,得到一个部分积,将部分积右移一位即相当于 除以 2 后放到寄存器中暂存。同时,N 个输入量的次低位开始对 DA 查找表进行寻址查值, 得到另一个部分积, 把该部分积与上一个储存在寄存器中的值进行相加, 相加后的值再右移 一位放到寄存器中。以此重复循环累加,直到所有位数都寻址完 成,注意最高位寻址后的部分积是相减,最后所得到的值就是所需要的结果。 当 N 过大, FIR 滤波器的滤波阶数很高时, 即 采用一个查找表来实现将使得存储查找表 的 ROM 变得十分庞大。为此可采用部分表结构,即将查找表划分为多个部分,N 个输入量的 同一位对应不同的部分表寻址。图 6 所示即为基于 4 输入部分表结构的串行 DA 结构。

(2)第二种结构为并行分布式结构。并行分布式结构就是将 N 个输入量的不同位进行同 时查表,而相同位送入同一个 ROM 寻址,不同位有不同的 ROM。其结构如图 7 所示。

第三种结构为串并结合分布式结构。 它是一种折中方案, 既要求速度不太高又要求资源 占用少。对于串行分布式算法,是一次一位(one bit-at-a-time,1BAAT)查找表,而并行分 布式算法是一次 B 位(B bits-at-a-time)。 所以串并结合分布式算法采用一次多位, 2BAAT, 如 3BA-AT。图 8 所示为 4BAAT 查找表结构图。 图 8 中位数 B 是 4 的倍数,SRL 为移位寄存器。SRL 中第 1 行从右边数第 1 列为数据的 0 位,第 2 列为数据的 1 位,第 3 列为数据的 2 位,第 4 列为数据的 3 位。类似地,第 2 行 右数第 1 列为数据的 4 位,第 2 列为数据的 5 位,第 3 列为数据的 6 位,第 4 列为数据的 7 位。以后各行按相似的数位顺序排列。在第一个时钟周期,数据的 0,4,…,B-4 位同时进 入查找表 ROM 中,查出所要的数据,第二个时钟周期,1,5,…,B-3 位同时进入 ROM 中, 查出所要的数据, 所查得的数据传递给下一级累加器进行累加, 这样依次对剩下的各数据位 进行同样的操作。由于每个块之间相差 4 位,即 16 倍,为了对应位相加,所以乘 16。FIR 滤波器的分布式算法结构比单独用乘法器实现的速度快, 特别是滤波阶数越高, 其优势更加 明显。分布式结构中,串行结构是 1 次查询 1 位,所以对 B 位的数据在不算上移位寄存等的 时间,完成 1 次滤波需要 B 个时钟周期;而并行结构只需要 1 个时钟周期便完成滤波,所以 并行结构是速度最优的结构,但是并行结构需要 B 个 DA 查找表,需要大量的 ROM 来储存, 加大了硬件资源的消耗,特别是阶数越高,硬件规模将十分膨大;串并结构综合两种结构优

势,实现在速度和规模上的协调。实际应用中。需根据系统的要求来选择合适的结构。 3 结语 本文定性地分析了各种 FIR 滤波器的 FPGA 实现方法。对于低阶的 FIR 滤波器可采用串 行结构、 并行结构以及转置型结构来实现, 而并行结构和转置型结构的 FIR 滤波器以牺牲资 源损耗来实现了速度上优势;对于高阶的 FIR 滤波器,基于乘法器结构的串行结构、并行结 构及转置型结构在速度上难以达到高速处理的要求, 而分布式算法将乘法转换为查表和累加 的结构,使得分布式结构的 FIR 滤波器在速度上得到了提高, 但三种不同形式的分布式结构要在综合考虑资源以及速度的基础上进行合理选择; 同样采用 FFT 实现的 FIR 滤波器以减少运算量来获得了速度上的提高, 特别是滤波阶数越高其速度提 升越明显。 现代工程技术领域对滤波系统的带宽、高速、信号的实时性处理等方面要求越来越高, 在运用 FPGA 来实现 FIR 滤波中,基于乘法器结构的 FIR 滤波器无法满足以上要求,而分布 式结构的 FIR 滤波器巧妙地运用 ROM 查找表来实现固定系数的乘累加运算, 避免了乘法运算, 并且在随后的每级加法运算中引入流水线结构,提高了速度。因此采用分布式算法实现 FIR 滤波器是目前研究的热点, 同时无论哪种分布式算法都要使用 ROM 来做查找表, 但是随着滤 波阶数的增加,ROM 的数量将会增加,在进一步提高速度的情况下如何减少 ROM 的数量是今 后亟待解决的问题。 ?


相关文章:
fir滤波器的fpga实现
fir滤波器的fpga实现 - 工学院毕业设计( 论 文) 题专班姓学日 目: 业: 级: 名: 号: 期: FIR 滤波器的 FPGA 实现 指导教师: 20...
基于FPGA的FIR滤波器设计
基于FPGA的FIR滤波器设计 - 长春理工大学毕业设计 摘要 在现代电子系统中,FIR 数字滤波器以其良好的线性特性被广泛使用, 随着可 编程逻辑器件和 EDA 技术的发展,...
基于FPGA的FIR滤波器设计
本文研究的是基于FPGA实现一个16阶的FIR数字低通滤波器的设计。本次设计首先利 用 MATLAB 中滤波器设计工具 FDAtool 工具设计 FIR 滤波器系数,再利用 Matlab 中的...
基于FPGA的FIR滤波器设计与分析
基于FPGA的FIR滤波器设计与分析 - 摘 要 随着科学技术的飞速发展,数字信号处理技术广泛的应用在各种领域中, 而数字滤波技术在数字信号处理中占有极其重要的地位。...
基于FPGA的FIR数字滤波器设计
基于FPGA的FIR数字滤波器设计 - 摘 要 随着数字信号处理技术的不断发展, 数字滤波已成为数字信号处理中的重要内容之一. 以基于 FPGA 的窗函数法设计线性相位 FIR...
基于FPGA的FIR滤波器设计开题报告_图文
基于FPGA的FIR滤波器设计开题报告_电子/电路_工程科技_专业资料。电子与信息工程...目前 FIR 滤波器的实现方法有三种: 利用单片通用数字滤波器集成电路、DSP 器件...
基于FPGA的FIR滤波器的程序设计(8阶)
了逻辑单元的逻辑功能以及各模块之间或模块与 I/O 间的联接方式,并最终决定 2 基于 FPGAFIR 滤波器的程序设计 了 FPGA 所能实现的功能, FPGA 允许无限次...
基于FPGA的FIR滤波器设计
(N-2) 1 沈阳航空航天大学综合课程设计 2.FIR 滤波器的实现方法有多种,通常...FIR 数字滤波器的 FPGA 的实现 工程设计所用的模块有:顶层原理图文件,底层...
基于FPGA的FIR滤波器设计
基于FPGA的FIR滤波器设计 - 由线性系统理论可知,在某种适度条件下,输入到线性系统的一个冲击完全可以表征系统。当我们处理有限的离散数据时,线形系统的响应(包括对...
基于FPGA的FIR滤波器设计与实现 精品
基于FPGA的FIR滤波器设计与实现 精品 - 目录 引言 ... 3 第一章 1.1 FPG...
更多相关标签: