主要内容

生成HDL代码使用Simscape高密度脂蛋白工作流顾问

如果你有一个高密度脂蛋白编码器™的许可证,您可以生成HDL代码从你Simscape™模型部署到FPGA平台使用Simscape HDL工作流顾问。Simscape HDL工作流顾问生成一个模型金宝app®实现Simscape模型,然后将模型模型使用高密度脂蛋白HDL代码编码器。金宝appSimscape模型转化为HDL代码允许您:

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

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

  • 模拟使用HDL实现实时半实物仿真(边境)

基本Simscape高密度脂蛋白工作流顾问步骤

Simscape模型转换为使用Simscape高密度脂蛋白HDL代码流程顾问通过以下步骤。

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

  2. 确保模型只包含线性或切换线性块使用simscape.findNonlinearBlocks函数。

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

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

    1. 添加块允许您监控的进步高密度脂蛋白工作流仿真时间。

    2. 显示样品的时间信息。

    3. 配置Simscape网络固定步,欲望模拟。

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

  6. 运行Simscape HDL工作流顾问任务通过使用sschdladvisor(高密度脂蛋白编码器)函数。高密度脂蛋白工作流顾问:

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

    • 提取Simscape网络状态方程的系数。

    • 生成一个HDL代码generation-compatible Simscape网络的实现。

  7. 确保模拟结果与HDL代码generation-compatible实现基线结果相匹配。

  8. 生成HDL代码:

    1. 运行hdlsetup(高密度脂蛋白编码器)函数。的hdlsetup功能配置HDL代码生成和指定的固定步解算器仿真起始和终止时间。

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

    3. 使用生成代码makehdl函数。

在运行Simscape HDL工作流顾问之前,配置您的网络排除:

  • 事件

  • 模式的图表

  • 延迟

  • 启用运行时参数

  • 周期性的来源

  • 而导致的非线性网络connectivity-If模型包含一个非线性的,sschdladvisor函数可以运行所有任务完成,但生成一个新鲜感输出。

生成HDL代码Simscape模型使用Simscape高密度脂蛋白工作流顾问

这个例子展示了如何将Simscape模型使用Simscape高密度脂蛋白HDL代码流程顾问。配置Simscape网络和实时仿真软件模型仿真和HDL代码生成金宝app模型制备。打开一个版本的模型已经准备使用Simscape HDL工作流顾问,明白了生成HDL代码通过使用Simscape HDL工作流顾问

模型制备

