PREVIEW
内部回路が光る AND 論理ゲートの 3D ビジュアライゼーション。

デジタル論理の基本構成要素である AND ゲートは、すべての入力が「ON」のときにのみ出力が「ON」になります。

デジタル論理 101:AND・OR・NOT ゲートで始める最初の一歩

AND、OR、NOT はデジタル論理の三大基本ゲートです。本入門ガイドではブラウザ上で各ゲートをゼロから組み立て、組み合わせて NAND を構築します。

TL;DR: AND、OR、NOT はデジタル論理の三大基本ゲートです。AND はすべての入力が 1 のときにのみ 1 を出力し、OR はいずれかの入力が 1 のときに 1 を出力し、NOT は単一入力を反転します。これらを組み合わせると NAND が生まれ、これは他のあらゆるデジタル回路を構築できる「万能ゲート」です。

デジタル論理を最も速く習得する方法は、回路を実際に組み立てることです。真理値表を読むのも有用ですが、スイッチを切り替えながら出力の変化を観察することで直感が育まれます。本チュートリアルでは、デジタル論理の三大基本ゲート(NOT、AND、OR)を一つずつ digisim.io 上で構築していきます。各セクションは、自分で組み上げた動作する回路で締めくくられます。

前提知識やインストールは一切不要です。ブラウザのタブで digisim.io を開き、一緒に進めましょう。

はじめに:スイッチとライトの回路

すべてのデジタル回路には入力と出力があります。digisim.io における基本的な入力は INPUT_SWITCH(クリックで 0 と 1 を切り替える)であり、基本的な出力は OUTPUT_LIGHT(1 を受信すると点灯する)です。ゲートに触れる前に、まずこの最小回路を組み立ててインターフェースに慣れましょう。

スイッチとライトの基本デモ

作り方:

  1. digisim.io/circuits/new を開きます。
  2. コンポーネントパレットから Input Switch をキャンバスにドラッグします。
  3. その右側に Output Light をドラッグします。
  4. スイッチの出力ノード(小さな丸)をクリックし、ライトの入力ノードまでドラッグします。配線が表示されます。
  5. スイッチをクリックして切り替えます。スイッチが 1 ならライトは ON、0 なら OFF になります。

これでデジタル信号が線を通して送信元から目的地まで流れるという基本概念が確認できます。これから組むあらゆる回路は、送信元と目的地の間に論理を挿入していくものです。

二進数の基本を試す


1. NOT ゲート回路を組む(インバータ)

NOT ゲートは単一の入力を反転します。入力 1 は出力 0 を生み、入力 0 は出力 1 を生みます。最も単純なゲートであり、これを最初に作ることで配線ワークフローに自信が持てます。

NOT ゲート コンポーネント図

ステップバイステップで組み立てる

  1. 入力を配置する。 Input Switch をキャンバス左側にドラッグします。
  2. ゲートを配置する。 Logic Gates セクションから NOT Gate をドラッグし、スイッチの右側に配置します。
  3. 出力を配置する。 Output Light を NOT ゲートの右側にドラッグします。
  4. 入力をゲートに配線する。 スイッチの出力ノードをクリックし、NOT ゲートの入力ノードまでドラッグします。
  5. ゲートを出力に配線する。 NOT ゲートの出力ノードをクリックし、ライトの入力ノードまでドラッグします。
  6. すべての入力組み合わせをテストする。 わずか 2 通りです:
入力 (A)期待される出力 (Y)観察すべき状態
01スイッチ OFF、ライト ON
10スイッチ ON、ライト OFF

ブール式:

Y=AY = \overline{A}

学んだこと

  • NOT ゲートは入力と出力をそれぞれ 1 つだけ持ちます。
  • 入力の反対を常に出力します。
  • ゲート記号上の小さな丸(バブル)は反転を示します。このバブルは後ほど NAND や NOR ゲートでも登場します。

実用例:アクティブ Low のリセット信号

マイコンやプロセッサのリセットピンはしばしば「アクティブ Low」で、ピンが 0 に引かれるとチップがリセットされます。NOT ゲートを使えば、「ボタンを押す = 1」という信号をチップが期待するアクティブ Low 信号に変換できます。このパターンは事実上すべての組込みシステムに登場します。

NOT ゲートを試してみる


2. AND ゲート回路を組む(ゲートキーパー)

AND ゲートは すべての 入力が 1 のときにのみ 1 を出力します。2 入力では 4 通りの組み合わせがあり、そのうち 1 つだけが 1 を出力します。複数の条件を同時に満たす必要がある場面で AND ゲートは自然な選択肢となります。

AND ゲート コンポーネント図

ステップバイステップで組み立てる

  1. キャンバス左側に 2 つの Input Switch を配置します。上下に並べ、これらを入力 A と B とします。
  2. AND Gate を 2 つのスイッチの中央に右側へ配置します。
  3. AND ゲートの右側に Output Light を配置します。
  4. スイッチ A を AND ゲートの上側入力に配線します。
  5. スイッチ B を AND ゲートの下側入力に配線します。
  6. AND ゲートの出力をライトに配線します。
  7. 4 通りの組み合わせを系統的にテストします。 真理値表を行ごとに進めましょう:
