6.5.1 并行FIR滤波器
本的并行FIR滤波器架构,如图7-27所示,称其为直接形式类型I。这个结构实现了通用FIR滤波器的乘积和形式,见式(7-21)。数据的历史记录存储在单独的寄存器中,这些寄存器在架构的顶部链接在一起。每个时钟周期生成一个全新的结果,而且所有的乘法和所需的算法同时进行。并行FIR滤波器的最大输入采样率等于时钟速率。

图6-27 直接式类型I滤波器
转置型FIR滤波器是并行乘法器直接型FIR滤波器结构的转置变形。采样数据同时进入乘法器,乘法运算在同一个时钟周期内,同时完成乘法运算。通过流水线的加法器链将乘积结果流水相加,得到滤波输出。

图6-28 转置型FIR滤波器
基于并行乘法器脉动型FIR滤波器结构是基于并行乘法器直接型I FIR滤波器的优化模型,如图7-29所示。它与转置型FIR滤波器结构一样使用加法器链,只是系数安排刚好与转置型相反;而与直接型相比,系数排列相同。采样数据保存在作为数据缓存和时间延时器的寄存器链中,每个寄存器将采样数据传递给各自的乘法器,分别与各自的滤波器系数相乘,乘积结果通过加法器链流水相加,最后得到滤波输出。

图6-29 脉动型FIR滤波器
6.5.2 半并行FIR滤波器
选择不同的结构来实现FIR滤波器,都有各自的优缺点,因此在考虑系统处理速度要求和系统输入扇入的情况下,必须合理选择FIR滤波器结构。乘累加结构在很大程度上能够节省硬件资源,但造成滤波器要在多时钟周期后才有输出,处理速度很慢,不能满足对高速系统的要求。并行乘法器结构尽管处理速度提高了,但是大量地耗费硬件资源,造成设计成本很高。对于某些系统,对信号处理速度要求不是很高,那么使用高速的并行乘法器就显得很不经济了。因此在系统要求的处理速度高于乘累加结构速度,但又成倍低于并行乘法器结构时,可以采用基于乘法器的半并行FIR滤波器结构。其原理就是将乘累加结构和三种并行结构中的一种结合起来,组合成满足自己系统要求的滤波器结构。下图7-30给出其中的一种组合形式。

图6-30 半并行FIR滤波器
图7-30中,系数存储器存放FIR滤波器系数,SRL存放采样数据,使得进入乘法器的采样数据与滤波器系数对应。同样,转置型FIR合也可构成半并行FIR滤波器,控制电路模块控制与乘累加结构相结合也可构成半并行FIR滤波器。转置型结构有较小的输出流水延迟,如图6-28,从第一个数据进入到第一个滤波输出,仅要3个流水时钟,脉动型与直接型都要多个流水时钟,脉动型要 级流水,直接型要 级流水。另一方面,转置型结构扇入系数较大,不利于更高阶扩展,而直接型与脉动在扇入系数方面不会对扩展带来影响。
6.5..3 FIR Complier IP Core的使用
SE 9.1.03i版中,提供了高性能FIR滤波器的IP Core(有Distributed Arithmetic FIR Filter、FIR Complier、MAC FIR Filter三类,其中FIR Complier的功能最为强大,包含其余两个)供设计人员调用,可以完成多相抽取、多相插值、半带插值、半带抽取、希尔伯特变换和插值滤波器,具有乘加模式和分布式模式两种结构。本小节主要介绍FIR Complier,而其它两个的使用方法与此类似。FIR Complier3.0所支持的抽头数从2到1024,位宽从1到32比特,并且支持多通道,最多可以同时支持256个通路,能够自动发掘系数的对称性来节省资源。其用户界面如图7-31所示。

