这个例子展示了如何在Simulink中为一个简单的计数器模型生成HDL代码金宝app®.该模型与HDL代码生成兼容。要创建此计数器模型,请参见创建兼容hdl的Simulink模型金宝app.
您可以创建自己的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_DUT
子系统是DUT。为DUT生成代码:
在应用程序选项卡上,选择高密度脂蛋白编码器.
在您的模型中选择DUT子系统,并确保子系统名称出现在代码选择在HDL代码选项卡。要记住选择,请固定此选项。点击生成HDL代码.
默认情况下,HDL Coder在目标中生成VHDL代码hdlsrc
文件夹中。
为计数器模型生成Verilog代码:
在HDL代码选项卡上,单击设置.
在HDL代码生成窗格中,为语言中,选择Verilog
.点击应用然后点击生成.
HDL Coder在生成代码之前编译模型。根据模型显示选项(如端口数据类型),模型可以在代码生成后改变外观。随着代码生成的进行,HDL Coder会在MATLAB命令行中显示进度消息,并带有指向配置集和生成的文件的链接。要在MATLAB编辑器中查看文件,请单击链接。
该过程完成并显示消息:
### 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代码选项卡上,单击设置>报告选项.
在HDL代码生成>报告窗格中,选择生成可跟踪性报告,然后生成HDL代码HDL_DUT
子系统
生成代码后,将打开“代码生成报告”窗口。中的代码生成报告文件hdlsrc \ html \
构建文件夹的文件夹。如果关闭报表,可以导航到此文件夹以重新打开报表。
要从HDL代码导航到模型,请遵循以下任一工作流程:
使用Code视图:
单击生成HDL代码后出现的右侧的Code视图面板,或手动单击视图代码控件的Simulink工具条金宝app上的高密度脂蛋白编码器应用程序。
要从模型元素导航到它们生成的代码,请在模型中单击一个块。Code视图突出显示块的代码,并滚动到突出显示的代码行。
在Code视图中,单击行号超链接或代码注释链接以突出显示代码行跟踪到的块。您可以跟踪代码行到生成它们的模型元素。
使用代码生成报告:
在代码生成报告中,导航到可跟踪性报告部分中的链接,然后单击代码位置部分。
选择到一行代码的超链接,以突出显示模型中相应的代码块。
要从模型中的一个块导航到HDL代码,请选择该块,然后单击导航到代码按钮审查结果部分的HDL代码选项卡。
看到使用可追溯性在Simulink模型金宝app和HDL代码之间导航和创建和使用代码生成报告.
在生成的源文件节,如果单击HDL文件HDL_DUT
,你看到了信号clk
,重置
,clk_enable
.这些信号是时钟、复位和时钟使能信号,控制目标硬件上的触发器。HDL编码器在代码中根据顺序元素生成这些信号,如延迟在模型中使用的块。看到在HDL编码器中生成时钟束信号.
要用原始模型验证HDL代码的行为模型,请生成一个验证模型。验证模型包含原始模型和生成的模型。它通过使用您在原始模型中提供的测试向量来比较两个模型的输出。
要生成验证模型:
在HDL代码选项卡上,单击设置.
在HDL代码生成>全局设置>模型生成选项卡上,选择验证模型,然后生成HDL代码HDL_DUT
子系统。
在代码生成日志中,您可以看到到验证模型的链接。验证模型与生成的模型具有相同的前缀和后缀_vnl
.对于计数器模型,验证模型具有该名称gm_hdlcoder_simple_up_counter_vnl.slx
.您可以在与生成的模型相同的文件夹中找到该模型。要打开这个模型,输入:
gm_hdlcoder_simple_up_counter_vnl
在模拟模型之后,双击比较
子系统,然后在Assert_Out
子系统。如果你打开范围布洛克,你看犯错
Signal的值为0,这意味着生成的模型输出与原始模型匹配。
看到生成模型和验证模型.
在将设计部署到目标硬件上之前,请验证生成的HDL代码。从hdlsrc
文件夹,导航到当前工作文件夹。看到验证从Simulink模型生成的HDL代码金宝app.