ハイインピーダンスとは
コンピュータを構成する基本要素である論理回路は、1(High)もしくは0(Low)の2状態のみで表現されると思われがちですが、実は第3の状態「ハイインピーダンス(High-impedance)」が存在します。一般に「Hi-Z」と記載することが多いですが、省略して「HZ」、単に「Z」と表現することもあります。(デジタルICのデータシート内の真理値表で見かけることがあります)
口頭では「ハイインピ」と呼ぶことも。
ハイインピーダンスはどのような状態か?
ハイインピーダンスとは、信号線がいずれの電源やグランドに対しても非常に高いインピーダンスとなっている状態を指します。ハイインピーダンスは特定の電圧に駆動されていないため、「浮いた」状態になっているため、空間を伝搬する電磁ノイズや、隣接する信号線からのクロストークにより容易に電圧が変化してしまいます。入力端子がハイインピーダンス状態になり得る場合はプルアップ抵抗を接続するなどの対策が必要になります。
どのような場合にハイインピーダンスになる?
ここまでの説明だけでは、ハイインピーダンスに対して単なる悪者のような印象を持たれたかもしれません。しかし、HighでもなくLowでもなく、わざわざ回路の一部を意図的にハイインピーダンス状態にすることがあります。代表的な例として、双方向の通信線回路におけるスリーステートバッファ(トライステートバッファ)が挙げられるでしょう。
スリーステートバッファ
スリーステートバッファは2入力1出力のデジタル回路を構成する基本要素の一つです。入力の信号線、出力の信号線に加え、ゲート入力信号が存在します。ゲート信号がONの場合は出力=入力となり、信号は透過するのですが、ゲート信号がOFFになった場合は出力が入力と遮断され(切り離され)、出力側がHi-Zになります。これは、0V(Low)と明確に異なる点に注意が必要です。
スリーステートバッファの内部動作イメージを以下に示します。あくまで原理理解のためのイメージですが、内部にスイッチがあることを想像してください。ゲート入力がONの場合(左図)、入力のHighもLowも出力に反映され、信号は透過します。ゲート入力がOFFの場合(右図)、スイッチはオープンになり、入力がHighであってもLowであっても出力には反映されません。入力に対して出力は浮いた状態となり、ハイインピーダンスになります。
スリーステートのスリー(Three)とは、HighとLowに加え、Hi-Zを含めた3つの状態を出力が取り得るということを意味しています。
半二重通信の仕組み
では、このスリーステートバッファはどのようなときに使用されるのでしょうか。内部の構造をふまえ、双方向通信の仕組みを紹介します。
双方向の信号線は、情報の送受信を一本ないし複数の電線で共有して行います。同じ電線で送信と受信の両方を行うため、時間的に分割(時分割)して送受信を交互に行うことになり、これを半二重通信と呼びます。具体的な回路は以下の通りです。
半二重通信では、通信する左右のノードにそれぞれ送信回路(トランスミッタ)と受信回路(レシーバ)が並列に接続されています。トランスミッタとレシーバの出入り口にはそれぞれスリーステートバッファが接続され、送受信の際に使用するゲートのみをONするという構造です。このような構造とすることで、自分自身が送信したデータが自分の受信バッファに入ってしまうことを防止したり、万が一両側のノードが同時にデータ送信した際に、貫通電流が流れて回路が破壊されてしまうことを防ぐことができます。ここで、使用しない回路を信号線から切り離した状態こそが、ハイインピーダンス状態であると言えます。(使用する回路とは接続されているので、完全なハイインピーダンス状態ではありませんが、使用しない回路側から見ると、相対的にハイインピーダンス状態になっていると解釈できます)
下図に、通信時の具体的な回路状態を示します。ノードAが送信してノードBが受信する場合、ノードAのゲート信号をHにします。送信側バッファがONし、受信側バッファがOFFになることで、信号線には送信側バッファのみが接続されている状態となります。一方、ノードB側はゲート信号をLにして受信バッファをONし、信号線と接続します。この時のノードBの送信バッファはOFFしているため、信号線からは切り離されています(ハイインピーダンス状態)。これでノードAが送信した信号をノードBで受け取れるようになりました。
今度はノードBがデータを送信し、ノードAが受信するモードを考えています。ノードB側のゲート信号をHにすると、送信バッファがONし、送信信号が信号線に伝達されます。ノードAではゲート信号をLにし、受信バッファをONすることで信号線からの信号を受信信号に伝達します。
ここでも、信号線から見るとノードAの送信回路とノードBの受信回路は切り離されているため、相対的にハイインピーダンスになっています。
これで、信号線1本でデータの送受信の両方を実現することができました。実際の半二重通信回路には、クロック信号線があったり、信号線1本でも信号が衝突しないように制御を行う回路が実装されている場合がありますが、最重要な制御部は上記のようにスリーステートバッファを突き合わせ、ハイインピーダンスにする回路構造は共通です。
ハイインピーダンスになり得る信号線の処理
信号線がハイインピーダンス状態になり得る場合、その信号線をプルアップもしくはプルダウンしておくことが常套手段です。ハイインピーダンス状態でも一時的に回路は機能するかもしれませんが、浮いた金属線はアンテナとして作用してノイズを拾い、二次放射して誤動作の原因となったり、ハイインピーダンス時に蓄積した静電気がローインピーダンスになった瞬間に他回路へ大電流を流し、回路を破壊してしまう恐れがあるためです。そこで、プルアップもしくはプルダウンしておくことで信号線の電圧を安定化させ、上記のような現象を防止することができます。
ちなみに、プルアップとプルダウンの両方を接続する方法も存在し、これをテブナン終端と呼びます。ハイインピーダンス時に安定化させる電圧を自由に設定できるメリットがある一方、電源からGNDに向かって常に電流を流してしまうため、回路の消費電力面でデメリットがあります。
オープンコレクタ出力
オープンコレクタ出力は、トランジスタのコレクタ端子が出力端子そのものとなっている出力回路のことです。一般的な出力バッファはHighもしくはLowを出力するのに対し、オープンコレクタはHi-ZもしくはLowを出力します。(NPN型の場合)
オープンコレクタは一般的な出力端子よりも大きな電流を流すことができるという特性があり、LEDやブザーなどの直接駆動に適しています。
ちなみに、オープンコレクタ出力回路のトランジスタをFETに置き換えた場合はオープンドレーンと呼びます。
何Ω以上でハイインピーダンスと呼ぶ?
「○○Ω以上はハイインピーダンス」という厳密な定義は存在しません。そのため、この言葉が使われる分野や回路構成にりローインピーダンスとハイインピーダンスの境界は大きく変動します。
デジタル回路であればほぼ電流が流れないような絶縁状態(数十MΩ~数GΩ)でなければハイインピーダンスと呼ばないことが多いのに対し、アナログ回路やオーディオ関連の分野では数百Ω以上(テスタの導通レンジで導通判定されないような抵抗値)でハイインピーダンスと呼ぶ場合があります。(数kΩで既にハイインピーダンスと呼ばれる)このように、抵抗値の桁が何個も異なり得る概念なので、この言葉が登場する背景や具体的な回路構成に注目する必要があります。