/* State Machine */
module stateMachine(clk,x,z);
/*状態名を定義*/
parameter S0=2'b00, S1=2'b01, S2=2'b10, S3=2'b11;
input [1:0] x;
input clk;
output z;
wire z;
reg [1:0] currentState; /*現在の状態*/
reg [1:0] nextState; /*つぎの状態*/
/*立ち上がりクロックで状態が遷移*/
always @(posedge clk)
begin
(この後に説明)
end
/*入力xまたは現在の状態currentStatusが変化したとき*/
always @(x or currentState)
begin
(この後に説明)
end
assign z = ・・・
endmodule
いつもの宣言
状態名に番号を与える(番号は任意でよい)
状態を記憶する領域
parameter S0=...と同じビット幅
入力xが1xのときS0に遷移(クリア動作)
入力xが00,01のときは指定された状態へ遷移
入力xと現在の状態からつぎの状態を決定する
(状態遷移はまだしない)
状態数がたくさんあるときは
別ファイルで定義することが多い
グレイコードを使うこともある