[转帖]状态机的编码

来源:http://hi.baidu.com/zjh20tz/item/8acc58f613a14dd042c36a03

关于状态机的编码(独热码和格雷码)

在设计状态机时有几种状态编码方法:二进制,格雷码(gray)和独热码(one hot code)。他们各有各的优点。

          独热              格雷         二进制
         4'b0001        2'b00        2‘b00
         4'b0010        2'b01        2’b01
         4'b0100        2'b11        2‘b10
         4'b1000        2'b10        2’b11

one hot,独热嘛,一看就明白,就是只有一位是高电平。独热码  使用的触发器较多,但可减少实现状态机的组合逻辑数目,减少复杂性,提高系统的速度,即工作时钟频率可以做到最高。格雷码是使用最小数目的触发器来编码状态机,但形成的组合逻辑比较复杂。 
使用独热码编码时,会出现很多未使用的状态,而使用二进制编码和格雷码编码时,如果状态机的状态数不是2的指数次方时,也会出现未使用状态。

格雷码每个相邻的状态切换只有一个bit的信号跳变,适用于异步握手的情况,比如异步FIFO的指针计数。

原文地址:https://www.cnblogs.com/zlh840/p/2788622.html