您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > 实验5FIR滤波器设计与实现
实验5FIR滤波器设计与实现以下为参考中文实验指导,原文请参见:\GuideSlide\DSP_Primer\chinese\print下:Xilinx_DSP_workbook_A4.pdf5.FIR滤波器在这一部分中,我们将利用多种不同方法实现FIR滤波器。为了说明问题,首先来看一下如下图所示的简单的四抽头FIR滤波器:滤波器的系数按如下选择:w0=-10,w1=20,w2=50,w3=80[5.1]这些系数并不是针对某个具体的频率响应而设计的,如此选择只是为了说明问题。5.1.字长增长为了说明字长效应的影响,我们当然只能选择有限精度的信号。在本例中,我们让输入信号为2位整数。因此信号x[k]的范围在-2和1之间。在下面各实验中,我们将考虑滤波器系数为8位的情况,即w的范围在-128和+127之间实验5.1简单FIR滤波器打开以下系统:\filter\cut_set\FIR1\FIR1.mdl(a)在上图中画出关键路径,并回答在关键路径上共有多少乘法单元和加法单元。答:(b)运行该系统并在示波器中观察其冲激响应。(c)观察加法链上的字长变化并验证字长由8位增长到10位。(d)使用SystemGenerator模块生成所需ISE工程文件。打开ISE工程,对该设计经行时序模拟以及布局与布线(Place&Route),然后完成下列表格。ReportResultValuesPlaceandRouteReportNumberofBUFGXMUXsNumberofExternalIOBsNumberof18x18multipliersNumberofslicesPostplace&routestatictimingreportMinimumPeriodMaximumFrequency(注意在本例中并没有使用到内嵌乘法器)实验5.2时序变更(Retiming)打开以下系统:\filter\cut_set\FIR2\FIR2.mdl对图中上面的系统应用cutsets分割得到的割集进行适当变换便得到了下面的系统。变换后的系统的关键路径长度被大大缩减。但同时需要注意的是,系统的延迟增加了。(a)运行该系统并在示波器中观察其冲激响应。可以看出该系统与之前的系统相比其关键路径大大缩短。新系统的关键路径长度是多少?答:(b)使用SystemGenerator模块生成所需ISE工程文件。打开ISE工程,对该设计经行时序模拟以及布局与布线(Place&Route),然后完成下列表格。ReportResultValuesPlaceandRouteReportNumberofBUFGXMUXsNumberofExternalIOBsNumberof18x18multipliersNumberofslicesPostplace&routestatictimingreportMinimumPeriodMaximumFrequency得益于更短的关键路径长度,该系统与之前系统相比运行速度要高出许多,但同时硬件开销增加了。实验5.3转置FIR滤波器打开以下系统:\filter\cut_set\fir_transpose\fir_transpose.mdl(a)运行该系统并在示波器中观察其冲激响应。该转置FIR滤波器的延迟(关键路径长度)是多少?答:(b)使用SystemGenerator模块生成所需ISE工程文件。打开ISE工程,对该设计经行时序模拟以及布局与布线(Place&Route),然后完成下列表格。ReportResultValuesPlaceandRouteReportNumberofBUFGXMUXsNumberofExternalIOBsNumberof18x18multipliersNumberofslicesPostplace&routeMinimumPeriodstatictimingreportMaximumFrequency实验5.4减小转置FIR滤波器的关键路径长度在乘法器后引入管线(Pipeline)延迟可以更进一步的减小转置FIR滤波器的关键路径长度。按照下图所示对下面的系统进行集分割(cutsets):\filter\cut_set\fir_transpose\fir_transpose.mdl(在乘法器后添加延迟/寄存器结构)对修改后的设计新建名为fir_tranpose2的文件:\filter\cut_set\fir_transpose2\fir_transpose2.mdl(a)运行该系统并在示波器中观察其冲激响应。该转置FIR滤波器的延迟(关键路径长度)是多少?答:(b)使用SystemGenerator模块生成所需ISE工程文件。打开ISE工程,对该设计经行时序模拟以及布局与布线(Place&Route),然后完成下列表格。ReportResultValuesPlaceandRouteReportNumberofBUFGXMUXsNumberofExternalIOBsNumberof18x18multipliersNumberofslicesPostplace&routestatictimingreportMinimumPeriodMaximumFrequency该设计相比与之前非管线乘法器的设计结构,速度是否提高?实验5.5不同FIR滤波器的系统开销在该实验中,我们将接触到许多种不同设计结构的FIR滤波器。他们的实现结构包括各种不同组合的LUT,Slice逻辑结构,块乘法器,以及不同类型的延迟线。任何一种滤波器的系数个数都是4,输入数据和滤波器系数的数据宽度设置为8,且仅在最后一级加法单元中引入四舍五入运算。在Simulink中运行各系统并通过placeandroutereports和timingreports比较他们的时序与硬件开销。(i)采用SRL16s延迟线结构的FIR滤波器\filter\fir_srl16\fir_srl16.mdl:ReportResultValuesPlaceandRouteReportNumberofBUFGXMUXsNumberofExternalIOBsNumberof18x18multipliersNumberofslicesPostplace&routestatictimingreportMinimumPeriodMaximumFrequency(ii)采用FF延迟线结构的FIR滤波器\filter\fir_ff\fir_ff.mdl:ReportResultValuesPlaceandRouteReportNumberofBUFGXMUXsNumberofExternalIOBsNumberof18x18multipliersNumberofslicesPostplace&routestatictimingreportMinimumPeriodMaximumFrequency(iii)采用分布式运算核心的FIR滤波器\filter\fir_ff_da\fir_ff_da.mdl:ReportResultValuesPlaceandRouteReportNumberofBUFGXMUXsNumberofExternalIOBsNumberof18x18multipliersNumberofslicesPostplace&routestatictimingreportMinimumPeriodMaximumFrequency(iv)采用块乘法器的FIR滤波器\filter\fir_block\fir_block.mdl:ReportResultValuesPlaceandRouteReportNumberofBUFGXMUXsNumberofExternalIOBsNumberof18x18multipliersNumberofslicesPostplace&routestatictimingreportMinimumPeriodMaximumFrequency(v)采用线性乘加(MAC)和一个块乘法器的FIR滤波器\filter\fir_MAC\fir_MAC.mdl:ReportResultValuesPlaceandRouteNumberofBUFGXMUXsReportNumberofExternalIOBsNumberof18x18multipliersNumberofslicesPostplace&routestatictimingreportMinimumPeriodMaximumFrequency5.2.使用FDAToolBlock设计滤波器XilinxBlockset中包含一个称为FDATool的滤波器设计模块。它在Xilinx模块与Matlab中的信号处理工具箱中起接口作用。如果MatLab中未安装信号处理工具箱则该模块不能正常使用。我们随后将看到,利用FDATool模块能够轻松且快速地设计数字滤波器。FDATool模块在一般情况下与FIR滤波器模块一起使用,利用FDATool设计好的滤波器系数直接可用于FIR滤波器模块上。在下面的几个实验中我们将看到它的使用方法。此外,设计好的滤波器将在XUPV2P板上通过硬件协同模拟的方式进行验证。在硬件协同模拟期间,SystemGenerator设计结果和硬件设计结果将可以使用相同的输入数据,并通过两者在同一时刻的输出结果经行对比分析。实验5.6设计低通FIR滤波器在这个实验中我们将使用FDATool工具设计一个低通FIR滤波器。(a)打开以下系统:\FDA_block\FDA_cosim.mdl(b)打开FDATool模块并查看参数值。(c)按以下值设计一下滤波器参数:单位:MhzFs:1.5(1.5Mhz采样频率)Fpass:0.2(200kHz通带频率)Fstop:0.3(300kHz阻带频率)(d)在“DesignFilter”按钮上。此时幅度响应窗口中的图形应该发生变化并且滤波器的阶数(Order值)为38。(e)在按钮上查看滤波器的冲击响应。窗口中应显示如下图所示的冲击响应。(f)在关闭FDATool窗口前浏览其它参数。实验5.7将设计好的系数用于FIR模块为了要将设计好的系数用于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的Chirp(线性扫频)信号。你将看到处于300kHz频率范围完的频谱部分被极大的衰减(红色)。很明显红色的信号是滤波器的输出。(b)停止模拟切换输入信号为随机信号源。在开关上完成切换。重新运行该系统,可以观察到滤波器的输出特性与使用FDATool工具设计的特性相一致。实验5.9运行硬件协同模拟注意运行本实验需要使用并行电缆IV(ParallelCableIV)或USB平台电缆(PlatformUSBcable)连接PC至硬件板。不能使用硬件板本身附带的USB电缆。(a)打开SystemGenerator模块然后再Compilation按钮上。展开树形列表,找到如下图所示的XUPVirtex-IIProBoard项并选中。注意XUPVirtexIIPro板所需的硬件板支持文件(boardsupportfile)必须事先生成并安装到一下位置:C:\MATLAB704\toolbox\xilinx\sysgen\plugins\compilation\HardwareCo-Simulation\Digilent\XUP_Virtex_II_Pro(b)其它选
本文标题:实验5FIR滤波器设计与实现
链接地址:https://www.777doc.com/doc-2530711 .html