购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

4.3 信号处理模型的构建与实现

本节将介绍信号处理模型的构建与实现,包括信号模型的构建、模型参数的设置、信号处理模型的仿真、生成模型子系统、模型HDL代码的生成、打开生成设计文件并仿真、协同仿真的配置与实现、生成IP核。

4.3.1 信号模型的构建

本节将实现浮点离散数字信号模型,表示为

通过Z变换,将式(4.1)变换到Z域:

使用System Generator工具实现该模型的步骤主要包括:

(1)在Windows 7的主界面下,选择开始->所有程序->Xilinx Design Tools->Vivado 2017.2->System Generator->System Generator 2017.2,打开MATLAB R2016b集成开发环境。

(2)在MATLAB的主界面下,单击“Simulink”按钮,出现“Simulink Start Page”界面,如图4.3所示。

图4.3 “Simulink Start Page”界面

(3)在“Simulink Start Page”界面中,单击名字为“Blank Model”的图标,出现一个新的空白设计界面。

(4)在空白设计界面的工具栏中,找到并单击 (Library Browser)按钮,出现“Sim ulink Library Browser”界面。

(5)在“Simulink Library Browser”界面左侧的窗口中找到并展开“Xilinx Blockset”。在展开项中,找到并单击名字为“Floating-Point”的选项。

(6)在“Simulink Library Browser”界面右侧的窗口中,给出了可用的浮点处理元件,如图4.4所示。

图4.4 可用的浮点处理元件

(7)在图4.4给出的浮点处理元件中,找到名字为“Gateway In”和“Gateway Out”的元件,并将其拖入图4.5所示的空白界面中。

图4.5 空白界面

:(1)Gateway In元件支持:

① 从浮点数转换为N位Boolean类型、有符号(二进制补码)或者无符号的定点数。

② 在转换期间,提供选项管理额外的位。

③ 在System Generator生成的HDL设计中,定义了顶层输入端口的名字。

④ 当在System Generator块中选中“Create Testbench”复选框时,定义了测试平台的激励源。

(2)Gateway Out支持:

① 将System Generator产生的定点数转换为Simulink的双精度数。

② 在System Generator生成的HDL设计中,定义了顶层输出端口的名字。

(8)在图4.4提供的元件窗口中,找到名字为“Delay”的元件,并将4个Delay元件拖入图4.6所示的原理图设计界面中。

图4.6 在原理图中放置元件

(9)在图4.4提供的元件窗口中,找到名字为“CMult”的元件,并将4个CMult元件拖入图4.6所示的原理图设计界面中。

(10)在图4.4提供的元件窗口中,找到名字为“AddSub”的元件,并4个AddSub元件拖入图4.6所示的原理图设计界面中。

(11)在“Simulink Library Browser”主界面的“Libraries”窗口下找到并展开Xilinx Blockset。在展开项中,找到Basic Elements。在右侧窗口中找到名字为“System Generator”的元件符号,并将其拖入原理图设计界面中。

:这个符号必须出现在所有的System Generator设计中,否则在运行设计时会报错。

(12)在“Simulink Library Browser”主界面的“Libraries”窗口下找到并展开Simulink。在展开项中,找到Sources。在右侧窗口中找到名字为“Sine Wave”的元件符号,并将其拖入图4.6所示的原理图设计界面中。

(13)在“Simulink Library Browser”主界面的“Libraries”窗口下找到并展开Simulink。在展开项中,找到Sinks。在右侧窗口中找到名字为“Scope”的元件符号,并将其拖入图4.6所示的原理图设计界面中。

:① 双击名字为“Scope”的元件符号,打开其配置界面。在配置界面中,通过选择File->Number of Input Ports,将示波器的端口数量设置为2。

② 此外,在配置界面中,选中File->Open at Start of Simulation选项,使得在仿真结束的时候可以自动打开示波器界面。

(14)放置完所有元件后的原理图设计界面如图4.7所示。

图4.7 放置完所有元件后的原理图设计界面

(15)连接完所有元件后的原理图设计界面如图4.8所示。

