always @(posedge Clock) if (!Reset) begin state <= Idle; K2 <= 0; K1 <= 0; end else case (state) Idle: if (A) begin state <= Start; K1 <= 0; end elsebegin state <= Idle; K2 <= 0; K1 <= 0; end
Start: if (!A) state <= Stop; else state <= Start;
Stop: if (A) begin state <= Clear; K2 <= 1; end elsebegin state <= Stop; K2 <= 0; K1 <= 0; end
Clear: if (!A) begin state <= Idle; K2 <= 0; K1 <= 1; end elsebegin state <= Clear; K2 <= 0; K1 <= 0; end
default: state <= 2'bxx; endcase
endmodule
两段式
何谓两段式?这两段是什么?
同步时序描述状态转移
组合逻辑判断状态转移条件、描述状态转移规律及其输出
所以,从一段式改成两段式,我们只要:
将次态单独拆分出来:
1 2 3 4
always @(posedge Clock) begin if (!Reset) state <= Idle; else state <= nextstate; end