生成Simscape模型的HDL代码
这个例子展示了如何为使用Simscape™模块的半波整流器模型生成HDL代码。使用Simscape HDL Workflow Advisor生成HDL实现模型。然后,您可以为实现模型生成HDL代码。看到开始Simscape硬件在循环工作流.
半波整流模型
要打开半波整流器模型,在MATLAB®命令提示符下,输入:
open_system (“sschdlexHalfWaveRectifierExample”)
在本地保存此模型为HalfWaveRectifier_HDL
运行工作流。
open_system (“HalfWaveRectifier_HDL”) set_param (“HalfWaveRectifier_HDL”,“SimulationCommand”,“更新”)
在模型的顶层,一个Simscape_system
块模型半波整流算法。该模型接受一个正弦波输入,使用一个速率转换块离散连续时间输入,并有一个范围块计算输出。要查看半波整流算法,双击Simscape_system
子系统。
open_system (“HalfWaveRectifier_HDL / Simscape_system”)
半波整流器由一个电阻(线性块)和一个二极管(开关线性块)组成。Simscape模型是为HDL兼容性而预先配置的。在模型的输入和输出端口接口,有Simulink-PS Converter和PS-Simulink Converter模块。解算器设置配置为与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。要了解有关Simscape HDL Workflow Advisor和各种任务的更多信息,请右键单击该文件夹或任务,并选择这是什么?.另请参阅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 Converter和PS-Simulink Converter块相同的名称。如果您在这个子系统中导航,您会看到几个延迟、加法器和矩阵乘法块,它们为状态空间方程建模。
open_system ('gmStateSpaceHDL_HalfWaveRectifier_HDL/Simscape_system/HDL子系统/HDL算法')
要模拟HDL Implementation模型,输入这些命令。打开Scope块以查看结果。
sim卡(“gmStateSpaceHDL_HalfWaveRectifier_HDL”) open_system (“gmStateSpaceHDL_HalfWaveRectifier_HDL /范围”)
生成的HDL代码高密度脂蛋白子系统
块在这个模型内。
验证HDL算法
为了比较HDL实现模型与原始Simscape算法的功能,打开并模拟状态空间验证模型。
open_system (“gmStateSpaceHDL_HalfWaveRectifier_HDL_vnl”) sim卡(“gmStateSpaceHDL_HalfWaveRectifier_HDL_vnl”)
该模型的输出与原始的Simscape模型相匹配。模拟不生成断言,这表明输出匹配。有关更系统的验证,请参见验证HDL实现模型到Simscape算法.
生成HDL代码和验证模型
使用以下命令保存HDL模型和子系统参数设置:
hdlsaveparams (“gmStateSpaceHDL_HalfWaveRectifier_HDL”);
设置模型'gmStateSpaceHDL_HalfWaveRectifier_HDL' HDL参数hdlset_param('gmStateSpaceHDL_HalfWaveRectifier_HDL', 'FloatingPointTargetConfiguration', hdlcoder。createFloatingPointTargetConfig(“NativeFloatingPoint”……, 'LatencyStrategy', 'Min', 'HandleDenormals', 'Off')…);hdlset_param('gmStateSpaceHDL_HalfWaveRectifier_HDL', 'HDLSubsystem', 'gmStateSpaceHDL_HalfWaveRectifier_HDL/Simscape_system/HDL Subsystem');hdlset_param('gmStateSpaceHDL_HalfWaveRectifier_HDL', 'MaskParameterAsGeneric', 'on');hdlset_param('gmStateSpaceHDL_HalfWaveRectifier_HDL', '过采样',60);%设置子系统HDL参数hdlset_param('gmStateSpaceHDL_HalfWaveRectifier_HDL/Simscape_system/HDL SubSystem ', '扁层结构','on');hdlset_param('gmStateSpaceHDL_HalfWaveRectifier_HDL/Simscape_system/HDL子系统/HDL算法/模式选择/生成模式向量','架构','MATLAB数据路径');
该模型使用单一数据类型,并在本机浮点数
模式。浮点运算符会导致延迟。由于设计中包含反馈循环,为了在反馈循环中为操作符分配足够的延迟,该模型使用时钟速率管道与较大的值相结合过采样因子.一个过采样因子的60
该模型节省了时钟速率的流水线优化。
有关更多信息,请参见:
在生成HDL代码之前,启用验证模型的生成。验证模型将代码生成后生成的模型的输出与原始模型进行比较。要了解更多信息,请参见生成模型和验证模型.
运行以下命令保存Simulink模型上的验证模型生成设置:
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代码生成后的模拟结果,请打开比较:着干活
块范围。上面的图表示生成模型的输出,中间的图表示实现模型的输出。按钮图计算两个模型输出之间的差异。当输出匹配时,误差为零。
另请参阅
功能
相关的话题
- 开始与Simscape电气(Simscape电气)
- 开始Simscape硬件在循环工作流
- 验证HDL实现模型到Simscape算法