主要内容

使用触发子系统生成HDL代码

触发子系统Block是一个子系统块,它在每次控制信号具有触发值时执行。要了解关于该块的更多信息,请参见触发子系统

最佳实践

当在针对HDL代码生成的模型中使用触发子系统时,考虑以下几点:

  • 合成结果与Simulink相匹配金宝app®结果,在FPGA上使用注册逻辑(带同步时钟)驱动触发器端口。

  • 将单元延迟放在触发子系统输出信号上是一种很好的做法。这样做可以防止代码生成器在HDL代码中插入额外的旁路寄存器。

  • 触发子系统的使用会在以下方面影响合成结果:

    • 在某些情况下,系统时钟速度会下降一小部分。

    • 生成的代码使用更多的资源,随着触发子系统实例的数量和每个子系统输出端口的数量而扩展。

使用信号构建块

的输出连接时信号生成器块到一个触发的子系统,您可能需要使用率转换块。以相同的速率运行所有触发的子系统端口:

  • 如果触发源是信号生成器块,但其他触发子系统的输入来自其他源,插入一个率转换块进入信号路径之前的触发器输入。

  • 如果所有输入(包括触发器)来自信号生成器块,它们具有相同的速率,因此不需要特殊操作。

使用触发器作为时钟

在触发的子系统中使用触发器作为时钟使您能够在生成的代码中将您的设计划分为不同的时钟区域。确保时钟边缘“配置参数”对话框中的参数值与触发类型触发块中触发的子系统。

例如,你可以建模:

  • 一种时钟以相同的速度运行,但不同步的设计。

  • 由外部或内部时钟分配器驱动的时钟区域。

  • 由速率不是整数倍的时钟驱动的时钟区域。

  • 内部生成时钟。

  • 时钟门控低功耗设计。

请注意

在测试台模拟过程中,使用触发器作为被触发子系统的时钟会导致一个周期的时间不匹配。

需求

当您在被触发的子系统中使用触发器作为时钟时,每个被触发的子系统输入或输出数据信号必须立即在子系统外部和立即在子系统内部具有延迟。这些延迟充当以不同速率运行的区域之间的同步接口。

指定触发器为时钟

  • HDL代码生成>全局设置>优化选项卡上,选择使用触发信号作为时钟

  • 设置TriggerAsClock财产的使用makehdlhdlset_param.例如,为了生成使用触发信号作为DUT子系统中被触发子系统时钟的HDL代码,myDUT,在模型中,myModel,输入:

    makehdl(“myModel / myDUT”、“TriggerAsClock”,“上”)

限制

HDL Coder™支金宝app持为满足以下条件的触发子系统生成HDL代码:

  • 被触发的子系统不是DUT。

  • 子系统不是这两个触发而且启用。

  • 触发信号是一个标量。

  • 被触发子系统的输出初始值为0。

  • 触发子系统的所有输入和输出(包括触发信号)以相同的速率运行。

  • 显示输出端口参数设置为

  • 通过延迟外部信号的锁存器输入复选框未选中轮廓尺寸块的内部触发子系统

  • 如果DUT包含以下块,RAMArchitecture设置为WithClockEnable

    • 双端口RAM

    • 简单双端口RAM

    • 单端口RAM

  • 触发子系统不包含以下块:

    • 离散时间积分器

    • 中投公司大量毁灭

    • 中投插值

    • 冷杉大量毁灭

    • 冷杉插值

    • Downsample

    • Upsample

    • 高密度脂蛋白Cosimulation模块的HDL验证器™

    • 率转换

    • 像素流FIFO(Vision HDL Toolbox™)

    • PN序列发生器,如果使用触发信号作为时钟选中“Option”。