signal は内部信号の登録に使います。私は小文字で始まる英数字で表しています。
constant 定数設定に使います。私は最初に c_ を入れることで他の信号と区別しています。
-- signal
signal nextDt : std_logic;
signal timSts : std_logic_vector (2 downto 0);
signal nxtSts : std_logic_vector (2 downto 0);
-- constant
constant c_idle : std_logic_vector (2 downto 0) := "000";
constant c_wait : std_logic_vector (2 downto 0) := "001";
constant c_move : std_logic_vector (2 downto 0) := "010";
constant c_end : std_logic_vector (2 downto 0) := "100";
通常のロジック設計では、データタイプは std_logic と std_logic_vector の2つでほとんどOKです。
厳密に言えば、カウンタで +1 の1はintegerだから型変換をする必要があるけど、オーバロードという機能でカバーしているので、問題なく動作します。
必要に応じて自分でデータタイプを定義する場合もあります。
下の様な標準データ型があります。
解説書を見てもこのように列挙はされていますが、実際にどのように使うのか、今ひとつ具体的な説明がありません。「用途」列に想像がつく用途を記入しました。
bit, bit_vector は 0,1 しか無く、通常は X,Z,U,W,L,H,- を含めたstd_logic, std_logic_vector
を使います。
データ型 | 値 | 用途 |
---|---|---|
integer | 32ビット正負の整数 | 数値演算 |
real | 浮動小数点 | 数値演算 |
bit | 0, 1 | |
bit_vector | bit列 | |
boolean | True, False | |
character | ASCII 文字 | シミュレーション |
time | fs, ps, ns, us, ms, ms, sec, min, hr | シミュレーション |
severity level | note, warning, error, failure | |
natural, positive | integer のサブタイプ | 数値演算 |
string | 文字列 | シミュレーション |