AR# 45213

VHDL で STD_LOGIC_VECTOR を整数に変換する方法

説明

VHDL で STD_LOGIC_VECTOR を整数に変換する簡単な方法を教えてください。

ソリューション


タイプ変換は、VHDL コードの記述中に実行される通常の処理ですが、場合によっては扱いにくいことがあります。例として、STD_LOGIC_VECTOR タイプを整数タイプに変換する場合が挙げられます。これを実行するには、次のようなオプションがあります。
  1. Function "conv_integer" defined in Synopsys Library : std_logic_arith, defined as:

    function CONV_INTEGER(ARG: UNSIGNED) return INTEGER;
    function CONV_INTEGER(ARG: SIGNED) return INTEGER;
  2. Function "To_integer" defined in IEEE library:numeric_std, defined as:


    function TO_INTEGER (ARG: UNSIGNED) return INTEGER;
    function TO_INTEGER (ARG: SIGNED) return INTEGER;

これらのうち、numeric_std が改善されたパッケージで、より使いやすいものです。次のコードは、STD_LOGIC_VECTOR 符号付き整数に変換する場合の例です。
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE ieee.numeric_std.ALL;


entity conv_test is
Port ( a : in STD_LOGIC_VECTOR (7 downto 0);
b : out integer);
end conv_test;

architecture Behavioral of conv_test is

begin

b <= to_integer(signed(a));

end Behavioral;

符号なし整数の場合、一部は次のようになります。
b <= to_integer(unsigned(a));
AR# 45213
日付 02/21/2013
ステータス アクティブ
種類 一般