与异步复位相似,触发条件的区别。
// 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)
present_state<=B;
else
present_state<=next_state;
end
always @(*) begin//组合逻辑,规定下一个状态是什么?
case(present_state)
A : if(in==1)
next_state=A;
else
next_state=B;
B : if(in==1)
next_state=B;
else
next_state=A;
default next_state=B;
endcase
end
always @(*) begin//摩尔机,输出与输入无关,组合逻辑,规定什么状态产生什么输出。
if (present_state==B)
out=1;
else
out=0;
end
endmodule