組み込み機器・ハードウェアの設計開発から装置製作まで社内一貫対応!

組み込み機器・ハードウェア設計製作.com
組み込み機器・ハードウェア設計製作.com

produced by株式会社アイディアイ

設計のポイント

verilog記述のポイント:ステートマシンの記述パターン

設計内容分類FPGA

実現したい仕様・課題

シーケンス制御や通信プロトコル処理では、ステートマシン(有限状態機械)が設計の中心になります。状態を数値の直書きで管理したり、状態遷移と出力生成を無秩序に混在させると、可読性が低く、状態追加やデバッグが困難なコードになります。見通しがよく拡張しやすいステートマシンを記述したいというのが課題です。

設計のポイント

ステートマシンは、(1) 状態名をparameter(またはlocalparam)で定義する、(2) 状態レジスタの更新(順序回路)と次状態の決定(組み合わせ回路または同一always内のcase)を構造化して記述する、という基本パターンに従います。状態名を定数名で扱うことで、コード上で遷移の意図が読み取れ、状態の追加・削除も定義と該当case項目の修正だけで済みます。case文で現在状態ごとに遷移条件と次状態を記述し、defaultでは初期状態へ戻して不正状態からの復帰経路を確保します。出力の生成は、状態のみで決まるMoore型を基本にすると、出力がクロックに同期して安定し、グリッチの心配がありません。1つのalways内に状態更新と出力をまとめる2ブロック/1ブロックスタイルでも、状態遷移図とコードが1対1に対応するよう整理して記述することが、レビューとデバッグの効率を大きく左右します。状態数が増える場合は、遷移図を先に描いてからコード化する手順を徹底すると、遷移漏れや到達不能状態を防げます。

【コード例】
localparam IDLE = 2’d0, RUN = 2’d1, DONE = 2’d2;
reg [1:0] state;
always @(posedge clk or negedge rst_n) begin
if (!rst_n) state <= IDLE;
else case (state)
IDLE: if (start) state <= RUN;
RUN: if (finished) state <= DONE;
DONE: state <= IDLE;
default: state <= IDLE; // 不正状態から復帰
endcase
end

verilog記述のポイント:ステートマシンの記述パターン | 組み込み機器・ハードウェア設計製作.com

補足情報

当事例のような、FPGA設計に関するポイントをまとめた冊子の無料DLが可能です。
是非以下よりご確認ください。

FPGA設計のポイント

>>ダウンロードはこちら!

設計のポイント 一覧

FPGA設計のポイント

お問い合わせ

組み込み機器・ハードウェア 設計製作.comを運営する株式会社アイディアイは、組み込み機器・ハードウェアの設計開発代行サービスを提供しています。
試験装置や制御機器、組み込みボードなど、設計・開発委託先をお探しの皆様、お気軽に当社に御相談ください。

技術資料のダウンロードはこちらから 技術資料ダウンロ―ド メールフォームでのお問い合わせはこちらから ご相談お問合せ