本文主要是介绍HDLBits刷题Day24,3.2.5.9 Design a Moore FSM,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
3.2.5.9 Design a Moore FSM
问题描述
分析:
1.s=000时,打开fr1,fr2,fr3和补充水dfr
2.s=001时,打开fr1,fr2
3.s=011时,打开fr1
4.s=111时,关闭
5.当水位下降时,打开dfr
绘制一下状态转移图
代码:
module top_module (input clk,input reset,input [3:1] s,output fr3,output fr2,output fr1,output dfr
); parameter A=0,B=1,C=2,D=3,E=4,F=5;reg [2:0] state,next_state;always @(posedge clk) beginif(reset) state <= A;else state <= next_state;endalways @(*) begincase(state)A:next_state = s[1]?B:A;B:next_state = s[2]?D:(s[1]?B:A);C:next_state = s[2]?D:(s[1]?C:A);D:next_state = s[3]?F:(s[2]?D:C);E:next_state = s[3]?F:(s[2]?E:C);F:next_state = s[3]?F:E;endcaseendalways @(*) begincase(state)A:{fr3,fr2,fr1,dfr} = 4'b1111; B:{fr3,fr2,fr1,dfr} = 4'b0110;C:{fr3,fr2,fr1,dfr} = 4'b0111;D:{fr3,fr2,fr1,dfr} = 4'b0010;E:{fr3,fr2,fr1,dfr} = 4'b0011;F:{fr3,fr2,fr1,dfr} = 4'b0000;endcaseend
endmodule
这篇关于HDLBits刷题Day24,3.2.5.9 Design a Moore FSM的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!