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

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

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

設計のポイント

verilog記述のポイント:generate文による繰り返し回路の生成

設計内容分類FPGA

実現したい仕様・課題

同じ構造の回路(モジュールインスタンスや処理ブロック)を多数並べたい場合、手作業でコピーして記述すると冗長で、数の変更やロジック修正のたびに全箇所を書き換える必要があり、修正漏れの危険があります。規則的な繰り返し構造を簡潔かつ変更に強く記述したいというのが課題です。

設計のポイント

規則的な繰り返し構造には generate文(generate-for)を使用します。genvarで宣言したループ変数を用いて、モジュールのインスタンス化やalwaysブロック、assign文を指定回数分だけ展開でき、繰り返し数はparameterで一元管理できます。たとえばNチャネル分の同一処理回路、ビットスライスごとの演算、複数インスタンスの配線接続などを、1つのループ記述で表現できます。generate-forは合成時に静的に展開される構文であり、ソフトウェアのfor文のような実行時ループではなく、「回路をN個並べる」ためのハードウェア記述である点を理解しておくことが重要です。ループ内で配列状の信号(wire [W-1:0] sig [N-1:0] など)と組み合わせると、チャネル数Nの変更がparameterの修正だけで全体に波及し、設計の再利用性が大幅に向上します。generate-if/generate-caseを使えば、parameterに応じて回路構成そのものを切り替える(機能の有効/無効化、実装方式の選択)ことも可能で、1つのソースコードから構成違いの製品バリエーションを生成する設計にも活用できます。

【コード例】
parameter N = 4;
wire [7:0] din [N-1:0];
wire [7:0] dout [N-1:0];
genvar i;
generate
for (i = 0; i < N; i = i + 1) begin : ch
filter u_filter (.clk(clk), .d(din[i]), .q(dout[i]));
end
endgenerate

verilog記述のポイント:generate文による繰り返し回路の生成 | 組み込み機器・ハードウェア設計製作.com

補足情報

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

FPGA設計のポイント

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

設計のポイント 一覧

FPGA設計のポイント

お問い合わせ

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

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