std_ulogicとstd_logicと

pp.163-164

std_ulogicは下のように定義されている。std_ulogicのuはunresolvedのu。

type std_ulogic is ('U', 'X', '0', '1', 'Z', 'W', 'L', 'H', '-' );

std_logicは下のように定義されている。

subtype std_logic is resolved std_ulogic;

std_logicの場合は、同じ信号を複数のソースでドライブしたときには、最終的な値を決定するresolution tableが適用される。異なる2つのプロセスにおいて、同じ信号に'0'、'1'という値をアサインしたときには、std_ulogicの場合はエラーが発生するが、std_logicの場合は'X' (forcing unknown)がアサインされる。ただし合成する場合は、同じ信号に複数のドライバーが使われていると、コンパイラーによって自動的にチェックされてコンパイルできない。結局std_logicを使用したほうが安全である。