主要内容

从 Simulink 模型生成 HDL 代码

此示例说明如何为 Simulink® 中的简单计数器模型生成 HDL 代码。此模型兼容 HDL 代码生成。要创建此计数器模型,请参阅创建 HDL 兼容的 Simulink 模型

用于 HDL 代码生成的模型模板

您可以使用模板对寄存器、ROM、基本算术运算、复数乘法器、移位寄存器等进行建模。

要选择您的模板,请在 MATLAB® 工具条上,点击 Simulink 按钮,然后导航到 HDL Coder 部分。请参阅Use Simulink Templates for HDL Code Generation

在生成 HDL 代码之前,您可以使用 HDL 代码顾问检查和更新模型的 HDL 兼容性。请参阅Check HDL Compatibility of Simulink Model Using HDL Code Advisor

简单计数器模型

此模型从零向上计数到阈值 15,然后绕回到零。通过更改连接到 count_threshold 端口的 Constant 模块值,您可以更改阈值。使能端口指定计数器是向上计数还是保持先前的值。通过更改连接到使能端口的 Constant 模块值,您可以更改计数器动作。值为 1 表示计数器向上计数。值为 0 表示保持先前的计数值。

生成 HDL 代码

对于计数器模型,HDL_DUT 子系统是 DUT。要为 DUT 生成代码,请执行以下操作:

  1. App 选项卡中,选择 HDL Coder

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

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

生成 SystemVerilog 代码

要为计数器模型生成 SystemVerilog 代码,请执行以下操作:

  1. HDL 代码选项卡中,点击设置

  2. HDL 代码生成窗格中,对于语言,选择 SystemVerilog。点击应用,然后点击生成

SystemVerilog language selected in the Configuration parameters dialog box.

HDL Coder 在生成代码之前编译模型。根据模型显示选项(如端口数据类型),模型在代码生成后外观可能会发生变化。随着代码生成的进行,HDL Coder 在 MATLAB 命令行中显示进度消息,其中包含指向配置集和生成文件的链接。要在 MATLAB 编辑器中查看文件,请点击这些链接。

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

### HDL Code Generation Complete.

查看 HDL 代码生成文件

当前文件夹中会出现 hdlsrc 文件夹的文件夹图标。要查看生成代码和脚本文件,请双击 hdlsrc 文件夹,然后双击与您为其生成 HDL 代码的模型同名的文件夹。

  • HDL_DUT.vhd:VHDL® 代码,其中包含实现您设计的计数器的实体定义和 RTL 架构。如果您生成了 Verilog 或 SystemVerilog 代码,您将得到 HDL_DUT.vHDL_DUT.sv 文件。

  • HDL_DUT_compile.doSiemens® ModelSim™ 编译脚本。

  • HDL_DUT_map.txt:映射文件,它将 HDL 代码中生成的实体或模块映射到生成它们的模型中的子系统。请参阅Trace Code Using the Mapping File

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

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

  • hcv:HDL 代码视图文件,用于在 Simulink 的代码视图面板上显示生成代码。要在 Simulink 中查看生成的 HDL 代码,请在 HDL Coder 上点击查看代码

HDL Coder 创建一个名为生成模型的 HDL 代码行为模型。生成模型的名称与原始模型相同,并具有前缀 gm_。生成模型对生成的 HDL 代码是逐位精确和周期精确的。此模型显示您指定的模块实现以及速度和面积优化的效果。另请参阅Introduction to Optimizations in HDL Coder

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

gm_hdlcoder_simple_up_counter

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

要同时查看生成的 HDL 代码和模型,您可以使用代码视图。在为模型生成 HDL 代码后,代码视图会在模型右侧显示生成代码。要手动打开代码视图,请打开 HDL Coder。在 Simulink 工具条上点击查看代码按钮。使用代码视图顶部的下拉列表选择要显示的文件。您可以从编辑器中停靠或取消停靠代码视图,并使用代码视图右上角的向下箭头最小化或展开代码视图。

检查生成的 HDL 代码

为了更轻松地识别源模型与生成的 HDL 代码之间的映射,请生成可追溯性报告。使用该报告从模型中的模块导航到该模块的生成代码,以及从代码导航到模型中的模块。

要生成可追溯性报告,请执行以下操作:

  1. HDL 代码选项卡中,点击设置 > 报告选项

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

Generate traceability report check box selected in the Configuration Parameters dialog box.

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

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

使用代码视图:

  1. 点击生成 HDL 代码后出现在右侧的代码视图面板,或手动点击 HDL Coder 的 Simulink 工具条上的查看代码按钮。

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

    Model to code traceability in Code View

  3. 在代码视图中,点击行号超链接或代码注释链接,以突出显示该代码行追溯到的模块。您可以将代码行追溯到生成这些代码行的模型元素。

    Code to model traceability in Code view

使用代码生成报告:

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

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

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

Traceability report showing code-to-model and model-to-code navigation.

请参阅Navigate Between Simulink Model and HDL Code by Using TraceabilityCreate and Use Code Generation Reports

生成的源文件部分中,如果点击 HDL 文件 HDL_DUT,您会看到信号 clkresetclk_enable。这些信号是控制目标硬件上触发器的时钟、复位和时钟使能信号。HDL Coder 根据您在模型中使用的顺序元素(如 Delay 模块)在代码中生成这些信号。请参阅Generation of Clock Bundle Signals in HDL Coder

使用验证模型验证 HDL 行为

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

要生成验证模型,请执行以下操作:

  1. HDL 代码选项卡中,点击设置

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

Configuration parameters option to select Validation model check box.

在代码生成日志中,您会看到指向验证模型的链接。验证模型具有与生成模型相同的前缀,并且还具有后缀 _vnl。对于计数器模型,验证模型的名称为 gm_hdlcoder_simple_up_counter_vnl.slx。您可以在与生成模型相同的文件夹中找到此模型。要打开此模型,请输入:

gm_hdlcoder_simple_up_counter_vnl

Validation model comparing output of generated model with original model.

在对模型进行仿真后,双击 Compare 子系统,然后导航到 Assert_Out 子系统内部。如果您打开 Scope 模块,您会看到 err 信号的值为零,这意味着生成模型的输出与原始模型匹配。

请参阅Generated Model and Validation Model

验证生成的 HDL 代码

在将设计部署到目标硬件之前,请验证生成的 HDL 代码。从 hdlsrc 文件夹导航到当前工作文件夹。请参阅Verify Generated HDL Code from Simulink Model

另请参阅

| |

主题