2.5 半加算器と全加算器の構成

2.5 Structure of Half and Full Adders

💡 Note: Website(Jekyll)では Mermaid 図が表示されない場合があります。
📎 GitHubでこのページを開く
(Mermaid ソースコードと描画を直接確認できます)


🎯 本節のねらい|Goal of This Section

本節では、デジタル回路で最も基本的かつ重要な演算処理である
加算器(Adder) の構成を学びます。

This section focuses on the fundamental logic blocks—Half Adder and Full Adder—used in digital addition.


🔹 半加算器(Half Adder)

🇯🇵 2入力ビットの加算を行う最小構成回路

🇺🇸 A minimal logic block that adds two single-bit inputs

📋 真理値表|Truth Table

A B S = A ⊕ B C = A・B
0 0 0 0
0 1 1 0
1 0 1 0
1 1 0 1

📘 図2.5-1:半加算器の構成図(Mermaid)

flowchart LR
    A(A) --> XOR1[XOR]
    B(B) --> XOR1
    XOR1 --> S("S = A ⊕ B")

    A --> AND1[AND]
    B --> AND1
    AND1 --> C("C = A · B")

XOR generates the sum, AND generates the carry output.


🔹 全加算器(Full Adder)

🇯🇵 キャリー入力付き1ビット加算器

🇺🇸 A 1-bit adder with carry-in support

📋 真理値表|Truth Table

A B C_in S C_out
0 0 0 0 0
0 0 1 1 0
0 1 0 1 0
0 1 1 0 1
1 0 0 1 0
1 0 1 0 1
1 1 0 0 1
1 1 1 1 1

📘 図2.5-2:全加算器構成図(2段HA構成、Mermaid)

flowchart LR
    subgraph HA1["Half Adder 1"]
        A(A) --> XOR1[XOR]
        B(B) --> XOR1
        XOR1 --> S1(S1)
        A --> AND1[AND]
        B --> AND1
        AND1 --> C1(C1)
    end

    subgraph HA2["Half Adder 2"]
        S1 --> XOR2[XOR]
        Cin(Cin) --> XOR2
        XOR2 --> S(Sum)
        S1 --> AND2[AND]
        Cin --> AND2
        AND2 --> C2(C2)
    end

    C1 --> OR1[OR]
    C2 --> OR1
    OR1 --> Cout(Cout)

Sum is computed through two XOR gates, while carry is derived by combining two intermediate AND outputs via OR.


🔹 多ビット加算器への拡張

🇯🇵 複数の全加算器を直列接続

🇺🇸 Building multi-bit adders by chaining Full Adders

📘 図2.5-3:4ビットリップルキャリー加算器(Mermaid・簡潔版)

flowchart LR
    subgraph FA0["Full Adder 0 (LSB)"]
        A0(A0) --> XOR0[XOR]
        B0(B0) --> XOR0
        Cin(Cin) --> XOR0
        XOR0 --> S0(Sum0)

        A0 --> AND0a[AND]
        B0 --> AND0a
        A0 --> AND0b[AND]
        Cin --> AND0b
        B0 --> AND0c[AND]
        Cin --> AND0c
        AND0a --> OR0a[OR]
        AND0b --> OR0a
        OR0a --> OR0b[OR]
        AND0c --> OR0b
        OR0b --> C1(Cout0)
    end

    subgraph FA1["Full Adder 1"]
        A1(A1) --> XOR1a[XOR]
        B1(B1) --> XOR1a
        C1 --> XOR1a
        XOR1a --> S1(Sum1)

        A1 --> AND1a[AND]
        B1 --> AND1a
        A1 --> AND1b[AND]
        C1 --> AND1b
        B1 --> AND1c[AND]
        C1 --> AND1c
        AND1a --> OR1a[OR]
        AND1b --> OR1a
        OR1a --> OR1b[OR]
        AND1c --> OR1b
        OR1b --> C2(Cout1)
    end

    subgraph FA2["Full Adder 2"]
        A2(A2) --> XOR2a[XOR]
        B2(B2) --> XOR2a
        C2 --> XOR2a
        XOR2a --> S2(Sum2)

        A2 --> AND2a[AND]
        B2 --> AND2a
        A2 --> AND2b[AND]
        C2 --> AND2b
        B2 --> AND2c[AND]
        C2 --> AND2c
        AND2a --> OR2a[OR]
        AND2b --> OR2a
        OR2a --> OR2b[OR]
        AND2c --> OR2b
        OR2b --> C3(Cout2)
    end

    subgraph FA3["Full Adder 3 (MSB)"]
        A3(A3) --> XOR3a[XOR]
        B3(B3) --> XOR3a
        C3 --> XOR3a
        XOR3a --> S3(Sum3)

        A3 --> AND3a[AND]
        B3 --> AND3a
        A3 --> AND3b[AND]
        C3 --> AND3b
        B3 --> AND3c[AND]
        C3 --> AND3c
        AND3a --> OR3a[OR]
        AND3b --> OR3a
        OR3a --> OR3b[OR]
        AND3c --> OR3b
        OR3b --> Cout(Cout3)
    end

さらに簡潔にしたい場合は、各ステージを Full Adder 1ブロック(XOR/AND/ORの内部詳細を省略)にして、Cout を次段 Cin へ接続するだけの図も用意できます。


✅ まとめ|Summary

🇯🇵 日本語 🇺🇸 English
半加算器は 1ビットの加算を最小構成で実現 Half Adder performs 1-bit addition with minimal logic
全加算器は キャリー入力込みの基本加算器 Full Adder handles carry-in and forms the basis for multi-bit adders
複数段接続で nビット加算器に拡張可能 Full Adders can be cascaded to build n-bit adders
加算器は ALUやプロセッサの中核要素 Adders are essential in ALUs and processors

📎 次節:2.6_fsm_intro.md

Next: Introduction to Sequential Circuits and FSM (Finite State Machine)


← 戻る / Back to Chapter 2: Combinational Logic Top