为什么状态机最好要采用独热码

在状态机的编码方式中,我们常用到三种编码方式,分别是二进制编码格雷码独热码

二进制编码:也称连续编码,属于压缩编码方式,可以使用较少的触发器对应更多的状态;

格雷码:属于压缩编码方式,由于其编码特性,相邻两个格雷码之间只有1bit不同,相邻状态切换时,只有一个触发器的输出会翻转,可以尽量避免多bit信号之间的数据歪斜。

独热码:使用N个触发器表示N个状态,每一时刻只有一个触发器的输出有效。

我们以一个实际的编码例子对比下三者:

二进制编码000001010011100
格雷码000001011010110
独热码0000100010001000100010000

三者的优缺点:

二进制编码格雷码独热码
优点

1.触发器利用率高

2.仅用较少的触发器就能表示较多的状态

1.触发器利用率高

2.可以避免多bit信号的数据歪斜

3.状态切换速度较快

1.状态切换速度快

2.译码简单

缺点

1.状态之间切换速度慢

2.译码复杂

译码复杂会使用较多的触发器,触发器利用率不高

使用推荐:

高速系统下统一采用独热码

低速系统下:

状态个数<4状态个数在[4,24]区间状态个数>24
二进制码独热码格雷码

因为在低速系统下,如果状态个数较多,多bit之间的歪斜可以通过set_max_delay进行约束,相对高速系统来说时序会更容易满足,具体可参考之前的文章:

异步FIFO约束set_max_delay_异步fifo时序约束-CSDN博客

  • 10
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值