Verilog --状态机编码方式

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

状态机所包含的N种状态通常需要用某种编码方式表示,即状态编码,或状态分配。

选择合适的编码方案,将有助于电路的面积和资源的利用。

状态编码最常见的三种类型是:顺序二进制编码格雷码独热码、约翰逊编码

顺序编码(Sequential State Machine Encoding)

二进制编码为最紧凑的编码,采用顺序的二进制数编码的每个状态。

eg. state0 state1 state2 state3 表示为 '00'  '01' '10' '11'

优点在于它使用状态向量的位数最小。但其从一个状态转换到另一个状态时,可能会有多位比特位发生变化,[有中间态产生] 瞬变次数多,易产生毛刺,引发逻辑错误

格雷码(Gray Code )

在相邻状态的转换中,每次只有一位比特位发生变化,可以减少产生毛刺和一些暂态的可能,但不适合于有很多状态跳转的情况。

递归生成码表

这种方法基于格雷码是反射码的事实,利用递归的如下规则来构造:

  1. 1位格雷码有两个码字

  2. (n+1)位格雷码中的前2n个码字等于n位格雷码的码字,按顺序书写,加前缀0

  3. (n+1)位格雷码中的后2n个码字等于n位格雷码的码字,按逆序书写,加前缀1 [4] 

  4. n+1位格雷码的集合 = n位格雷码集合(顺序)加前缀0 + n位格雷码集合(逆序)加前缀1

2位格雷码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值