首先简单介绍算法状态机(ASM)
ASM图由三种基本元素:状态框、判决框和条件框。
此处稍微说明一下,moore型状态机与mealy型状态机的区别:
Moore型状态机:次态=f(现状,输入),输出=f(现状);
Mealy型状态机:次态=f(现状,输入),输出=f(现状,输入);
两种状态机都可以用ASM图来表示,Moore型状态机的输出通常写在状态框内;Mealy的条件输出放在条件框内。
状态机的编码方式主要包括:二进制码(Binary),格雷码(gray),独热码(one hot)比如说当前工作四个状态的话,其编码方式如下表所示:
一段式状态机、二段式状态机与三段式状态机的写法,示例如下:
(1)一段式状态机:即状态跳转与输出信号都在同一个always块里面进行描述。
(2)二段式状态机:即将输出信号,与状态跳转分开描述,便于设计代码管理。
(3)三段式状态机:即将输出信号,与状态跳转分开描述,并且状态跳转用组合逻辑来控制。
下例是一个输入8位数据,输出将2个8位数据组合构成16位数据,首先用ASM图分别画出Moore状态机与mealy状态机流程图,再用verilog分别写出其代码