入力 A入力 B期待される出力 (Y)観察すべき状態
000両方 OFF、ライト OFF
010B のみ ON、ライト OFF
100A のみ ON、ライト OFF
111両方 ON、ライト ON

ブール式:

Y=ABY = A \cdot B

AND 演算は乗算のように振る舞います:入力に一つでも 0 があれば、出力は強制的に 0 になります。

学んだこと

  • AND ゲートは全会一致を要求します。出力が 1 になるためには、すべての入力が 1 で合意する必要があります。
  • nn 入力の AND ゲートには 2n2^n 通りの入力組み合わせがありますが、1 を出力するのはそのうち 1 つだけです。
  • ランダムではなく系統的にすべての組み合わせをテストすることが、エンジニアが正しさを検証する方法です。

よくある落とし穴:浮いた入力

AND ゲートの入力を未接続のまま残すと、それは 浮いた入力(フローティング入力) となります。実際の回路では、浮いた入力は電磁ノイズを拾って予測不能な動作をします。digisim.io ではシミュレータが優雅に処理してくれますが、実ハードウェアに移行する際にはすべてのピンを必ず接続する習慣が重要になります。固定値が必要なら、CONSTANT コンポーネントを 0 または 1 に設定して使いましょう。

実用例:二鍵セキュリティシステム

AND ゲートは、同時の認可が必要なシステムを自然にモデル化します。同時に 2 つの鍵を回す必要がある銀行金庫、2 名の士官の同意を要する核ミサイル発射システム、パスワードとハードウェアトークンの両方を要求する Web アプリケーション ── これらはすべて AND 論理を実装しています。

AND ゲートセキュリティシステムテンプレート

セキュリティアラーム回路を開く


3. OR ゲート回路を組む(包括的トリガー)

OR ゲートは 少なくとも 1 つ の入力が 1 のときに 1 を出力します。すべての入力が 0 のときにのみ 0 を出力します。AND ゲートが「すべての条件が必要」を強制するのに対し、OR ゲートは「いずれかの条件で十分」を強制します。

OR ゲート コンポーネント図

ステップバイステップで組み立てる

  1. 左側に 2 つの Input Switch を配置します。
  2. 中央に OR Gate を配置します。
  3. 右側に Output Light を配置します。
  4. スイッチ A を OR ゲートの上側入力に配線します。
  5. スイッチ B を OR ゲートの下側入力に配線します。
  6. OR ゲートの出力をライトに配線します。
  7. 4 通りの組み合わせをテストします:
入力 A入力 B期待される出力 (Y)観察すべき状態
000両方 OFF、ライト OFF
011B のみ ON、ライト ON
101A のみ ON、ライト ON
111両方 ON、ライト ON

ブール式:

Y=A+BY = A + B

注意:これは論理 OR であり、算術加算ではありません。ブール代数では出力がすでに最大限 HIGH なので、1+1=11 + 1 = 1 となります。

学んだこと

  • OR ゲートは出力を発火させるのに 1 つの入力が 1 であればよいだけです。
  • 4 通りの入力組み合わせのうち 3 つが 1 を出力します(AND と対照的に、AND では 4 つのうち 1 つだけが 1)。
  • OR ゲートは AND ゲートの双対です。ド・モルガンの定理がこの双対性を形式化しています:A+B=AB\overline{A + B} = \overline{A} \cdot \overline{B}

実用例:非常停止システム

工場の現場では、機械の周囲の複数の場所に非常停止ボタンが設置されます。どれか が押されたら機械は停止しなければなりません。これは OR 論理です:Button_1 OR Button_2 OR Button_3 = STOP。ボタンを増やすことは単に OR ゲートに入力を追加することにすぎません。

OR アラームシステムを作る


4. 三つすべてを組み合わせる:イネーブル回路を作る

各ゲートを個別に作り終えたところで、ゲート同士がどう連携するかを示す回路を組み合わせて作ります。反転イネーブル 回路を構築します:データ信号はイネーブルスイッチが ON のときにだけ出力に通過し、出力は反転されます。

ステップバイステップで組み立てる

  1. 2 つの Input Switch を配置します。テキストツールで一方を「Data」、もう一方を「Enable」とラベル付けします。
  2. 右側に AND Gate を配置します。
  3. AND ゲートの後に NOT Gate を配置します。
  4. 末尾に Output Light を配置します。
  5. 配線: Data スイッチを AND 入力 A に。Enable スイッチを AND 入力 B に。AND 出力を NOT 入力に。NOT 出力をライトに。
  6. 挙動をテスト:
    • Enable = 0 に設定。Data を 0 と 1 で切り替えます。ライトはどちらでも ON のまま(AND 出力は常に 0、NOT がそれを 1 に反転するため)。
    • Enable = 1 に設定。今度は Data を切り替えます。Data = 0 のとき AND は 0 を出力し、NOT は 1 を出力し、ライトは ON。Data = 1 のとき AND は 1 を出力し、NOT は 0 を出力し、ライトは OFF。

