主要内容

为Simscape模型生成HDL代码

这个示例展示了如何为使用Simcape™块的半波整流器模型生成HDL代码。使用Simscape HDL Workflow Advisor生成一个HDL实现模型。然后您可以为实现模型生成HDL代码。看到开始使用Simscape在环硬件工作流

半波整流模型

打开半波整流模型,在MATLAB命令提示符下输入:

open_system (“sschdlexHalfWaveRectifierExample”

在本地保存此模型为HalfWaveRectifier_HDL以运行工作流。

open_system (“HalfWaveRectifier_HDL”) set_param (“HalfWaveRectifier_HDL”“SimulationCommand”“更新”

在模型的顶层,aSimscape_system块模型半波整流算法。该模型接受一个正弦波输入,使用一个速率转换块离散连续时间输入,并有一个计算输出的Scope块。要查看半波整流算法,双击Simscape_system子系统。

open_system (“HalfWaveRectifier_HDL / Simscape_system”

半波整流器由电阻和二极管组成,电阻是一个线性块,二极管是一个开关线性块。Simscape模型是为HDL兼容性而预先配置的。在输入和输出端口接口上,模型有Simulink-PS Converter和PS-Simulink Conver金宝appter模块。求解器设置的配置是为了与Simscape HDL Workflow Advisor兼容。如果您打开求解器配置块的块参数对话框,使用本地解算器选择和向后欧拉指定为解算器类型.看到开始使用Simscape在环硬件工作流

要查看功能,模拟模型,然后打开Scope块。

sim卡(“HalfWaveRectifier_HDL”) open_system (“HalfWaveRectifier_HDL /范围”

运行Simscape HDL Workflow Advisor

要生成用于生成代码的HDL实现模型,请使用Simscape HDL Workflow Advisor。要打开Advisor,运行以下命令:

sschdladvisor (“HalfWaveRectifier_HDL”
###运行Simscape HDL Workflow Advisor for 这是什么?.另请参阅Simscape HDL工作流顾问任务

要运行工作流并比较HDL实现模型与原始Simscape算法的功能,请选择生成实现模型步骤,然后选择为实现模型生成验证逻辑复选框。使用一个验证逻辑宽容0.001.右键单击生成实现模型步骤和选择运行到选定任务

Advisor生成一个HDL实现模型和一个状态空间验证模型。实现模型与原始Simscape模型具有相同的名称,并使用前缀gmStateSpaceHDL_.状态空间验证模型与实现模型具有相同的名称,并使用后缀_vnl

开放和检查HDL实现模型

生成实现模型任务,单击链接以打开实现模型。模型包含Simscape_system子系统包含高密度脂蛋白子系统块。的高密度脂蛋白子系统对从Simscape模型生成的状态空间表示进行建模。

open_system (“gmStateSpaceHDL_HalfWaveRectifier_HDL”) open_system (“gmStateSpaceHDL_HalfWaveRectifier_HDL / Simscape_system”) set_param (“gmStateSpaceHDL_HalfWaveRectifier_HDL”“SimulationCommand”“更新”

这个子系统的端口使用与原始Simscape模型中的Simulink-PS转换器和PS-Simulink转换金宝app器模块相同的名称。如果您在这个子系统中导航,您会看到一些建模状态空间方程的延迟、加法器和Matrix Multiply块。

open_system (“gmStateSpaceHDL_HalfWaveRectifier_HDL / Simscape_system / HDL子系统/ HDL算法”

要模拟HDL实现模型,输入tese命令。打开Scope块以查看结果。

sim卡(“gmStateSpaceHDL_HalfWaveRectifier_HDL”) open_system (“gmStateSpaceHDL_HalfWaveRectifier_HDL /范围”

生成的HDL代码高密度脂蛋白子系统块在这个模型内。

验证高密度脂蛋白算法

为了比较HDL实现模型与原始Simscape算法的功能,打开并模拟状态空间验证模型。

open_system (“gmStateSpaceHDL_HalfWaveRectifier_HDL_vnl”) sim卡(“gmStateSpaceHDL_HalfWaveRectifier_HDL_vnl”

该模型的输出与原始Simscape模型相匹配。模拟不生成断言,这表明输出匹配。有关更系统的验证,请参阅验证Simscape算法的HDL实现模型

在某些情况下,Simscape算法可能与使用Simscape HDL Workflow Advisor生成实现模型不兼容。在这种情况下,在Advisor中运行某些任务可能会导致任务失败。要学习如何使它与HDL兼容,请参见:

生成HDL代码和验证模型

使用下面的命令保存HDL模型和子系统参数设置:

hdlsaveparams (“gmStateSpaceHDL_HalfWaveRectifier_HDL”);
%% Set Model 'gmStateSpaceHDL_HalfWaveRectifier_HDL' HDL参数hdlset_param('gmStateSpaceHDL_HalfWaveRectifier_HDL', 'FloatingPointTargetConfiguration', hdlcoder。createFloatingPointTargetConfig(“NativeFloatingPoint”……,‘LatencyStrategy’,‘Min’,‘handledennormals’,‘Off’)……);hdlset_param('gmStateSpaceHDL_HalfWaveRectifier_HDL', 'HDLSubsystem', 'gmStateSpaceHDL_HalfWaveRectifier_HDL/Simscape_system/HDL子系统');hdlset_param (' gmStateSpaceHDL_HalfWaveRectifier_HDL ', ' MaskParameterAsGeneric ', '对');hdlset_param (gmStateSpaceHDL_HalfWaveRectifier_HDL,过采样,60);%设置子系统HDL参数hdlset_param('gmStateSpaceHDL_HalfWaveRectifier_HDL/Simscape_system/HDL子系统',' flatflathierarchy ', 'on');hdlset_param('gmStateSpaceHDL_HalfWaveRectifier_HDL/Simscape_system/HDL子系统/HDL算法/模式选择/生成模式向量','架构','MATLAB数据路径');

该模型使用单一数据类型,并在其中生成HDL代码本机浮点模式。浮点运算符可能会引入延迟。由于设计包含反馈循环,为了在反馈循环内为操作人员分配足够的延迟,该模型使用时钟速率流水线与一个较大的值过采样因子.一个过采样因子60该模型节省了时钟速率流水线优化。

有关更多信息,请参见:

在生成HDL代码之前,启用验证模型的生成。验证模型比较代码生成后生成的模型和原始模型的输出。想要了解更多,请看生成模型和验证模型

运行以下命令在你的Simulink模型上保存验证模型生成设置:金宝app

HDLmodelname =“gmStateSpaceHDL_HalfWaveRectifier_HDL”;hdlset_param (HDLmodelname“TargetDirectory”“C: / Temp / hdlsrc”);hdlset_param (HDLmodelname“GenerateValidationModel”“上”);

要生成HDL代码,运行以下命令:

makehdl (“gmStateSpaceHDL_HalfWaveRectifier_HDL / HDL子系统”);

生成的HDL代码和验证模型保存在其中C: / Temp / hdlsrc目录中。生成的代码保存为HDL_Subsystem_tc.vhd.要打开验证模型,请单击gm_gmStateSpaceHDL_HalfWaveRectifier_HDL_vnl.slx在命令窗口的代码生成日志。

打开比较块的输出高密度脂蛋白Subsystem_vnl验证模型的子系统。然后,打开Assert_Out1块。要查看HDL代码生成后的仿真结果,请打开比较:着干活块范围。上面的图表示生成模型的输出,中间的图表示实现模型的输出。按钮图计算两个模型输出之间的差异。当输出匹配时,错误为零。

另请参阅

功能

相关的话题