了解一下状态机中"状态"的各种编码,我们都知道每一个状态需要一个二进制表示,但是状态之间的关系如何,到底该选用"原码""Gray码""独热码"还是好多好多别的码呢.....^^
下面是我自己搜集一些相关信息结合资料书整理的,想深入了解的可以查资料...恩推荐用(需要VPN)Google,维基百科,当然可以百度,Bing...虽然最近度娘口碑差点,仔细找找还是有好多好资料的
先来熟悉一下各种码(至于实际实现效果,自己找个例程验证一下就行了)
原码:最简单的码,就是对每个状态依照二进制按照顺序依次编码(00,01,10,11.............)
顺序二进制编码,即将状态依次编码为顺序的二进制数。顺序二进制编码是最紧密的编码,优点在于它使用的状态向量位数最少,节约了逻辑资源
Gray码:我么都应该知道的哦(数电中卡诺图的化简...不了解的回去翻书),两个顺序状态之间的差别只有一位不同(00.01,11.10..............)
Gray码在发生状态跳转时,状态向量只有一位发生变化。理论上说 Gray状态机在状态跳转时不会有任何毛刺,但Gray码状态机设计中最大的问题是,在状态机很复杂状态跳转的分支很多时,要合理的分配状态编码保证每个状态跳转都仅有 1 位发生变化,你的数电功底一定要好............
独热码:每个状态只有一个比特是高电平"1"(0001,0010,0100,1000..........)了解?!
因为独热码的特性会多用了触发器,但所用组合电路可省一些,因而使电路的速度和可靠性有显著提高,而总的单元数并无显著增加。同时独热码在状态跃迁时仅需要改变状态变量的某一位,在一定程度上简化了比较逻辑,从而减少了毛刺产生的概率
总结
原码和格雷码是压缩状态编码。 若使用格雷编码,则相邻状态转换时只有一个状态位发生翻转,这样不仅能消除状态转换时由多条状态信号线的传输延迟所造成的毛刺,又可以降低功耗。二进制编码、格雷码编码使用最少的触发器,消耗较多的组合逻辑,而独热码编码反之。
独热码编码的最大优势在于状态比较时仅仅需要比较一个位,一定程度上简化了比较逻辑,减少了毛刺产生的概率.当然在需要表示同样的状态数时,独热编码占用较多的位,也就是消耗较多的触发器,但这些额外触发器占用的面积可与译码电路省下来的面积相抵消。还有由于独热码的状态译码简单,可减少组合逻辑且速度较快, 这种编码方式还易于修改,增加状态或改变状态转换条件都可以在不影响状态机的其它部分的情况下很方便地实现。
恩...看着独热码介绍篇幅最多,那么一定在状态设计中就是用独热码吗?实际上,相对于实际设计中,大型设计(状态要几十+吧...就这么定义,虽然很少见)独热码更有效,而一些小型设计中(我们常用的工程中)使用原码和格雷码更有效!而相对于原码,就面积与速度的折中考虑来说Gray码是最好的选择,至于撒都不考虑了,图方便还是原码好用~~~
最后,我感觉自己说了一大堆没营养的话==不过像我这样比较懒的搜索的人,希望能有所帮助
文章评论(0条评论)
登录后参与讨论