--- 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)