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

4.7 基于Model Composer的DSP模型构建

本节将介绍如何通过Model Composer构建数字信号处理模型,内容包括Model Composer工具概述、打开Model Composer工具、创建一个矩阵运算实现模型、修改设计中模块的参数、执行仿真并分析结果,以及产生输出。

4.7.1 Model Composer工具概述

本节将简要介绍Model Composer工具的功能和设计流程。

1.Model Composer工具的功能

Model Composer工具是Xilinx Vivado 2018版本提供的新设计工具,它也是基于模型的设计工具。通过该设计工具,可以在MathWorks Simulink环境中进行快速的设计探究。通过自动代码生成方法,进一步加速Xilinx可编程器件的使用效率。

前面提到Simulink是MATLAB内集成的一个工具,它提供了一个可交互的、图形化的环境,用于建模、仿真、分析和验证系统设计。而Model Composer工具作为Xilinx 工具箱嵌入到MathWorks Simulink环境中,允许算法人员充分利用Simulink图形化环境的所有能力来设计和验证算法。

算法人员可以在Simulink环境中使用来自Model Composer库的块,以及用户定制导入的块来表示算法。通过使用自动优化和利用Vivado HLS的高级综合技术,Model Composer工具可以将算法人员的算法规范转换为真正使用的IP实现。通过Vivado集成开发环境提供的IP集成器特性,算法人员可以将IP集成在一个平台(如Zynq器件)上。

Model Composer提供了超过80个优化模块的库用于Simulink工具,包括用于描述类似算术、线性代数、逻辑和按位操作的算法。此外,还包含了大量用于图像处理和计算机视觉的专用模块,如表4.3所示。

表4.3 Model Composer工具中的模块列表

2.Model Composer工具设计流程

Model Composer模块库与标准的Simulink模块库兼容,并且可以一起使用这些模块在Simulink中建立一个模型。然而,Model Composer只支持某些Simulink模块产生代码。在Model Composer模块库中,可以找到与来自Model Composer输出生成兼容的Simulink模块。

Model Composer也可以让读者用C/C++代码创建自己定制的模块。此外,Model Composer可以让读者探索自己系统级设计的算法方法,定义一个应用模块来产生输出,连接额外的Simulink模块使能仿真,以及定义设计的输出特性。读者可以将设计模型编译为C++代码,用于Vivado HLS的高级综合,或者创建System Generator块,或者创建用于Vivado设计套件的封装IP。Model Composer工具的设计流程如图4.47所示。

图4.47 Model Composer工具的设计流程

:(1)在安装Vivado 2018设计套件时,必须勾选“Model Composer”前面的复选框,如图4.48所示。

图4.48 Vivado 2018设计套件安装界面截图

(2)在使用Model Composer工具之前,必须获取该工具的授权文件。

4.7.2 打开Model Composer工具

本节将通过Model Composer创建信号处理模型,主要步骤包括:

(1)在Windows 7操作系统下,选择开始->所有程序->Xilinx Design Tools->Model Composer 2018.1->Model Composer 2018.1,打开MATLAB R2017b软件工具。

(2)在MATLAB主界面的工具栏中找到并单击“Simulink”按钮,出现“Simulink Start Page”对话框。

(3)在“Simulink Start Page”对话框右侧的窗口中找到并展开“Simulink”。在展开项中,找到并单击名字为“Blank Model”的图标,出现“Untitled-Simulink sponsored use”对话框。

(4)在“Unititled-Simulink sponsored use”对话框中,找到并单击 按钮,出现“Simulink Library Browser”界面。

(5)在“Simulink Library Browser”界面中,找到并展开“Xilinx Model Composer”,如图4.49所示,从图中可以看到该库中所有的模块。

图4.49 Xilinx Model Composer库中的模块

4.7.3 创建一个矩阵运算实现模型

本节将使用Model Composer工具实现矩阵的运算操作,如图4.50所示。具体实现步骤主要包括:

图4.50 矩阵的运算操作模型

(1)在“Simulink Library Browser”界面左侧的窗口中,找到并展开“Xilinx Model Composer”。在展开项中,找到并展开“Source”。在右侧窗口中,找到并选中名字为“Constant”的模块符号,将其分两次拖入“Untitled-Simulink sponsored use”对话框中(后面统称为空白设计界面),如图4.51所示。

(2) 在 “Simulink Library Browser” 界面左侧的窗口中,找到并展开 “Xilinx Model Com-poser”。在展开项中,找到并展开 “Math Functions”。在展开项中,找到并选择 “Matrices and Linear Algebra”。在右侧窗口中,分别选择名字为 “Matrix Multiply” 和 “Transpose” 的模块符号,并将其分别拖入空白设计界面中,如图4.51所示。

(3)在“Simulink Library Browser”界面左侧的窗口中,找到并展开“Xilinx Model Composer”。在展开项中,找到并选择“Signal Attributes”。在右侧窗口中,选择名字为“Data Type Conversion”的模块符号,并将其拖入空白设计界面中,如图4.51所示。

(4)在“Simulink Library Browser”界面左侧的窗口中,找到并展开“Xilinx Model Composer”。在展开项中,找到并展开“Sinks”。在右侧窗口中,找到并选中名字为“Display”的模块符号,将其分两次拖入空白设计界面中,如图4.51所示。

(5)在“Simulink Library Browser”界面左侧的窗口中,找到并展开“Xilinx Model Composer”。在展开项中,找到并展开“Tools”。在右侧窗口中,找到并选中名字为“Model Composer Hub”的模块符号,将其拖入空白设计界面中,如图4.51所示。

图4.51 设计中所包含的模块

