1、1第 7 章 FPGA DSP 嵌入式系统设计7.1 设计流程概述DSP(Digital Signal Processing)技术在通信、图像处理增强、数据获取、雷达及视频处理等等领域有着广泛的应用,因此,DSP 的使用也不只存在唯一的方法,而是要根据不同的目的提出不同的解决方案。可编程芯片的 FPGA 逐渐成为这些解决方案中的一个重要的组成部分。预计用于 DSP 的可编程芯片的产量将以平均每年 41.6的比率增长,到2005 年,产量已达到 17.8 亿美元。通常,DSP 算法的实现有两种途径:低速的用于普通目的的可编程 DSP 芯片;高速的用于特定目的的固定功能 DSP 芯片组和 ASIC
2、(Application Specific Integrated Circuit)芯片。而 FPGA 是 DSP 设计人员的另一种选择。大多数 FPGA 是由逻辑单元阵列、各个逻辑单元之间的可编程互连线、I/O 管腿和其他一些如片上的存储器之类的资源组成的。其中逻辑单元是由 1 个四输入的查找表和 1 个触发器构成的。与普通的 DSP 芯片相比,FPGA 芯片能够更好地实现并行处理,从而提高了性能并节省了能源。如算法中使用了 14 个 MAC(Multiply 2 最大值为 0.8,最小值为 0.2,量化为 10 位数据:UFix_10_10;3 最大值为 278,最小值为 -138,量化为
3、11 位数据:Fix_11_1 。例:求进行加法和乘法运算时,完全精度的输出数据类型。1 + = 2 * = 利用 Xilinx 的模块集中的模块创建一个 System Generator 的设计,这些模块是硬件可8实现的 SysGen 模型,此模型必须包含 System Generator 模块,SysGen 模型要通过 I/O 模块作为 Xilinx 模块集与其他的 Simulink 的模块之间的接口,模型的输入端通过 Gateway In与 Simulink 的源连接,模型的输出端通过 Gateway Out 与 Simulink 的沉及库函数连接,如图 7-5 所示,模型的仿真和优化就
4、很方便。图 7-5 Simulink 模块的设计模型7.2.2 采样周期的设置在 SysGen 模型中的每个 SysGen 信号必须被采样,出现在等距离离散时间点上的瞬间称为采样时间。在基于模型的 Simulink 建模设计中,每个模块都有“采样周期” ,它常对应模块的功能如何计算和结果如何输出,所以采样周期是基于模型的系统设计流程中另一个重要概念。对于 Gateway In 和模块的 w/o 输入的采样周期必须明确设定,采样周期也可以由其他模块的输入采样时间来驱动。采样周期的单位可以认为是任意的,但是许多 Simulink 的源模块有一个时间要素,例如,1/44100 的采样周期意味着模块的
5、功能每间隔 1/44100 秒执行一次。当设置采样周期时,要遵循奈奎斯特(Niquist)定理。一个模块的采样周期直接与其在实际硬件中如何定时有关。在 System Generator 模块的参数中必须设置 Simulink 的系统周期,对于单数据率的系统,Simulink 的系统周期将与设计中设置的采样周期相同。如图 7-6 所示。9图 7-6 采样周期的设置7.3 System Generator 模块在 Xilinx 模块集中,对可以转化为 HDL 代码的模块,其标示都以一个“X”型的水印来区别于其它的 Simulink 模块。对 SysGen 设计,Xilinx 模块集有一些十分重要和
6、特殊的模块,要给以特别的注意。1 System Generator 模块: System Generator 模块是一个极其重要的基本模块,它不仅使得在 Simulink 下建立的SysGen 模型提供了层次化的表述能力,同时还必须由它来激活代码生成器,以实现模型的HDL 代码转化。对于一个 SysGen 模型,至少要保证顶层有一个 System Generator 模块。在一个 SysGen 模型中,System Generator 的参数选择对话窗如图 7-7 所示。在此窗口中,要进行定制的参数有:(1)Xilinx System Generator: 目标器件的系列、型号、速度等级、封装
7、。SysGen支持的器件系列有:Virtex -4 ,Virtex-II Pro,Virtex-II, Virtex-E, Virtex, Spartan3E,Spartan3,Spartan-IIE和Spartan-II系列。 采用的综合工具。对于选用不同的综合工具,要求生成的代码也有一定的差别。目前支持的综合工具有:Leonardo Spectrum, Synplicity Synplify Pro, Synplify和Xilinx XST。 目标路径。设计的目标代码保存的路径。 产生测试向量复选框。如果选择了该项,则在生成HDL代码时可以将Simulink仿真输入转换成VHDL测试激励向
8、量,将Simulink仿真输出转换成对应的VHDL测试输出向量。这些向量可用于所产生的VHDL 代码的行为仿真。10图7-7 System Generator的参数选择对话窗(2)System Period(系统周期):分别设置 Simulink的系统周期和实现硬件的系统时钟周期,前者默认的时间单位是秒,后者为纳秒。(3)Hierarchical Control(层次控制):Override with Doubles :以双精度浮点的方式仿真Xilinx模块或Simulink模型,替代 Xilinx模块的定点方式。设置为“Override with Doubles” 的 Xilinx模块显示为
9、灰色。关于 Xilinx模块的定点和浮点方式在Gateway In模块和 Gateway Out模块的介绍中详细阐述。在下拉选择框中,可以指定在进行Simulink仿真时, FPGA设计是根据“According to Block Masks”模块的屏蔽情况,使用双精度浮点信号取代定点信号; “Everywhere in Subsystem”在子系统中使用双精度浮点信号取代定点信号;“Nowhere in Subsystem”在子系统中不使用双精度浮点信号取代定点信号。 Generate Cores:选择在生成 VHDL代码的过程中,是否生成Xilinx LogiCOREs。可选项有:“Acc
10、ording to Block Masks”根据模块的屏蔽情况生成Xilinx LogiCOREs;“Everywhere Available”在任何可能的地方,都生成Xilinx LogiCOREs,“Nowhere”不生成Xilinx LogiCOREs。设置好 System Generator 的参数后,单击 Generate 按钮开始生成 VHDL 代码。如果目标目录不存在,会提示创建该目录。在代码生成过程中,会显示一个进度条来表示生成进度。代码生成后,会弹出一个确认信息窗,点击确认即可。2 Black Box 模块: Black Box 模块是一个十分重要的基本模块,在 Simuli
11、nk 环境里,并不是所有的硬件结构都可以通过 Xilinx 模块集中的模块进行组合来实现;但为了能进行设计系统的模型仿真,设计的 Simulink 模型又应该是一个完整的模型。黑匣子(Black Box)模块就是专门设11计用来解决这种矛盾,提供 Simulink 模型与构造的 HDL 源码之间的接口。此外,在设计中,某些组件可能已经用 VHDL 或 Verilog 设计好了可直接调用,或者某些组件直接用VHDL 编写比起在 Simulink 里建模要更为简单些。这些情况下,都要选用 Black Box 模块。Black Box 模块的使用方法是:(1)将 Black Box 模块添加到模型中
12、;对 Black Box 模块的要求:与 Black Box 模块有关的 VHDL 元件必须遵从以下 System Generator 的要求和规定:1 实体名称必须与设计中任何其他实体的名称不同;2 在顶层的实体中不允许双向端口;3 不是时钟或时钟使能的任何端口必须具有 std_logic_vector 的数据类型;4 是时钟或时钟使能的任何端口必须具有 std_logic 的数据类型;顶层的 VHDL 程序必须为每个 Simulink 中有关的采样率设置分别的时钟和时钟使能端口。在 black Box 的 VHDL 程序中时钟和时钟使能端口应该如下表示:1 时钟和时钟使能信号必须成对地出现
13、;2 虽然 Black Box 可以有多个时钟端口,但利用单个时钟源驱动每个时钟端口;3 只有时钟使能的速率是不同的;4 每个时钟的名称(和每个时钟使能的名称)必须包含 clk(和 ce)的字符;5 时钟使能的名称必须与相应的时钟名称相同,只是 clk 用 ce 代替。时钟和时钟使能端口在 Black Box 模块的图框中不可见。Black Box 模块必须通过一个 MATLAB 的 M 函数的文件描述它的接口,例如,端口和 generics,设计的实现,通过 HDL 协同仿真的仿真模型等。这个 M 函数文件的名称应该在模块参数对话框中进行规定。M 函数的配置文件要完成以下的工作:1 规定 H
14、DL 元件的顶层实体名称,它应该与 black box 名称一致;例:this_block.setEntityName(fir_blackbox);2 选择语言(即 VHDL 或 Verilog) ;例:this_block.setTopLevelLanguage(VHDL);3 描述端口,包括类型、方向、位宽度、二进制点位置、名称和采样率;例:this_block.addSimulinkInport(reset);this_block.addSimulinkInport(din);this_block.addSimulinkOutport(dout);dout_port.setType(Fi
15、x_30_0);4 定义由此 black box 的 HDL 要求的任何 generics;5 规定此 black box 的 HDL 和与此模块有关的其它文件 (例如 EDIF) ;例:this_block.addFile(fir.edn); - added entriesthis_block.addFile(fir.mif);this_block.addFile(fir.vhd);6 定义为此模块的时钟和时钟使能;127 定义是否此 HDL 有任何组合的通过反馈的路径。(2)如果在模型的项目路径下含有 VHDL 文件,自动执行一个配置向导,选择相应的 HDL 文件,如图 7-8 所示;图
16、7-8 Black Box参数定制对话窗(3)设置Black Box 的参数,如图7-9所示。图7-9 Black Box参数设置对话框Black Box的参数包括以下几项:(1)Block Congiguration M-Function:规定Black Box模块配置M函数的名称。M函数可以是手工编写的,也可以是由配置向导自动生成的。13Black Box必须通过MATLAB M函数描述它的接口:例如端口、通用属性(generics ) 、它的实现、选项和HDL协同仿真的仿真模型等。配置M函数完成以下任务:1 规定与Black Box 模块有关的HDL元件的顶层实体名称;2 规定使用的语言
17、(VHAL 或 Verilog) ;3 描述端口,包括类型、方向、位宽度、二进制点位置和采样率;4 定义由Black Box 模块的HDL元件要求任何通用属性(generics) ;5 规定Black Box 模块的HDL元件和与此模块有关的其他文件(如EDIF) ;6 定义模块的时钟和时钟使能7 说明是否HDL元件有任何通过反馈的组合路径;(2)Simulation Mode:有“Inactive”和“Use HDL CoSimulation”两个选项。如果是前者的话,那么在仿真是,将忽略输入始终输出零。如果是后者的话,则使用HDL协同仿真。这时,需要在模型中新增一个ModelSim模块,并
18、在Black Box模块的“HDL Co-Simulator To Use (specify helper block by name)”中指定该ModelSim模块。(3)FPGA Area:提供用于资源使用估算的信息。在生成代码时,该子系统功能的硬件实现直接使用指定的VHDL文件。也可以使用Verilog文件,但这时必须人工编写模块的M函数。进行仿真时,Black Box模块通过结合Simulation Multiplexer模块和ModelSim模块有多种灵活的仿真方法。3 ModelSim模块ModelSim HDL 协同仿真模块配置和控制对一个或几个 Black Box 模块的协同仿
19、真。这个模块完成以下工作:1 构造为允许 black box HDL 在 ModelSim 中被仿真所需要的附加 VHDL;2 当 Simulink 仿真开始时引起 ModelSim 一个对话时间;3 传递 在 Simulink 和 ModelSim 之间的通信;4 当 black box HDL 被编译时报告是否有错误内检测;5 当仿真完成时,如果合适终止 ModelSim。 在仿真期间,每个 ModelSim 模块引起一个 ModelSim 的拷贝,所以利用 ModelSim 一个 license,如果 license 是不足的,几个 black boxe 模块可以共享此相同的模块,除了灵
20、活性差,采用这个方式没有东西损失,在 ModelSim 中的时间刻度匹配在 Simulink 中的时间刻度,即, i.e., one second of Simulink 的一秒仿真时间对应 ModelSim 的一秒仿真时间。参数选择如图 7-10 所示。 14图 7-10 ModelSim 模块参数选择4 Gateway In 模块和 Gateway Out 模块:对于 Simulink 仿真,通常的 Simulink 模型都是浮点仿真。而对于用 Xilinx 模块实现的设计,由于最终是要用 FPGA 完成一个硬件电路的实现,因而在默认方式下,Simulink 中的 Xilinx 模块是进行
21、定点仿真,而其余的 Simulink 一般模块是做浮点仿真。Matlab IO(接口模块)组中的 Gateway In 模块和 Gateway Out 模块提供了 FPGA 设计(定点)和通常 Simulink 模块(浮点)之间的接口功能。Gateway In 模块将其它 Simulink模块的双精度浮点数据转换成 Xilinx FPGA 需要的定点数据,而 Gateway Out 模块则正好相反。可以在一个实例中,选中“Format” 菜单里的“Port data types”来验证。但是有的时候,在用户选择定点宽度,或者用定点方式仿真 FPGA 设计没有得到期望的结果或结果不正确时,用户就
22、希望,可以选择以双精度浮点的方式仿真整个系统或特定的某些模块,以帮助发现 FPGA 设计的哪一部分存在量化错误。这时就可以通过设置Xilinx 模块参数中的“Override with Double”项,并配合以 System Generator 模块里的相应设置来实现。5. Concat 模块、 Convert 模块、Reinterpret 模块和 Slice 模块在以下的一些情况下,可以利用这些模块来完成所需做的工作:1 将两个数据总线组合起来形成一个新的总线;2 强迫进行包括位数和二进制点的数据类型变换;3 重置无符号数为符号数或符号数为无符号数;4 在数据位增长时提取数据的指定位。Co
23、ncat 模块:此模块执行两个位矢量的连接,模块的两个输入必须是无符号的整数,例如两个二进制点位于 0 的无符号数,或者利用 Reinterpret 模块所提供的符号数变换为无符号数的能力,达到扩展 Concat 模块的功能,Convert 模块:Convert 模块可以把每个输入采样变换为所需算术类型的数。1 一个数可以变换到 2 的补码的符号数或无符号的数值;152 总位数和二进制点由设计者规定;3 舍入和量化选择加到输出数值;4 取决于溢出和量化的选择可以利用附加的硬件,而不利用 LogiCore。在规定总位数和二进制点位置,符号或无符号的算术类型后,模块首先排齐输入和输出端口类型之间的
24、二进制点,然后利用规定的总位数和二进制点,与利用的溢出和量化选择有关,输出可能按抛下的位相反地变化。饱和溢出改变小数的数值为得到饱和的数值。舍入量化也可能影响到二进制点左边的数值。例:以下数值通过 Convert 模块导致利用不同位数和二进制点有相同的结果。原始数值: Fix_10_8 0110000000变换为: Fix _7_4 0011000变换为: Fix_6_0 000010 (舍入) 000001 (结尾) Reinterpret 模块: 为保持输入端表示的数值,无任何考虑地强迫其输出为新的类型。输入端总的位数等于输出端总位数,允许无符号位数据重置为符号位数据,或符号位数据重置为无
25、符号位数据。也允许通过重新放置二进制点缩放数据。例:重置以下的数值,迫使二进制点到位置 5。输入数据为: Fix_10_8 0110000000 = +15输出数据为: Fix_10_5 0110000000 = +12Slice 模块Slice 模块允许从输入数据移位出一系列的位,产生一个新的数据值,输出数据是无符号数,二进制点在位置 0 处。例: 取 Fix_10_8 符号数的 4 位移动,偏置最低位 5 位。输入数据为:Fix_10_8 0110000000 = +15 输出数据为 1100 = 12较高位位置 + 宽度:从 MSB 的顶位 = 0 偏置,宽度 = 4输出数据为 0110
26、000000 = 6两个位置定位:从 MSB 的顶位 = -1 偏置, 从SB 的位 = 5 偏置输出数据为 0110000000 = 12模块通用属性双击 Xilinx 的模块,在弹出的参数设置对话窗中,有一些参数的设置是具有普遍性的。(1)Arithmetic Type 运算数据类型:指定输出信号是无符号或带符号(二进制补码) 。(2)Implement with Xilinx Smart-IP Core (if possible)采用 Xilinx Smart-IP 核实现:复选项,选中则用实现核例示的 VHDL 代码来实现该模块,否则只生成可综合的 VHDL代码。如果不能完成核的例示,
27、则自己生成可综合的 VHDL 代码。(3)Generate Core 生成核: 见前面介绍的几个重要模块(4)Use Placement Information for Core 对核使用布局要求:选中该项通常会加快核的实现,但由于添加了约束,可能导致布局布线失败。(5)Latency 延迟:输出延迟周期。(6)Precision 精度:缺省情况下为“Full”,保证有足够的精度不致出错;用户也可以16选择“User-Defined”来自己设定。(7)Number of Bits 位数:设置定点数的位长,其中包括“Binary Point”,设定二进制小数点的位置。设置不合理,会导致溢出和量化
28、错误。(8)Overflow and Quantization 溢出和量化错误处理:用户对定点数设置不当,会导致溢出和量化错误。发生溢出时,出错处理可以是“Saturate”(输出可表示的最大正值或最小负值) 、 “Warp”(截顶)或“Error”(直接报错) 。发生量化错误时,出错处理可以是“Round”(舍入)或 “Truncate”(截尾) 。(9)Override with Doubles:见前面介绍的几个重要模块。(10)Provide Reset Port 提供复位端:是否为模块提供复位端口。(11)Provide Enable Port 提供使能端: 是否为模块提供使能端口。(
29、12)Use Explicit Sample Period 使用外部采样周期:选中该项可较好的解决模型中的环路时序。(13)FPGA Area(Slices,FFs ,LUTs,IOBs ,Embedded Mults,TBUFs) FPGA资源使用:提供模块资源使用的估算信息,以便“Resource Estimator”模块进行系统资源耗用估算。一维数组中的数字分别对应相同位置上所指的硬件资源的耗用情况。图 7-11 计数器的各种参数选项7.4 设计 FIR 滤波器设计描述一个单通道、单速率滤波器的技术指标为: 采样频率 Sampling Frequency (Fs) = 1.5 MHz 截
30、止频率 1 Fstop 1 = 270 kHz 通带频率 1 Fpass 1 = 300 kHz 通带频率 2 Fpass 2 = 450 khz 截止频率 2 Fstop 2 = 480 kHz17 通带两边衰减 Attenuation on both sides of the passband = 54 dB 通带起伏 Pass band ripple = 1两个不同的信源利用来仿真此滤波器: 线性调频 chirp 模块,它在 6 KHz 和 10 KHz 规定的频率之间扫描,不考虑瞬时输出频率。 随机信源发生器,它在-1.9 到 1.9 的范围内输出均匀分布的随机信号,均匀分布是驱动定点
31、滤波器更好的选择,因为滤波器是受限的。一 产生 FIR 滤波器的系数利用 MATLAB console 窗口,从 d:/DSP/ lab4 目录打开 bandpass_filter.mdl 模块,从 Xilinx Blockset DSP 模块集添加 FDATool 模块到设计中。在 d:/DSP/lab4 目录中利用 FDATool 模块为以下的技术指标产生 FIR 滤波器的系数。 采样频率 Sampling Frequency (Fs) = 1.5 MHz 截止频率 1 Fstop 1 = 270 KHz 通带频率 1 Fpass 1 = 300 KHz 通带频率 2 Fpass 2 =
32、450 Khz 截止频率 2 Fstop 2 = 480 KHz 通带两边衰减 Attenuation on both sides of the passband = 54 dB 通带波纹 Pass band ripple = 11 双击桌面上 MATLAB 图标或 Start Menu All Programs MATLAB R2006a 打开 MATLAB 指令窗口。2在指令窗口键入 cd d:/DSP/ lab4/ ,将目录转到所设目录下。3从 MATLAB 的控制台窗口打开 bandpass_filter.mdl 模块。4从 Xilinx Blockset DSP 添加滤波器设计分析工
33、具 FDATool 到设计中。5在 FDATool Design Filter 窗口 (图 7-12)输入以下的滤波器参数。 Filter Type: Bandpass Units: KHz Sampling Frequency (Fs) = 1.5 MHz Fstop 1 = 270 KHz Fpass 1 = 300 KHz Fpass 2 = 450 Khz Fstop 2 = 480 KHz Attenuation on both sides of the passband = 54 dB (Astop1 and Astop2 parameters) Pass band ripple
34、= 1 (Apass)18图 7-12 在 FDATool 中设计一个滤波器 .6 点击 Design Filter 按钮确定滤波器的阶数。频谱窗口将被更新,如图 7-13 所示。图 7-13 所设计滤波器的幅度和相位响应问题:根据所定义的技术指标,最小滤波器的阶数是多少?7 利用 File Save Session 以 fda 格式保存系数文件在 coefficients.fda 中。注意:这是一个可选的步骤。系数对于设计仍然是有效的。如果把系数保存在 fda文件中,则系数在以后可以通过 FDATool 模块参数对话框加载。 198 利用 File Export 输出系数以 Num 为名称到
35、 Workspace 中。( 图 7-14 )注意:在 MATLAB workspace 中将添加 Num 变量。对于 FIR 滤波器,Num 表示在设计中利用的系数。这也是一个可选的步骤,因为系数通过 FDATool 模块仍然是有效的。图 7-14 输出系数到 Workspace9 在 MATLAB 控制台窗口键入 Num,观察系数清单。10 在 MATLAB 控制台窗口键入 max(Num),确定最大的系数值,它相应地规定系数的宽度和二进制点数。问题:填写与系数有关的以下信息: Maximum value: _Minimum value: 二 把系数与 FIR 滤波器联系起来从 Xilin
36、x Blockset DSP 库添加 DAFIR v9.0 滤波器模块,并与产生的系数联系起来。1 从 Xilinx Blockset DSP 库添加 DAFIR v9.0 滤波器模块到设计中。2 双击 Xilinx DAFIR v9.0 滤波器模块,在模块参数窗口输入以下的参数。(图 7-15) Coefficients : xlfda_numerator(FDATool) Coefficient Structure : 选择 Inferred from Coefficients Number of bits per Coefficients : 12 Binary Point for Co
37、efficients : 12 Number of Channels : 1 Provide Valid Ports : 不选20图 7-15 FIR 滤波器模块参数3 点击 OK 接受这些设置。4 连接此模块,使设计类似于图 7-16。图 7-16 FIR 滤波器模块基本设计准备仿真三 在 Simulink 中仿真 FIR 滤波器设置采样输入为 FIX_8_6,输入采样周期为 1/1500000,连接 FIR 模块到 Gateway In 和 Gateway Out 端口,利用频谱仪研究它对线性调频和噪声信号的输出。1。 双击 Gateway In 模块,设置格式 format 为 FIX_
38、8_6, 采样周期为1/1500000。2 选择线性调频 Chirp 信源,启动仿真。 21注意:以下的警告信息出现,因为 Simulink 计算不同的采样率,需要更新它。 图 7-17 警告信息指示计算的采样率3 点击 Update 接受采样率的变更,并返回仿真。4 将频谱的屏幕放到前台,检查由 FIR 滤波器输出的信号已经被衰减,如图 7-18 和图 7-19 所示。图 7-18 在通带中没有衰减(频谱屏幕)22图 7-19 在止带中衰减(频谱屏幕)5。 停止仿真。注意:当停止仿真时,一个关于滤波器滞后的错误被报告。此时可以不考虑此错误。 图 7-20 对于滞后不兼容的错误报告6 点击 C
39、lose 。7 选择 Random Source,运行仿真。图 7-21 随机信源(频谱屏幕)8停止仿真。四 完成 FIR 滤波器设计从 Xilinx Blockset Basic Elements 库添加 convert 模块以得到 FIX_8_6 的输23出,从 Xilinx Blockset Basic Elements 库添加 delay 元件到输出端改善性能,从 Xilinx Blockset Index 库添加 Resource Estimator 模块。 1 从 Xilinx Blockset Basic Elements 库添加 convert 模块到 FIR 输出端使得出为
40、FIX_8_6。2 从 Xilinx Blockset Basic Elements 库添加 delay 元件到输出端,提供流水线和改善性能,因为添加的流水线级将在输出焊盘中实现。确认 DAFIR v9.0 系数的尺寸被设置为 FIX_12_12 和 Gateway In 尺寸设置为 FIX_8_6。改变输入 (Gateway In)的 quantization 为 Truncate ,改变 Overflow 为 Wrap。3从 Xilinx Blockset Index 库添加 Resource Estimator 模块到设计中。注意:设计应该如图 7-22 所示。图 7-22 完成的 FI
41、R 滤波器设计五 实现 FIR 滤波器设置 FIR 硬件过采样率为(Hardware Over-Sampling Rate)为 9, FIR Core Latency 为 14,运行仿真。这将更新采样率为 7.407e-008。利用 System Generator 标记产生编码和以下的技术条件。在 Project Navigator 中打开 bandpass_filter.npl 项目,并综合和实现设计。 Input : Width = FIX_8_6, Quantization = Truncate, Overflow = Wrap Output Width: FIX_8_6 FIR Co
42、re Latency: 14 FIR Hardware Over-Sampling Rate: 9 FIR Coefficients: FIX_12_12 Product Family: Spartan Device: xc3s200 Speed: 7 Package: ft256 Synthesis Tool: XST Target Directory: D:/dsp_E/lab4/netlist Create Testbench: Unchecked24 Simulink System Period (sec): 7.407e-008 FPGA System Clock Period (n
43、s): 201 双击 FIR 模块,设置硬件过采样率为 9 和滞后为 14。问题:硬件过采样率为 9 告诉你关于滤波器实现什么? 为什么设置为 9 而不是 8? 2 运行仿真。采样率更新的信息将出现,接受采样率为 7.407e-008,并重新运行仿真。3 双击 System Generator 图标,设置以下的参数: Product Family: Spartan Device: xc3s200 Speed: 7 Package: ft256 Synthesis Tool: XST Target Directory: c:/ dsp_E/lab4/netlist Create Testbenc
44、h: Unchecked Simulink System Period (sec): 7.407e-008 FPGA System Clock Period (ns): 204 点击 Generate 按钮以产生设计。5 在 Windows Explorer 中, 双击 bandpass_filter_clk_wrapper.npl 打开Project Navigator 。 6. 综合和实现设计。问题:利用各种报告,给出以下各项的答案Number of Slices:Has the timing constraint met?The actual clock period:已知所选择的一系列
45、实现,实际采样率是多少?六 利用资源估计器估计设计利用 Resource Estimator 模块和 post-map 报告,估计此设计利用的资源。 1 双击 resource estimator 模块。2 点击 Post-Map Area 按钮,选择 bandpass_filter_clk_wrapper.mrp 文件。 问题:资源估计器报告的结果?Number of Slices:Number of FFs:Number of LUTs:七 执行硬件在环路中的校验25利用 System Generator 图标,产生硬件和校验,产生硬件和通过演示板校验设计工作,通过 Simulink 仿真
46、设计。.1 保存模型为 bandpass_filter_hwcosim.mdl2 双击 System Generator 图标,设置以下的参数。 Compilation: Digilent D2SB Synthesis Tool: XST Target Directory: D:/ dsp_E/lab4/ise_sp2e Create Testbench: Unchecked Simulink System Period (sec): 7.407e-008注意: 确认 System Generator blocks 的图标显示 Spartan2E xc2s200e-6pq208 为器件 。2
47、点击 Generate 按钮,编译状态窗口打开如图 7-23 所示的编译过程的进展。图 7-23 在指令窗口中编译的进展3 当设计生成成功地完成时,新的 Simulink 库窗口将打开,一个带有相应数量输入和输出的被编译的模块将显示。图 7-24 在新的 Simulink 窗口打开的被编译的模块4 拷贝被编译的模块到设计中,如图 7-25 所示连接此模块。26图 7-25 准备硬件在环路中仿真完成的设计八 连接演示板,通过 Simulink 仿真设计.1 连接电源电缆到 DIGILENT_3S 演示板,点亮板上一个 LED。2 连接并行电缆到演示板上提供 JTAG 连接器的一边和计算机并口的另
48、一边。3 在 Simulink 窗口点击 run 按钮 ( ) 运行仿真,配置的位流文件将被下载,仿真将被运行。4 仿真结果在输出屏幕上显示,Simulink 仿真器输出在左边,硬件输出在右边,如图 7-26 所示。27图 7-26 两种输入仿真结果显示,Simulink 输出在左边,硬件输出在右边 。5 当完成后关闭电源。6 保存设计模型,关闭 MATLAB。7.5 利用协同仿真校验 MAC FIR 滤波器一 产生 MAC FIR 核利用 Core Generator 产生一个单通道和单速率 MAC FIR 核,在 d:DSP lab5目录中对 Spartan2e 器件系列有以下技术条件。
49、1利用 Start Menu Programs Xilinx ISE 8.1i Accessories Core Generator 打开 Core Generator System。2 在 Getting Started 对话框中点击 Create a New Project 按钮。弹出图 7-27 所示的对话框。图 7-27 SysGen 建立新项目3 键入新项目名称后,选择项目所利用的 FPGA 器件,如图 7-28。28图 7-28 项目的器件设置4 在 Generation 标题下选择以下的选项,点击 OK Output Options : Flow Vendor Design Entry : VHDL, Other Overwri