この回路のブール式:

Y=ABY = \overline{A \cdot B}

たった今、個別の AND と NOT コンポーネントから NAND ゲート を構築しました。NAND ゲート はデジタル設計において最も重要なゲートの一つです。それ単体で機能完備であり、他のすべてのゲート(AND、OR、NOT、XOR)を NAND ゲートのみで構成できます。

学んだこと

  • ゲートは連結できます:あるゲートの出力は別のゲートの入力に直接送ることができます。
  • AND と NOT を組み合わせると、万能ゲートである NAND ができます。
  • 単純で組み合わせ可能な構成要素から、複雑な振る舞いが生まれます。

5. オシロスコープでタイミングを検証する

静的なテスト(スイッチを切り替え、ライトを確認)は論理的な正しさを確認します。しかしデジタル回路は時間軸で動作するため、タイミングの挙動を理解することは「機能する設計」と「信頼できる設計」を分ける鍵です。

digisim.io の OSCILLOSCOPE を使えば、信号が時間とともにどう変化するかを波形としてプロットして見ることができます。

ステップバイステップで組み立てる

  1. セクション 2 で作った AND ゲート回路から始めます。
  2. Input Switch の一つを CLOCK コンポーネントに置き換えます。クロックは固定周波数で 0 と 1 を自動的に交互に切り替えます。
  3. もう一方の Input Switch は手動制御として残します。
  4. キャンバスに OSCILLOSCOPE を追加します。
  5. 一つのオシロスコープのチャンネルをクロック出力(高速で切り替わる信号)に接続します。
  6. 別のチャンネルを AND ゲートの出力に接続します。
  7. 手動スイッチを 1 に設定して観察します:オシロスコープには、一方のチャンネルにクロック波形、もう一方に AND ゲート出力が表示されます。もう一方の入力が 1 のとき AND ゲートはクロック信号をそのまま通過させるため、両者は一致するはずです。
  8. 今度は手動スイッチを 0 に切り替えます。AND ゲート出力はクロックに関係なく 0 にフラットになります。AND ゲートを シグナルゲート として使い、コマンドでクロック信号を遮断したのです。

これは実プロセッサにおけるクロックゲーティングの概念的な基礎です。プロダクション設計では実際にはこれを単純な AND ゲートで実装したりはしません ── イネーブル信号がパルスの途中で変化するとクロックにグリッチが発生する可能性があるためです。実シリコンでは 統合クロックゲーティングセル(ICG)を使います:イネーブル信号をクロックが Low になるまでラッチで捕らえてから AND を掛けます。最終的な振る舞いはたった今示したものと同じですが、グリッチが発生しません。要点は変わりません:機能ユニットがアイドル状態のときはクロックがゲートで遮断され、不要なスイッチング動作が止まり省電力につながります。

学んだこと

  • オシロスコープは、静的なライトでは見えない挙動を明らかにします:タイミングの関係、伝搬遅延、信号ゲーティング。
  • AND ゲートは、任意のデジタル信号を制御可能に通過/遮断する役割を果たせます。
  • クロックゲーティングはプロセッサ設計における実用的な省電力技術であり、たった今その中核メカニズムを実演したのです。

クイックリファレンス:三大ゲートの一覧

ゲート入力出力規則ブール式主な用途
NOT1反転Y=AY = \overline{A}信号反転、アクティブ Low 論理
AND2+すべてが 1Y=ABY = A \cdot B条件付きイネーブル、マスキング
OR2+いずれかが 1Y=A+BY = A + B多源トリガー

次のステップ

これで三大基本ゲートの実践経験が手に入りました。ここからの自然な進路は次のとおりです:

  1. NAND ゲートと NOR ゲート ── セクション 4 ですでに NAND を作りました。NOR ゲートは OR の後に NOT を続けたものです。どちらも万能ゲートです。
  2. XOR ゲート ── 入力が異なるときに 1 を出力します。AND、OR、NOT ゲートから組み立てるチャレンジに挑戦してみましょう。
  3. 半加算器 ── XOR と AND ゲートを組み合わせて 2 つの 1 ビット数を加算します。これは算術回路への第一歩です。
  4. 全加算器 ── 半加算器を連鎖させ桁上げを処理し、多ビット加算を可能にします。

これらはすべて、今日練習したスキルの上に直接構築されています。原則は変わりません:コンポーネントを配置し、配線し、系統的にテストし、タイミングが重要なときはオシロスコープで検証する、ということです。

AND ゲート コンポーネントリファレンス を読み進めるか、次の構成要素である 半加算器 に進んでください。