1、实验5 FIR滤波器设计与实现 作者: 日期:14 个人收集整理 勿做商业用途实验5 FIR滤波器设计与实现以下为参考中文实验指导,原文请参见:GuideSlideDSP_Primerchineseprint下:Xilinx_DSP_workbook_A4.pdf5. FIR滤波器在这一部分中,我们将利用多种不同方法实现FIR滤波器。为了说明问题,首先来看一下如下图所示的简单的四抽头FIR滤波器:滤波器的系数按如下选择:w0 = 10,w1 = 20,w2 = 50,w3 = 80 5。1这些系数并不是针对某个具体的频率响应而设计的,如此选择只是为了说明问题。5.1. 字长增长为了说明字长效应
2、的影响,我们当然只能选择有限精度的信号。在本例中,我们让输入信号为2位整数。因此信号xk的范围在-2和1之间。在下面各实验中,我们将考虑滤波器系数为8位的情况,即w的范围在128和+127之间实验 5.1 简单FIR滤波器打开以下系统: filtercut_setFIR1FIR1。mdl(a) 在上图中画出关键路径,并回答在关键路径上共有多少乘法单元和加法单元。答:(b) 运行该系统并在示波器中观察其冲激响应。(c) 观察加法链上的字长变化并验证字长由8位增长到10位.(d) 使用System Generator模块生成所需ISE工程文件。打开ISE工程,对该设计经行时序模拟以及布局与布线(P
3、lace & Route),然后完成下列表格。ReportResultValuesPlace and Route ReportNumber of BUFGXMUXsNumber of External IOBsNumber of 18 x 18 multipliersNumber of slicesPost place route static timing reportMinimum PeriodMaximum Frequency(注意在本例中并没有使用到内嵌乘法器)实验 5.2 时序变更(Retiming)打开以下系统: filtercut_setFIR2FIR2.mdl对图中上面的系统应
4、用cut sets分割得到的割集进行适当变换便得到了下面的系统。变换后的系统的关键路径长度被大大缩减.但同时需要注意的是,系统的延迟增加了。(a) 运行该系统并在示波器中观察其冲激响应。可以看出该系统与之前的系统相比其关键路径大大缩短。新系统的关键路径长度是多少?答:(b) 使用System Generator模块生成所需ISE工程文件。打开ISE工程,对该设计经行时序模拟以及布局与布线(Place Route),然后完成下列表格。ReportResultValuesPlace and Route ReportNumber of BUFGXMUXsNumber of External IOBs
5、Number of 18 x 18 multipliersNumber of slicesPost place route static timing reportMinimum PeriodMaximum Frequency得益于更短的关键路径长度,该系统与之前系统相比运行速度要高出许多,但同时硬件开销增加了。实验 5.3 转置FIR滤波器打开以下系统: filtercut_setfir_transposefir_transpose.mdl(a) 运行该系统并在示波器中观察其冲激响应。该转置FIR滤波器的延迟(关键路径长度)是多少?答:(b) 使用System Generator模块生成所需
6、ISE工程文件。打开ISE工程,对该设计经行时序模拟以及布局与布线(Place & Route),然后完成下列表格。ReportResultValuesPlace and Route ReportNumber of BUFGXMUXsNumber of External IOBsNumber of 18 x 18 multipliersNumber of slicesPost place & route static timing reportMinimum PeriodMaximum Frequency实验 5.4 减小转置FIR滤波器的关键路径长度在乘法器后引入管线(Pipeline)延迟
7、可以更进一步的减小转置FIR滤波器的关键路径长度.按照下图所示对下面的系统进行集分割(cut sets): filtercut_setfir_transposefir_transpose.mdl(在乘法器后添加延迟/寄存器结构)对修改后的设计新建名为fir_tranpose2的文件: filtercut_setfir_transpose2fir_transpose2。mdl(a) 运行该系统并在示波器中观察其冲激响应。该转置FIR滤波器的延迟(关键路径长度)是多少?答:(b) 使用System Generator模块生成所需ISE工程文件.打开ISE工程,对该设计经行时序模拟以及布局与布线(P
8、lace & Route),然后完成下列表格。ReportResultValuesPlace and Route ReportNumber of BUFGXMUXsNumber of External IOBsNumber of 18 x 18 multipliersNumber of slicesPost place & route static timing reportMinimum PeriodMaximum Frequency该设计相比与之前非管线乘法器的设计结构,速度是否提高?实验 5.5 不同FIR滤波器的系统开销在该实验中,我们将接触到许多种不同设计结构的FIR滤波器。他们的实
9、现结构包括各种不同组合的LUT,Slice逻辑结构,块乘法器,以及不同类型的延迟线.任何一种滤波器的系数个数都是4,输入数据和滤波器系数的数据宽度设置为8,且仅在最后一级加法单元中引入四舍五入运算。在Simulink中运行各系统并通过place and route reports和timing reports比较他们的时序与硬件开销。(i) 采用SRL16s延迟线结构的FIR滤波器 filter fir_srl16 fir_srl16.mdl:ReportResultValuesPlace and Route ReportNumber of BUFGXMUXsNumber of Externa
10、l IOBsNumber of 18 x 18 multipliersNumber of slicesPost place route static timing reportMinimum PeriodMaximum Frequency(ii) 采用FF延迟线结构的FIR滤波器 filter fir_ff fir_ff.mdl:ReportResultValuesPlace and Route ReportNumber of BUFGXMUXsNumber of External IOBsNumber of 18 x 18 multipliersNumber of slicesPost pl
11、ace route static timing reportMinimum PeriodMaximum Frequency(iii) 采用分布式运算核心的FIR滤波器 filter fir_ff_da fir_ff_da。mdl:ReportResultValuesPlace and Route ReportNumber of BUFGXMUXsNumber of External IOBsNumber of 18 x 18 multipliersNumber of slicesPost place route static timing reportMinimum PeriodMaximum
12、 Frequency(iv) 采用块乘法器的FIR滤波器 filter fir_block fir_block.mdl:ReportResultValuesPlace and Route ReportNumber of BUFGXMUXsNumber of External IOBsNumber of 18 x 18 multipliersNumber of slicesPost place route static timing reportMinimum PeriodMaximum Frequency(v) 采用线性乘加(MAC)和一个块乘法器的FIR滤波器 filter fir_MAC
13、fir_MAC.mdl:ReportResultValuesPlace and Route ReportNumber of BUFGXMUXsNumber of External IOBsNumber of 18 x 18 multipliersNumber of slicesPost place & route static timing reportMinimum PeriodMaximum Frequency5.2. 使用FDATool Block设计滤波器Xilinx Blockset中包含一个称为FDATool的滤波器设计模块。它在Xilinx模块与Matlab中的信号处理工具箱中起
14、接口作用。如果MatLab中未安装信号处理工具箱则该模块不能正常使用。我们随后将看到,利用FDATool模块能够轻松且快速地设计数字滤波器。FDATool模块在一般情况下与FIR滤波器模块一起使用,利用FDATool设计好的滤波器系数直接可用于FIR滤波器模块上.在下面的几个实验中我们将看到它的使用方法。此外,设计好的滤波器将在XUPV2P板上通过硬件协同模拟的方式进行验证。在硬件协同模拟期间,System Generator设计结果和硬件设计结果将可以使用相同的输入数据,并通过两者在同一时刻的输出结果经行对比分析.实验 5.6 设计低通FIR滤波器在这个实验中我们将使用FDATool工具设计
15、一个低通FIR滤波器.(a) 打开以下系统: FDA_block FDA_cosim . mdl(b) 打开FDATool模块并查看参数值。(c) 按以下值设计一下滤波器参数:单位:MhzFs : 1.5(1。5Mhz采样频率)Fpass : 0。2(200kHz通带频率)Fstop : 0.3(300kHz阻带频率)(d) 在“Design Filter”按钮上。此时幅度响应窗口中的图形应该发生变化并且滤波器的阶数(Order值)为38。(e) 在按钮上查看滤波器的冲击响应。窗口中应显示如下图所示的冲击响应。(f) 在关闭FDATool窗口前浏览其它参数。实验 5.7 将设计好的系数用于FI
16、R模块为了要将设计好的系数用于FIR模块,我们必须要用到MatLab函数。该函数名称为xlfda_numerator(MyFilter)。调用该函数将返回FDATool模块(模块名称为MyFilter)的传递函数的分子(FIR滤波器的传递函数分母为1)。注意模块的名称是可以改变的.(a) 打开FIR模块并在系数栏输入:xlfda_numerator(MyFilter)并单击键盘回车。此时FIR窗口将关闭并且FIR模块上将显示它有39个抽头(38阶)。(b) 重新打开FIR模块并输入以下值然后关闭窗口:实验 5.8 运行系统并观察实际运行中的滤波器(a) 现在运行该系统,输入采用0 750kHz
17、的Chirp(线性扫频)信号。你将看到处于300kHz频率范围完的频谱部分被极大的衰减(红色)。很明显红色的信号是滤波器的输出.(b) 停止模拟切换输入信号为随机信号源。在开关上完成切换。重新运行该系统,可以观察到滤波器的输出特性与使用FDATool工具设计的特性相一致。实验 5.9 运行硬件协同模拟注意运行本实验需要使用并行电缆IV(Parallel Cable IV)或USB平台电缆(Platform USB cable)连接PC至硬件板.不能使用硬件板本身附带的USB电缆。(a) 打开System Generator模块然后再Compilation按钮上。展开树形列表,找到如下图所示的X
18、UP Virtex-II Pro Board项并选中。注意XUP Virtex II Pro板所需的硬件板支持文件(board support file)必须事先生成并安装到一下位置:C:MATLAB704toolboxxilinxsysgenpluginscompilationHardware Co-SimulationDigilentXUP_Virtex_II_Pro(b) 其它选项保持其默认值即可。Generate按钮。此时硬件设计已经完成生成,合成,映射,布局和布线步骤,同是一串比特流也被生成.最后将弹出一个窗口显示已经生成的System Generator模块。(c) 将该模块拷贝粘贴纸原始设计中,并将其按如下图所示进行连线。(d) 连线完成后,打开JTAG CO-Sim模块,可以看到它指向由该设计的生成一个比特流文件(bit File)。当开始模拟时,该比特流文件将被装载至硬件板上同时配置FPGA.(e) 接通板子电源并运行模拟过程。在FPGA配置期间请耐心等待。最终可以看到两个模拟过程被同时进行。注意在模拟期间,Simulink开关可以被切换至任意一种输入信号。