准备FPGA Simscape模型部署:

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

    baselineModel =“ssc_bridge_rectifier”;load_system baselineModel set_param (baselineModel,“HideAutomaticNames”,“关闭”)open_system (baselineModel)

  2. 比较基准仿真结果后续迭代,删除数据点限制范围块标记为负载电压范围块和捕获的信号输入数据范围通过使数据记录仿真数据块的检查员。

    1. 打开范围块。点击视图>配置属性。在日志记录选项卡,明确限制数据点

    2. 右键单击连接范围块,并选择日志选择信号。日志徽章出现上面的信号。

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

  3. 模拟仿真数据的模型和视图结果检查员。

    % %模拟基准模型sim (baselineModel)% %得到模拟数据检查员运行IDsrunIDs = 金宝appSimulink.sdi.getAllRunIDs;runID = runIDs(结束);运行= Si金宝appmulink.sdi.getRun (runID);signal1 = run.getSignalByIndex (1);% run.signalCountsignal1。检查= true;金宝appSimulink.sdi.view

    根据需要,按键盘上的空格键以适应模拟数据检查员阴谋视图。

    从基线模型仿真数据检查结果。

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

  4. 在运行顾问之前,识别和替换块使您的网络是非线性的。识别模块,使用simcape.findNonlearBlocks函数。

    simscape.findNonlinearBlocks (baselineModel)
    发现网络包含非线性方程组在以下模块:ssc_bridge_rectifier /交流电压源的线性或切换线性网络的数量模型中是0。模型中的非线性网络的数量是1。ans = 1×1单元阵列{ssc_bridge_rectifier /交流电压源的}

    该模型包含一个交流电压源块,一个周期源,收益率非线性方程组。

  5. 你可以更换周期的来源控制电压源块在Simscape网络正弦波块在网络之外。

    1. 删除交流电压源块。

    2. 添加一个正弦波块的金宝app>来源图书馆。

    3. 添加一个金宝appSimulink-PS转换器块的Simscape>公用事业公司图书馆。

    4. 添加一个控制电压源块的Simscape基础库电力来源图书馆。

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

    修改后的模型。控制电压源块和正弦波块取代了交流电压源块在基线模型。

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

    1. 设置振幅参数√2 * 120

    2. 设置频率(rad /秒)参数60 * 2 *π

    3. 设置样品时间参数1 e-5。然后点击三个点图标图标和三个垂直点旁边的样品时间框,并选择创建变量。变量的名字Ts并点击创建。你现在可以查看和编辑您的工作区中这个变量。

  7. 确保没有块使您的网络是非线性的。

    %模拟sim (baselineModel)%检查非线性模块simscape.findNonlinearBlocks (baselineModel)
    线性或切换线性网络的数量模型中是1。ans = 0×0空单元阵列

    模型只包含块产量线性或切换线性方程。

  8. 模拟模型和比较结果仿真数据的基线结果检查员。

    %得到模拟数据检查运行idrunIDs = 金宝appSimulink.sdi.getAllRunIDs;runBaseline = runIDs(- 1)结束;runSwitchedLinear = runIDs(结束);%检查员打开模拟数据金宝appSimulink.sdi.viewcompBaseline1 = Simulink.sdi.compareRuns(runBaseline,runSwitchedLinear);

    模拟数据检查输出比较运行2 modifed模型的基线。检查员添加新的情节老并显示下面的情节不同。

    结果基线结果是相似的。

  9. 为Simscape HDL工作流执行未来的进展检查顾问,添加和连接数字时钟块的金宝app>来源图书馆和显示块的金宝app库,如图。为数字时钟,设置样品时间参数Ts

    高密度脂蛋白兼容模型包括数字时钟和显示模块

  10. 模型组还是使用变步解算器。对于真正的time-simulation,你必须使用一个固定的解决者。使用示例颜色和注释来帮助你确定你的模型包含任何连续设置。打开样品颜色和注释,在调试选项卡上,单击信息覆盖,在样品时间组,选择颜色文本

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

  11. 配置实时仿真模型。

    1. 配置固定步的仿真软件模型,固金宝app定成本模拟。在配置参数窗口中,点击解算器并设置:

      • 类型固定步

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

    2. 配置Simscape网络固定步,欲望模拟。为解算器配置布洛克:

      • 选择使用本地解算器

      • 确保解算器类型被设置为向后欧拉

      • 指定Ts样品时间

  12. 模拟模型和比较结果仿真数据的基线结果检查员。

    %模拟sim (baselineModel)%得到模拟数据检查运行idrunIDs = 金宝appSimulink.sdi.getAllRunIDs;runBaseline = runIDs(结束- 2);runRealTime = runIDs(结束);%检查员打开模拟数据金宝appSimulink.sdi.viewcompBaseline1 = Simulink.sdi.compareRuns(runBaseline,runRealTime);

    模拟数据检查输出比较运行3修改模型的基线。检查员添加新的情节老并显示下面的情节不同。

    结果基线结果是相似的。

通过使用生成HDL代码Simscape高密度脂蛋白工作流顾问

