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

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

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

設計のポイント

VHDL記述のポイント:型変換の作法(std_logic_vector・unsigned・signed・integer)

設計内容分類FPGA

実現したい仕様・課題

VHDLは型に厳格な言語であり、std_logic_vector・unsigned・signed・integerは互いに暗黙変換されません。ポートはstd_logic_vector、演算はunsigned、ループやインデックスはintegerと、場面ごとに適切な型が異なるため、変換の書き方を正しく知らないとコンパイルエラーが頻発し、誤った変換で値を壊す危険もあります。型変換の定石を身につけたいというのが課題です。

設計のポイント

numeric_stdを前提とした型変換の基本は次の4つです。(1) std_logic_vector→unsigned/signed:符号の解釈を与えるキャスト unsigned(slv)/signed(slv)。(2) unsigned/signed→std_logic_vector:std_logic_vector(u) でビット列に戻す。(3) unsigned/signed→integer:to_integer(u)。(4) integer→unsigned/signed:to_unsigned(i, 幅)/to_signed(i, 幅) で、変換先のビット幅を明示します。この4つを覚えれば、「ポートはstd_logic_vectorで受け、内部でunsignedへ変換して演算し、出力時にstd_logic_vectorへ戻す」という標準的な流れを迷わず記述できます。unsignedとsignedの間の変換もキャストで可能ですが、符号の再解釈になるため意図を確認して使います。型変換が煩わしく感じられることもありますが、これはVHDLの型検査が「符号の解釈違い」「幅の不一致」といった不具合をコンパイル時に検出してくれることの裏返しであり、変換を明示的に書くことが設計意図の文書化を兼ねます。VHDL-2008では、演算対象の信号を最初からunsigned型でポート宣言することも認められており、内部変換を減らす設計も選択できます。

【コード例】
signal slv : std_logic_vector(7 downto 0);
signal u : unsigned(7 downto 0);
signal i : integer range 0 to 255;

u <= unsigned(slv); — slv → unsigned
slv <= std_logic_vector(u); — unsigned → slv
i <= to_integer(u); — unsigned → integer
u <= to_unsigned(i, u’length); — integer → unsigned(幅指定)

VHDL記述のポイント:型変換の作法(std_logic_vector・unsigned・signed・integer) | 組み込み機器・ハードウェア設計製作.com

補足情報

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

FPGA設計のポイント

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

設計のポイント 一覧

FPGA設計のポイント

お問い合わせ

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

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