Superb Garbages 2

千野純一(chinorin)のはてなダイアリーの続きです。

ゴミの名前

・何か書こうと思ってやめるというのを繰り返してたんだけど、何を書くにもまずこれを最初に書いてそれから本題を書かなきゃいけないのが億劫というか、記事が長くなりすぎるのが目に見えているので全体が面倒になってるというのが明白なのでこの部分だけ先に書いてしまえよ。


・前回のバッファの話。まあバッファっていう名前の通りなんだけど。

・論理ゲートを使うような、あるいはマイコンで扱うようないわゆるデジタル回路は、アナログ量である電圧の解釈によって擬似的にデジタル処理をしているにすぎない。ソフトウェアで変数に入れるような値と違って、デジタル信号は引き回すことで電圧が下がったり様々な理由でノイズが乗ったりして、信号の品質が劣化することがある。

・色々と使い回して劣化しまくり今にも読み取り不能になりそうなデジタル信号を、元の綺麗な信号に戻すために使うのがバッファという論理ゲートである。バッファは、入力したデジタル信号の値をそのまま出力する*1

・論理的かつ理想的には[バッファ A]は[NOT(NOT A)]と等価*2で、実際にそれで代用することもあるし、汎用ロジックICのデータシートに載ってる等価回路を見てみると、出力の直前にバッファとして動作する複数のNOTゲートがずらずら並んでたりする。

・↓これは、バッファとNOTゲート、それからANDゲートとNANDゲートの旧JIS記号だけんども。

・言うまでもなく[A NAND B]は[NOT(A AND B)]と等価ね。これらの動作と記号を比べてみればわかる通り、NOTを表しているのは出力のところについてる小さい丸で、NOTゲートに書かれている三角形は実はバッファそのものなわけ。

・ちなみに、電子工学界隈ではNOTゲートのことをみんな頑なにインバータ*3と呼ぶんだが、フルネームはたぶん inverting buffer なのだろうと思う。インバーティングあるいはインバーテッドなんとかってたまにあるんだよね。オペアンプの反転入力 inverting input とか。

・なお、オペアンプの invert じゃない方の入力は通常入力とかではなく非反転入力 non-inverting input と呼ぶ。一般に inverting の方が通常の動作であり高速なのでそんな風な言い方になってしまうらしいのだが、そのように inverting との対比があるときは通常のバッファについて non-inverting bufffer という言い方を実際にするらしい。

・さらにややこしいのが74HCU04の存在で、これはNOTゲートが6つ搭載された汎用ロジックなんだけど、それぞれ反転するがバッファはしない。これについてはアンバッファ unbufferという。Uはその頭文字なのだろう。ロジック=論理、論理といえばデジタルなのに、この汎用ロジックは主にアナログ回路で使われる。*4

・⋯ということは、これでもう0Ω抵抗器のことをただのゴミとかとか言わずに済むのではないか。これからは自信を持ってこう呼ぼう。そう、非反転アンバッファ non-inverting unbufferである。


・意外とこの話だけでも長くなるもんだな。

*1:入力がHIGHなら出力はHIGH、入力がLOWなら出力はLOW。

*2:実際は { NOT(NOT A) } の方がゲートを1つ多く使う分だけ遅延が長くなる可能性が高い。

*3:インバータ: invertは反転させるという他動詞なので、inverterは反転させる人のこと。

*4:そのようなアナログICと呼ぶべき汎用ロジックはいくつかある。74HC123のようなマルチバイブレータや、74HC4051~4053アナログMUX、74HC4066アナログスイッチなど。