状态机设定与编码选择

        状态机分为有限状态机和无限状态机,其中FSM(有限状态机)其设定可以分为mealy状态机和moore状态机。其中mealy状态机其输出和当前状态和输入有关,moore状态机其输出和当前状态有关。其状态机的代码编写又分为一段式,二段式和三段式,状态机的四个要素输入、输出、当前状态和下一个状态。其分类主要是将下一个状态、当前状态和输出是否综合在一个always块中。

        数据编码主要有8421码、独热码、格雷码。8421码是按照自然数递增计数,在实际电路中,四位的变化不可能同时发生,则计数中可能出现短暂的其他代码,在特定的情况下可能导致电路的状态错误或者输入错误。独热码是在代码中只有一位代码为1,其与均为0,在标示不同数据时,将1移位即可。格雷码是在一组数的编码中,任意两个相邻的代码只有一位二进制不同,其中最大数与最小数之间也仅有一位数不同,即‘首尾相连’。

        对于使用FPGA实现的有限状态机建议采用独热码,因为采用独热码设计时虽然增加了触发器,但所用组合电路可省一些,因而使电路的速度和可靠性有显著提高,而总的单元数并无显著增加。采用独热码后有了多余的状态,就有一些不可到达的状态。为此在case语句的最后需要增加dafault分支项。这可以用默认项标示该项。

        但是对于状态繁多的状态机,当采用独热码编码位数过多时,可以采用格雷码,一般建议不采用8421码,使用格雷码可以减少电路变化中寄存器跳变位数,从而减少可能存在的误码。

你可能感兴趣的:(编译码)