|
摘要:本文提出一种在FPGA器件上实现流水线并行FIR滤波器结构。首先比较了FIR滤波器三种硬件实现所用的资源,然后在理论上推出本文流水线并行结构滤波器的实现方法以及可行性,接着给出了硬件具体实现模块,最后给出了实验结果。实验结果可以看出,这种改进滤波器实现结构的算法可以灵活的处理综合的面积和速度的约束关系,使最后设计达到最优。 关键词:FIR滤波器,VHDL,FPGA,流水线,并行结构 引言 FIR数字滤波器广泛地应用于数字信号处理(DSP)系统,例如通信、数字图像处理、声音信号处理、雷达声纳等系统中。传统的FIR数字滤波器一般采用通用的DSP处理器或者数字信号处理超大规模集成电路。这样使设计不够灵活,很多情况下浪费资源,并且速度不够高。现场可编程逻辑阵列FPGA器件的出现,为FIR数字滤波器的设计提供了一种新的途径。FPGA具有高速、成本低廉、设计周期短及应用灵活等特点。用FPGA实现的数字滤波器内部电路结构透明,实时性好,有利于减小硬件电路的体积,提高工作效率。 DSP处理器的结构决定了实现FIR滤波器主要是串行流水线的运算。虽然流水线提高了资源的利用率也提高了运算速度,但是比较FPGA的纯并行运算结构在运算速度上有很大的逊色,可是这种FPGA纯并行运算结构导致最后综合的面积较大。 本文正是通过在时序上控制滤波器的输出,提出一种在模块内采用并行运算,在模块间采用串行运算的FIR滤波器的算法结构。这种结构可以同时兼顾FPGA综合的速度和面积,从而实现FIR数字滤波器的硬件优化设计。 1.FIR滤波器实现方案的比较 分析12阶FIR滤波器对12个数字通道(每通道16位)进行滤波,这样FIR的系数h(0)~h(11)是可以配置的,即可以作为RAM提前写到滤波器元件中。如果是寄存器传输级设计,有三种设计方案:
方案1.例化12个FIR滤波器,即有12个图1所示的模块并联,即每个通道单独使用一个滤波器; 方案2.所有通道共享同一个例化FIR滤波器,但是这种方案需要的资源也较多(图1); 方案3.共享FIR滤波器,同时共享乘法器和加法器;
图1: FIR滤波器的常用结构 从表1可以看出方案1实现起来较简单,没有控制器,但是需要的资源较多,需要例化9个滤波器;方案3实现的是串行流水线操作,实现资源共享,最节省资源,但是又是最复杂的一种实现方法,同时执行速率最低;一般的工程设计者都是采用方案2。 1.三种方案所用资源比较 乘法器数量 加法器数量 控制器数量 方案1 144 132 0 方案2 12 11 1 方案3 1 11 1 一般在FPGA的应用设计中要考虑的两个最重要的因素是系统的最高速率S和综合所需要的逻辑单元数L。从而我们取指标SLR=lgS/lgL,可见对于同样要求的FIR滤波器设计来说SLR越大,则说明此FIR滤波器的设计效果越好。 本文提出的方法是基于方案2和方案3的一种混合方法。在不增加复杂度的情况下,利用分时复用的方法,在设计的时灵活地设置模块数(即流水线的阶数),采用流水线的并行FIR滤波器的设计。从而在综合面积和速度上同时达到优化,尽量增大SLR值。 2.流水线并行结构FIR滤波器 FIR滤波器的时域的离散方程可以表达为: (1) 希望在上式(1)中可以分成几个模块,在模块内实现并行运算(即模块内实现并行乘加运算),然后在模块间通过控制调度共享模块乘加运算,实现模块间流水线串行运算,整个系统结构共享一个并行模块。因此(1)式可以转换为(2)式 假定流水线为P级,分别为0,1,2,…P-1级,阶数L为流水线级数P的整数倍,那么FIR滤波器可以写为以下形式:
(2) 从上式可以看出,如果在每一项的乘法求和运算都是在一个时钟内通过并行结构完成,那就是模块内实现并行运算,然后每一个模块间通过控制调度共享并行结构模块实现串行流水线操作。 下面针对式(2)分析以下三种情况:
- 当P=1时即结构中没有采用流水线,就成为为全并行运算结构,那么(2)式就退化为(1)式。
- 当PL=L时,即每一个所谓的并行模块只执行一个运算,因此这种运算为纯串行流水线运算结构,(2)式变为(3)式
y(n)=xn()h(0)+x(n-1)h(1)+x(n-2)h(2)+......+x[(n-L--1)]hL(L-1) (3) - 当1<P<L,即为通用的(2)式,即在模块内实现并行运算,在模块间通过调度控制共享并行结构模块实现串行流水线操作。
下一篇链接:FPGA的FIR滤波器实现
上一篇链接:ModelSim下SystemC做设计验证方法和示例
|