最初のページ 戻る 次へ 最後のページ

/* 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と現在の状態からつぎの状態を決定する

(状態遷移はまだしない)

状態数がたくさんあるときは

別ファイルで定義することが多い

グレイコードを使うこともある