主要内容

生成具有多个网络的Simscape模型的HDL代码

这个例子展示了如何运行Simscape HDL Workflow Advisor来为包含多个网络的Simscape™模型生成HDL实现模型。您还可以生成一个验证逻辑,将每个Simscape网络与HDL实现模型中相应的状态空间实现进行数值比较。本例中的Simscape模型是一个划分为两个网络的太阳能逆变器。要了解该网络是如何分区的,请参见将包含大网络的Simscape模型划分为多个小网络

为什么使用多网络的Simscape模型

当您的Simscape模型包含许多切换元素时,状态空间表示可以包含大量模式。为如此大的设计生成的HDL实现模型可能会消耗大量的资源,甚至可能无法在目标FPGA设备上进行合成。为了减少模式的数量,您可以将模型中的Simscape网络划分为多个网络,然后运行Simscape HDL Workflow Advisor。

多网络太阳能逆变器模型

要打开包含多个网络的模型,运行:

open_system (“sschdlexSolarInverterPartitionedNetworkExample”

对于本例,模型保存为Solar_Power_Inverter_Multiple_Network_HDL。该模型与sschdlexSolarInverterPartitionedNetworkExample相同,但是重新安排了子系统,并将太阳能电池板的逻辑放置在Solar_Panel子系统中。

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

该模型由太阳能电池板、升压控制器、逆变控制器、升压变换器和全桥逆变器四部分组成。太阳能电池板是在Simulink®中使用查找表建模的。升压控制器和逆变控制器为升压变换器和全桥逆变器提供控制信号,全桥逆变器为h桥。

原来的模型包含升压变换器和全桥逆变器作为一个子系统内的单一网络。要查看这个模型,输入:

open_system (“sschdlexSolarInverterSingleNetworkExample”

分区模型包含了两个独立子系统中的网络。要查看升压转换器,请打开PV boost子系统。

open_system (“Solar_Power_Inverter_Multiple_Network_HDL / PV提高”

要查看全桥逆变器,请打开PV逆变器子系统。

open_system (“Solar_Power_Inverter_Multiple_Network_HDL /光伏逆变器”

运行Simscape HDL工作流顾问模型与多网络

1.要打开模型的Simscape HDL Workflow Advisor,输入:

sschdladvisor (“Solar_Power_Inverter_Multiple_Network_HDL”

2.将工作流运行到检查开关线性的任务。

Simscape HDL Workflow Advisor列出了模型中存在的网络数量以及每个网络的代数和微分变量的数量。Advisor使用Solver Configuration块来标识模型中的每个唯一网络。

3.运行提取方程的任务。

该任务显示每个Simscape网络的模式、状态、输入、输出和微分变量的数量。

4.运行离散化方程的任务。

状态空间表示现在使用更少的模式。模式数为58对于升压转换器和9对于全桥逆变器,其结果为总数67模式。模式数量的减少节省了目标设备上HDL实现模型的面积。

5.改变验证逻辑公差1的军医并选择为实现模型生成验证逻辑复选框。运行生成实现模型的任务。

打开HDL实现模型,验证HDL算法

中的链接,以打开实现模型生成实现模型任务日志。将模型重命名为Solar_Power_Inverter_Multiple_Network_StateSpace。

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

该模型包含两个HDL子系统。HDL子系统模块为升压转换器的状态空间方程建模。HDL Subsystem1模块为全桥逆变器的状态空间方程建模。Validation和Validation1子系统比较了升压变换器和全桥逆变器的状态空间表示与原始模型中相应的Simscape网络的功能等价性。

状态空间参数保存在一个MAT文件Solar_multiple_network_stateSpaceParameters.mat中。该文件包含两个结构的单元格数组。一个结构包含升压转换器的参数。另一个结构包含全桥逆变器的参数。

为了比较功能等效性,模拟模型。属性中的各种设置的组合,可以解决验证不匹配的问题生成实现模型直到HDL实现模型与Simscape算法匹配为止。这些设置包括增加验证逻辑公差、增加求解器迭代次数以及更改浮点精度。有关更多信息,请参见验证HDL实现模型到Simscape算法

生成HDL代码和验证模型

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

hdlset_param (“Solar_Power_Inverter_Multiple_Network_StateSpace”“ResourceReport”“上”

2.在生成HDL代码之前,建议启用验证模型的生成。验证模型将代码生成后生成的模型的输出与原始模型的输出进行比较。要了解更多信息,请参见生成模型和验证模型

HDLmodelname =“Solar_Power_Inverter_Multiple_Network_StateSpace”;hdlset_param (HDLmodelname“TargetDirectory”“C: / Temp / hdlsrc”);hdlset_param (HDLmodelname“GenerateValidationModel”“上”);

3.运行makehdl函数生成代码。要为两个HDL子系统块生成HDL代码,可以将这些块放在另一个顶级子系统中,然后生成HDL代码。将这个子系统命名为HDL_DUT。

makehdl (“Solar_Power_Inverter_Single_Network_StateSpace / HDL_DUT”

生成的HDL代码和验证模型保存在C:/Temp/hdlsrc目录下。生成的代码保存为HDL_DUT_tc.vhd。要打开验证模型,单击到gm_Solar_Power_Inverter_Multiple_Network_StateSpace_vnl的链接。slx中的代码生成日志在命令窗口中。

4.在生成HDL代码时,打开代码生成报告。资源利用报告指出目标FPGA设备上可能消耗大量的加法器、乘法器和寄存器。

两个网络的整体资源消耗明显小于单个大型网络的资源消耗。要了解单个太阳能逆变器网络的资源消耗,请参见将包含大网络的Simscape模型划分为多个小网络

另请参阅

功能

相关的话题

Baidu
map