主要内容

从Simulink模型生成HDL代码金宝app

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

用于HDL代码生成的模型

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

  • 中提供的HDL编码器™示例模型hdlcoderdemos文件夹中。

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

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

    sfir_fixed

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

    选择您的模板,在MATLAB工具条上,单击按钮,然后导航到高密度脂蛋白编码器部分。看到使用Si金宝appmulink模板生成HDL代码

在生成HDL代码之前,您可以使用HDL code Advisor检查和更新模型的HDL兼容性。看到用HDL Code Advisor检查Simulink金宝app模型的HDL兼容性

简单的计数模型

打开这个模型可以看到一个简单的计数器。该模型从零计算到一个阈值,然后再回退到零。设置阈值为15.要更改阈值,请将输入的值更改为count_threshold端口。启用信号指定计数器是向上计数还是保持先前的值。的值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代码的模型。金宝app

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

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

gm_hdlcoder_simple_up_counter

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

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

检查生成的HDL代码

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

要生成可追溯性报告:

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

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

“生成可跟踪性报告”复选框。

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

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

使用Code视图:

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

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

    代码视图中的模型到代码的可追溯性

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

    代码视图中的代码到模型的可追溯性

使用代码生成报告:

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

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

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

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

看到使用可追溯性在Simulink模型金宝app和HDL代码之间导航创建和使用代码生成报告

生成的源文件节,如果单击HDL文件HDL_DUT,你看到了信号clk重置,clk_enable.这些信号是时钟、复位和时钟使能信号,控制目标硬件上的触发器。HDL编码器在代码中根据顺序元素生成这些信号,如延迟在模型中使用的块。看到在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子系统。如果你打开范围布洛克,你看犯错Signal的值为0,这意味着生成的模型输出与原始模型匹配。

看到生成模型和验证模型

验证生成的HDL代码

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

另请参阅

||

相关的话题