(16) 保存模型。将其保存在 E:\fpga_dsp_example\model_design\basic_model\basic_model.slx路径下。

图4.8 连接完所有元件后的原理图设计界面

4.3.2 模型参数的设置

本节将为4.3.1节生成的最终模型设置合适的参数,其参数设置的步骤主要包括:

(1)双击图4.8内的Sine Wave符号,打开正弦信号参数设置界面,如图4.9所示。首先介绍一下该设置界面内一些参数的含义。

图4.9 正弦信号参数设置界面

① 基于时间的模式(Time based)。

在该模式下,正弦信号的输出由下式决定:

:该模式下有两个可以选择的子模式:连续模式和离散模式。

设置界面中,“Sample time”的值确定子模式。当该参数为0时,该模块运行在连续模式;当该参数大于0时,该模式运行在离散模式。

② 基于采样的模式(Sample based)。

基于采样的模式使用下面的公式计算正弦信号模块的输出:

其中,A是正弦信号的幅度;p是每个正弦周期的采样个数;k是重复的整数值,其范围为0~p-1;o是信号的偏置(相位移动);b是信号的直流偏置。

:按图4.9配置正弦信号的参数。

(2)单击“OK”按钮,退出正弦信号参数设置界面。

(3)双击图4.8中的Gateway In符号,打开参数设置界面,按如下所示设置参数。

① Output Type:Float-point。

② Floating-point Precision:Single。

③ 其他按默认参数设置。

(4)单击“OK”按钮,退出参数设置界面。

(5)在图4.8中,双击名字为“Delay1”的元件符号,打开其参数设置界面,在“Basic”标签下,设置Latency为2(延迟为2)。

(6)单击“OK”按钮,退出Delay1的参数设置界面。

(7)在图4.8中,双击名字为“Delay2”的元件符号,打开其参数设置界面,按如下所示设置参数。

在“Basic”标签下,设置Latency为3(延迟为3)。

(8)单击“OK”按钮,退出Delay2的参数设置界面。

(9)在图4.8中,双击名字为“Delay3”的元件符号,打开其参数设置界面,在“Basic”标签下,设置Latency为4(延迟为4)。

(10)单击“OK”按钮,退出Delay3的参数设置界面。

(11)在图4.8中,双击名字为“CMult”的元件符号,打开其参数设置界面,按如下所示设置参数。

① Constant value:6.0。

② Constant Type:Floating-point。

③ Floating-point Precision:Single。

④ Latency:0。

(12)单击“OK”按钮,退出CMult的参数设置界面。

(13)在图4.8中,双击名字为“CMult1”的元件符号,打开其参数设置界面,按如下所示设置参数。

① Constant value:1.5。

② Constant Type:Floating-point。

③ Floating-point Precision:Single。

④ Latency:0。

(14)单击“OK”按钮,退出CMult1的参数设置界面。

(15)在图4.8中,双击名字为“CMult2”的元件符号,打开其参数设置界面,按如下所示设置参数。

① Constant value:3.5。

② Constant Type:Floating-point。

③ Floating-point Precision:Single。

④ Latency:0。

(16)单击“OK”按钮,退出CMult2的参数设置界面。

(17)在图4.8中,双击名字为“CMult3”的元件符号,打开其参数设置界面,按如下所示设置参数。

① Constant value:4.0。

② Constant Type:Floating-point。

③ Floating-point Precision:Single。

④ Latency:0。

(18)单击“OK”按钮,退出CMult3的参数设置界面。

(19)在图4.8中,双击名字为“AddSub”的元件符号,打开其参数设置界面,在“Basic”标签下,设置Latency为0(无延迟)。

(20)单击“OK”按钮,退出AddSub的参数设置界面。

(21)在图4.8中,双击名字为“AddSub1”的元件符号,打开其参数设置界面,在“Basic”标签下,设置Latency为0(无延迟)。

(22)单击“OK”按钮,退出AddSub的参数设置界面。

(23)在图4.8中,双击名字为“AddSub2”的元件符号,打开其参数设置界面,在“Basic”标签下,设置Latency为0(无延迟)。

