|
これまで“std_logic”,
“std_logic_vector”を使用してきましたが、実はVHDLの標準データタイプとしてロジック型データタイプの“bit”があります。 しかし、このデータタイプは‘0’と‘1’の値しか持っていません。 また、このデータタイプは、不定‘X’をもっていないのでシミュレーションには不向きです。 さらに、ハイインピーダンスをもっていないので、双方向バスをモデル化することができません。
そこでIEEEでは、1993年に新しいデータタイプ“std_logic”を標準化しました(IEEE
Std 1164)。 “std_logic”は以下のような値を持っています。
記号 |
意味 |
U |
初期値 |
X |
不定 |
0 |
0 |
1 |
1 |
Z |
ハイインピーダンス |
W |
弱い信号の不定 |
L |
弱い信号の0 |
H |
弱い信号の1 |
− |
don't
care |
“std_logic”,
“std_logic_vector”はIEEEで標準化された新しいデータタイプですが、VHDLの文法上では外付けのデータタイプです。 すでに紹介したとおり、“std_logic”を使用するためにはライブラリの宣言、パッケージの呼び出しが必要になります。
library
IEEE; use IEEE.std_logic_1164.all;
算術演算子は、VHDLの文法では整数型データタイプ“integer”と浮動小数点“real”でしか定義されていません。 “std_logic_vector”で算術させるためには
use
IEEE.std_logic_unsigned.all;
のパッケージ呼び出しが必要になります。 ただしこのデータタイプはSYNOPSYS社から提供されているもので、IEEE標準ではありません。
このパッケージを使用することにより、“+”,
“-”,
“*”は、 “std_logic_vector”同士、あるいは“std_logic_vector”と“std_logic”、あるいは“std_logic_vector”と “integer”との演算が可能になります。 |
|