状态机所包含的N种状态通常需要用某种编码方式表示,即状态编码,或状态分配。
选择合适的编码方案,将有助于电路的面积和资源的利用。
状态编码最常见的三种类型是:顺序二进制编码、格雷码和独热码、约翰逊编码
顺序编码(Sequential State Machine Encoding)
二进制编码为最紧凑的编码,采用顺序的二进制数编码的每个状态。
eg. state0 state1 state2 state3 表示为 '00' '01' '10' '11'
优点在于它使用状态向量的位数最小。但其从一个状态转换到另一个状态时,可能会有多位比特位发生变化,[有中间态产生] 瞬变次数多,易产生毛刺,引发逻辑错误
格雷码(Gray Code )
在相邻状态的转换中,每次只有一位比特位发生变化,可以减少产生毛刺和一些暂态的可能,但不适合于有很多状态跳转的情况。
递归生成码表
这种方法基于格雷码是反射码的事实,利用递归的如下规则来构造:
-
1位格雷码有两个码字
-
(n+1)位格雷码中的前2n个码字等于n位格雷码的码字,按顺序书写,加前缀0
-
n+1位格雷码的集合 = n位格雷码集合(顺序)加前缀0 + n位格雷码集合(逆序)加前缀1
| 2位格雷码 |
|---|

本文探讨了状态机中三种常见的状态编码方式:顺序二进制编码的紧凑性与毛刺问题,格雷码的低暂态特性及其递归生成,以及独热码的高效速度和资源利用。通过实例和优缺点分析,指导电路设计者选择最适合的编码策略。

4996

被折叠的 条评论
为什么被折叠?



