Moore状态机
其Moore状态图如图1所示。 S0/0S1/1S3/0S2/100110011 其中S0/0所代表的意思为现在是状态S0且输出为0,状态图最主要是将每个状态都给予一个编号,详细描述如下: 1) 在某状态时,列出所有的输出条件。 2) 在某状态时,当输入信号是什么则会跳至哪一个状态。 3) 在某状态时,当输入信号是什么则会维持原状态不变。 可以将图1的Moore状态机写成状态表如表1. 表1 Moore状态表 状态 次态 输出
X=0 X=1
S0 S0 S1 0
S1 S1 S2 1
S2 S3 S0 0
S3 S0 S3 0
状态表主要描述它与状态图的关系,再设计状态机电路是,需要先定义状态机的变量,定义状态机的变量时使用枚举类型来定义,如下范例所示: Type State is (S0,S1,S2,S3) 接下来,状态会被加以编码。其状态编码方式如下: (1) 时序编码(Sequential) 将每个状态以二进制来做编码。 (2) 格雷码 (Gray) 也是将四个State以二进制来编码,不过不同的是每次编码只会差一个位,其主要缺点是状态改变是要依序改变才可以,若状态不是依序是,则Gray编码不适用。 (3) 独热码(One hot) 独热码状态编码的特色为每一个状态均有自己的触发器,所以若有N个状态就也存在有N个触发器,在任一时刻只会有一组状态编码,缺点是会产生较大的电路,但是相对的使用独热码状态编码对帧错相当有帮助。 三种格式之状态编码如表2所示。 状态 时序编码 Gray编码 One hot编码
S0 00 00 0001
S1 01 01 0010
S2 10 11 0100
S3 11 10 1000
从状态编码表可以看出时序编码和Gray编码均是用二个位来做编码,而以独热码作为编码方式则编码位增加至四个位,所以电路比其他两种编码方式都大一些。 所以可以使用属性来定义编码方式,若要编码成独热码编码,则可加上: Type State is (S0,S1,S2,S3); Attribute encoding of state; Type is “0001 0010 0100 1000”; 在设计状态机时,通常使用进程语句来描述状态机,其中进程语句又可以分为三种方式: n 一个进程 利用一个进程来描述状态的转换及输出信号的定义。 n 两个进程 一个为时序电路主要负责状态变量的更新,此进程为同步电路,而另一个进程语句主要是描述下次态变量和输出的更新。 n 三个进程 第一个进程主要负责状态变量的更新,第二个进程语句负责描述次态变量,而最后一个则是负责输出信号的更新。 有了以上的初步观念,可以设计图1四个状态的Moore状态机。
|