IEEE 1164規格 ( VHDL モデル相互運用性のためのマルチ値論理システム) は、1993 年に IEEE によって発行された技術規格です。この規格は、VHDLハードウェア記述言語の電子設計自動化で使用される論理値の定義を記述しています。[ 2 ]この規格は、電気電子学会(IEEE)の設計自動化標準委員会によって後援されました。標準化の取り組みは、 Synopsys MVL-9 型宣言の提供に基づいています。
主要なデータ型std_ulogic(標準未解決ロジック)は、9つの文字リテラルで構成されています(右の表を参照)。[ 1 ]このシステムは、典型的なCMOSロジック設計が、以下のような大多数のモデリング状況で実装できる有用なロジック値のセットを促進しました。
'Z'3状態バッファロジックを簡単にするためのリテラル'H'また、'L'弱い駆動部によって有線ANDおよび有線ORロジックを可能にする。'U' すべてのオブジェクト宣言のデフォルト値として設定することで、シミュレーション中に初期化されていない値を容易に検出でき、必要に応じて容易に修正できるようになります。VHDLでは、ハードウェア設計者は以下libraryのステートメントを使用して宣言を可視化しますuse。
library IEEE ; use IEEE.std_logic_1164. all ;'U'VerilogやVHDLなどの多くのハードウェア記述言語(HDL)シミュレーションツールは、デジタル回路のシミュレーション中に上記のような未知の値をサポートしています。この未知の値は設計エラーの結果である可能性があり、設計者は実際の回路に合成する前に修正できます。また、この未知の値は、シミュレーションが実際の入力値を決定する前の、初期化されていないメモリ値や回路入力も表します。
HDL合成ツールは通常、バイナリ論理のみで動作する回路を生成する。
'-'デジタル回路を設計する際、回路の目的の範囲外となる条件が存在する場合があります。そのため、設計者はそのような条件下で何が起こるかを考慮しません。さらに、回路への入力が他の信号によってマスクされ、その入力値が回路の動作に影響を与えないという状況も発生します。
このような状況では、真理値表を作成する際に「気にしない'X'」ことを示すプレースホルダーとしてを使用するのが一般的ですが、VHDL では を使用します。「気にしない」は、ステートマシン設計やカルノー図の簡略化で特によく見られます。 の値は、最終的な回路設計に自由度を追加し、一般的に回路を簡略化して小さくします。[ 3 ]-'-'
回路設計が完了し、実際の回路が構築されると、これらの'-'値はもはや存在しなくなります。それらは何らかの具体的な値'0'、'1'あるいは価値へと変化しますが、最終的な設計最適化によってその形はどちらにもなり得ます。
'Z'一部のデジタル機器は、出力のみで3状態論理をサポートしています。3つの状態とは、「0」、「1」、「Z」です。
一般的にトライステート[ 4 ]ロジック(ナショナルセミコンダクターの商標)と呼ばれるこのロジックは、通常の真と偽の状態に加えて、ロジック出力を効果的に遮断する第3の透過的な高インピーダンス状態(または「オフ状態」)を備えています。これにより、複数のロジック出力を単一の入力に接続する効果的な方法が実現します。この場合、1つを除くすべてのロジック出力が高インピーダンス状態になり、残りの出力は通常のバイナリの意味で動作します。これは、コンピュータメモリバンクやその他の同様のデバイスを共通のデータバスに接続するためによく使用されます。一度に1つのデバイスのみを有効にするだけで、多数のデバイスが同じチャネルを介して通信できます。
出力は3つの状態のいずれかをとることができるのに対し、入力は2つの状態しか認識できません。高インピーダンス状態は実質的に「未知」であると主張することもできますが、ほとんどの電子機器には高インピーダンス状態をそれ自体を状態として解釈する機能はありません。入力は「0」と「1」しか検出できません。
デジタル入力が切断されたままになると、入力によって解釈されるデジタル値は、使用されている技術の種類によって異なります。TTL技術では、常に「1」の状態にデフォルト設定されます。一方、CMOS技術では、ゲート入力の容量により、その入力で以前に観測された状態が一時的に保持されます。時間の経過とともに、リーク電流によってCMOS入力はランダムな方向にドリフトし、入力状態が反転する可能性があります。CMOSデバイスの切断された入力は、ノイズを拾ったり、発振を引き起こしたり、電源電流が劇的に増加したり(クローバー電力)、デバイスが完全に破壊されたりする可能性があります。