(24)在图4.8中,双击名字为“AddSub3”的元件符号,打开其参数设置界面,在“Basic”标签下,设置Latency为0(无延迟)。

(25)单击“OK”按钮,退出AddSub3的参数设置界面。

(26)保存该设计。

4.3.3 信号处理模型的仿真

本节将对信号处理模型进行仿真。实现仿真的步骤主要包括:

(1)在设计界面工具栏内的输入框中输入45.0。

(2)在设计界面工具栏下,单击 按钮,开始仿真。

(3)仿真结果如图4.10所示。

(4)退出“Scope”窗口。

图4.10 仿真结果

4.3.4 生成模型子系统

本节将生成模型子系统。实现子系统的步骤主要包括:

(1) 将前面的设计另存为在E:\fpga_dsp_example\model_design\basic_model\basic_model sub_system.slx路径下。

(2)用鼠标选中黑框区域内的所有元件,如图4.11所示。

图4.11 选中黑框区域内的所有元件

(3)单击鼠标右键,出现浮动菜单。在浮动菜单内,选择“Create Subsystem From Selection”选项。

(4)包含子系统的模型如图4.12所示。

图4.12 包含子系统的模型

4.3.5 模型HDL代码的生成

本节将生成设计模型的HDL代码,步骤主要包括:

(1)双击图4.11中名字为“System Generator”的元件符号,打开“System Generator:basic_model”对话框,如图4.13所示。

图4.13 “System Generator:basic_model”对话框

(2) 在“System Generator:basic_model”对话框中,按如下所示设置参数。

① Part:Artix7 xc7a75t-1 fgg484。

② Compilation:HDL Netlist。

③ Hardware description language:Verilog。

④Target directoty:./basic_model_netlist (编译目标要放在当前工程路径的/basic_model_netlist子目录中)。

⑤ Synthesis strategy:Vivado Synthesis Defaults。

⑥ Implementation strategy:Vivado Implementation Defaults。

⑦ 勾选“Create interface document”前面的复选框。

⑧ 勾选“Create testbench”前面的复选框。

(3)单击“Generate”按钮,生成模型的HDL描述和测试平台。

(4)完成对设计的综合后,出现“Compilation status”对话框。在该对话框中,提示“Generation Completed”信息,表示成功完成生成过程。

(5)单击“OK”按钮。

4.3.6 打开生成设计文件并仿真

本节将使用Vivado 2017.2集成开发环境打开System Generator工具生成的Verilog HDL代码和测试平台。打开Verilog HDL代码的步骤主要包括:

(1)定位到E:\fpga_dsp_example\model_design\basic_model\basic_model_netlist\hdl_netlist路径下,找到并双击basic_model.v文件,该设计模型的文件结构如图4.14所示。

图4.14 设计模型的文件结构

(2)对该设计执行“Elaborate”,然后单击“Open Elaborated Design”选项,打开详细描述后的设计结构如图4.15所示。

图4.15 详细描述后的设计结构

(3) 在 “Sources” 窗口中找到并展开 “Simulation Sources”。在展开项中,找到并展开 “sim_1”。在展开项中,选中 “basic_model_tb”,如图4.16所示。

图4.16 “Sources”窗口

(4)在Vivado主界面左侧的“Flow Navigator”窗口中,找到并展开“Simulation”。在展开项中,找到“Run Simulation”,然后选择“Run Behavioral Simulation”,开始对设计进行行为级仿真。

(5)行为仿真的结果如图4.17所示。

图4.17 行为仿真的结果

(6)退出Vivado 2017.2集成开发环境。

4.3.7 协同仿真的配置与实现

System Generator提供了硬件协同仿真能力,这样可以使运行在FPGA上的设计导入Simulink仿真中。Hardware Co-Simulation硬件协同仿真选项用于编译目标,并且自动生成比特流,将其连接到一个模块。在Simulink中对设计进行硬件协同仿真后,就可以知道设计在硬件上的运行结果。这样,就允许在真正的硬件上测试被编译的部分,并且动态加速仿真过程。

1.添加新的编译目标

