为什么写入启用不会在不推荐使用的BusSlave块上断言

由于DSP Builder高级版块集17.1及更早版本中的问题,如果Simulink®在BusStimulus块之前执行其他总线模块,您可能会看到以下错误。

  • 不推荐使用的BusSlave块上的写使能永远不会断言
  • 所有总线模块上的其他输出将在一个时钟周期后发生

在DSP Builder中,总线模块(例如RegField模块)依赖于BusStimulus模块:它们之间存在隐式线路。因此,Simulink应该在任何其他总线模块之前执行BusStimulus模块。但是,Simulink不知道这种依赖关系,因此Simulink可以任意顺序执行这些块。

由于设计的无关更改,总线块的执行顺序可能会发生变化。例如,依赖于总线延迟进行自动验证的设计可能会因为添加了额外的Scope块而失败。附加块可能通过在BusStimulus块之前放置一个RegField块来改变执行顺序,从而改变它们之间的延迟。

解决/修复方法

要解决此问题,请将BusStimulus块的优先级设置为低于包含DSP Builder设计的子系统块的值。例如,将BusStimulus块优先级设置为0,将DSPBA子系统块设置为1.Simulink应在子系统中的任何内容之前执行BusStimulus块,这可确保总线操作一致。

要查看执行顺序:从主菜单栏中,选择显示 - >块 - >排序执行顺序

要设置块的优先级:右键单击该块,选择“ 属性”:优先级”字段位于“ 常规”选项卡中

注意:优先级值与执行顺序类似,因为较低的值意味着首先执行。但是,优先级值与执行顺序的不同之处在于它们不跨越子系统,这就是要求在DSP Builder子系统上设置优先级而不是包含在其中的总线块的原因。

编辑 重设标签(回车键确认) 标为违禁 关闭 合并 删除

提问于 2018-08-02 13:53:20 +0800

这个帖子被标记为一个社区wiki

这个帖子是一个wiki(维基). 任何一个积分 >500的人都可以完善它