您的位置:首页 > 其它

verilog状态机格式

2012-08-18 11:07 239 查看
有限状态机就一般而言,有一组输入、一组输出、管理状态间转移的转移函数

转移函数根据当前状态以及输入值来确定下一个状态,状态机的输出根据当前状态以及输入(摩尔状态机不需要根据输入值,米利机需要)进行输出。

一般的状态机结构图如下所示:



对于摩尔状态机,图中的虚线是不存在的,因为它与输入无关。

D触发器用来存储当前状态,下一个状态则根据输入与当前状态来产生,输入根据当前状态(以及输入,对于米利机而言)来产生。

状态机设计过程:

1。对状态编码:BCD码,GRAY码,one-hot码等;

2。状态存储器的设计:

always@(posedge clk)

begin

if(! reset)

current_state<=init_state;

else

current_state<=next_state;

end

3。状态转移的设计

always@*

case(current_state)

.....

.....

endcase

4。输出逻辑的设计:

always@*

begin

output_init;//首先对每个输出进行初始化(为了避免不必要的锁存器),只有在需要时才对输出进行改变

case(current_state)

.....

.....

endcase

end

将状态机分成3个always块是通常的做法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: