主要内容

不同子系统类型的使用

要学习如何在设计中使用不同类型的子系统,并对算法进行分层建模,请使用以下指导原则。每个指导方针都有一个严重级别,它指示遵从性需求的级别。有关更多信息,请参见HDL建模指南严重性级别

虚拟子系统:用作DUT

指导ID

2.4.1

严重程度

强烈推荐

描述

虚拟子系统是一个子系统这不是有条件的执行子系统或者一个原子子系统.默认为regular子系统块,您添加到您的Simulink金宝app®模型是一个虚拟子系统。非虚拟子系统类型包括原子子系统模型参考,不同的子系统,以及一种变体模型。

要确定一个子系统是否是虚拟的,请使用get_param带参数函数IsSubsystemVirtual.例如:

get_param (“sfir_fixed / symmetric_fir”“IsSubsystemVirtual”

原子和虚拟子系统:生成可重用的HDL文件

指导ID

2.4.2

严重程度

推荐

描述

您可以将测试下的设计(DUT)指定为原子子系统.指定一个子系统作为一个原子子系统,在“块参数”对话框中子系统中,选择当作原子单位对待选择。

要为您在层次结构的较低级别使用的子系统的相同实例生成单个HDL文件,请使用原子和虚拟子系统。看到为子系统生成可重用代码

若要在一个子系统单元上启用资源共享,请指定要作为子系统共享的所有子系统。看到共享子系统的一般注意事项

为了从原子和虚拟子系统生成可重用代码,必须关闭信号日志记录。如果您记录子系统内部的信号,那么从原子和虚拟子系统生成可重用代码可能不会成功。

变体子系统:使用变体子系统进行HDL代码生成

指导ID

2.4.3

严重程度

强制性的

描述

变种子系统,变种模型块是一个模板,预先配置为包含两个子系统块,用作变体子系统的选择。在仿真时,一个变型控制决定在两个子系统块中哪个是主动的。因此,您可以使用变体子系统来创建两个不同的配置或子系统行为,然后在模拟时指定活动配置。

  • 不能使用变型子系统作为DUT。要生成代码,请将变体子系统放置在您想用作DUT的子系统中。生成代码的文件名和实例名对于在代码生成时选择的活动配置是唯一的。

  • 不能通过使用变体子系统优化共享多个变体子系统块。

  • 您必须确保在验证生成代码的功能时,您在模拟模型时使用的活动变体与您用于生成HDL代码的活动变体相同。

例如,打开模型hdlcoder_variant_subsystem_design.slx.如果你打开DUT子系统,你会看到一个变型子系统块,.变型子系统有两个不同的子系统,互相起作用人事处.如果打开“块参数”对话框子系统,你看变异控制表达式条件决定在模拟期间启用哪个子系统。在这种情况下,互相起作用1,互相起作用子系统在模拟过程中变得活跃。

load_system (“hdlcoder_variant_subsystem_design”) set_param (“hdlcoder_variant_subsystem_design”“SimulationCommand”“更新”) open_system (“hdlcoder_variant_subsystem_design / DUT /鸿沟”
variantRecip =仿金宝app真软件。变量条件:'Recip == 1' variantOp = Simulink。金宝app变量条件:'Recip == 0' Recip = 1

要生成HDL代码,运行以下命令:

makehdl (“hdlcoder_variant_subsystem_design / DUT”

一个名称为Recip.vhd,因为代码是为互相起作用子系统在代码生成时处于活动状态。

模型引用:使用较小的分区构建模型设计

指导ID

2.4.4

严重程度

推荐

描述

对大型设计进行分层建模可以增加代码生成时间。如果指定生成报告(如跟踪性报告),则代码生成时间将进一步显著增加。为了避免这样的性能问题,建议您将设计划分为更小的分区。使用模型块来统一由较小的分区组成的模型。它还支持增量代码生成。您可以为父模型或引用模型生成HDL代码。要查看生成的HDL代码,请在hdlsrc文件夹,则为父模型创建一个文件夹,并为所引用的模型创建一个单独的子文件夹。

在生成HDL测试台时,如果测试台由具有连续采样时间的块组成,则可以将DUT转换为引用的模型。这种转换使DUT能够以固定的步长、离散的采样时间运行。想要了解更多,请看将DUT子系统转换为具有连续块的测试平台的模型参考

例如,打开模型hdlcoder_divide_parentmodel.slx.当您双击DUT子系统时,您将看到引用该模型的Model块hdlcoder_divide_referencedmodel

load_system (“hdlcoder_divide_parentmodel”) set_param (“hdlcoder_divide_parentmodel”“SimulationCommand”“更新”) open_system (“hdlcoder_divide_parentmodel / DUT”

要查看引用的模型,双击model块:

open_system (“hdlcoder_divide_parentmodel / DUT /模式”

要生成HDL代码,输入以下命令:

makehdl (“hdlcoder_divide_parentmodel / DUT”

有关更多信息,请参见用于HDL代码生成的模型引用

启用和触发子系统的块设置

指导ID

2.4.5

严重程度

强制性的

描述

一个触发子系统一个子系统是否通过a接收控制信号触发块。的触发子系统每次触发事件发生时执行一个周期。当你为被触发的子系统生成HDL代码时:

  • 请勿使用触发子系统block作为DUT。把触发子系统在另一个子系统Block,并使用它子系统DUT。

  • 确保初始条件触发子系统必须是零。

  • 的输出信号可以增加单位延迟触发子系统.单元延迟阻止代码生成器在HDL代码中插入额外的旁路寄存器。

  • 确保用触发信号作为时钟当您模拟测试台以验证生成的代码时,设置不会导致时间不匹配。想要了解更多,请看使用触发子系统生成HDL代码

的其他首选项触发子系统块来生成HDL代码,请参阅HDL代码生成触发子系统页面。

一个启用子系统是一个子系统,它接收控制信号通过启用块。的启用子系统在控制信号为正值的每个仿真步骤中执行。生成的HDL代码启用子系统

  • 请勿使用启用子系统block作为DUT。把启用子系统在另一个子系统Block,并使用它子系统DUT。

  • 确保初始条件启用子系统是零。

  • 的输出信号可以增加单位延迟启用子系统.单元延迟阻止代码生成器在HDL代码中插入额外的旁路寄存器。

  • 你可以添加国家控制块在同步内模式启用子系统.的国家控制块转换启用子系统块一个启用同步子系统块。这个块生成更高效和硬件友好的HDL代码。想要了解更多,请看使用状态控制块的同步子系统行为

的其他首选项启用子系统块来生成HDL代码,请参阅HDL代码生成启用子系统页面。

另请参阅

功能

金宝app仿真软件配置参数

相关的例子

更多关于