在进行协同仿真前,需要配置仿真环境参数。该仿真所使用的目标平台为作者开发的A7-EDP-1开发平台,该开发平台上搭载了Xilinx公司的xc7a75t-1 fgg484 FPGA器件。配置协同仿真环境参数的步骤主要包括:

(1)将本书所提供资料的\fgpa_example路径下的a7-edp-1文件夹复制到C:\xilinx\vivado\2017.2\data\boards\board_files路径中。

:该文件夹下面保存着Xilinx所支持的所有板描述文件。

(2)建立一个名字为“startup.m”的文件,在该文件中输入如代码清单4-1所示的代码。

代码清单4-1 startup.m文件

:该段代码用于在System Generator中加入作者开发的A7-1-EDP硬件平台。

(3) 将该文件放在C:\users\administrator\appdata\roaming\xilinx\vivado路径下。

:这是通过System Generator打开MATLAB的默认路径。读者可以在打开的MATLAB中看到这个默认路径。

(4)重新通过System Generator打开MATLAB集成开发环境。

(5)双击名字为“System Generator”的元件符号,打开其参数设置界面,如图4.18所示。从图4.18中可知,在“Board”下面的下拉框中新添加了名字为“a7-edp-1 0”的开发板。

图4.18 System Generator的参数设置界面(1)

(6)选中“a7-edp-1 0”,在“Compilation”下选择“Hardware Co-Simulation(JTAG)”,将“Target directory”设置为“/hw_sim1”,如图4.19所示。

2.生成协同仿真模块

本部分将生成协同仿真模块,步骤主要包括:

图4.19 System Generator的参数设置界面(2)

(1)单击图4.19中的“Generate”按钮,对所选的目标平台进行编译。

(2)编译完成后,出现“Compilation status”对话框。在该对话框中,提示“Generation Completed”信息,表示编译成功。

(3)单击“OK”按钮,生成“basic_model hwcosim”硬件协同仿真模型,如图4.20所示。

图4.20 生成“basic_model hwcosim”硬件协同仿真模块

3.协同仿真的实现

本部分将实现协同仿真,步骤主要包括:

(1)将图4.20所示的“basic_model hwcosim”硬件协同仿真模型粘贴到图4.21所示的界面中。

图4.21 系统硬件协同仿真模型

(2)如图4.21所示,将“basic_model hwcosim”硬件协同仿真模型连接到数字信号处理模型系统中,完成硬件系统仿真的整体结构设计。

(3)单击“OK”按钮。

(4)在主界面的工具栏下单击 按钮,启动硬件协同仿真。

(5)等待仿真结束后,双击Scope1符号。

(6)打开仿真结果界面,观察协同仿真的结果如图4.22所示。

图4.22 协同仿真的结果

4.3.8 生成IP核

System Generator提供了IP封装器编译目标,允许设计者将System Generator生成的设计封装到一个IP核中。这样,就可以将其包含在Vivado IP目录中。然后通过例化语句将其包含在其他设计中,作为其他设计的一部分。生成IP核的步骤主要包括:

(1) 在Simulink设计环境中,在E:\vivado_example\model_design\basic_model_ip路径下重新打开basic_model.slx文件。

(2)双击System Generator符号,打开如图4.23所示的参数设置界面,按如下所示参数设置。

图4.23 System Generator的参数设置界面

① Compilation:IP Catalog。

② Part:Artix7 xc7a75t-1 fgg484。

③ Hardware description language:Verilog。

④Target directoty:./basic_model_netlist (在当前保存工程目录下的子目录basic_model_netlist下)。

⑤ Synthesis strategy:Vivado Synthesis Defaults。

⑥ Implementation strategy:Vivado Implementation Defaults。

⑦ 勾选“Create interface document”前面的复选框。

⑧ 勾选“Create testbench”前面的复选框。

:单击 按钮,可以查看IP核封装的一些信息。

(3)单击“Generate”按钮,生成IP核。 T05Bbgit4c7mP2OxtsEMqSxWh/lJ2NBVC7fOffO9ue+tLxYJSswEMQh0AhvnH1Qj

点击中间区域
呼出菜单
上一章
目录
下一章
×