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

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

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

設計のポイント

VHDL記述のポイント:genericによるモジュールのパラメータ化

設計内容分類FPGA

実現したい仕様・課題

バス幅やFIFOの深さ、カウンタの周期などが少しずつ異なるだけの類似モジュールを、それぞれ別ソースとして複製すると、共通部分の修正をすべての複製へ反映する必要が生じ、修正漏れの温床になります。1つのソースコードを設定違いで使い回せるようにしたいというのが課題です。

設計のポイント

モジュールの構成値はgeneric(ジェネリック)としてentity宣言に定義し、インスタンス化時にgeneric mapで値を与えることで、1つのソースコードから設定違いのモジュールを生成できます。genericにはビット幅・深さ・しきい値・タイマ値などの整数のほか、booleanや文字列も指定でき、既定値を設定しておけば省略時の動作も定義できます。内部の信号宣言やループ範囲はgeneric値と属性(’lengthなど)を使って記述し、リテラルの直書きを避けることで、generic変更が矛盾なく全体へ波及します。genericはVerilogのparameterに相当する仕組みですが、VHDLでは型検査が厳密に働くため、幅の不整合はコンパイル時に検出されます。generic値に基づくif-generate/for-generateと組み合わせれば、構成値に応じて回路構造そのものを切り替える(機能ブロックの有無、実装方式の選択)ことも可能です。汎用性を高めすぎてgenericが乱立すると使い方が分かりにくくなるため、実際に構成違いが必要なパラメータに絞って公開し、モジュールのヘッダコメントに各genericの意味と制約(最小値・最大値等)を明記しておくことが、再利用資産としての品質を高めます。

【コード例】
entity fifo is
generic (
WIDTH : integer := 8;
DEPTH : integer := 256
);
port (
din : in std_logic_vector(WIDTH-1 downto 0);
dout : out std_logic_vector(WIDTH-1 downto 0)
— …
);
end entity;

— インスタンス化時に上書き
u_fifo : entity work.fifo
generic map (WIDTH => 16, DEPTH => 512)
port map (din => d_in, dout => d_out);

VHDL記述のポイント:genericによるモジュールのパラメータ化 | 組み込み機器・ハードウェア設計製作.com

補足情報

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

FPGA設計のポイント

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

設計のポイント 一覧

FPGA設計のポイント

お問い合わせ

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

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