Moore
Mealy
module top_module (
input clk,
input areset,
input x,
output z
);
parameter A=2'b01, B=2'b10;
reg [1:0] state, next_state;
always @(*)begin
case(state)
A:
begin
if(x==0)
begin
z=0;
next_state = A;
end
else
begin
z=1;
next_state = B;
end
end
B:
begin
if(x==0)
begin
z=1;
next_state = B;
end
else
begin
z=0;
next_state = B;
end
end
endcase
end
always @(posedge clk, posedge areset)begin
if(areset == 1)
state <= A;
else
state <= next_state;
end
endmodule