由于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子系统上设置优先级而不是包含在其中的总线块的原因。
没有回复内容