综合工具解决的唯一办法——状态译码组合电路

状态机通常写成 3 段以避免组合逻辑过大。

如果设计中有几十个状态的状态机,它的状态解码逻辑会非常庞大​​,毫无疑问,这很可能是设计中的关键路径。那么该怎么做呢?基本思想是减少组合逻辑。我们可以对状态的输出进行分析,重新分类有关触发器寄存器的诗,并据此重新定义为多组小状态机,通过选择输入(case语句)触发相应的小状态机,从而实现大状态机。状态机被切割成小的状态机。在 ATA6 规范(硬盘标准)中,输入命令大约有 20 种,每个命令对应多种状态。使用大型状态机(状态集状态)来做到这一点是不可想象的。该命令可以通过case语句进行解码,并且可以触发相应的状态机。这样,这个模块的运行频率就可以比较高了。

在设计状态机时,必须对每个时钟周期内所有输出信号的值有一个非常明确的定义。也就是说,在每个状态循环中,每个输出值都必须在状态的每一种可能情况下都被赋予一个明确的值。否则,组合结果将有许多不必要的门。

这是因为输出信号在每个状态周期都没有被赋值,所以需要硬件来保持原始输出信号值不变。综合工具的唯一解决方案是将输出信号值反馈给多路复用器。当某个时钟周期没有给输出信号赋值时,多路复用器把这个值发送给输出信号,这样输出信号值就可以保持不变。改变。(这是闩锁 LATCH 效果)

关于e-hot状态机编码

1)one-hot 编码

每个状态使用一个触发器,状态的数量等于触发器的数量。这意味着增加了触发器的数量,并且优化了状态解码组合电路。非常适合寄存器资源丰富的xilinx器件。

2)one-hot 状态机的好处

(1)更容易为寄存器丰富的 xilinx FPGA 安装和布线。

(2)one-hot 状态机通常是一个相当快的状态机。它的速度与状态的数量无关有关触发器寄存器的诗,只与从状态到特定状态的转换次数有关。

(3)别担心,你会发现编写状态机的最佳方法。因为如果其他设计的状态机添加更多状态或更改其他内容,它们可能不再是最佳的。一-热编码方法是所有状态机中最好的,也是最好的。

(4)one-hot状态机很容易设计。状态图可以直接画成示意图,也可以直接写出硬件描述,而不是编码成状态表。

(5)修改很简单。合成器可以很方便地添加和删除一些状态或更改一些敏感的量方程,而不会影响状态机的其余部分。

(6)很容易从 vhdl 或 verilog 合成。

(7)与其他一些高性能状态机相比,没有浪费布线面积。

(8)使用静态时序分析可以轻松识别危险和不合理的状态机转换路径。

尖端

加入圈子获取更多相关资讯,终身会员,无二次费,现在就加入吧!

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论