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

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

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

設計のポイント

verilog記述のポイント:初期値に頼らずリセットで初期化する

設計内容分類FPGA

実現したい仕様・課題

reg宣言時の初期値代入(reg [7:0] cnt = 0; など)はFPGAではコンフィグレーション時に反映されることが多いものの、ASICや一部ツールでは無効であり、また動作中の再初期化ができません。環境やデバイスに依存せず、いつでも既知の状態から動作を開始できる設計にしたいというのが課題です。

設計のポイント

回路の初期化は宣言時初期値に頼らず、リセット信号による初期化を基本とします。宣言時初期値はFPGAのコンフィグレーション(電源投入時の回路書き込み)で一度だけ反映される仕組みであり、動作中にシステムを再初期化する手段にはなりません。また、ASIC化や別デバイスへの移植では無効になるため、初期値前提のコードは移植性を損ないます。すべての状態を持つレジスタ(ステートマシンの状態、カウンタ、制御フラグ、出力レジスタ)は、リセット時の値をalways文内で明示的に定義し、リセット信号のアサートでいつでも既知の初期状態へ戻せるようにします。これにより、エラー復帰、テスト時の状態再現、ウォッチドッグによる再起動といった運用要求にも対応できます。一方、大容量のデータバッファやメモリは全ワードのリセットが現実的でないため、valid フラグ等の管理情報のみリセットで初期化し、データ本体は書き込み後にのみ有効とみなす設計とします。リセットの方式(同期/非同期)と極性はプロジェクト内で統一し、リセット網の配布とタイミング制約を設計初期に決めておくことが重要です。

【コード例】
// ○ リセットで初期化(再初期化可能・移植性あり)
always @(posedge clk or negedge rst_n)
if (!rst_n) cnt <= 8’d0;
else cnt <= cnt + 8’d1;

// △ 宣言時初期値のみ(動作中の再初期化ができない)
reg [7:0] cnt = 8’d0;

verilog記述のポイント:初期値に頼らずリセットで初期化する | 組み込み機器・ハードウェア設計製作.com

補足情報

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

FPGA設計のポイント

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

設計のポイント 一覧

FPGA設計のポイント

お問い合わせ

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

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