生成HDL代码通过运行Simscape HDL工作流顾问在Simscape模型,你准备模型制备节或打开ssc_bridge_rectifier_hdl模型准备代码生成。

  1. 重命名模型。

    • 如果你准备模型在模型准备部分,重命名模型ssc_model

    • 打开和使用已经准备HDL代码生成模型,在MATLAB命令提示符,输入

      open_system (“ssc_bridge_rectifier_hdl”)

      将模型保存到一个本地目录ssc_model

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

  2. 运行Simscape HDL工作流顾问。

    sschdladvisor (“ssc_model”)

    打开Simscape HDL工作流顾问。

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

    1. 选择代码生成的兼容性>检查解算器配置,然后单击运行这个任务

    2. 选择检查模型的兼容性,然后单击运行这个任务

    通过这些检查顾问报告时模型。

  4. 提取状态方程系数。选择状态转换并点击运行所有。转换可以花一些时间。

    运行的任务后,顾问显示的总结表的状态方程描述和参数。

    • 数量:5

    • 输入:1

    • 输出:1

    • 数量的模式:7

    • 微分变量数量:1

    • 离散采样时间:1 e-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工作流顾问生成实现模型,任务的顾问报告传递和显示链接生成的实现模型,命名gmStateSpaceHDL_ssc_model

  6. 通过单击打开生成的实现模型gmStateSpaceHDL_ssc_model

    HDL实现模型。先前的模金宝app型的仿真软件模块连接到一个接口系统包含高密度脂蛋白子系统。

    模型包含块的原始模型以及新的块支持高密度脂蛋白工作流顾问:金宝app

    • 数字时钟,显示,正弦波,负载电压从你的原始模型残余

    • 率Transition1——处理传输数据块之间的操作在不同的利率。

    • 数据类型Conversion1、数据类型Conversion2——双,单精度数据类型之间的转换。HDL代码生成需要单精确数据

    • 高密度脂蛋白子系统包含一个HDL代码generation-compatible Simscape网络版本。

    • 负载电压,范围块显示负载电压。

  7. 准备实现模型的仿真比较基线结果:

    1. 你可以调整自动生成模型和删除残留块清洁必要的改进模型。的Digial时钟块和显示块是不必要的,但是不会抑制仿真结果。

    2. 右键单击输入信号范围块和点击日志选择信号

    显示块在模型窗口中显示了运行仿真时间。

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

  8. 确保高密度脂蛋白子系统对应于原始Simscape模型,模拟模型和比较结果基线仿真结果。

    %模拟sim卡(“gmStateSpaceHDL_ssc_model”)%得到模拟数据检查运行idrunIDs = 金宝appSimulink.sdi.getAllRunIDs;runBaseline = runIDs(- 3)结束;runHDLImplementation = runIDs(结束);%检查员打开模拟数据金宝appSimulink.sdi.viewcompBaseline1 = Simulink.sdi.compareRuns(runBaseline,runHDLImplementation);

    模拟数据检查输出比较运行4修改模型的基线。检查员添加新的情节老并显示下面的情节不同。

    结果基线结果是相似的。Simscape模型兼容HDL代码生成。

  9. 生成HDL代码的实现:

    1. 访问配置参数窗口的HDL实现模型。扩大HDL代码生成并选择报告。检查的箱子生成可跟踪性报告生成资源利用率报告选项。

    2. 运行hdlsetup函数。

      hdlsetup (“gmStateSpaceHDL_ssc_model”)
    3. 保存模型和子系统参数设置。

      hdlsaveparams (“gmStateSpaceHDL_ssc_model”);
      % %集模型的gmStateSpaceHDL_ssc_model hdlset_param HDL参数(‘gmStateSpaceHDL_ssc_model’,‘FloatingPointTargetConfiguration’, hdlcoder。createFloatingPointTargetConfig (“NativeFloatingPoint”……“LatencyStrategy”,“最小值”)…);hdlset_param (“gmStateSpaceHDL_ssc_model”、“HDLSubsystem”、“gmStateSpaceHDL_ssc_model / HDL子系统”);hdlset_param (' gmStateSpaceHDL_ssc_model ', ' MaskParameterAsGeneric ', '对');hdlset_param (“gmStateSpaceHDL_ssc_model”、“过采样”,49);%设置子系统HDL参数hdlset_param (“gmStateSpaceHDL_ssc_model / HDL子系统”,“FlattenHierarchy”,“上”);hdlset_param (“gmStateSpaceHDL_ssc_model / HDL子系统/高密度脂蛋白/模式选择算法生成模式向量”、“架构”,“MATLAB Datapath公司”);%设置子系统HDL参数hdlset_param (“gmStateSpaceHDL_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子系统”。# # #使用配置设置模型gmStateSpaceHDL_ssc_model HDL代码生成参数。# # #“gmStateSpaceHDL_ssc_model”高密度脂蛋白检查运行模型。# # #开始编译模型的“gmStateSpaceHDL_ssc_model”……# # #应用高密度脂蛋白对模型优化“gmStateSpaceHDL_ssc_model”……# # #代码生成和优化选项选择已经引入了额外的管道延迟。# # #延迟平衡功能自动插入匹配延误赔偿。# # # DUT需要一个初始管道设置延迟。每个输出端口的经历这些额外的延迟。# # #输出端口1:1周期。 ### Begin model generation. ### Model generation complete. ### 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工作流顾问。

另请参阅

Simscape块

功能

相关的例子

更多关于