这个示例展示了如何为使用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 /范围”)
要生成用于生成代码的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代码生成后的仿真结果,请打开比较:着干活
块范围。上面的图表示生成模型的输出,中间的图表示实现模型的输出。按钮图计算两个模型输出之间的差异。当输出匹配时,错误为零。