图6-31 FIR滤波器IP Core的用户界面
FIR滤波器的IP Core具有丰富的控制信号,其详细说明如下所示:
SCLR:输入信号,同步复位信号,高有效。可以重置滤波器内部的状态机,但并不清空数据寄存器的内容,是IP Core的可选管脚。
CLK:输入信号,模块的工作时钟。
CE:输入信号,模块时钟使能信号,是IP Core的可选管脚。
DIN:输入信号,滤波器的输入数据,通过时分复用的方式来提供多通道的数据输入。
ND:输入信号,新数据指示信号,高有效。只有当ND信号为高时,输入数据DIN才会被送进FIR的计算内核;当RFD为低时,将忽略任何输入信号,ND指示无效。
FILT_SEL:输入信号,用于多通路滤波器的模式下片选滤波器。
COEF_LD:输入信号,加载系数指示信号,表明开始更换一组新的滤波器系数。
COEF_WE:输入信号,系数写有效信号。
COEF_DIN:输入信号,系数输入通路。
DOUT:输出信号,滤波器的输出,其位宽由滤波器的精度、抽头数和系数的位宽决定,在IP Core中总是被配置成全精度以避免溢出。
RDY:输出信号,滤波器输出有效指示信号。
CHAN_IN:输出信号,用于指示当前输入数据的通道标号。
CHAN_OUT:输出信号,用于指示当前数据的通道标号。
DOUT_I:输出信号,仅在选择希尔伯特变换时有效,输出数据的通相分量。
DOUT_Q:输出信号,仅在选择希尔伯特变换时有效,输出数据的正交分量。
例7-4 使用IP Core实例化一个抽头数为16、位宽为16位的可重配置低通滤波器模块。
由于该IP Core的步骤较多,下面对其使用进行详细说明。首先新建IP core,选择“Digital Signal Processing Filter FIR Complier”,然后确定。选择滤波器结构为乘加结构、通道数为1、类型为单速率、模块工作时钟为122.88MHz、采样速率为30.72MHz。此外,还可以将滤波器配置成分布式结构,甚至多速率的抽取和插值滤波器。
然后单击“Next”,进入下一页,其界面如图7-32所示。选择输入数据为有符号数、位宽为16比特,选中“use reloadable coefficiencts”选项,这样该滤波器才是可重配置的,且将系数选为有符号数、对称结构。然后单击“Browse”按钮,从计算机硬盘上加载滤波器的初始系数配置文件(后缀仍为.coe)。
如果系数文件格式错误,图7-33中的coefficiencts files后面的文本框为路径为红色的,只有添加了正确的配置文件,才会用正常的黑色显示。
然后点击“Next”,则会显示通过COE文件方式所加载的滤波器的幅频响应,如图7-24所示。可以使设计人员直接判断所加载的滤波器是否满足实际要求。
再次单击“Next”,会出现握手信号的选择以及存储器存储器类型选择的界面,如图7-25所示。如果选择存储类型为自动分配,则基本上就结束了本次配置;如果选择手动分配,需要分别为数据和系数指定时利用分布式存储单元还是块RAM资源。
最后点击“Next”,将给出本次配置的参数列表,如果有不对支出,单击“Back”返回相应页面进行修改;如果确认无误,点击
“Finish”,开始实例化IP Core,生成相应的.xco文件。

图6-32 FIR Complier的幅频特性显示界面

图6-33 FIR Complier的存储器配置界面
经过例化FIR Complier,生成的Verilog接口为:
module fir_filter_16(DIN, COEF_LD, COEF_WE, COEF_DIN, CLK, RFD, DOUT, RDY);
// synthesis black_box
input [15:0]DIN;
input [15:0]COEF_LD;
input COEF_WE;
input [15:0] COEF_DIN;
input CLK;
output RFD;
output [35:0] DOUT;
output RDY;
……
endmodule
在使用时,直接调用fir_filter模块即可。
module fir_filter(DIN, COEF_LD, COEF_WE, COEF_DIN, CLK, RFD, DOUT, RDY);
input [15:0]DIN;
input [15:0]COEF_LD;
input COEF_WE;
input [15:0] COEF_DIN;
input CLK;
output RFD;
output [35:0] DOUT;
output RDY;
fir_filter_16 fir_filter_16(
.DIN(DIN), .COEF_LD(COEF_LD), .COEF_WE(COEF_WE),
.COEF_DIN(COEF_DIN), .CLK(CLK), .RFD(RFD), .DOUT(DOUT), .RDY(RDY));
endmodule
上述程序经过综合后,得到如图6-34所示的RTL级结构图。

图6-34 FIR滤波器模块的RTL结构图


