例4.1:Gray码有限状态机模型1。
module fsm (Clock, Reset, A, F, G); //模块声明
input Clock, Reset, A;
output F,G;
reg F,G;
reg [1:0] state ;
parameter //状态声明
Idle = 2’b00, Start = 2’b01,
Stop = 2’b10, Clear = 2’b11;
always @(posedge Clock)
if (!Reset) begin
state <= Idle; F<=0; G<=0; //默认状态
end
else case (state)
idle: begin //Idle状态
if (A) begin
state <= Start;
G<=0;
end
elsestate <= idle;
end
start: //Start状态
if (!A) state <= Stop;
else state <= start;
Stop: begin //Stop状态
if (A) begin
state <= Clear;
F <= 1;
end
else state <= Stop;
end
Clear: begin //Clear状态
if (!A) begin
state <=Idle;
F <=0; G <=1;
end
else state <= Clear;
end
endcase
endmodule
也可以用下面的Verilog HDL模型来表示同一个有限状态。
例4.2:独热码有限状态和模型。
module fsm (Clock, Reset, A, F, G); //模块声明
input Clock, Reset, A;
output F,G;
reg F,G;
reg [3:0] state ;
parameter //状态声明
Idle = 4’b1000,
Start = 4’b0100,
Stop = 4’b0010,
Clear = 4’b0001;
always @(posedge clock)
if (!Reset) begin
state <= Idle; F<=0; G<=0; //默认状态
end
else case (state)
Idle: begin //Idel状态
if (A) begin
state <= Start;
G<=0;
end
else state <= Idle;
end
Start: //Start状态
if (!A) state <= Stop;
else state <= Start;
Stop: begin //Stop状态
if (A) begin
state <= Clear;
F <= 1;
end
else state <= Stop;
end
Clear: begin //Clear状态
if (!A) begin
state <=Idle;
F<=0; G<=1;
end
else state <= Clear;
end
default: state <=Idle; //默认状态
endcase
endmodule