主要内容

生成HDL代码使用simscape.HDL工作流程顾问

如果您有HDL Coder™许可证,则可以使用Simscape HDL Workflow Advisor从Simscape™模型中生成HDL代码以部署到FPGA平台上。Simscape HDL Workflow Advisor生成Simulink金宝app®然后使用HDL编码器将SIMVACE模型的实现将SIMULINK模型转换为HDL码。金宝app将SIMSCAPE模型转换为HDL代码允许您:

  • 通过使用Simscape模型的优化实现,加速对物理系统的模拟

  • 使用FPGA的可重构性和平行能力快速原型模型

  • 使用硬件 - 循环(HIL)仿真实时模拟HDL实现

基本的simscape.HDL工作流程顾问步骤

按照以下步骤将SIMSCUPE模型转换为HDL码,通过SIMSCAPE HDL Workflow Advisor遵循这些步骤。

  1. 为您的Simscape模型生成基线结果。

  2. 确保使用该模型仅包含线性或切换线性块simscape.findnonlinearblocks.功能。

  3. 确保模型的仿真结果与基线结果匹配。

  4. 配置Simscape网络以进行实时仿真和HDL代码生成:

    1. 添加块允许您在模拟时间内监控HDL工作流程的进度。

    2. 显示采样时间信息。

    3. 为固定步长、固定成本模拟配置Simscape网络。

  5. 确保离散模型的仿真结果与基线结果相匹配。

  6. 使用simscape hdl工作流顾问任务使用sschdladvisor.(HDL编码器)功能。HDL工作流程顾问:

    • 检查HDL代码生成的兼容性,确保模型只包含线性和切换的线性块,并配置为实时仿真。

    • 提取Simscape Network的状态空间系数。

    • 生成HDL代码生成兼容Simscape Network的实现。

  7. 确保来自HDL代码生成兼容实现的模拟结果与基线结果相匹配。

  8. 生成HDL代码:

    1. 跑过hdlsetup.(HDL编码器)功能。的hdlsetup.函数配置HDL代码生成的固定步骤求解器,并指定模拟开始和停止时间。

    2. 保存模型参数和验证模型生成设置。

    3. 使用使用的代码makehdl.功能。

在运行Simscape HDL Workflow Advisor之前,将网络配置为排除:

  • 活动

  • 模式图表

  • 延误

  • 启用运行时参数

  • 定期来源

  • 网络连接导致的非线性 - 如果您的型号包含此类的非线性,则sschdladvisor.函数可能会运行所有任务以完成,但生成零值输出。

为a生成HDL代码simscape.模型使用simscape.HDL工作流程顾问

此示例显示如何使用Simscape HDL Workflow Advisor将SIMSCUPE模型转换为HDL代码。要为实时仿真和HDL代码生成配置Simscape Network和Simuli金宝appnk模型,请参阅模型准备.要打开已准备使用Simscape HDL Workflow Advisor的模型的版本,请参阅使用Simscape HDL Workflow Advisor生成HDL代码

模型准备

