有限ステートマシンは非常に基本的なVerilogである非常に重要な知識です。本論文では、有限状態マシンは、簡単な紹介を行います。
1ステートマシンの3つの要素は
有限状態機械は、3つの要素を有する:ジャンプの状態は、ジャンプが決定され、動作の状態を、
1)ステータスジャンプ二次状態へジャンプし、現在の状態。
2)決意ジャンプ:状態決意条件ジャンプ。
3)操作状態:状態の動作に対応します。
2.ステート・マシンの実装
1)ワンセグ:状態マシンは三つの要素に統合され、常にブロックします。
1 常に @(posedgeの CLK または negedgeのRST_N) 2 開始 3を 場合(!RST_N)開始 4 状態を<= 2 " B00を。 5 Qoutが<= 1 ' B0。 6 端部 7 他の 場合(状態) 8 2 'のB00:始める 9 た場合(A)開始 10 状態を<= 2 ' B01と、 11 Qoutが<= 1 ' B1。 12 エンド 13を 他の 開始 14 の状態を<= 2 ' B00。 15 Qoutが<= 1 ' B0。 16 端部 17 端部 18 2 'のB01:始まる 19を 場合(!A)開始 20 状態を<= 2 ' B00と、 21 Qoutが<= 1 ' B0。 22 端部 23 他 始まる 24 の状態を<= 2 ' B01。 25 Qoutが<=1 " B1; 26 終了 27 終了 28 デフォルト:; 29は ENDCASE 30 の端を
2)二段階:三つの要素の二つに状態機械設計である常にブロック。
1 常に @(posedgeの CLK または negedgeのRST_N) 2 開始 3を 場合(!RST_N) 4 状態<= 2 " B00。 5 他の 場合(状態) 6 2 'のB00:始める 7 場合(A)、 8 状態<= 2 ' B01。 9 他の 10 状態<= 2 ' B00と、 11 端部 12 2 'のB01:開始 13 もし(!A) 14 状態<= 2 " B00。 15 他の 16 状態<= 2 ' B01。 17 終了 18 デフォルト:; 図19は、 ENDCASE 20 の端部 21 22を 常に(@ posedgeの CLK または negedgeのRST_N) 23は 開始 24を 場合(!RST_N) 25 Qoutを<= 1 'は、B0 26 他の 場合(状態) 27 2 'のB00:Qoutが<= 1 ' B0。 28 2 'のB01:Qoutが<= 1 ' B1。 29 デフォルト:; 30は ENDCASE 31 の端を
3 )三段階:それぞれ3つの要素を持つ状態マシン、3つが常にブロック。
FMS_THREE
1 常に(@ posedgeの CLK または negedgeの RST_N)// 状態遷移 2 開始 3。 IF(!RST_N) 4。 current_state <= 2 ' B00; //リセット 5 そう 6 current_state <= next_state // 現在の状態でリフレッシュクロックの立ち上がりエッジ 7 終了 。8 。9 常に(current_state)@は // 判決ジャンプ 10を 始める 。11 ケース(current_state) 12は 2 "B00:開始 13 であれば(A) 14 next_state = 2 ' B01。 15 他 16 next_state = 2 ' B00。 17 端部 18 2 'のB01:始まる 19を 場合(!A) 20 next_state = 2 ' B00。 21 他 22 next_state = 2 ' B01。 23 終了 24 デフォルト:; 25 終了 26は、 27 必ず(*)@ // 状態動作 28 開始 29 ケース(current_state) 30 2 'B00を:Qoutがは= <1 ' B0; 31である 2 ' B01:Qoutがある<= 1。' B1; 32 デフォルト:; 33は ENDCASE 34が エンド
3.ステートマシン設計要件
1)設計要件に応じて適切なスタイルを選択します。
2)case文はdefault文に追加する必要があります。
3)巧妙なDFFリレー、信頼性を向上させます。
グレイコードの設計条件を用いて、4)クラスホットエンコードされ、
5)覚えグローバルリセットを使用しました。