1、将题干英文读懂还是可以理解他的意思的。状态机切换图如下图所示。
完整代码如下:
module top_module (
input clk,
input resetn, // active-low synchronous reset
input x,
input y,
output f,
output g
);
parameter A=0,B=1,C0=2,C1=3,C2=4,C3=5,D1=6,D2=7,D3=8;
reg [3:0] state,next_state;
always@(*)begin
case(state)
A:next_state=B;//此时f为1
B:next_state=C0;
C0:next_state=x?C1:C0;
C1:next_state=x?C1:C2;
C2:next_state=x?C3:C0;
C3:next_state=y?D1:D2;
D1:next_state=D1;//d1 g就始终输出1
D2:next_state=y?D1:D3;
D3:next_state=D3;//d3 g就始终输出0
endcase
end
always@(posedge clk)begin
if(!resetn)
state<=A;
else
state<=next_state;
end
assign f=state==B;
assign g=(state==C3)||(state==D1)||(state==D2);
endmodule
状态机切换图,懒得画了,就是这个意思。