为FPGA部署准备您的Simscape模型:

  1. 打开ssc_bridge_rectifier模型并显示隐藏的块名称。在Matlab.®命令提示符,输入

    baselinemodel =“ssc_bridge_rectifier”;Load_System(BaseLineModel)Set_Param(BaseLineModel,'hideautomantnames''离开')Open_System(BaseLineModel)

  2. 要将基线仿真结果与后续迭代进行比较,请删除数据点限制范围块标记的负载电压范围块并捕获输入数据的信号范围通过使数据记录到模拟数据检查器来实现。

    1. 打开范围块。点击看法>配置属性.在这一点记录标签,清晰限制数据点持续

    2. 右键单击连接到范围块并选择日志选定的信号.伐木徽章出现在信号上方。

    全波桥式整流器的基线模型。

  3. 模拟模型并查看模拟数据检查器中的结果。

    %%模拟基线模型SIM(BaseLineModel)%%获取仿真数据检查器运行IDrunids = 金宝appsimulink.sdi.getallrunids;runid = unrids(结束);run = 金宝appsimulink.sdi.getrun(unrid);signal1 = run.getSignalByIndex(1);%run.signalcount.signal1。检查= true;金宝appSimulink.sdi.view

    根据需要,按键盘上的空格键以适合模拟数据检查器绘图以查看。

    模拟数据检查器来自基线模型。

    基线仿真返回全波桥式整流器负载电压的预期结果。

  4. 在运行advisor之前,确定并替换导致网络非线性的块。要识别积木,请使用simcape.findnonlearblocks.功能。

    simscape.findnonlinearblocks(BaselineModel)
    该模型中线性或交换线性网络的数量为0。模型中非线性网络个数为1。ans = 1×1 cell array {'ssc_bridge_rectifier/AC Voltage Source'}

    模型包含交流电压源块,一个周期性源,其产生非线性方程。

  5. 您可以用一个替换定期源控制电压源块在simscape网络中正弦波块在网络外。

    1. 删除交流电压源块。

    2. 添加A.正弦波街区来自金宝app>来源图书馆。

    3. 添加A.金宝appSimulink-PS转换器街区来自simscape.>公用事业图书馆。

    4. 添加A.控制电压源街区来自simscape.基础库电气电源图书馆。

    5. 连接正弦波街区到金宝appSimulink-PS转换器块和金宝appSimulink-PS转换器街区到控制电压源块。

    修改模型。受控电压源块和正弦波块在基线模型中替换了交流电压源块。

  6. 配置正弦波块的参数匹配交流电压源阻止您删除的。

    1. 设定振幅参数到SQRT(2)* 120

    2. 设定频率(rad / sec)参数到60 * 2 * pi

    3. 设定采样时间参数到1E-5.然后单击三点图标图标与三个垂直点旁边的采样时间框,选择创建变量.命名变量TS.然后点击创建.您现在可以在工作区中查看和编辑此变量。

  7. 确保没有导致您的网络成为非线性的块。

    %模拟SIM(BaseLineModel)%检查非线性块simscape.findnonlinearblocks(BaselineModel)
    模型中的线性或切换线性网络的数量为1.NAS = 0×0空单元数组

    该模型仅包含产生线性或切换线性方程的块。

  8. 模拟模型,并将结果与​​基线的结果进行比较,在模拟数据检查器中导致。

    %获取模拟数据检查器运行IDrunids = 金宝appsimulink.sdi.getallrunids;runbaseline = runids(结束 -  1);runswitchedlinear = unlids(END);%打开模拟数据检查器金宝appsimulink.sdi.view compbaseline1 = simulink.sdi.compareruns(runbaseline,......鲁道德开关的线性);

    模拟数据检查器输出将运行2修改模型与基线进行比较。检查员叠加旧的新情节,并显示下面的差异。

    结果类似于基线结果。

  9. 要对Simscape HDL Workflow Advisor执行将来的进度检查,请添加和连接数字时钟街区来自金宝app>来源图书馆和展示街区来自金宝app下沉图书馆,如图所示。为了数字时钟,设置采样时间参数到TS.

    HDL兼容模型,包括数字时钟和显示块

  10. 该模型设置为使用可变步骤求解器。对于实时模拟,您必须使用固定步骤求解器。使用示例时间颜色和注释来帮助您确定您的模型是否包含任何连续设置。打开采样时间颜色和注释,在调试选项卡上,单击信息覆盖,在采样时间组,选择颜色文本

    模型图更新和定时传奇窗格显示。

  11. 配置实时仿真模型。

    1. 为固定步长、固定成本的仿真配金宝app置Simulink模型。在“配置参数”窗口中,单击求解器并设置:

      • 类型固定步骤

      • 求解器离散(没有连续的状态)

    2. 为固定步长、固定成本模拟配置Simscape网络。为了求解器配置布洛克:

      • 选择使用本地求解器

      • 确保这件事求解器类型被设置为落后的欧拉

      • 指定TS.为了采样时间

  12. 模拟模型,并将结果与​​基线的结果进行比较,在模拟数据检查器中导致。

    %模拟SIM(BaseLineModel)%获取模拟数据检查器运行IDrunids = 金宝appsimulink.sdi.getallrunids;runbaseline = runids(结束 -  2);runrealtime = unrids(结束);%打开模拟数据检查器金宝appsimulink.sdi.view compbaseline1 = simulink.sdi.compareruns(runbaseline,......runrealtime);

    仿真数据检查器输出将RUN 3修改模型与基线进行比较。检查员叠加旧的新情节,并显示下面的差异。

    结果类似于基线结果。

