主要内容

生成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代码生成后的模拟结果,请打开比较:着干活块范围。上面的图表示生成模型的输出,中间的图表示实现模型的输出。按钮图计算两个模型输出之间的差异。当输出匹配时,误差为零。

另请参阅

功能

相关的话题

Baidu
map