---
# System prepended metadata

title: 數位邏輯LD

---

# 數位邏輯（Logic Design）
參考來源: 師大何宏發教授LD、清大王俊堯教授LD

## 概論（Introduction）
* 數量的表示法
	類比法
    時間函數，數值大小隨時間而變 ex: 聲波、速度
    ![image](https://hackmd.io/_uploads/HJlY10CExl.png)

    數位法
    數值大小不隨時間而變 ex: 人數
    ![image](https://hackmd.io/_uploads/H1TFkRCNel.png)

* 積體電路(integrated circuit)
    把電子電路元件（電晶體BJT、場效應電晶體FET、二極體、電阻、小電容）全部做在電路晶片上
    ![image](https://hackmd.io/_uploads/SysokCCVle.png)

    常用數位IC封裝型式:
    雙排並列(DIP)、扁平、表面實裝、PGA
    ![image](https://hackmd.io/_uploads/ryZ610AEll.png)

* 數位系統 vs 類比系統
	類比:
	連續性的變化量
	Ex: 聲量、光線、溫度
	
	數位:
	利用電子元件，將類比訊號轉成低電壓位準 0 與高電壓位準 1
	Pros: 可程式控制、正確性高、傳輸快、較不受雜訊影響、可儲存
	
	ADC -> 類比轉數位
	DAC -> 數位轉類比
    Ex: MP3、冷氣
    
* 邏輯位準
	0 -> LO -> 低電壓位準
	1 -> HI -> 高電壓位準
	
	正邏輯:
	1 -> 高邏輯位準
	0 -> 低邏輯位準
    
	反邏輯:
	0 -> 高邏輯位準
    1 -> 低邏輯位準
    ![image](https://hackmd.io/_uploads/BkL4gRR4lx.png)

* 脈波位準
	正向脈波:
	1 -> 高電位
	0 -> 低電位
    
	負向脈波:
	0 -> 高電位
    1 -> 低電位

## 基本邏輯（Fundamental Logic）
* NOT Gate（反閘、反向器、inverter）
	輸出恆為輸入的補數
	應用: 緩衝器
    -> 推動較大負載、連接更多邏輯閘數
    ![image](https://hackmd.io/_uploads/B1TwxCRNxl.png)

* AND Gate（及閘）
	有兩個或兩個以上的輸入，但只有一個輸出
    代表乘法邏輯運算
    ![image](https://hackmd.io/_uploads/HJcnl0CVeg.png)
    ![image](https://hackmd.io/_uploads/B1k6lARVxx.png)

* NADN Gate(反及閘）
    NADN = NOT + AND
    ![image](https://hackmd.io/_uploads/rJ1ClR04ll.png)

* XOR Gate（互斥或閘）
	輸入訊號為奇數個（1 3 5…），邏輯為1時，輸出訊號為1
    兩個輸入端較常見，三個輸入端（以上）多以兩個輸入端的組合
    ![image](https://hackmd.io/_uploads/rkJfWRCNxg.png)
    ![image](https://hackmd.io/_uploads/S1mMWCCVxx.png)

* OR Gate（或閘)
	有兩個或兩個以上的輸入，但只有一個輸出
    代表加法邏輯運算
    ![image](https://hackmd.io/_uploads/H1T4-RCVee.png)
    ![image](https://hackmd.io/_uploads/HyGrZCRVel.png)

* NOR Gate（反或閘）
    NOR = NOT + OR
    ![image](https://hackmd.io/_uploads/rJbIW0REel.png)
    
* XNOR Gate（反互斥或閘）
	XNOR = AND + XOR
    輸入訊號為偶數個（2 4 6…），邏輯為1時，輸出訊號為1
    ![image](https://hackmd.io/_uploads/Hymq-004eg.png)
    ![image](https://hackmd.io/_uploads/SyOq-CAVgl.png)


## 布林代數與迪摩根定律（Boolean Algebra & De Morgan's laws）
* 布林變數
	指一個量隨時間而變，不同時間可能是0或1
	代表電路的輸入 輸出端
	常以英文字母表示
	
* 布林代數
    0或1
    
* AND運算
    ![image](https://hackmd.io/_uploads/Sk2lMAANeg.png)

* OR運算
    ![image](https://hackmd.io/_uploads/rkjWzCRExg.png)

* NOT運算
    ![image](https://hackmd.io/_uploads/B1OMf0AElx.png)

* 布林代數假說
	同質性:
    任何數+0或x1，都會等於自己
    ![image](https://hackmd.io/_uploads/SJ5QMR04ge.png)
    
    互補性:
    X和X'必定相反，AND運算得0，OR運算得1
    ![image](https://hackmd.io/_uploads/rkXrfACNlg.png)

    交換律:
    同數學交換律
    ![image](https://hackmd.io/_uploads/rJDIfCRNee.png)

    分配律:
    同數學分配律
    ![image](https://hackmd.io/_uploads/HkUvfACExe.png)

* 布林代數基本定理
    ![image](https://hackmd.io/_uploads/Sk4dfCCExe.png)

* 迪摩根第二定律
    NAND = NOT OR NOT
    ![image](https://hackmd.io/_uploads/BkWYz0CNex.png)
    ![image](https://hackmd.io/_uploads/SJHtGA0Nlx.png)

## 正反器（Flip-flop）
* 數位邏輯電路運作方式
	1.組合邏輯電路(Combinational Logic Circuit)
	輸出只與當初輸入有關，無記憶性電路
	Ex: 全加器、半加器、編碼器、解碼器
	
	2.循序邏輯電路(Sequential Logic Circuit)
	組合邏輯電路的功能 + 記憶裝置
	輸出跟輸入有關，並且受記憶裝置影響，記憶狀態由當初輸入而定
	Ex: 正反器、計數器、記憶體、電腦
	
    在數位邏輯電路裡最常用的元件為邏輯閘跟正反器

* 正反器
	循序邏輯電路內的基本記憶元件
	多個輸入端，兩個輸出端
    具記憶特性
    ![image](https://hackmd.io/_uploads/ryWRM0R4gx.png)
    
    常用的功能:
	儲存資料(記憶體)
	計時、計數(計數器)
	改變資料的型態(並列、串列的轉換)
    組成控制電路去控制其他元件
    
* 常見的正反器
	RS(SR)型
	JK型
	D型
	T型
    內部皆有RS電閂(latch)
    
* RS電閂
	消除機械接點的彈跳現象，避免電子電路產生錯誤
    可用兩個NOR gate或兩個NAND gate組成
    
* 正反器 vs 電閂
    正反器皆有時鐘脈波(CK or CLK or CP)，用以控制正反器在某一時間點的動作，但電閂沒有

* RS正反器
	通常需要預先設定preset跟clear，預設(PR)表示Q=1，清除(CLR)表示Q=0，兩個控制輸入端
	在正反器中，PR和CLR有最高優先控制權
	
* JK正反器
	改善RS正反器race condition的問題，並且有兩個輸入控制端，常用於計數電路
	
* D正反器
	構造簡單且容易儲存，常用於移位暫存器、強生計數器、資料暫存器
	
* T正反器
    反轉(toggle)暫存器，如同XOR gate
    ![image](https://hackmd.io/_uploads/HJ5XXCC4lg.png)

* 正反器與循序邏輯電路的應用
	漣波計數器:
    正反器的CK逐級觸發，又稱為非同步計數器or異步計數器
    ![image](https://hackmd.io/_uploads/SkcN7ACExl.png)

    同步計數器:
    所有正反器CK同時觸發
    ![image](https://hackmd.io/_uploads/Sy3HQCA4gx.png)
    
    左右移暫存器:
	具有儲存資料的能力
	1.依傳遞方向分左右移
    2.依資料輸入輸出的處理方式
    ![image](https://hackmd.io/_uploads/r1jIm0AVel.png)
    ![image](https://hackmd.io/_uploads/rkGD7RCVxe.png)

    串並列移暫存器:
	SISO + SIPO
	PISO + PIPO
	
	移位暫存器(跑馬燈):
	藉由資料回授達到計數的目的，又稱移位計數器
    
	資料回授的方式:
	1.環狀計數器
	2.偶數模強生技數器
    3.奇數模強生技數器
    
## 數目系統（Numeral System）
* 常見進位表示法
	2進位
	8進位
	10進位
    16進位

* Binary coded decimal(BCD)
	每以4個位元來表示一個10進位的數
    
* 超三碼
	又稱加三碼，將每組BCD碼加上0011
    
* Gray code
	非加權碼，不適合做算術運算
    
* ASCII code
    7位元的2進位碼所組成，可表示128種不同的符號，應用於電腦與周邊設備
    
* MSD and LSD
	MSD（Most Significant Digit）: 最高有效位數
    MSD（Least Significant Digit）: 最低有效位數
    ![image](https://hackmd.io/_uploads/Hy9l4RCVex.png)

## 組合邏輯應用（Application of Combinational Logic）
* 多工器(Multiplexer)
	資料選擇器，本質上就是一個電子開關，能從n個輸入線裡，選擇一個傳送到輸出
	大部分多工器IC包含一個閃控(Strobe)或致能(Enable)輸入端來控制電路
	
* 解多工器
    資料分配器，本質上跟多工器相反，輸入一組選擇輸出
    
* 可程式邏輯元件(Progammable Logic Device, PLD)
	Def. 以軟體協助，並用硬體語言或拉圖法實踐電路內容與模擬，設計者可隨時修改
	目前設計者所採用的方式
	
	簡單型PLD:
	內含AND OR邏輯陣列，輸入端具有可程式的保險絲陣列，某些輸出端還具有暫存器、輸出回饋、三態輸出
	
	複雜型PLD:
	常採用EPROM、EEPROM、Flash ROM三種技術之一，整合性較高的邏輯元件，可靠性好，效能提升，對於電路板(PCB)面積減少及成本降低
	
	FPGA（Field Programmable Gate Array）PLD
	最複雜，以查表結構，多為SRAM，斷電後電路的組態無法保留，會將其保存在EEPORM、Flash ROM、HDD裡，等到需要時再將組態load到SRAM，FPGA才能運作
	
	Pros:
	1.保密
	2.時效
	3.工作速度提高
	4.降低成本
	5.可靠度增加
    6.設計與維護容易

* 記憶體差別
	RAM（Random Access Memory）
	隨機存取記憶體，可隨時讀寫資料，但斷電後不會保存資料
	
	ROM（Read Only Memory）
	1.光罩式ROM(mask ROM)
	包含位址解碼器、儲存二進位的記憶unit跟三態輸出閘
	
	2.可規劃ROM（Programmable ROM, PROM）
	內含以保險絲二極體矩陣組成的記憶unit，使用者可燒錄資料，但僅能使用一次
	
	3.可抹去可規劃ROM（Rrasable and Programmable ROM, EPROM）
	將PROM改成用場效電晶體當作開關，所以可在記憶體燒錄跟清楚資料，消除方式用紫外線照射並讓電荷消失
	
	4.電氣可抹去可規劃ROM（Electrically Erasable and Programmable ROM, EEPROM）
	跟EPROM類似，只是燒錄跟清除資料改用電氣
	
	5.快閃記憶體（Flash ROM or Flash memory）
	由EEPROM演化，目前較多人用，作為系統儲存與紀錄(BIOS)，跟EEPROM不同的是，EEPROM紀錄資料式以一個個byte，flash memory是用一個block複寫
    Ex: 手機、MP3、SD card