通过使用使用HDL代码simscape.HDL工作流程顾问

通过在您准备的Simscape Mode上运行Simscape HDL Workflow Advisor来生成HDL代码模型准备部分或打开ssc_bridge_rectifier_hdl.模型,用于代码生成。

  1. 重命名模型。

    • 如果您在模型准备部分中准备了该模型,请重命名模型ssc_model.

    • 要打开和使用已经为HDL代码生成准备的模型,请参阅MATLAB命令提示符,输入

      Open_System('sc_bride_rectifier_hdl'

      将模型保存到本地目录中ssc_model.

    HDL-ready桥式整流模型。标签和Simulink块和连接金宝app现在是红色的。

  2. 运行Simscape HDL Workflow Advisor。

    sschdladvisor ('sc_model'

    Simscape HDL工作流程顾问打开。

  3. 运行代码生成兼容性检查。

    1. 选择代码生成兼容性>检查求解器配置,然后点击运行此任务

    2. 选择检查模型兼容性,然后点击运行此任务

    当模型通过这些检查时,advisor报告。

  4. 提取状态空间系数。选择状态 - 空间转换然后点击.转换可能需要一些时间。

    运行任务后,顾问显示状态空间表示和参数表的摘要。

    • 州数量:5

    • 输入个数:1

    • 输出数量:1

    • 模式数量:7

    • 差分变量的数量:1

    • 离散采样时间:1E-05

    范围 参数大小
    一个 5 x 5 x 7
    B 5 x 1 x 7
    F0. 5 x 1 x 7
    C 1 x 5 x 1
    D 1 x 1 x 1
    y0. 1 x 1 x 1

    状态,模式和参数数据的大小可帮助您估计部署模型所需的大量FPGA资源。值越高,需要更多的FPGA资源。输入和输出数据表示实时部署和可视化所需的I / O连接的数量和类型。

  5. 生成模型的HDL实现。选择实施模型生成>生成实现模型然后点击运行此任务

    当Simscape HDL Workflow Advisor生成实现模型时,Advisor报告任务传递并显示所生成的实现模型的链接,该链接被命名gmstatespacehdl_ssc_model.

  6. 单击打开生成的实现模型gmstatespacehdl_ssc_model.

    HDL实现模型。来自上一金宝app个模型的Simulink块连接到包含HDL子系统块的接口系统。

    该模型包含原始模型的块以及支持HDL Workflow Advisor的新块:金宝app

    • 数字时钟展示正弦波, 和负载电压来自原始模型的梦想

    • 速率转换1 - 处理以不同速率运行的块之间的数据传输。

    • 数据类型转换1,数据类型转换2 - 转换双和单精度数据类型。HDL代码生成需要单精度数据

    • HDL子系统 - 将HDL代码生成兼容版本的Simscape Network版本。

    • 负载电压 -范围显示负载电压的块。

  7. 准备实现模型以了解基线结果的模拟比较:

    1. 您可以根据需要调整自动生成的模型并删除残留块以提高模型清洁度。的北时钟块和展示块是不必要的,但不会抑制模拟结果。

    2. 右键单击范围块的输入信号,然后单击日志选定的信号

    展示模型窗口中的块显示了经过的模拟时间。

    完成运行后,模型颜色更改。

  8. 为了确保HDL子系统对应于您的原始Simscape模型,模拟模型并将结果与​​基线仿真结果进行比较。

    %模拟SIM('gmstatespacehdl_ssc_model'%获取模拟数据检查器运行IDrunids = 金宝appsimulink.sdi.getallrunids;runbaseline = runids(结束 -  3);runhdlimplingation = rian(END);%打开模拟数据检查器金宝appsimulink.sdi.view compbaseline1 = simulink.sdi.compareruns(runbaseline,......runhdlimplementation);

    模拟数据检查器输出将RUN 4修改模型与基线进行比较。检查员叠加旧的新情节,并显示下面的差异。

    结果类似于基线结果。Simscape模型与HDL代码生成兼容。

  9. 从实现中生成HDL代码:

    1. 从HDL实现模型中访问配置参数窗口。扩张HDL代码生成并选择报告.检查盒子生成可追溯性报告生成资源利用率报告选项。

    2. 跑过hdlsetup.功能。

      hdlsetup('gmstatespacehdl_ssc_model'
    3. 保存模型和子系统参数设置。

      hdlsaveparams('gmstatespacehdl_ssc_model');
      %% set模型'gmstatespacehdl_ssc_model'hdl参数hdlset_param('gmstatespacehdl_ssc_model','floatingpointtargetconfiguration',hdlcoder.createfloatingpointtargetconfig('nativefloationpoint'...,'latencystrightgy','min')......);hdlset_param('gmstatespacehdl_ssc_model','hdlsubsystem','gmstatespacehdl_ssc_model / hdl子系统');hdlset_param('gmstatespacehdl_ssc_model','maskparameterasgeneric','开');hdlset_param('gmstatespacehdl_ssc_model','过采样',49);%set子系统hdl参数hdlset_param('gmstatespacehdl_ssc_model / hdl子系统','flattenhierarchy','开');hdlset_param('gmstatespacehdl_ssc_model / hdl子系统/ hdl算法/模式选择/生成模式向量','架构','matlab datapath');%SET子系统HDL参数HDLSET_PARAM('GMSTESPACEHDL_SSC_MODEL / HDL子系统/ HDL算法/状态更新/乘以状态','SharingFactor',1);
    4. 保存验证模型生成设置。

      hdlmodelname ='gmstatespacehdl_ssc_model';hdlset_param(hdlmodelname,'GenerateValidationModel''在');
    5. 生成HDL代码。

      makehdl ('gmstatespacehdl_ssc_model / hdl子系统'
      ###为'gmstatespacehdl_ssc_model / hdl子系统生成hdl。###使用for model gmstatespacehdl_ssc_model的config set for hdl代码生成参数。###正在Model'GMStatesPaceHDL_SSC_MODEL'上运行HDL检查。###开始编译模型'gmstatespacehdl_ssc_model'... ###在模型'gmstatespacehdl_ssc_model'上应用HDL优化... ###您所选择的代码生成和优化选项已引入额外的管道延迟。###延迟平衡功能已自动插入匹配延迟以进行补偿。### DUT需要初始管道设置延迟。每个输出端口都经历了这些额外的延迟。###输出端口1:1循环。###开始模型生成。###模型生成完成。 ### Clock-rate pipelining results can be diagnosed by running this script: hdlsrc\gmStateSpaceHDL_ssc_model\highlightClockRatePipelining.m ### To clear highlighting, click the following MATLAB script: hdlsrc\gmStateSpaceHDL_ssc_model\clearhighlighting.m ### Generating new validation model: gm_gmStateSpaceHDL_ssc_model_vnl. ### Validation model generation complete. ### Begin VHDL Code Generation for 'gmStateSpaceHDL_ssc_model'. ### MESSAGE: The design requires 49 times faster clock with respect to the base rate = 3.33333e-06. ### Working on gmStateSpaceHDL_ssc_model/HDL Subsystem/HDL Algorithm/Mode Selection/State Mode Vector To Index/Subsystem7 as ... hdlsrc\gmStateSpaceHDL_ssc_model\Subsystem1.vhd. ### Working on gmStateSpaceHDL_ssc_model/HDL Subsystem/HDL Algorithm/Mode Selection/State Mode Vector To Index/Subsystem6 as ... hdlsrc\gmStateSpaceHDL_ssc_model\Subsystem1_block.vhd. ### Working on gmStateSpaceHDL_ssc_model/HDL Subsystem/HDL Algorithm/Mode Selection/State Mode Vector To Index/Subsystem5 as ... hdlsrc\gmStateSpaceHDL_ssc_model\Subsystem1_block1.vhd. ### Working on gmStateSpaceHDL_ssc_model/HDL Subsystem/HDL Algorithm/Mode Selection/State Mode Vector To Index/Subsystem4 as ... hdlsrc\gmStateSpaceHDL_ssc_model\Subsystem1_block2.vhd. ### Working on gmStateSpaceHDL_ssc_model/HDL Subsystem/HDL Algorithm/Mode Selection/State Mode Vector To Index/Subsystem3 as ... hdlsrc\gmStateSpaceHDL_ssc_model\Subsystem1_block3.vhd. ### Working on gmStateSpaceHDL_ssc_model/HDL Subsystem/HDL Algorithm/Mode Selection/State Mode Vector To Index/Subsystem2 as ... hdlsrc\gmStateSpaceHDL_ssc_model\Subsystem1_block4.vhd. ### Working on gmStateSpaceHDL_ssc_model/HDL Subsystem/HDL Algorithm/Mode Selection/State Mode Vector To Index/Subsystem1 as ... hdlsrc\gmStateSpaceHDL_ssc_model\Subsystem1_block5.vhd. ### Working on gmStateSpaceHDL_ssc_model/HDL Subsystem/nfp_mul_single as hdlsrc\gmStateSpaceHDL_ssc_model\nfp_mul_single.vhd. ### Working on gmStateSpaceHDL_ssc_model/HDL Subsystem/nfp_add_single as hdlsrc\gmStateSpaceHDL_ssc_model\nfp_add_single.vhd. ### Working on dot_product_2 as hdlsrc\gmStateSpaceHDL_ssc_model\dot_product_2.vhd. ### Working on dot_product_1 as hdlsrc\gmStateSpaceHDL_ssc_model\dot_product_1.vhd. ### Working on gmStateSpaceHDL_ssc_model/HDL Subsystem/nfp_uminus_single as hdlsrc\gmStateSpaceHDL_ssc_model\nfp_uminus_single.vhd. ### Working on gmStateSpaceHDL_ssc_model/HDL Subsystem/nfp_relop_single as hdlsrc\gmStateSpaceHDL_ssc_model\nfp_relop_single.vhd. ### Working on HDL Subsystem_tc as hdlsrc\gmStateSpaceHDL_ssc_model\HDL_Subsystem_tc.vhd. ### Working on gmStateSpaceHDL_ssc_model/HDL Subsystem as hdlsrc\gmStateSpaceHDL_ssc_model\HDL_Subsystem.vhd. ### Generating package file hdlsrc\gmStateSpaceHDL_ssc_model\HDL_Subsystem_pkg.vhd. ### Code Generation for 'gmStateSpaceHDL_ssc_model' completed. ### Creating HDL Code Generation Check Report HDL_Subsystem_report.html ### HDL check for 'gmStateSpaceHDL_ssc_model' complete with 0 errors, 7 warnings, and 2 messages. ### HDL code generation complete.

      HDL代码生成报告将打开并包括任何生成的错误或警告。该报告包括资源利用率报告的链接,该报告描述了FPGA部署的资源要求。

    生成的HDL代码和验证模型保存在hdlsrc \ gmstatespacehdl_ssc_model \ html目录。生成的代码已保存为hdl_subsystem_tc.vhd.

    要生成用于部署到指定目标的HDL代码,请使用HDL Workflow Advisor。

也可以看看

Simscape块

功能

相关的例子

更多关于