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

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

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

設計のポイント

VHDL記述のポイント:packageで共通定義を集約する

設計内容分類FPGA

実現したい仕様・課題

複数のモジュールで共通に使う型定義・定数・変換関数を各ファイルに重複して記述すると、定義の食い違いによる接続エラーや、修正漏れによる不整合が発生します。プロジェクト共通の定義を一元管理し、モジュール間の一貫性を保証したいというのが課題です。

設計のポイント

設計全体で共有する型・定数・関数・record定義は、package(パッケージ)に集約します。packageは宣言部(package … is)に公開する定義を記述し、関数や手続きの実体はpackage bodyに記述する構造で、各モジュールからは use work.パッケージ名.all; で参照します。バスインターフェースのrecord型、状態の列挙型、プロジェクト共通の定数(クロック周波数、アドレスマップ)、繰り返し使う変換・補助関数などをpackageにまとめることで、定義がコード上の1か所に定まり、モジュール間で型が完全に一致することが言語レベルで保証されます。インターフェース仕様の変更もpackageの修正が全モジュールへ確実に波及するため、修正漏れによる不整合が構造的に起こりません。パッケージは役割ごとに分割し(型定義用、定数用、関数ライブラリ用など)、肥大化を避けると見通しが保てます。関数をpackageに置く際は、合成可能な記述(待ち文なし、範囲の確定した処理)に限定し、シミュレーション専用の補助関数は別パッケージに分離しておくと、合成対象の管理が明確になります。再利用資産としてプロジェクトをまたいで使うpackageには、ヘッダコメントで提供する定義の一覧と使用条件を明記しておくことを推奨します。

【コード例】
— common_pkg.vhd
package common_pkg is
constant CLK_HZ : integer := 50_000_000;
type state_t is (IDLE, RUN, DONE);
type bus_req_t is record
addr : std_logic_vector(15 downto 0);
we : std_logic;
end record;
function to_slv8(i : integer) return std_logic_vector;
end package;

— 使用側
use work.common_pkg.all;

VHDL記述のポイント:packageで共通定義を集約する | 組み込み機器・ハードウェア設計製作.com

補足情報

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

FPGA設計のポイント

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

設計のポイント 一覧

FPGA設計のポイント

お問い合わせ

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

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