:在图4.51中,根据显示数据的要求,读者可以适当调整模块符号的大小。

(6)按图4.52所示将设计模型中的所有模块连接在一起。

图4.52 将设计中的所有模块连接在一起

4.7.4 修改设计中模块的参数

本节将修改设计中模块的参数,主要步骤包括:

(1)双击图4.52中名字为“Constant”的模块符号,打开“Block Parameters:Constant”对话框。在该对话框的“Constant value:”标题下的文本框中输入下面的常数,作为A 3×3 矩阵的初始值:

[1.1,2.2,3.3;4.4,5.5,6.6:7.7,8.8,9.9]

(2)单击“OK”按钮,退出对话框。

(3)双击图4.52中名字为“Constant1”的模块符号,打开“Block Parameters:Constant”对话框。在该对话框的“Constant value:”标题下的文本框中输入下面的常数,作为B 3×3 矩阵的初始值:

(4)单击“OK”按钮,退出对话框。

(5)双击图4.52中名字为“Data Type Conversion”的元件符号,打开“Block Parameters:Data Type Conversion”对话框。在该对话框中,按如下所示设置参数。

① Output data type:fixed。

② Word length:16。

③ Fractional length:5。

④ Round:Trunction to zero。

⑤ Overflow:Sign-Magnitude wrap Around。

(6)单击“OK”按钮,退出对话框。

(7) 将设计文件保存在E:\fpga_dsp_example\model_composer路径下,该设计文件的名字为 “matrix_multiply”。

4.7.5 执行仿真并分析结果

本节将对该设计执行仿真,并对仿真结果进行分析,主要步骤包括:

(1) 在当前设计界面的工具栏中单击 按钮,开始对设计进行仿真。

(2) 仿真结果如图4.53所示。

图4.53 仿真结果

思考与练习4-8 :分析浮点和定点表示矩阵相乘结果之间的误差。

思考与练习4-9 :通过修改定点数的位数宽度和精度,分析定点数的长度和精度对计算结果的影响。

(3)退出Simulink工具。

(4)在MATLAB主界面的控制台下输入下面的命令更新可用的FPGA器件和开发板。

(5)在MATLAB主界面的控制台下输入下面的命令列出可用的FPGA开发板。

4.7.6 产生输出

本节将来自Model Composer库的模型转换为不同的输出结果,具体步骤主要包括:

(1)重新打开Model Composer设计工具。

(2)将前面的设计保存为“matrix_multiply_1.slx”。

(3)删除名字为“Display1”的元件符号和相关的连线,如图4.54所示。

图4.54 去掉Display1元件符号和连线后的系统模型

(4)通过单击鼠标左键和同时拖动鼠标,选中名字为“Matrix Multiply”、“Transpose”和“Data Type Conversion”的模块符号和连线,如图4.55所示。

图4.55 选中模型中的3个模块

(5)单击鼠标右键,出现浮动菜单。在浮动菜单内,选择Create Subsystem from Selection,生成名字为“Subsystem”的子系统,如图4.56所示,将该子系统的名字改为“Matrixoperation”。

图4.56 生成名字为“Subsystem”的子系统

(6)双击图4.56中的Model Composer Hub模块符号,出现该模块的参数设置界面,如图4.57所示。从图4.57中可知,Model Composer提供了3种输出类型(Export type),即IP Catalog、System Generator和C++code。

图4.57 Model Composer Hub模块的参数设置界面

(7)单击“Device”标签。在“Device”标签页中,单击 按钮,选择型号为xc7a75tfgg484-1的FPGA。

(8)单击“Clocking”标签。在“Clocking”标签页中,将“FPGA clock frequency(MHz)”设置为“100”。

(9)再次单击“Compilation”标签。

1.输出IP Catalog

输出IP Catalog的过程,其主要步骤包括:

(1)在“Target directory:”的下面设置输出路径为“E:/fpga_dsp_example/model_composer/ip”。

(2)在“Export type:”右侧的下拉框中选择“IP Catalog”。

(3)勾选“Create and execute testbench”前面的复选框。

(4)单击“Apply”按钮。

(5)单击“Generate”按钮,产生IP Catalog。

:生成的IP Catalog可以在Vivado设计套件中导入IP Catalog,如图4.58和图4.59所示,也可以导入Vivado HLS工具中。

图4.58 在Vivado设计套件中添加IP到IP Catalog的方法

图4.59 将Matrixoperation导入IP Catalog后的界面

2.输出System Generator

本部分将介绍输出System Generator的过程,主要步骤包括:

(1)在“Target directory:”下面设置输出路径为“E:/fpga_dsp_example/model_composer/sysgen”。

(2)在“Export type:”右侧的下拉框中选择“System Generator”。

(3)勾选“Create and execute testbench”前面的复选框。

(4)单击“Apply”按钮。

(5)单击“Generate”按钮,产生System Generator。

:可以在System Generator中通过Vivado HLS模块符号导入,如图4.60和图4.61所示。

图4.60 System Generator导入Vivado HLS符号的参数设置界面

图4.61 导入Vivado HLS元件符号的接口

3.输出C++代码

本部分将介绍输出C++代码的过程,其主要步骤包括:

(1)在“Target directory:”下面设置输出路径为“E:/fpga_dsp_example/model_composer/cplus”。

(2)在“Export type:”右侧的下拉框中选择“C++code”。

(3)勾选“Create and execute testbench”前面的复选框。

(4)单击“Apply”按钮。

(5)单击“Generate”按钮,产生C++代码。 5aRJEJsEpPwy9iZeQjAdEbbet7TzMPpTnBMUepuqaJqWU6p0ofnIUYHZxTmKlQ+M

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