主要内容

从Simulink模型生成HDL代码

这个例子展示了如何在Simulink中为一个简单的计数器模型生成HDL代码®.该模型与HDL代码生成兼容。要创建此计数器模型,请参见创建兼容hdl的Simulink模型

用于HDL代码生成的模型

您可以创建自己的hdl兼容模型,如计数器模型或选择:

  • HDL Coder™示例模型可在hdlcoderdemos文件夹中。

    cd (fullfile (matlabroot,“工具箱”“hdlcoder”“hdlcoderdemos”))

    这些模型可以在MATLAB中找到®路径。例如,你可以选择对称的FIR滤波器模型.要使用此模型,输入:

    sfir_fixed

  • 用于HDL代码生成的Simulink模板。您可以使用模板对寄存器、ROM、基本算术运算、复杂乘法器、移位寄存器等建模。

    若要选择模板,请在MATLAB工具条上单击按钮,然后导航到高密度脂蛋白编码器部分。看到使用Simulink模板生成HDL代码

在生成HDL代码之前,您可以使用HDL代码顾问检查和更新模型以确保HDL兼容性。看到使用HDL Code Advisor检查Simulink模型的HDL兼容性

简单计数器模型

打开这个模型可以看到一个简单的计数器。该模型从0开始计数到一个阈值,然后返回到0。将阈值设置为15.若要更改阈值,请将输入的值更改为count_threshold端口。Enable信号指定计数器是向上计数还是保持前一个值。值为1计数器连续向上计数。

生成HDL代码

对于计数器模型,使用HDL_DUT子系统是DUT。为DUT生成代码:

  1. 应用程序选项卡上,选择高密度脂蛋白编码器

  2. 在您的模型中选择DUT子系统,并确保这子系统名称出现在代码选项HDL代码选项卡。要记住选择,请固定此选项。点击生成HDL代码

默认情况下,HDL Coder在目标中生成VHDL代码hdlsrc文件夹中。

生成Verilog代码

为计数器模型生成Verilog代码:

  1. HDL代码选项卡上,单击设置

  2. HDL代码生成窗格中,为语言中,选择Verilog.点击应用然后点击生成

HDL Coder在生成代码之前编译模型。根据模型显示选项(如端口数据类型),在代码生成之后,模型可以改变外观。随着代码生成的进行,HDL Coder在MATLAB命令行中显示进度消息,并链接到配置集和生成的文件。要在MATLAB编辑器中查看文件,请单击链接。

该过程完成并显示以下消息:

HDL代码生成完成。

查看HDL代码生成文件

的文件夹图标hdlsrc文件夹显示在当前文件夹中。要查看生成的代码和脚本文件,双击hdlsrc文件夹,然后双击与为其生成HDL代码的模型具有相同名称的文件夹。

  • HDL_DUT.vhd:硬件描述语言(VHDL)®包含实体定义和实现您设计的计数器的RTL体系结构的代码。如果你生成Verilog代码,你会得到一个HDL_DUT.v文件。

  • HDL_DUT_compile.do导师图形®ModelSim®编译脚本。

  • HDL_DUT_map.txt:映射文件,将HDL代码中生成的实体或模块映射到生成它们的模型中的子系统。看到使用映射文件的跟踪代码

  • HDL_DUT_report.html: HDL检查报告显示HDL代码生成状态和警告或消息。

  • gm_hdlcoder_simple_up_counter.slx:在Simulink建模环境中生成行为表示HDL代码的模型。

HDL Coder创建HDL代码的行为模型,称为生成的模型.生成的模型名称与原始模型相同,并且具有前缀gm_.生成的模型对生成的HDL代码是位真和周期精确的。此模型显示了块实现的效果以及您指定的速度和区域优化。另请参阅速度和区域优化在HDL编码器

要打开计数器的生成模型,输入:

gm_hdlcoder_simple_up_counter

对于计数器模型,由于禁用了优化,因此生成的模型与原始模型相同。

