---
# System prepended metadata

title: 布林邏輯|第三週
tags: [數位系統與實驗]

---

---
title: 布林邏輯|第三週
tags: 數位系統與實驗
---

# Switch circuit 
  
有開關的電路 
>要記的新東西 

<iframe src="https://drive.google.com/file/d/1VUbXjVQsGEFzsTi3AhtBbVi7NOF3IFlV/preview"  height="480"></iframe>



  
1 代表 switch closed 
0 代表 switch open 
  
# Duality 
- 把 AND OR 互換 
- 把 0 1 互換 
- 變數保持不變 
  
兩邊依舊是等價的
  
## 例子 
  
$$  
XY + X'Z + YZ = XY + X'Z \\\  
(X + Y)(X' + Z)(Y + Z) = (X + Y)(X' + Z)  
$$  
  
:::info 
Duality 要熟，因為「不直覺的」很難推出來 
  
暫時直接背起來好像也不錯 
::: 
  
# 判斷等價 
  
## 原始推導
  
就是乘開來化簡，只能用已知的性質化簡 
像是 $A + A' = A$ , $A • A' = 0$ 這種 
  
## 真值表 
  
直接畫出真值表判斷 
  
  
### 記憶用

像是多變數的話，就固定其中一個變數，並分成：

- 當該變數為 1 的情況
- 當該變數為 0 的情況

下去做討論
  
# 建議記起來 
  
## Uniting 
  
$$  
XY + XY' = X\\\  
(X + Y)(X + Y') = X  
$$  
  
把 X 單一化 
  
## Absorption 
  
$$  
X + XY = X\\\  
X (X + Y) = X  
$$  
  
把 Y 吸收掉 
  
## Elimination 
  
$$  
X + X'Y = X + Y\\\  
X (X' + Y) = XY  
$$  
  
把 X' 消除掉 
  
## Consensus 
  
$$  
XY + X'Z + YZ = XY + X'Z\\\  
(X + Y)(X' + Z)(Y + Z) = (X + Y)(X' + Z)  
$$  
  
把 Y 跟 Z 的結果消除 
  
## Distributive laws 
  
$$  
X(Y + Z) = XY + XZ \\\  
X + YZ = (X + Y)(X + Z)  
$$  
  
### 注意 
這個方法不限於雙變數，多變數也適用 
  
$$  
(V+W+X)(V+W+Y)(V + Z)\\\  
=V+(W+X)(W+Y)(Z)  
$$  
  
## Useful Theorem 
  
$$  
(X+Y)(X'+Z)=X'Y+XZ  
$$  
  
用 Consensus 可快速推導
>當然直接記起來使用起來比較方便
>
  
# Complement 
  
對整個式子加 Not；通常出現於訓練迪摩根的題目
  
---  
  
# Multiplying Out 和 Factoring
  
分別對應 SOP 跟 POS 
主要是利用 Distributive laws 和上面的 useful law 
像是遇到有 A 跟 A' 的 SOP ，就可用 useful law 弄出乘積的形式
  
# Exclusive OR ⊕
  
- $X⊕0=X$
- $X⊕1=X'$
- $X⊕X=0$
- $X⊕X'=1$
- $X⊕Y=Y⊕X$
    - 交換律
- $X⊕(Y⊕Z)=(X⊕Y)⊕Z$
    - 結合律
- $X(Y⊕Z)=XY⊕XZ$
    - 分配律
- $(X⊕Y)'=X'Y'⊕X'Y'$
    - 代表 X 跟 Y 一定要一樣


遇到式子有 XOR 或 XNOR 
直接從定義去拆會比較好做，也就是 

$$
A ⊕ B = A'B + AB' \\
A ≡ B = A'B' + AB 
$$

再去用上面那三個化簡 
  
## Consensus Theorem 

$$  
XY + X'Z + YZ = XY + X'Z\\\  
(X + Y)(X' + Z)(Y + Z) = (X + Y)(X' + Z)  
$$ 

有時後善用 Consensus 會很方便，可以減少 SOP 或 POS 的項 

而且也不止於上面公式寫的，像是下面的樣子

$$
ABD + A'BCE + BDCE = ABD + A'BCE
$$

### 最簡了嗎？

有時候選錯 target 會讓 Consensus 的結果不一樣 
也就會導致不是最佳解

![](https://drive.google.com/uc?id=1FkBTAetHCh0AeP4vwDtIQt-oIQnP3Lvy&export=download)

那怎麼辦？用 K Map；或者大不了就把每個可以用 Consensus 的情況弄出來
然後去...每一個都檢查

### Redundancy Insertion 

![](https://drive.google.com/uc?id=1cnwfAWOGUfyLWiVFXwoUHa2gPafxeag1&export=download)

有時當你把能夠執行 Consensus 的每個都列出來
但是卻發現都不在你的式子中，那這時就要考慮

:::warning
把可以加的加進來
:::

由於沒有一個可以用 Consensus 來消除，那此時就要嘗試反向操作 
把他可以消的補回來，畢竟這樣做邏輯是等價的
然後再以補上去的為主，看有沒有其他人可以跟他配合使用 Consensus

![](https://drive.google.com/uc?id=1i6B3JL56IqTYPUudbzO7gP6nMokg62Ew&export=download)
