新闻  |   论坛  |   博客  |   在线研讨会
ABB REF615CC 某种形式的数据更改条件
15359029662 | 2023-04-13 16:47:06    阅读:73   发布文章

ABB REF615CC 某种形式的数据更改条件

ABB  07KT98 H2 GJR5253100R0278(5).jpg

在这种情况下,用户希望确保他的逻辑在整个时钟边沿保持不变,因此他将所有值都设置在时钟的下降沿。这导致了两个问题:当#1 延迟与时钟边沿冲突时会发生什么?当输出值取决于设置在负时钟沿的其他输入时会发生什么?

图 3. Giant case 语句调度任务

图 3 显示了另一个问题,这次是在使用 case 语句时。在这种情况下,它是在建模设备中实现命令结构的尝试。该设备可以处理许多命令之一,因此根据收到的命令,您可以处理该命令。从中得出的实际示例更糟糕,因为它不仅依赖于命令,还依赖于命令序列,并且命令序列是在 case 语句中的 case 语句中找到的。

这有什么问题吗?那么,如果第二次触发原始触发器,但 always 块中的逻辑还没有执行完,会发生什么?也许这是错误的。也许它刚好在下一个时钟边沿的错误一侧结束。就我而言,我在四个小时后发现了这个错误——那是个好日子。模拟往往运行得相当慢,这无济于事。

图 4. FSM 通常比长时间运行的任务更容易调试

更好的方法是使用状态机而不是嵌入式任务。为什么这样更好?好吧,如果没有其他原因,case 语句将包含可以在跟踪文件中看到的状态变量。这意味着您可以找到并调试当/如果新命令触发器在先前命令完成之前出现时会(或应该)发生什么。

图 5. 重复 LLC 逻辑

这些问题只会在复制此逻辑时变得更加复杂。例如,假设一个设备可以执行任务 A、B 和 C,但需要两个 IO 协议之一来完成任务 A、B 或 C。现在,如果将该 IO 协议逻辑复制并嵌入到每个协议中任务,那么当 IO 协议升级时,这三个都需要更新。(I2C 变成 I3C,SPI 变成 Quad SPI,等等)

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客