Bootstrap

Matlab Simulink HDL Coder开发流程(一)— 创建HDL兼容的Simulink模型

这个例子说明了如何创建一个用于生成HDL代码的Simulink模型。要创建兼容HDL代码生成的MATLAB算法,请参见“Guidelines for Writing MATLAB Code to Generate Efficient HDL and HLS Code”。

该模型是一种简单的计数器算法,它向上计数,并在达到您指定的上限后包装回零。

一、使用Balnk DUT模板

要创建一个与HDL兼容的Simulink模型,请使用Blank DUT模板。使用hdlsetup函数对模板进行预配置,以便生成HDL代码。
1、在MATLAB工具栏上,单击Simulink按钮。
2、在Simulink开始页中,导航到HDL Coder部分,然后选择Blank DUT模板。
3、用文件名hdlcoder_simple_up_counter.slx保存模型到可写的工作文件夹中。
在这里插入图片描述
Blank DUT模板有一个HDL_DUT子系统,对应于为其生成HDL代码的测试下设计(DUT)。为了验证DUT的功能,该模板包含一个位于HDL_DUT子系统之外的Create HDL-Compatible Simulink Model 3-5测试台,该测试台为DUT提供输入并记录输出值。

二、从HDL Coder库中选择模块

要设计计数器算法,请使用HDL Coder库中的块。这个库中的块是为生成HDL代码而预先配置的。要过滤Simulink库浏览器以显示支持HDL代码生成的块库:
1、在Apps选项卡上,选择HDL Coder。
2、从HDL Code选项卡中选择HDL Block Properties>Open HDL Block Library。
或者,在命令行输入hdllib:

hdllib

在这里插入图片描述
HDL Coder库中的块可与Simulink一起使用。如果没有HDL Coder,则可以在模型中对块进行仿真,但不能生成HDL代码。
你可以在这些块库中找到额外的支持HDL的块:

  • DSP System T oolbox HDL Support
  • Communications T oolbox HDL Support
  • Vision HDL T oolbox
  • Wireless HDL T oolbox

若要将库浏览器恢复为默认视图,请在库浏览器中单击返回按钮。或者,在命令行输入:

hdllib('off')

三、为DUT开发算法/功能

1、双击HDL_DUT子系统。将块从HDL Coder库拖到模型中。
该表列出了要添加到模型中用于设计计数器的块。要了解块的作用并指定其块参数,请双击该块。
在这里插入图片描述
2、将输入端口In1和In2分别重命名为count_threshold和Enable。将模块放入模型中并连接它们。
在这里插入图片描述
Enable信号指定计数器是否从前一个值向上计数。当Enable信号为逻辑高时,计数器从0开始计数到count_threshold值。当out的值等于count_threshold值时,计数器将返回零,并且再次开始计数。当使能信号变为逻辑低时,计数器保持先前的值。

四、为设计创建Testbench

导航到模型的顶层并更改输入设置。

  • 常量块输入到count_threshold:该输入指示计数器计数的最大值。这个例子展示了如何设计一个4位向上计数器。设置常量值为15(2^4 - 1),并设置输出数据类型为uint8。然后,这个常量块的输出数据类型与HDL_DUT子系统中常量块的输出数据类型相匹配。
  • 自由计数器模块输入到 Enable:移除自由计数器模块。将此块替换为值为1的常量块,输出数据类型设置为布尔,采样时间设置为1。
    在这里插入图片描述
    前一节展示了hdlcoder_simple_up_counter。您按照上面描述的步骤创建的SLX模型。要在MATLAB中打开模型,请单击“打开模型”按钮。

五、仿真验证设计功能

将模型的停止时间设置为50。通过单击仿真按钮模拟您的模型。要查看模拟结果,请打开模型顶层的Scope块。
仿真结果显示使能信号产生一个常数1。输出信号从0计数到15,包装回0,然后再次计数。
在这里插入图片描述

六、Simulink模型生成HDL代码

在生成HDL代码之前,您可以验证模型设置是否与HDL代码生成兼容。本例中使用的计数器模型与HDL代码生成兼容。要验证和更新HDL兼容性的模型,请使用HDL Code Advisor。

本章节内容在下篇文章中进行详细说明:Matlab Simulink HDL Coder开发流程(二)—从Simulink模型生成HDL代码

参考文档:Matlab Simulink HDL Coder官方使用文档说明

;