module top_module(
input clk,
input areset, // Asynchronous reset to state B
input in,
output out);//
parameter A=0, B=1;
reg state, next_state;
always@(posedge clk or posedge areset) begin
if(areset)
state<=B;else
state<=next_state;
end
always@(*) begin
case(state)
A: begin
if(in==1)
next_state<=A;else
next_state<=B;
end
B: begin
if(in ==1'b1)
next_state = B;else
next_state = A;
end
endcase
end
always@(*) begin
if(state==B)
out<=1;else
out<=0;
end
endmodule
2.Fsm1s
module top_module(
input clk,
input reset, // Asynchronous reset to state B
input in,
output out);//
parameter A=0, B=1;
reg state, next_state;
always@(posedge clk ) begin
if(reset)
state<=B;else
state<=next_state;
end
always@(*) begin
case(state)
A: begin
if(in==1)
next_state<=A;else
next_state<=B;
end
B: begin
if(in ==1'b1)
next_state = B;else
next_state = A;
end
endcase
end
always@(*) begin
if(state==B)
out<=1;else
out<=0;
end
endmodule
3.Fsm2
module top_module(
input clk,
input areset, // Asynchronous reset to OFF
input j,
input k,
output out); //
parameter OFF=0, ON=1;
reg state, next_state;
always@(posedge clk or posedge areset) begin
if(areset)
state<=OFF;else
state<=next_state;
end
always@(*) begin
case(state)
OFF:begin
if(j==0)
next_state<=OFF;else
next_state<=ON;
end
ON: begin
if(k==0)
next_state<=ON;else
next_state<=OFF;
end
endcase
end
always@(*) begin
if(state==OFF)
out<=0;else
out<=1;
end
endmodule
4.Fsm2s
module top_module(
input clk,
input reset, // Asynchronous reset to OFF
input j,
input k,
output out); //
parameter OFF=0, ON=1;
reg state, next_state;
always@(posedge clk ) begin
if(reset)
state<=OFF;else
state<=next_state;
end
always@(*) begin
case(state)
OFF:begin
if(j==0)
next_state<=OFF;else
next_state<=ON;
end
ON: begin
if(k==0)
next_state<=ON;else
next_state<=OFF;
end
endcase
end
always@(*) begin
if(state==OFF)
out<=0;else
out<=1;
end
endmodule
5.Fsm3comb
module top_module(
input in,
input [1:0] state,
output [1:0] next_state,
output out); //
parameter A=0, B=1, C=2, D=3;
always@(*) begin
case(state)
A: begin
if(in==0)
next_state<=A;else
next_state<=B; end
B: begin
if(in==0)
next_state<=C;else
next_state<=B; end
C: begin
if(in==0)
next_state<=A;else
next_state<=D; end
D: begin
if(in==0)
next_state<=C;else
next_state<=B; end
endcase
end
assign out=(state==D);
endmodule
module top_module(
input clk,
input in,
input areset,
output out
);
//状态申明
parameter A =4'b0001;
parameter B = 4'b0010;
parameter C =4'b0100;
parameter D = 4'b1000;
parameter ON =1;
parameter OFF =0;
reg [3:0] state;
reg [3:0] next_state;
always @(posedge clk or posedge areset) begin
if(areset) begin
state <= A;
end
else begin
state <= next_state;
end
end
always @(*) begin
next_state = state;
case(state)
A:
case(in)
ON: next_state = B;
OFF: next_state = A;
endcase
B:
case(in)
ON: next_state = B;
OFF: next_state = C;
endcase
C:
case(in)
ON: next_state = D;
OFF: next_state = A;
endcase
D:
case(in)
ON: next_state = B;
OFF: next_state = C;
endcase
endcase
end
assign out =(state==D);
endmodule
8.Fsm3s
module top_module(
input clk,
input in,
input reset,
output out
);
parameter A =4'b0001;
parameter B = 4'b0010;
parameter C =4'b0100;
parameter D = 4'b1000;
parameter ON =1;
parameter OFF =0;
reg [3:0] state;
reg [3:0] next_state;
always @(posedge clk ) begin
if(reset) begin
state <= A;
end
else begin
state <= next_state;
end
end
always @(*) begin
next_state = state;
case(state)
A:
case(in)
ON: next_state = B;
OFF: next_state = A;
endcase
B:
case(in)
ON: next_state = B;
OFF: next_state = C;
endcase
C:
case(in)
ON: next_state = D;
OFF: next_state = A;
endcase
D:
case(in)
ON: next_state = B;
OFF: next_state = C;
endcase
endcase
end
assign out =(state==D);
endmodule
HDLbits---Circuits---Sequential Logic---Finite State Machines第一部分
1.Fsm1module top_module( input clk, input areset, // Asynchronous reset to state B input in, output out);// parameter A=0, B=1; reg state, next_state; always@(posedge clk or posedge areset) begin if(areset)