NORゲート(否定論理和)の基礎と機能的完全性|回路設計で活かす実装例と注意点

否定論理和(NOR)とは

否定論理和(ひていろんりわ)、英語では「NOR(Not OR)」は、論理和(OR)の否定をとるブール演算子です。論理回路やブール代数における基本的な演算の一つで、出力が真(1)になるのは全ての入力が偽(0)のときだけ、という性質を持ちます。論理記号としては ¬(A ∨ B) や A ↓ B(ピアスの矢印、Peirce arrow)で表されます。

真理値表

ABA ∨ BA ↓ B = ¬(A ∨ B)
0001
0110
1010
1110

ブール代数での表現と基本性質

  • 定義:A ↓ B = ¬(A ∨ B)
  • ド・モルガンの法則から:A ↓ B = ¬A ∧ ¬B(NOR は各入力を否定して AND を取るのと同値)
  • 可換性:A ↓ B = B ↓ A(可換である)
  • 結合法則:NOR は一般に結合則を満たさない((A ↓ B) ↓ C ≠ A ↓ (B ↓ C) が成り立つ場合がある)
  • 冪等性:A ↓ A = ¬A であり、単純な冪等(A ↓ A = A)ではない

機能的完全性(Functional completeness)

NOR は機能的に完全(functionally complete)であり、NOR のみを使って任意のブール関数を構成できます。これは NAND(Sheffer stroke)と並ぶ重要な性質です。基本的な演算を NOR のみで表す一例を示します。

  • NOT A = A ↓ A(A を自身と NOR)
  • A ∨ B = (A ↓ B) ↓ (A ↓ B)(NOR の結果を NOR して二重否定)
  • A ∧ B = (A ↓ A) ↓ (B ↓ B)(まずそれぞれ否定し、その否定同士を NOR)

論理回路での利用

ハードウェア実装では「NORゲート」は基本ゲートの一つとして用いられます。IC例として、TTL系では 7402(Quad 2-input NOR)などがあり、CMOS 系の 74HC02 なども一般的です。NOR ゲートのみで論理回路を構成できるため、設計上の単純化や最適化を目的に NOR のみを使うことがあります。

回路設計上の注意点

  • CMOS 実装における特性:入力数が増えると pMOS の直列接続や nMOS の並列接続が発生し伝搬遅延や立ち上がり低下に影響する。多入力では NAND や NOR のどちらが有利かは回路トポロジや技術に依存する。
  • 遅延と電力:ゲートの数やファンアウト(出力が駆動する入力数)により遅延や消費電力が変化する。NOR 単独設計は簡潔だが必ずしも最適とは限らない。

実装例(回路とハード設計)

簡単な使用例を示します。

  • NOT(否定)の実装:入力 A を 2 入力 NOR の A と A に接続すれば NOT A を得られる(A ↓ A = ¬A)。
  • AND の実装:A ∧ B = (A ↓ A) ↓ (B ↓ B)。各入力を自己 NOR してからその結果を NOR。
  • OR の実装:A ∨ B = (A ↓ B) ↓ (A ↓ B)。NOR の結果を自己 NOR して二重否定を消す。

論理記号と歴史的背景

  • 記号:A ↓ B(ピアスの矢印、Peirce arrow)は哲学者・論理学者チャールズ・サンダース・ピアスに由来します。英語表記 NOR(Not OR)も広く用いられます。
  • 歴史:NOT、AND、OR と並んで基礎的な論理演算子の一つで、20世紀の論理回路設計・計算機アーキテクチャで重要な役割を果たしました。

ソフトウェアでの表現(例:Verilog)

ハードウェア記述言語での簡単な例を示します。

module nor2 (
  input  wire a,
  input  wire b,
  output wire y
);
  // ビット演算での表現(安全で分かりやすい)
  assign y = ~(a | b);   // y = NOT (a OR b)
  // あるいはプリミティブを使う
  // nor u1 (y, a, b);
endmodule

NOT を NOR だけで実現するなら、assign na = ~(a | a); のように同じ信号を2回与えればよいです。

論理設計での応用例と利点・欠点

  • 利点:NOR 単独で任意の論理を実現できるため、集積回路の標準セルに NOR を多用すれば設計上のフォーマットを統一できる。
  • 欠点:特定の技術(CMOS のプロセスパラメータ等)や回路規模によっては、NOR のみで作ると伝搬遅延や消費電力が増えることがある。したがって最適化では NAND と NOR を適材適所で使い分けるのが一般的。
  • 実務上の選択:標準セルライブラリやファブの得意分野、ドライバ能力、レイアウト条件によって NAND を中心に設計することが多いケースや、NOR ベースの実装が有利なケースがある。

例:NOR を使って排他的論理和(XOR)を作る

XOR は単純ではありませんが、NOR のみで構成可能です。論理式の一例(説明用):

A XOR B = (A ∧ ¬B) ∨ (¬A ∧ B)

この右辺を NOR のみで順次変換していけば、回路的に NOR ゲートだけで実現できます。実際の最適実装は論理合成ツールに任せることが多いですが、理論的に可能であることが重要です。

まとめ

否定論理和(NOR)は「OR の否定」という単純明快な定義を持ちながら、機能的完全性を備えた強力な論理演算子です。ハードウェアでは NOR ゲートとして実装され、NOR のみで任意の論理回路を構成できるため理論的にも実務的にも重要です。一方で回路性能の観点からは NAND やその他のゲートと組み合わせて最適化するのが一般的です。論理設計やデジタル回路学習の基礎として、NOR の性質と応用方法を理解しておくことは非常に有益です。

参考文献