---
# System prepended metadata

title: 計概：閘與電路
tags: [計算機概論]

---

# 計概：閘與電路
##  電腦與電學
電子訊號有某個電壓準位，一般而言電壓準位在 0~2 伏特時屬於「低」，代表二進制的 0，而位於 2~5 伏特時則為「高」，代表二進制的 1。

- 閘 gate：是完成電子訊號基本運算的裝置。閘接受一至多個輸入訊號，產生單一輸出訊號；有數種特定裝置的閘，以下討論六種基本的閘。
- 電路 circuits：閘可組成電路，完成更複雜的工作。有三種可以描述電路的表示法：
	- 布林表示法
	- 邏輯圖
	- 真值表

---
##  閘
### 1. NOT閘
NOT閘接受一個輸入，產生一個輸出。

#### DEF
如輸入為 1，則輸出 0；反之亦然。

#### 布林運算式
$X = A '$
#### 邏輯圖
![NOT閘](https://i.imgur.com/mHBP6FW.png "NOT閘")

#### 真值表
| A | X |
| - | - |
| 0 | 1 |
| 1 | 0 | 

---
### 2. AND閘
AND閘接受多個訊號，產生一個輸出。

#### DEF 
若輸入全為1，則輸出1，反之，則為0。

#### 布林運算式 
$X = A \cdot B$

#### 邏輯圖 
![AND閘](https://i.imgur.com/IJHEbrP.png "AND閘")

#### 真值表 
| A | B | X |
| - | - | - |
| 0 | 0 | 0 |
| 1 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 1 | 1 |

---
### 3.OR閘
OR閘接受兩個輸入，產生一個輸出。

#### DEF 
如兩個輸入全為0，則輸出0，反之，輸出1。

#### 布林運算式 
$X = A + B$

#### 邏輯圖 
![OR閘](https://i.imgur.com/87CEd05.png "OR閘")

#### 真值表 
| A | B | X |
| - | - | - |
| 0 | 0 | 0 |
| 1 | 0 | 1 |
| 0 | 1 | 1 |
| 1 | 1 | 1 |

---
### 4.XOR閘
XOR閘，又稱互斥閘。

#### DEF 
若輸出相同，則輸出0，反之，輸出1。

#### 布林運算式 
$X = A \oplus B$

#### 邏輯圖 
![XOR閘](https://i.imgur.com/dyp1SSN.png "XOR閘")

#### 真值表 
| A | B | X |
| - | - | - |
| 0 | 0 | 0 |
| 1 | 0 | 1 |
| 0 | 1 | 1 |
| 1 | 1 | 0 |

---
### 5.NAND 與 NOR閘
分別為AND與OR閘的相反

#### NAND閘
##### 布林運算式 
$X = ( A \cdot B ) '$

##### 邏輯圖 
![NAND閘](https://i.imgur.com/LVGmMnV.png "NAND閘")

##### 真值表 
| A | B | X |
| - | - | - |
| 0 | 0 | 1 |
| 1 | 0 | 1 |
| 0 | 1 | 1 |
| 1 | 1 | 0 |

---
#### NOR閘
##### 布林運算式 
$X = ( A + B ) '$

##### 邏輯圖 
![NOR閘](https://i.imgur.com/76wkbGw.png "NOR閘")

##### 真值表 
| A | B | X |
| - | - | - |
| 0 | 0 | 1 |
| 1 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 1 | 0 |


---
##  閘的建構
- 電晶體 transistor：是以半導體所製成，依據電壓準位來決定要當導線還是電阻的裝置。
![transistor](https://i.imgur.com/I6OFGJq.png "電晶體")

射極一般是接地的。而對電腦而言，源極產生大約5伏特的高電壓值，基極的電壓值用來判斷源極是否形成接地，若接地，電壓值會被下拉至0，反之，則會維持高電壓。

- 輸出線會接在源極上，若源極接地，則輸出為低準位（二進制的 0），反之則為高準位（二進制的 1）。
- 如基極訊號為高準位，則源極接地，此時電晶體為 on，反之，電晶體為off。
---
##  電路
- 組合電路<br>
藉由某個閘的輸出作為另一個閘的輸入，便可組合成電路。
![組合電路](https://i.imgur.com/cvi0B0J.png "組合電路範例")

其中圖中的黑點，表示兩線是相連接的，如果沒有點，代表其中一條線從另一條線的上方跳過，互不影響。</br>
此邏輯圖的布林運算式為：( AB + AC )，也可寫成 A ( B + C )，讀者可自行寫出真值表來確認。此現象稱作電路等效性。</br>

- 事實上，布林運算式滿足幾種數學性質：
	- 交換律，如：$AB = BA$、$A + B = B + A$。
	- 結合律，如：$( AB ) C = A ( BC )$、$A + ( B + C ) = ( A + B ) + C$。
	- 分配律，如：$A ( B + C ) = AB + AC$、$A + BC = ( A + B ) ( A + C )$。
	- 恆等，如：$A1 = A$、$A + 0 = A$。
	- 互補，如：$A ( A ' ) = 0$、$A + A ' = 1$。
	- 狄摩根定律，如：$( AB ) ' = A ' + B '$、$( A + B ) ' = A ' B '$。

- 加法器<br>
二進制數元相加可能會產生進位值，如 1 + 1 = 10，能計算 2 個位元總和並產生進位為元的電路稱作半加器 half adder。
考慮半加器時，可寫出以下真值表：


| A | B | 總和 | 進位
| - | - | :-: | :-: |
| 0 | 0 | 0 | 0 |
| 1 | 0 | 1 | 0 |
| 0 | 1 | 1 | 0 |
| 1 | 1 | 0 | 1 |

可看出來，總和為 $A \oplus B$，進位為 $AB$。</br>

- 一個半加器並未將可能的進位值併入計算，也就是說，一個半加器在兩個單一數元的相加是沒問題的，但在多重數元時會產生問題。
- 可以考慮進位輸入的電路稱作全加器 full adder。簡單的想法可以用兩個半加器來製作一個全加器；作法為：在總和輸出前，再加上一個半加器與進位輸入做總和，最後調整進位輸出。
以下為全加器的真值表及邏輯圖：

	
| A | B | 進位輸入 | 總和 | 進位輸出 
| - | - | :-----: | :--: | :-----: |
| 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 |

![加法器](https://i.imgur.com/Y6PH0oI.png "全加器")

- 多工器 multiplexer<br>
為一種產生單一輸出的電路，輸出等於電路中數個輸入的其中一個。依據一些原始輸入以外的輸入訊號（選擇訊號、選擇控制線）來決定哪條輸入將被輸出。
如：選擇訊號為 S0、S1、S2，輸入為D0~D7，則有以下真值表。

	
| S0 | S1 | S2 | F |
| -- | -- | -- | - |
| 0 | 0 | 1 | D0 |
| 0 | 0 | 0 | D1 |
| 0 | 1 | 1 | D2 |
| 0 | 1 | 0 | D3 |
| 1 | 0 | 1 | D4 |
| 1 | 0 | 0 | D5 |
| 1 | 1 | 1 | D6 | 
| 1 | 1 | 0 | D7 | 
	
上述多工器可化成此方塊圖。<br>
![多工器](https://i.imgur.com/zrGhNVm.png "多工器")

---
##  作為記憶體的電路
數位電路也可以儲存資訊，這些電路形成一個循序電路，電路的輸出可以當成電路的輸入，也就是說，某些電路的存在狀態有些被用來決定此電路的下個狀態；一些記憶體設計如：S-R閂。

- S-R閂 S-R latch：用來儲存一個單一二進制的數元。
![S-R閂](https://i.imgur.com/kubXSgE.png "S-R閂")

S Set、R Reset，透過此設計，只要S與R保持為1，X與Y的值皆能保持不變；通常，我們把X當作現在電路的狀態。<br>
假設目前X為1，則Y為0，如果須將X設為0的話，只需將R設為0，X就會變成0，這時立刻將R設為1，X就會保持為0了。相反的，如需將X設為1，則需變動S為0，待X變為1後，再立刻改變S為1，X就會保持為1。

---
##  積體電路
積體電路是一種嵌入多重閘的矽片，矽片邊緣上有許多腳位，代表著輸入或輸出。積體電路是依據閘的數量來分類的

- SSI（小型積體電路）<i class="fa fa-arrow-right"></i> 1~10
- MSI（中型積體電路）<i class="fa fa-arrow-right"></i> 10~100
- LSI（大型積體電路）<i class="fa fa-arrow-right"></i> 100~100,000
- VLSI（超大型積體電路 <i class="fa fa-arrow-right"></i> 100,000 <i class="fa fa-arrow-up"></i>

###### tags: `計算機概論`