联系3.2.5.5和3.2.5.6来看
3.2.5.7 Simple FSM 3 (asynchronous reset)
问题描述
下面是一输入一输出四状态的摩尔状态机的状态转移表。实现这个状态机。包括将 FSM 重置为状态 A 的异步重置。
代码:
module top_module(
input clk,
input in,
input areset,
output out); //
reg [1:0] state,next_state;
parameter A=2'b00,B=2'b01,C=2'b10,D=2'b11;
// State transition logic
always @(*) begin
case(state)
A:next_state=in?B:A;
B:next_state=in?B:C;
C:next_state=in?D:A;
D:next_state=in?B:C;
endcase
end
// State flip-flops with asynchronous reset
always @(posedge clk or posedge areset) begin
if(areset) state<=A;
else state<=next_state;
end
// Output logic
assign out=(state==D);
endmodule
3.2.5.8 Simple FSM 3 (synchronous reset)
问题描述
以下是一输入一输出四状态的摩尔状态机的状态转移表。实现这个状态机。包括将 FSM 重置为状态 A 的同步重置。(这与Fsm3的问题相同,但有同步重置。)
代码:
module top_module(
input clk,
input in,
input reset,
output out); //
reg [1:0] state,next_state;
parameter A=2'b00,B=2'b01,C=2'b10,D=2'b11;
// State transition logic
always @(*) begin
case(state)
A:next_state=in?B:A;
B:next_state=in?B:C;
C:next_state=in?D:A;
D:next_state=in?B:C;
endcase
end
// State flip-flops with synchronous reset
always @(posedge clk) begin
if(reset) state<=A;
else state<=next_state;
end
// Output logic
assign out=(state==D);
endmodule