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

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

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

設計のポイント

VHDL記述のポイント:subtypeで意味のある型名を定義する

設計内容分類FPGA
解決できる課題CPU負荷低減

実現したい仕様・課題

設計内の至る所に std_logic_vector(7 downto 0) のような生の型指定が繰り返されると、その信号が何を表すのか(データなのかアドレスなのか)が型からは読み取れず、幅の変更時にはすべての宣言を修正する必要があります。型に意味と一貫性を持たせたいというのが課題です。

設計のポイント

既存の型に制約や別名を与えるsubtype宣言を活用し、設計上の意味を持つ型名を定義します。subtype byte_t is std_logic_vector(7 downto 0); のように宣言すれば、以後の信号宣言は signal d : byte_t; と書け、「この信号はバイトデータである」という意味がコードに残ります。幅の変更もsubtype定義1か所の修正で全宣言へ波及します。subtypeは新しい型を作るのではなく元の型の部分集合(制約付きの同じ型)なので、元の型との間で型変換が不要なまま代入・演算でき、導入の敷居が低いのが利点です(この点が、変換が必要になる新規type宣言との違いです)。integerに範囲制約を付けたsubtype(subtype addr_range is integer range 0 to 255;)を定義すれば、値域の明示と範囲検査を型名として使い回せます。アドレス、データ、チャネル番号など設計の主要な量にsubtypeを定義してpackageに集約しておくと、モジュール間で幅の食い違いが起こらず、インターフェースの一貫性が型レベルで保たれます。命名は用途が分かる名前(data_t、addr_tなど)とし、「生のstd_logic_vector(N downto 0)を設計中に直書きしない」を規約にすると、コード全体の可読性と保守性が一段上がります。

【コード例】
— packageに集約して全体で共有
subtype byte_t is std_logic_vector(7 downto 0);
subtype addr_t is unsigned(15 downto 0);
subtype ch_num_t is integer range 0 to 15;

signal rx_data : byte_t; — 意味が型名から読める
signal wr_addr : addr_t;
signal ch : ch_num_t; — 範囲検査も効く

VHDL記述のポイント:subtypeで意味のある型名を定義する | 組み込み機器・ハードウェア設計製作.com

補足情報

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

FPGA設計のポイント

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

設計のポイント 一覧

FPGA設計のポイント

お問い合わせ

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

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