主要内容

从Simscape生成优化的HDL实现模型

这个示例展示了如何通过使用资源共享和RAM映射等优化来为Simscape™维也纳整流器模型生成优化的HDL实现模型。

为什么要优化HDL实现模型

对于具有许多切换元素的Simscape模型,状态空间表示包含大量配置。Simscape HDL Workflow Advisor模拟Simscape模型来计算相关配置的数量。某些Simscape模型可以有大量相关的配置。为这样一个大型设计生成的HDL实现模型可能会消耗大量的资源。合成生成的代码会导致设计占用FPGA设备上的大量资源。在某些情况下,设计可能不适合目标FPGA设备。为了节省资源并使设计适合FPGA, Simscape HDL Workflow Advisor使用HDL Coder™优化,例如时钟速率管道、资源共享和RAM映射。

维也纳整流模型

要打开模型,在MATLAB®命令提示符下输入:

open_system (“sschdlexViennaRectifierExample”

将此模型保存为ViennaRectifier_HDL以运行工作流。

open_system (“ViennaRectifier_HDL”) set_param (“ViennaRectifier_HDL”“SimulationCommand”“更新”

控制子系统实现了闭环控制策略维也纳整流器子系统采用空间矢量调制。在模拟时0.1秒时,维也纳整流接通。有时0.4秒而且0.6秒时,直流侧负载上升。

维也纳整流器子系统由三相支路组成。每条腿有一个电源开关和六个电源二极管。看到维也纳整流控制(Simscape电气)

open_system (“ViennaRectifier_HDL /维也纳整流器”

模拟模型。控件中的Scope块,以查看模拟结果作用域子系统。

sim卡(“ViennaRectifier_HDL”) open_system (“ViennaRectifier_HDL /范围/范围”

生成HDL实现模型并验证HDL算法

要生成HDL实现模型,请使用Simscape HDL Workflow Advisor。您可以为实现模型生成HDL代码。使用实例打开Advisor。

sschdladvisor (“ViennaRectifier_HDL”

要生成HDL实现模型,请在实现模型的生成子文件夹,右键单击生成实现模型任务和选择运行到选定任务.任务通过后,您将看到到HDL实现模型的链接。要查看配置的数量,请选择提取方程下任务状态转换子文件夹。当您单击任务时,您将看到模拟模型达到397模式。如此多的模式会增加FPGA设计的资源消耗。

要打开HDL实现模型,输入以下命令:

open_system (“gmStateSpaceHDL_ViennaRectifier_HDL”) set_param (“gmStateSpaceHDL_ViennaRectifier_HDL”“SimulationCommand”“更新”

该子系统的端口使用与原始Simscape模型中的Simulink-PS Converter和PS-Simulink Converter块相同的名称。如果您在这个子系统中导航,您会看到几个延迟、加法器和矩阵乘法块,它们为状态空间方程建模。

open_system (' gmstatespacehdl_维也纳整流器_hdl /HDL子系统/HDL算法'

要验证HDL算法,请在生成实现模型任务时,选择为实现模型生成验证逻辑中的复选框。验证设置,设置验证逻辑公差0.001,并重新运行该任务。该任务生成一个状态空间验证模型,用于比较实现模型和原始Simscape模型。

open_system (“gmStateSpaceHDL_ViennaRectifier_HDL_vnl”) set_param (“gmStateSpaceHDL_ViennaRectifier_HDL_vnl”“SimulationCommand”“更新”

模拟模型不显示断言,这表明HDL算法与原始模型匹配。

sim卡(“gmStateSpaceHDL_ViennaRectifier_HDL_vnl”

将实现模型中的状态空间参数映射到RAM

HDL实现模型使用数据类型,并包含在反馈循环中的大延迟块高密度脂蛋白算法子系统。为了适应较大的延迟,并使设计在目标FPGA上以更快的时钟速率运行,该模型使用时钟速率流水线,并结合较大的值过采样因子

hdlsaveparams (“gmStateSpaceHDL_ViennaRectifier_HDL”

有关更多信息,请参见:

生成实现模型任务时,将状态空间参数映射到ram的默认值汽车.当模式数量超过阈值时,此设置将HDL实现模型中的大状态空间参数映射到ram200.由于维也纳整流模型使用了大量的模式,状态空间参数被映射到ram。通过映射到ram,可以节省FPGA上的查找表资源。要启用RAM映射,可以使用UseRAM参数在执行状态更新和计算输出的屏蔽子系统块上启用。

如果不考虑阈值,将参数映射到ram,请设置将状态空间参数映射到ram

为了了解RAM映射对维也纳整流模型的影响:

1.验证UseRAM参数设置hdlget_param函数在把输入而且用状态块。

Multiplysubsys1 =' gmstatespacehdl_维也纳整流器_hdl /HDL子系统/HDL算法/状态更新';Multiplysubsys2 =' gmstatespacehdl_维也纳整流器_hdl /HDL子系统/HDL算法/输出';UseRAM1 = hdlget_param([Multiplysubsys1 ./把输入的),“UseRAM”) UseRAM2 = hdlget_param([Multiplysubsys1 .“/繁殖状态”),“UseRAM”
UseRAM1 = 'on' UseRAM2 = 'on'

2.启用资源利用率报告的生成。

hdlset_param (“gmStateSpaceHDL_ViennaRectifier_HDL”“ResourceReport”“上”

3.为实现模型生成HDL代码。

makehdl (“gmStateSpaceHDL_ViennaRectifier_HDL / HDL子系统”);

当您生成代码时,HDL Coder将打开一个代码生成报告。的高级别资源报告显示136公羊利用。

状态更新和输出计算块的资源共享

在为HDL子系统生成HDL代码之前,可以使用HDL Coder中的资源共享优化来优化算法。资源共享是一种区域优化,它可以识别多个功能等效的资源,并将它们替换为单个等效的资源。数据在共享资源上进行时间复用,以执行相同的操作。看到资源共享

在HDL实现模型中,您可以共享执行状态更新和计算输出的屏蔽子系统块。

为维也纳整流器共享这些子系统并生成HDL代码:

1.指定一个SharingFactor2的乘法输入和乘法状态子系统。

hdlset_param ([Multiplysubsys1/把输入的),“SharingFactor”, 2) hdlset_param([Multiplysubsys1 .“/繁殖状态”),“SharingFactor”, 2) hdlset_param([Multiplysubsys2 ./把输入的),“SharingFactor”, 2) hdlset_param([Multiplysubsys2 .“/繁殖状态”),“SharingFactor”, 2)

2.启用优化报告的生成

hdlset_param (“gmStateSpaceHDL_ViennaRectifier_HDL”“OptimizationReport”“上”

3.为实现模型中的HDL子系统块生成HDL代码。

makehdl (“gmStateSpaceHDL_ViennaRectifier_HDL / HDL子系统”);

当您生成代码时,HDL Coder将打开一个代码生成报告。要查看资源共享优化的状态,请单击流媒体和共享报告的一部分。这个共享组显示了优化共享的点积。2022世界杯八强谁会赢?当你点击高级别资源报告,您可以看到加法器、乘法器和寄存器的消耗都减少了。

另请参阅

功能

相关的话题

Baidu
map