前言
有关 System Generator 的安装以及简介可以参考我之前的博客 Matlab Simulink支持system generator插件,本文将初体验 System Generator,以达到如下目的:
- 了解如何使用 System Generator 创建和验证模型
- 利用工作空间变量轻松地对模型进行参数化
- 将模型综合到 FPGA 硬件中,然后创建更优化的硬件版本的设计
- 了解如何使用定点数据类型在准确性与硬件面积和性能之间进行权衡
一、介绍
在本实验练习中,你将学习如何使用 System Generator 在 Simulink 中指定设计并将设计合成为 FPGA。本教程使用标准 FIR 滤波器,并演示系统生成器如何为您提供设计选项,使你能够控制最终 FPGA 硬件的保真度。
本教程中的每个实验都有单独的项目文件和源代码。您可以在 www.xilinx.com 网站上找到本教程的设计文件。
①、从 Xilinx 网站下载参考设计文件。
②、将 zip 文件内容解压缩到硬盘驱动器或网络位置上任何可写访问的位置。
1、目标
完成本实验后,你将能够:
- 使用系统生成器块集捕获你的设计
- 在复杂或离散的块集中捕获你的设计
- 使用 Vivado 设计环境在 FPGA 中合成你的设计。
2、过程
本实验有四个主要部分:
- 在第 1 步中,你将使用 Xilinx FIR 编译器块审查现有的 Simulink 设计,并在 Vivado 中审查最终的门级结果
- 在步骤 2 中,你将使用过采样来创建更有效的设计
- 在步骤 3 中,使用标准离散块集部件设计相同的滤波器
- 在第 4 步中,你将了解如何使用数据类型,如浮点型和定点型
二、步骤 1:在 FPGA 中创建设计
在此步骤中,你将学习 System Generator 的基本操作以及如何将 Simulink 设计合成到 FPGA 中。
1、打开 Lab1_1.slx 文件
①、双击桌面 System Generator 2017.4
②、点击 Simulink
③、打开 Lab1_1.slx 文件
Lab1_1 设计打开,显示两个正弦波源被加在一起,分别通过两个低通滤波器。本设计强调低通滤波器可以使用Simulink FDATool 或低通滤波器块实现。
2、运行仿真
从 Simulink 项目工作表中,选择 Simulation>Run 或单击 Run 仿真按钮。
仿真完成后,你可以看到初始求和波形的频谱,显示 1MHz 和 9MHz 分量,以及两个滤波器的结果,显示 9MHz 信号的衰减。
3、使用 System Generator 创建 FIR 滤波器
<1>、从库浏览器寻找需要的模块
现在,你将使用 System Generator 块创建同一过滤器的一个版本,以便在 FPGA 中实现
①、点按 Simulink 工具栏中的 “库浏览器” 按钮以打开 Simulink 库浏览器。
②、展开 Xilinx 模块组菜单,选择 DSP,然后选择数字 FIR 滤波器。右键单击数字 FIR 滤波器块,然后选择 Add 块对 Lab1_1 进行建模。
您可以通过访问块属性定义数字 FIR 滤波器块的滤波器系数——双击数字 FIR 滤波器块来查看这些——或者,在这种情况下,它们可以使用 FDATool 来定义。
③、在与上一步相同的 DSP 模块组中,选择 FDATool 并将其添加到 Lab1_1 设计中。
FPGA 设计需要定义三个重要方面:
- 输入端口
- 输出端口
- FPGA 技术
接下来的三个步骤将展示如何将这些属性中的每一个添加到 Simulink 设计中。
④、在 “基本元素” 菜单中,选择 “Gateway In”、“Gateway Out” 和 “System Generator” 并将其添加到设计中
⑤、复制一个现有的 Spectrum Analyzer 块,通过单击实例名称标签并编辑文本,将实例重命名为 Spectrum Analyzer SysGen。
⑥、如下图所示连接块。使用鼠标左键进行端口和网络之间的连接。
设计过程的下一部分是配置系统生成器块
<2>、配置系统生成器块
第一个任务是定义新滤波器的系数。对于此任务,您将使用 Xilinx 块版本的 FDATool。如果您打开现有的 FDATool 模块,您可以查看现有的频率和幅度规格。
①、双击 FDATool 实例以打开属性编辑器,将过滤器规格调整为以下值 (如下图所示)
- Frequency Specifications(频率规格)
- Units = MHz
- Fs = 20
- Fpass(通带边界频率) = 1.5
- Fstop(阻带边界频率) = 8.5
- Magnitude Specifications(震级规格)
- Units = dB
- Apass(通带平坦度(通带衰减)) = 0.01
- Astop(阻带衰减) = 100
并点击 Design Filter
上图设计滤波器时调整的参数可以参考下图:
②、将 FDATool 实例的过滤器参数与 Digital FIR Filter 实例关联起来。
双击数字 FIR 过滤器实例打开属性编辑器,在 Filter Parameters 部分,用 xlfda_numerator(‘FDATool’) 替换现有的系数(系数向量),以使用 FDATool 实例定义的系数,单击 “确定” 退出 “数字FIR滤波器” 属性编辑器。
在 FPGA中,设计以特定的时钟速率工作,并使用特定数量的位来表示数据值。
标准 Simulink 环境中使用的连续时间和 FPGA 硬件环境中的离散时间之间的过渡是通过定义 “Gateway In” 块的采
样率来确定的。这决定了连续输入波形的采样频率。该采样率由 System Generator 自动传播到设计中的其他块。
以类似的方式,用于表示数据的位数在“Gateway In 块”中定义,也通过系统传播。
这两个属性(速率和位宽度)决定了表示连续时间信号的精确度。这两个属性也会对最终硬件的大小、性能和成本
产生影响。
System Generator 允许您使用 Simulink 环境来定义、仿真和检查这些属性的影响。
③、双击 Gateway In 块打开属性编辑器
由于设计中正弦波的最高频率为 9MHz,因此采样理论规定输入端口的采样频率必须至少为 18MHz。对于本设计,将使用 20MHz。在属性编辑器的底部,将采样周期设置为 1/20e6
现在,将位宽保留为默认定点 2 的补码 16 位,其中 14 位表示二进制点以下的数据。这使我们能够表示 -20 到 1.999的范围,这超过了正弦波(振幅均为1)求和所需的范围。
单击 “确定” 关闭 “Gateway In 块” 属性编辑器,这使我们现在能够使用精确的采样率和位宽来精确地验证硬件。
④、双击 System Generator 标记以打开属性编辑器。由于输入端口以 20MHz 采样以充分表示数据,因此必须将 FPGA 的时钟速率和 Simulink 采样周期定义为至少 20MHz。
选择时钟选项卡
- 设置 FPGA 时钟周期为 50ns (1/20 MHz)
- 指定 Simulink 系统周期为1/20e6 秒
- 从执行分析菜单中,选择合成后,从分析器类型菜单中选择资源,如下所示。此选项提供完成后的资源使用详细信息
单击 “确定” 退出系统生成器令牌
⑤、单击 Run simulation 按钮来模拟设计并查看结果,结果如下图
由于新的设计是周期和比特精确的,模拟可能需要比以前更长的时间来完成
结果如上所示,在右侧(在Spectrum Analyzer SysGen窗口中),与原始设计略有不同(在Spectrum Analyzer FDA Tool窗口中显示在左侧)。这是由于在离散时间硬件中描述连续时间系统时固有的量化和采样效应。
<3>、在 FPGA 上实现设计
最后一步是在硬件上实现这个设计。此过程将把 “Gateway In” 和 “Gateway Out” 块之间包含的所有内容合成为硬件描述。该设计描述以 Verilog 硬件描述语言(HDL)输出。此过程由 System Generator 令牌控制。
①、双击 System Generator 令牌以打开 Properties Editor,选择 Compilation 选项卡以指定有关设备和设计流的详细信息。从 Compilation 菜单中选择 IP Catalog 编译目标,以确保输出为 IP Catalog 格式。Part 菜单选择 FPGA 设备,我这里使用 zynq-7020 。使用默认的硬件描述语言 Verilog,目标生成目录自己定义。将创建接口文档和创建 testbench 选项勾选。
②、单击 Generate 将设计编译成硬件。编译过程将在 Simulink 块中捕获的设计转换为工业标准的 RTL(寄存器传输级)设计描述。RTL 设计可以综合成一个硬件设计。
当硬件设计描述生成后,将出现 Resource Analyzer 窗口
。
③、查看生成的工程文件
设计编译过程的输出写入 D:\Project\SystemGenerator_Prj\Lab1_1 目录。该目录包含三个子目录:
- sysgen:这包含了用工业标准 Verilog 格式编写的 RTL 设计描述。这是为希望查看详细结果的硬件设计经验丰富的用户提供的
- ip:该目录包含以 Xilinx IP Catalog 格式捕获的设计 IP,用于将设计传输到 Xilinx Vivado 设计套件中。实验5:使用AXI接口和IP集成商,在本文档后面介绍,详细解释如何将您的设计 IP 转移到 Vivado 设计套件中,以便在FPGA 中实现
- ip_catalog:此目录包含一个示例 Vivado 项目,其中已包含设计 IP。本项目仅作为快速分析的手段提供。上面的图显示了综合设计后所使用的资源的汇总。您还可以使用 ip_catalog 目录中的 Vivado 项目示例来查看硬件中的结果。
④、同时出现 “编译状态” 对话框,单击 OK 以关闭编译状态对话框
重要事项:ip_catalog 目录中提供的 Vivado 项目不包含顶级 I/O 缓冲区。综合结果为最终的设计结果提供了很好的估计,但是本项目的结果不能用来创建最终的 FPGA。
System Generator初体验FIR滤波器(二)https://developer.aliyun.com/article/1472306