要查看生成的HDL代码和模型,可以使用code视图。在为模型生成HDL代码之后,code视图将生成的代码显示在模型的右侧。要手动打开Code视图,请打开高密度脂蛋白编码器在“Simulink”工具栏中单击视图代码按钮。使用Code视图顶部的下拉列表选择要显示的文件。您可以从编辑器中停靠或取消停靠Code视图,并使用Code视图右上角的向下箭头最小化或展开Code视图。

检查生成的HDL代码

为了更容易地识别源模型和生成的HDL代码之间的映射,生成一个可跟踪性报告。使用报告从模型中的块导航到为该块生成的代码,并从代码导航到模型中的块。

生成可追溯性报告:

  1. HDL代码选项卡上,单击设置>报告选项

  2. HDL代码生成>报告窗格中,选择生成可追溯性报告,然后生成HDL代码HDL_DUT子系统

“生成可跟踪性报告”复选框在“配置参数”对话框中选中。

生成代码后,将打开“代码生成报告”窗口。HDL Coder编写代码生成报告文件在hdlsrc \ html \生成文件夹的文件夹。如果关闭报表,则可以导航到此文件夹以重新打开报表。

要从HDL代码导航到模型,请遵循以下工作流中的任何一个:

使用Code视图:

  1. 单击右边生成HDL代码后出现的Code视图面板或手动单击视图代码控件的Simulink工具条上的高密度脂蛋白编码器应用程序。

  2. 要从模型元素导航到它们生成的代码,在您的模型中,单击一个块。Code视图突出显示块的代码,并滚动到突出显示的代码行。

    在代码视图中建模到代码的可跟踪性

  3. 在“代码”视图中,单击行号超链接或代码注释链接,以突出显示代码行所跟踪到的块。您可以跟踪代码行到生成它们的模型元素。

    在代码视图中建模可跟踪性的代码

使用代码生成报告:

  1. 在“代码生成报告”中,导航到可跟踪性报告部分中的链接,然后单击代码位置部分。

  2. 选择到代码行的超链接,以突出显示模型中相应的块。

若要从模型中的块导航到HDL代码,请选择该块,然后单击浏览代码按钮。审查结果部份HDL代码选项卡。

显示代码到模型和模型到代码导航的可追溯性报告。

看到使用可跟踪性在Simulink模型和HDL代码之间导航而且创建和使用代码生成报告

已生成的源文件部分,如果单击HDL文件HDL_DUT,你会看到信号clk重置,clk_enable.这些信号是控制目标硬件上触发器的时钟、复位和时钟启用信号。HDL Coder在代码中生成这些信号取决于顺序元素,如延迟您在模型中使用的块。看到在HDL编码器中时钟束信号的生成

使用验证模型验证HDL行为

要用您的原始模型验证HDL代码的行为模型,请生成一个验证模型。验证模型包含原始模型和生成的模型。它使用您在原始模型中提供的测试向量来比较两个模型的输出。

要生成验证模型:

  1. HDL代码选项卡上,单击设置

  2. HDL代码生成>全局设置>模型生成选项卡上,选择验证模型,然后生成HDL代码HDL_DUT子系统。

配置参数选项以选中验证模型复选框。

在代码生成日志中,您可以看到到验证模型的链接。验证模型具有与生成模型相同的前缀,也具有后缀_vnl.对于计数器模型,验证模型具有名称gm_hdlcoder_simple_up_counter_vnl.slx.您可以在生成的模型所在的文件夹中找到这个模型。要打开这个模型,输入:

gm_hdlcoder_simple_up_counter_vnl

验证模型比较生成模型的输出与原始模型。

在模拟模型之后,双击比较子系统,然后在Assert_Out子系统。如果你打开范围Block,你可以看到犯错Signal的值为0,这意味着生成的模型输出与原始模型匹配。

看到生成模型和验证模型

验证生成的HDL代码

在将设计部署到目标硬件之前,请验证生成的HDL代码。从hdlsrc文件夹,导航到当前工作文件夹。看到从Simulink模型验证生成的HDL代码

另请参阅

||

相关的话题

Baidu
map