VHDLタイプは未解決または解決できます。たとえば、 std.standard
パッケージによって宣言されたbit
タイプは、 std.standard
パッケージによって宣言されたstd_logic
タイプが解決されているieee.std_logic_1164
は解決されieee.std_logic_1164
。
タイプが解決されていない信号は、複数のVHDLプロセスによって駆動(割り当て)できませんが、タイプが解決された信号は解決できます。
解決された型の使用は、複数のハードウェア回路によって駆動されるハードウェアワイヤ(またはワイヤセット)を実際にモデル化することが意図されている状況に予約する必要があります。必要とされる典型的な例は、メモリの双方向データバスである。メモリが書き込まれるとき、それはバスを駆動する書き込み装置であり、メモリが読み出されるときにはバスを駆動するメモリである。
他の状況で解決された型を使用すると、頻繁に遭遇する習慣の中で、望ましくない複数のドライブ状況が誤って作成されたときに非常に有用なコンパイルエラーが抑制されるため、悪い考えです。
ieee.numeric_std
パッケージsigned
、 unsigned
signed
およびunsigned
ベクトル型を宣言し、それらの算術演算子をオーバーロードします。これらの型は、同じデータに対して算術演算とビット単位演算が必要な場合によく使用されます。 unsigned
signed
およびunsigned
型は解決されます。以前のVHDL2008では、 ieee.numeric_std
とその型を使用しているため、誤った複数のドライブ状況によってコンパイルエラーが発生することはありませんでした。 VHDL2008は、新しいタイプの宣言を追加しますieee.numeric_std
: unresolved_signed
とunresolved_unsigned
(別名はu_signed
とu_unsigned
)。これらの新しいタイプは、複数のドライブ状況が望ましくないすべての場合に優先されるべきである。