# 3. 布林代數與邏輯閘 *Boolean Algebra and Logical gates* ###### tags: `DLD-VHDL-kl` `digital logic` [TOC] --- ![](https://upload.wikimedia.org/wikipedia/commons/b/bc/NOT_ANSI.svg)![](https://upload.wikimedia.org/wikipedia/commons/b/b5/OR_ANSI.svg)![](https://upload.wikimedia.org/wikipedia/commons/6/64/AND_ANSI.svg)![](https://upload.wikimedia.org/wikipedia/commons/f/f2/NAND_ANSI.svg)![](https://upload.wikimedia.org/wikipedia/commons/6/6c/NOR_ANSI.svg)![](https://upload.wikimedia.org/wikipedia/commons/0/01/XOR_ANSI.svg)![](https://upload.wikimedia.org/wikipedia/commons/d/d6/XNOR_ANSI.svg) ::: warning [NOT](#312-反相閘-NOT-gate)——0、1 對調 [AND](#313-及閘-AND-gate)——全 1 則 1 [OR](#314-或閘-OR-gate)——有 1 則 1 [NAND](#315-反及閘-NAND-gate)——全 1 則 0 [NOR](#316-反或閘-NOR-gate)——有 1 則 0 [XOR](#317-互斥或閘-XOR-gate)——奇 1 則 1 [NXOR](#318-互斥反或閘-NXOR-gate)——偶 1 則 1 ::: --- ## 3.1 基本邏輯閘 *Basic logic gates* ### 3.1.1 簡介 *Introduction* 在數位電路中,**閘**(gate)是指「具有一個或多個輸入,但只有一個輸出」的元件。用邏輯閘組成的電路稱為**邏輯電路**(logical circuit)。 ![](https://hackmd.io/_uploads/SJtP4Nar3.png =500x) 基本的邏輯閘有: * 反相閘(NOT) * 及閘(AND) * 或閘(OR) **真值表**(truth table)可以顯示邏輯閘的各種輸入狀態和輸出的關係。若輸入個數為 $n$ 則,輸入狀態有 $2^n$ 種。 ### 3.1.2 反相閘 *NOT gate* **反相閘**的作用是改變邏輯位準(logic level),簡單來說,就是 > $1$ 換成 $0$,$0$ 換成 $1$。 (1 = High 高電位,0 = Low 低電位,下同) #### 符號 |ANSI/IEEE Std 91-1984|IEC 60617-12| |:---:|:---:| |![](https://upload.wikimedia.org/wikipedia/commons/b/bc/NOT_ANSI.svg =75x) |![](https://upload.wikimedia.org/wikipedia/commons/thumb/1/19/IEC_NOT.svg/2560px-IEC_NOT.svg.png =75x)| 其中符號輸入端或輸出端的小圈為否定指示器(negation indicator),它的位置要依據輸入信號的作用狀態(active state)來決定。 #### 真值表 |輸入 <br> $A$ |輸出 <br> $X=\overline{A}$ | |:---:|:---:| |0|1| |1|0| ::: spoiler 三變數真值表 |輸入 <br> $A$ | 輸入 <br> $B$ | 輸入 <br> $C$ |輸出 <br> $X=A \cdot B \cdot C$ | |:---:|:---:|:---:|:---:| |0|0|0|0| |0|0|1|0| |0|1|0|0| |0|1|1|0| |1|0|0|0| |1|0|1|0| |1|1|0|0| |1|1|1|1| ::: ::: spoiler 連續輸入 ![](https://hackmd.io/_uploads/ByWRwVTrh.png =350x) ::: ### 3.1.3 及閘 *AND gate* **及閘**的作用是進行邏輯乘法運算。 > 若++所有++輸入皆為 $1$,則輸出為 $1$;否則為 $0$。 #### 符號 |ANSI/IEEE Std 91-1984|IEC 60617-12| |:---:|:---:| |![](https://upload.wikimedia.org/wikipedia/commons/6/64/AND_ANSI.svg =75x)|![](https://upload.wikimedia.org/wikipedia/commons/thumb/5/54/IEC_AND.svg/2560px-IEC_AND.svg.png =75x)| #### 真值表 |輸入 <br> $A$ | 輸入 <br> $B$ |輸出 <br> $X=AB$ | |:---:|:---:|:---:| |0|0|0| |1|0|0| |0|1|0| |1|1|1| |輸入 <br> $A$ | 輸入 <br> $B$ | 輸入 <br> $C$ |輸出 <br> $X=ABC$ | |:---:|:---:|:---:|:---:| |0|0|0|0| |0|0|1|0| |0|1|0|0| |0|1|1|0| |1|0|0|0| |1|0|1|0| |1|1|0|0| |1|1|1|1| ### 3.1.4 或閘 *OR gate* **或閘**的作用是進行邏輯加法運算。 > 若++任一++輸入為 $1$,則輸出為 $1$;;否則,輸出為 $0$。 #### 符號 |ANSI/IEEE Std 91-1984|IEC 60617-12| |:---:|:---:| |![](https://upload.wikimedia.org/wikipedia/commons/b/b5/OR_ANSI.svg =75x)|![](https://upload.wikimedia.org/wikipedia/commons/thumb/f/fa/IEC_OR.svg/2560px-IEC_OR.svg.png =75x)| #### 真值表 |輸入 <br> $A$ | 輸入 <br> $B$ |輸出 <br> $X=A + B$ | |:---:|:---:|:---:| |0|0|0| |1|0|1| |0|1|1| |1|1|1| |輸入 <br> $A$ | 輸入 <br> $B$ | 輸入 <br> $C$ |輸出 <br> $X=A + B + C$ | |:---:|:---:|:---:|:---:| |0|0|0|0| |0|0|1|1| |0|1|0|1| |0|1|1|1| |1|0|0|1| |1|0|1|1| |1|1|0|1| |1|1|1|1| ### 3.1.5 反及閘 *NAND gate* **反及閘**的作用是先進行邏輯乘法運算,再進行反相運算。 > 若++所有++輸入為 $0$,則輸出為 $1$;否則,輸出為 $0$。 #### 符號 |ANSI/IEEE Std 91-1984|IEC 60617-12| |:---:|:---:| |![](https://upload.wikimedia.org/wikipedia/commons/thumb/f/f2/NAND_ANSI.svg/2880px-NAND_ANSI.svg.png =75x)|![](https://upload.wikimedia.org/wikipedia/commons/thumb/2/27/IEC_NAND.svg/2560px-IEC_NAND.svg.png =75x)| #### 真值表 |輸入 <br> $A$ | 輸入 <br> $B$ |輸出 <br> $X=\overline{AB}$ | |:---:|:---:|:---:| |0|0|1| |1|0|1| |0|1|1| |1|1|0| |輸入 <br> $A$ | 輸入 <br> $B$ | 輸入 <br> $C$ |輸出 <br> $X=\overline{ABC}$ | |:---:|:---:|:---:|:---:| |0|0|0|1| |0|0|1|1| |0|1|0|1| |0|1|1|1| |1|0|0|1| |1|0|1|1| |1|1|0|1| |1|1|1|0| ### 3.1.6 反或閘 *NOR gate* **反或閘**的作用是先進行邏輯加法運算,再進行反相運算。 > 若++任一++輸入為 $1$,則輸出為 $0$;否則,輸出為 $1$。 #### 符號 |ANSI/IEEE Std 91-1984|IEC 60617-12| |:---:|:---:| |![](https://upload.wikimedia.org/wikipedia/commons/6/6c/NOR_ANSI.svg =75x)|![](https://upload.wikimedia.org/wikipedia/commons/thumb/3/37/IEC_NOR.svg/2560px-IEC_NOR.svg.png =75x)| #### 真值表 |輸入 <br> $A$ | 輸入 <br> $B$ |輸出 <br> $X=\overline{A+B}$ | |:---:|:---:|:---:| |0|0|1| |1|0|0| |0|1|0| |1|1|0| |輸入 <br> $A$ | 輸入 <br> $B$ | 輸入 <br> $C$ |輸出 <br> $X=\overline{A+B+C}$ | |:---:|:---:|:---:|:---:| |0|0|0|1| |0|0|1|0| |0|1|0|0| |0|1|1|0| |1|0|0|0| |1|0|1|0| |1|1|0|0| |1|1|1|0| ### 3.1.7 互斥或閘 *XOR gate* **互斥或閘**的作用是執行**互斥或**(exclusive or)運算,它是前述基本邏輯運算的組合。因為在許多應用中它是一個重要定理,所以也將它視為基本基本邏輯運算。 > 若有++奇數個++輸入為 $1$,則輸出為 $1$;否則,輸出為 $0$。 #### 符號 |ANSI/IEEE Std 91-1984|IEC 60617-12| |:---:|:---:| |![](https://upload.wikimedia.org/wikipedia/commons/0/01/XOR_ANSI.svg =75x)|![](https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/IEC_XOR.svg/2560px-IEC_XOR.svg.png =75x)| #### 真值表 |輸入 <br> $A$ | 輸入 <br> $B$ |輸出 <br> $X=A\oplus B$ | |:---:|:---:|:---:| |0|0|0| |1|0|1| |0|1|1| |1|1|0| |輸入 <br> $A$ | 輸入 <br> $B$ | 輸入 <br> $C$ |輸出 <br> $X=A\oplus B\oplus C$ | |:---:|:---:|:---:|:---:| |0|0|0|0| |0|0|1|1| |0|1|0|1| |0|1|1|0| |1|0|0|1| |1|0|1|0| |1|1|0|0| |1|1|1|1| ### 3.1.8 互斥反或閘 *NXOR gate* **互斥反或閘**的作用是先執行互斥或運算,再執行反相運算。 > 若有++偶數個++輸入為 $1$,則輸出為 $1$;否則,輸出為 $0$。 #### 符號 |ANSI/IEEE Std 91-1984|IEC 60617-12| |:---:|:---:| |![](https://upload.wikimedia.org/wikipedia/commons/d/d6/XNOR_ANSI.svg =75x)|![](https://upload.wikimedia.org/wikipedia/commons/thumb/5/59/IEC_XNOR.svg/2560px-IEC_XNOR.svg.png =75x)| #### 真值表 |輸入 <br> $A$ | 輸入 <br> $B$ |輸出 <br> $X=\overline{A\oplus B}$ | |:---:|:---:|:---:| |0|0|1| |1|0|0| |0|1|0| |1|1|1| |輸入 <br> $A$ | 輸入 <br> $B$ | 輸入 <br> $C$ |輸出 <br> $X=\overline{A\oplus B\oplus C}$ | |:---:|:---:|:---:|:---:| |0|0|0|1| |0|0|1|0| |0|1|0|0| |0|1|1|1| |1|0|0|0| |1|0|1|1| |1|1|0|1| |1|1|1|0| ## 3.2 布林代數 *Boolean algebra* 喬治・布爾(George Boole)發表於 1854 年。 只處理 0 和 1 的代數 ### 3.2.1 布林運算 *Boolean operations* NOT 相當於 邏輯補數 AND 相當於 邏輯乘法 OR 相當於 邏輯加法 | 邏輯閘 | 運算 | 布林運算式 | |:----------:|:----:|:--------------------------- | | 反相閘 | NOT | $X=\overline{A}$ | | 及閘 | AND | $X=A\cdot B$ | | 或閘 | OR | $X = A + B$ | | 反及閘 | NAND | $X=\overline{A\cdot B}$ | | 反或閘 | NOR | $X=\overline{A + B}$ | | 互斥或閘 | XOR | $X = A \oplus B$ | | 互斥反或閘 | NXOR | $X = \overline{A \oplus B}$ | ### 3.2.2 布林代數恆等式 *Boolean Algebraic Identities* | 名稱 1| [名稱 2](https://www.allaboutcircuits.com/technical-articles/boolean-identities/) | 加法 OR | 乘法 AND | |----|----|----|----| |**對偶定理** <br> *duality theorem*| **恆等性** <br> *identity* | $A+0=A$ | $A\cdot 1=A$ | |**吸收定理** <br> *absorptive theorem*| **優勢性** <br> *dominance* | $A+1=1$ | $A\cdot 0=0$ | |**全等定理** <br> *equal theorem*| **冪等性** <br> *idempotence* | $A+A=A$ | $A\cdot A=A$ | |**補數定理** <br> *duality theorem* | **互補性** <br> *complementarity* | $A+\overline{A}=1$ | $A\cdot \overline{A}=0$ | ![](https://hackmd.io/_uploads/ByQlYBaSh.png =480x) ![](https://hackmd.io/_uploads/Hk3xKr6H3.png =480x) ![](https://hackmd.io/_uploads/rJHZYH6r2.png =480x) ![](https://hackmd.io/_uploads/S1QQYSTB3.png =480x) | 名稱 1 | [名稱 2](https://www.allaboutcircuits.com/technical-articles/boolean-identities/) | | |----|----|----| |**自補定理** <br> *involution theorem* | **對合** <br> *involution* | $\overline{\overline{A}}=A$ | ![](https://hackmd.io/_uploads/ByaXKHpB2.png =320x) | 名稱 | 加法 OR | 乘法 AND | |----|----|----| |**交換律** <br> *commutativity*| $A+B=B+A$ | $A\cdot B=B\cdot A$ | |**結合律** <br> *associativity* | $(A+B)+C=A+(B+C)$ | $(A\cdot B)\cdot C=A\cdot(B\cdot C)$ | |**分配律** <br> *distributivity* | ==$A+(B\cdot C)=(A+B)\cdot(A+C)$== | $A\cdot (B+C) =(A\cdot B)+(A\cdot C)$ ==注意:一般代數只有乘法分配律,但布林代數具有加法分配律。== ![](https://hackmd.io/_uploads/Syua9Bpr2.png =480x) ![](https://hackmd.io/_uploads/S16SiB6S2.png =600x) ![](https://hackmd.io/_uploads/rJYKnSpBh.png =600x) | 名稱 1| [名稱 2](https://www.allaboutcircuits.com/technical-articles/boolean-identities/) | 加法 OR | 乘法 AND | |----|----|----|----| |**消去律** <br> *elimination law* | **吸收律** <br> *absorption* | $A+A\cdot B = A$ | $A\cdot (A+B)=A$ | | 名稱 | 加法 OR (第一定律) | 乘法 AND(第二定律) | |----|----|----| |**狄摩根定律** <br> *DeMorgan's laws*| $\overline{A+B}=\overline{A}\cdot\overline{B}$ | $\overline{A\cdot B}=\overline{A}+\overline{B}$ | > 1. negation of a disjunction $\equiv$ conjunction of the negations > 2. negation of a conjunction $\equiv$ disjunction of the negations > > 1) 連言的否定 $\equiv$ 否定的並言 > 2) 並言的否定 $\equiv$ 否定的連言 ![](https://hackmd.io/_uploads/ryCC6H6S3.png =600x) ::: success 提示:可以利用真值表證明以上所有恆等式,例如: ![](https://hackmd.io/_uploads/SysDhHTHn.png =500x) ::: ## 3.3 邏輯 IC *Logic ICs* 常用的邏輯 IC 有 5 種: 1. **TTL**:**電晶體電晶體邏輯**(Transistor-Transistor Logic) 種類最多、用途最廣 | 中文 | 英文 | 型號 | |--|--|--| | 標準 TTL | standard TTL | [74](https://zh.wikipedia.org/wiki/%E9%9B%BB%E6%99%B6%E9%AB%94-%E9%9B%BB%E6%99%B6%E9%AB%94%E9%82%8F%E8%BC%AF#74%E7%B3%BB%E5%88%97%E8%88%8754%E7%B3%BB%E5%88%97) | | 低功率 TTL | low-power TTL | 74L | | 高速 TTL | high-speed TTL | 74H | | 蕭特基 TTL | Schottky-TTL | 74S | | 低功率蕭特基 TTL | low-power Schottky-TTL | 74LS | | 高級蕭特基 TTL | advanced-Schottky | 74AS | | 高級低功率蕭特基 TTL | advanced low-powe Schottky | 74ALS | ![](https://upload.wikimedia.org/wikipedia/commons/c/c6/TexasInstruments_7400_chip%2C_view_and_element_placement.jpg =300x) 2. **MOS**:**金屬氧化物半導體**(Metal-Oxide Semiconductor) 高密度,用於大型積體電路(LSI) 3. **CMOS**:**互補式金屬氧化物半導體**(Complementary Metal-Oxide Semiconductor) 低功耗,分為金屬閘CMOS與矽閘CMOS | 中文 | 英文 | 型號 | |--|--|--| | 金屬閘CMOS | standard TTL | [4000](https://zh.wikipedia.org/wiki/4000%E7%B3%BB%E5%88%97)B | | 矽閘 CMOS | low-power TTL | 74C | | 高速 CMOS | high-speed CMOS | 74HC | | 蕭特基 TTL | Schottky-TTL | 74S | 4. **ECL**:**射極耦合邏輯**(Emitter-Coupled Logic) 速度快 5. **I^2^L**:**積體注入邏輯**(Integrated-Injection) 高密度,用於大型積體電路(LSI) ### 3.3.2 邏輯 IC 的特性 #### 扇出數 *Fan-out* 一個邏輯閘(驅動閘)可以驅動其他同類邏輯閘(負載閘)的數量。 ![](https://hackmd.io/_uploads/S1UgL86Sn.png =250x) #### 消耗功率 *Power dissipation* $\text{Pd}=I_\text{CC} V_\text{CC}$ #### 傳遞延遲 *Propagation delay* 訊號傳遞的速度 * $t_\text{PHL}$ * $t_\text{PLH}$ ![](https://hackmd.io/_uploads/BkihIIaB2.png) #### 電壓位準 *Propagation delay*