トライステートロジックの入力/出力

デジタル回路においてトライステートロジック(トライステート、TRIS、スリーステート、3ステート)では、入力または出力が 1、0、またはハイインピーダンス状態(オープン)になるように設定できます。

image

      1バッファトライステート図

トライステート入力 は、ピンがロジック1、ロジック0、または未接続(オープン)のいずれであるかを検出することができます
トライステート出力 は、複数の回路が同じ出力ラインを共有することができます。複数のデバイスが電気的に接続されている場合、出力をHi-Z状態にすることで、あるデバイスがハイ(ロジック1)になっているときに別のデバイスがロー(ロジック0)になるなどの短絡を防ぐことがよく行われます。

出力がトライステート(Hi-Z状態)になると、回路の他の部分への影響がなくなり、他の回路要素がその状態を決定しない場合、回路ノードは「フローティング」になります。 回路設計者は、出力がトライステートになったときに回路の状態を決めるために、プルアップまたはプルダウン抵抗(通常1~100kΩの範囲)を使用することが多いでしょう。
*トライステートロジックはまた、一連のLEDを駆動するために必要な配線の数を減らすこともでき ます(トライステートマルチプレクシングまたはチャーリープレクシング)。


トライステートバッファには、以下のように「 アクティブハイ」制御信号で出力を有効/無効にし、反転/非反転出力を生成するものと、「アクティブロー」制御信号でバッファの出力を制御し、反転/非反転出力を生成するものがあります。

image

image

image

image


トライステートはまたプログラミングでは非常に一般的で、「TRIS」と呼ばれます。TRISレジスタにより、ピンが入力か出力かを選択し、そのピンへの読み出しまたは書き込みを行います。I/Oピンを使用する前に、まずこのレジスタを設定する必要があります。パワーオンリセット後の標準的なデフォルトは、すべて入力(読み取り)として定義されています。

  • TRIS bit = 1 → 入力として構成される
  • TRIS bit = 0 → 出力として構成される
  • 1は「I」、0は「O」に見えるというのが便利な覚え方です

image

トライステートバッファは、複数のロジックデバイスを同じ配線やバスに接続してもデータの損傷や損失がないため、多くの電子回路やマイクロプロセッサ回路に使用されています。例えば、あるデータラインやデータバスに、メモリや周辺機器、I/O、CPUなどが接続されているとします。これらのデバイスは、この1本のデータバスに同時にデータを送受信することが可能であり、いわゆる コンテンション(競合)が発生します。

コンテンションは複数のデバイスが接続されている場合、あるデバイスは出力をハイに、あるデバイスはローに駆動したい時に発生します。これらのデバイスが同時にデータの送受信を開始した場合、一方のデバイスが電源電圧であるロジック「1」をバスに出力するのに、他方はロジックレベル「0」またはグランドに設定するため、短絡状態となりデバイスの損傷やデータ損失が発生する可能性があります。

デジタル情報は、データバスやデータハイウェイを通じて、1ビットずつシリアルに送られるか、マイクロプロセッサのデータバスのように、最大8本(またはそれ以上)のワイヤを並列形態でまとめ、複数のトライステートバッファを、図に示すようにデータの損傷や損失なしに同じデータハイウェイに接続することができます。

image

そのとき、トライステートバッファを使用して、デバイスや回路をデータバスと互いに分離することができます。複数のトライステートバッファの出力が電気的に接続されている場合、デコーダを使用して、他のデバイスがハイインピーダンス状態である間にトライステートバッファの1セットのみが一度にアクティブになるようにします。4線式データバスに接続されたトライステートバッファの例を以下に示します。

image

この基本的な例では、バイナリデコーダを使用して、多数のトライステートバッファを個別に、またはデータセットでまとめて制御する方法を示します。デコーダは、2値入力に対応する適切な出力を選択し、ロジック「1」またはロジック「0」のどちらかの出力状態を持つ1組のデータのみをバス上に渡すことができます。この時、同じバスラインに接続されている他の全てのトライステート出力は、ハイインピーダンスHi-Z状態になることによって無効になります。

つまり、データセット「A」のデータは、イネーブルライン(ENA)を介してトライステートバッファにアクティブHIGH信号が印加されたときのみ、共通バスに転送することができます。それ以外の時は、データバスから効果的に絶縁されたハイインピーダンス状態となります。

同様に、データセット「B」は、ENBを介してイネーブル信号が印加されたときのみ、バスにデータを渡します。トライステートバッファを接続してデータセットを制御する好例として、TTL 74244 Octal Bufferがあります。

また、トライステートバッファを「バックツーバック」に接続することで、1つの「アクティブハイバッファ」と1つの「アクティブローバッファ」を並列に接続した、いわゆる双方向バッファ回路を構成することも可能です。

この場合、「イネーブル」制御入力は、データを同じデータバス線「から」読み取り、同じデータバス線「に」送信する方向制御信号として機能します。このようなアプリケーションでは、TTL 74245のような双方向スイッチング機能を持つトライステートバッファを使用することができます。

トライステートバッファは非反転デバイスであり、イネーブルピン(EN)がHIGHのときのみ出力(入力と同じ)を出し、それ以外はバッファの出力がハイインピーダンス(Hi-Z)状態になることがわかりました。トライステート出力は、デジタルトライステートバッファだけでなく、多くの集積回路やデジタルシステムで使用されています。

デジタルバッファとトライステートバッファは、従来のロジックゲートに比べ、リレーやランプ、パワートランジスタなどの高負荷を駆動する電圧・電流増幅に使用することができます。また、バッファは2つ以上の回路を電気的に絶縁するためにも使用できます。

複数のトライステートデバイスを接続すればデータバスができ、一度に1つだけ選択すれば問題ないことがわかりました。トライステートバスでは、I/O信号とアドレスデコーディングを利用して、複数のデジタルデバイスが同じデータバス上でデータの入出力を行うことができます。

トライステートバッファは、4回路、6回路、8回路のバッファ/ドライバとして、一方向性および双方向性の両方で集積化された形で提供されています。


一般的なトライステートバッファを以下に示します。
MC14503BDR2GOSCT-ND | 296-32920-5-ND
    image

  • 出力タイプは、3ステートまたはプッシュプルと記載されていることに注意してください。

        image

  • また、データシートによると、プッシュプルは3ステート出力となっています。

        image


こちらもご覧ください。
What is Charlieplexing, and what can I do with it?
Getting Started with the PIC32 and MPLAB X
ElectronicsTutorials - Digital Buffer Tutorial
Wikipedia - Three-state logic



オリジナル・ソース(English)