FPGA/HDLBits
Fsm1s
장영현
2023. 6. 14. 22:48
728x90
Problem Statement
This is a Moore state machine with two states, one input, and one output. Implement this state machine. Notice that the reset state is B.
This exercise is the same as fsm1, but using synchronous reset.
- 성공 코드
// Note the Verilog-1995 module declaration syntax here:
module top_module(clk, reset, in, out);
input clk;
input reset; // Synchronous reset to state B
input in;
output out;//
reg out;
// Fill in state name declarations
parameter A = 0, B = 1;
reg present_state, next_state;
always @(posedge clk) begin
if (reset) begin
present_state = B;
out = 1'b1;
end else begin
case (present_state)
A : begin
if(in)
next_state = A;
else
next_state = B;
end
B : begin
if(in)
next_state = B;
else
next_state = A;
end
endcase
// State flip-flops
present_state = next_state;
case (present_state)
// Fill in output logic
A : out = 1'b0;
B : out = 1'b1;
endcase
end
end
endmodule
- 실패 코드
// Note the Verilog-1995 module declaration syntax here:
module top_module(clk, reset, in, out);
input clk;
input reset; // Synchronous reset to state B
input in;
output out;//
reg out;
// Fill in state name declarations
parameter A = 0, B = 1;
reg present_state, next_state;
always @(posedge clk) begin
if (reset) begin
next_state = B;
out = 1'b1;
end else begin
case (present_state)
A : begin
if(in)
next_state = A;
else
next_state = B;
end
B : begin
if(in)
next_state = B;
else
next_state = A;
end
endcase
// State flip-flops
present_state = next_state;
case (present_state)
// Fill in output logic
A : out = 1'b0;
B : out = 1'b1;
endcase
end
end
endmodule