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

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

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

設計のポイント

VHDL記述のポイント:数値リテラルの記述と型の修飾

設計内容分類FPGA

実現したい仕様・課題

VHDLでは数値をビット文字列・16進表記・整数など複数の形式で記述でき、型に厳格な言語であるがゆえに、リテラルの書き方や幅が合わないだけでコンパイルエラーや意図しない値になります。また、複数の型に解釈できるリテラルでは曖昧性エラーも発生します。リテラル記述の定石を押さえて、正確で読みやすい値の記述をしたいというのが課題です。

設計のポイント

ビット列のリテラルは、2進なら “0101”、16進なら x”A5″ の形式で記述します。16進のx”…”は1桁が4bitに対応するため、幅が4の倍数の信号に適し、桁数と幅の対応が明確です(VHDL-2008では 12x”FA5″ のように幅を明示する記法も使えます)。桁数の多い2進・整数リテラルには、50_000_000 や “1010_0101” のようにアンダースコア区切りが使え、読み間違いを防げます。unsigned/signedの信号と整数を比較・演算する場合は、numeric_stdの規則によりリテラル整数を直接書けます(cnt = 200 など)。一方、集合体 (others => ‘0’) などが複数の型に解釈可能でエラーとなる場面では、型名'(値) の形式の修飾式(qualified expression)で型を明示して曖昧さを解消します。文字リテラル’1’(std_logic)と文字列リテラル”1″(幅1のベクタ)の混同、10進のつもりの”10″(2進で2)といった取り違えは初学者の定番のエラーであり、「1bitはシングルクォート、ベクタはダブルクォートまたはx表記、数量の比較は整数リテラル」という対応を意識して書き分けることが、コンパイルエラーの減少と可読性の向上につながります。

【コード例】
signal a : std_logic;
signal v : std_logic_vector(7 downto 0);
signal u : unsigned(7 downto 0);

a <= ‘1’; — 1bitはシングルクォート
v <= “0101_0001″; — 2進(区切りで可読性向上)
v <= x”A5”; — 16進(4bit/桁)
if u = 200 then … end if; — unsignedと整数の比較は直接可
v <= std_logic_vector'(others => ‘0’); — 修飾式で型を明示

VHDL記述のポイント:数値リテラルの記述と型の修飾 | 組み込み機器・ハードウェア設計製作.com

補足情報

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

FPGA設計のポイント

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

設計のポイント 一覧

FPGA設計のポイント

お問い合わせ

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

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