320 likes | 572 Views
深入研究卡諾圖. 第三章 補充. 3A.1 簡介. 簡化布林函數會盎數位電路較為簡單 ( 通常也比較快 ). 用布林性質來簡化布林函數很耗時而且容易出錯 . 這個補充部份會介紹一種簡單 , 而且系統化的布林表示式簡化法. 3A.1 簡介. 在 1953, Maurice Karnaugh 是貝爾實驗室的一名電信工程師 . 正當他在試著找出數位邏輯以及其應用是否能用在電話電路時 , 他發現了一種布林表示式的圖形簡化法 . 這個圖形表示法 , 就是後來大家所知的 Karnaugh map, 或 Kmap, 是以他的名字來命名的.
E N D
深入研究卡諾圖 第三章 補充
3A.1 簡介 • 簡化布林函數會盎數位電路較為簡單 (通常也比較快). • 用布林性質來簡化布林函數很耗時而且容易出錯. • 這個補充部份會介紹一種簡單, 而且系統化的布林表示式簡化法.
3A.1 簡介 • 在1953, Maurice Karnaugh 是貝爾實驗室的一名電信工程師. • 正當他在試著找出數位邏輯以及其應用是否能用在電話電路時, 他發現了一種布林表示式的圖形簡化法. • 這個圖形表示法, 就是後來大家所知的Karnaugh map,或 Kmap, 是以他的名字來命名的.
3A.2 Kmaps 的術語 • Kmap是一個由行和列組成的矩陣, 它代表了布林函數的輸出值. • 矩陣的每個空格就是布林函數最小項所導出(minterms)的輸出值. • 最小項 (minterm)是包含所有函數變數的積項, 項中每個變數只出現一次, 不管是不是補數.
3A.2 Kmaps 的術語 • 例如, 某函數的輸入x和 y, 其最小項為: • 考慮布林函數, • 其最小項為:
3A.2 Kmaps 的術語 • 同樣地, 有三個輸入的函數, 其最小項如右所示.
3A.2 Kmaps 的術語 • 每個最小項在Kmap 中都有一個位置. • 這表示在真值表中, 每一列都會有一個位置. • F(x,y) = xy的真值表和Kmap 如右所示.
3A.2 Kmaps 的術語 • 來看另一個例子, F(x,y) = x + y的真值表和Kmap 如右所示. • 這個函數和OR 是相同的意思, 所以:
3A.3 二個變數的Kmap化簡 • 當然, 我們Kmap導出的最小項並不是其最簡的型式. • 我們就從這個例子開始. • 我們可以藉著在Kmap中找尋相鄰的1, 將其以2的次方個群組起來進行化簡. • 在我們的例子中, 我們有二個這樣的群組. • 你找出來了嗎?
3A.3 二個變數的Kmap化簡 • 圈選這二個1群組的最好方式如下所示. • 我們可知這二個群組的大小都是2的次方, 並且有重疊. • 下一張投影片我們會規納出一些圈選的規則.
3A.3 二個變數的Kmap化簡 Kmap的化簡方式為 : • 群組只能包含1; 不能有0. • 群組不能是斜的框. • 群組必須2的次方– 就算只有一個1. • 群組必需越大越好. • Kmap中的群組可以重疊, 而且邊邊可以視為捲紙一樣頭尾相接.
3A.4 三個變數的Kmap化簡 • 三個變數的Kmap, 建構方式入下圖所示. • 我們將每個最小項放入矩陣的空格中. • 這邊要注意到的是表上方的yz其對應值的順序並不是一般的00, 01, 10, 11順序.
3A.4 三個變數的Kmap化簡 • Kmap第一列所包含的最小項, 其x值為0. • 第一行的y和z值都為0.
3A.4 三個變數的Kmap化簡 • 考慮函數: • 其Kmap 如下. • 最大的1群組(2次方個)為何?
3A.4 三個變數的Kmap化簡 • 這個圈選方式告訴我們, 改變 x和 y變數對函數的值是沒有影響的: 它們是無關的. • 這表示函數, 可簡化為 F(x) = z. 你可以用真值表或布林性質來驗證.
3A.4 三個變數的Kmap化簡 • 現在來看複雜一點的 Kmap. 考慮下面函數: • 其Kmap 如下所示. 只有二個1 群組. • 你找到了嗎?
3A.4 三個變數的Kmap化簡 • 在這個 Kmap 中, 我們看到了圈選邊邊的例子. • 這個例子使我們了解, x 和 y的值和包在群組中函數的值是無關的. • 這個函數的項給我們什麼啟示? 在上方的綠色圈選呢?
3A.4 三個變數的Kmap化簡 • 上面綠色圈起來的部份表示只有x的值是有效的. • 所以化簡後是, 取補數, . • 整個化簡後函數是 記得原始的函數中有六個最小項!
3A.5 四個變數的Kmap化簡 • 我們可以將模型擴充為16個最小項, 其輸入就有4個變數. • 下面是16個最小項的 Kmap格式.
3A.5 四個變數的Kmap化簡 • 我們畫出以下函數的 Kmap: • 圖中可圈出三個群組 Kmap? 別忘了群組可以重疊.
3A.5 四個變數的Kmap化簡 • 這三個群組為: • 紫色的在右邊. • 粉紅色的在上下. • 綠色的在四個角落. • 所以最後化簡成三項:
3A.5 四個變數的Kmap化簡 • 有可能可以選擇Kmap中不同的最大群組. • 下面二個圖所化簡出來的函數會不同, 但是邏輯上是等效的.
3A.6 Don’t Care 情況 • 在實際的電路中, 不見得所有的輸入狀況都會定義它的輸出. • 例如, 某些計算機的七段顯示器. 這些 LEDs 可以顯示 2 7 -1 種樣式, 但我們只需要用其中0到9. • 如果在設計電路時明知某些情形不會出現, 我們就稱這些輸入為 don’t care 情況. • 這些情況在Kmap化簡中非常有用.
3A.6 Don’t Care 情況 • 在 Kmap中, don’t care 情況標示為 X, 如下圖所示. • 在化簡時, 我們可以自由選擇要不要圈入X來化簡.
3A.6 Don’t Care 情況 • 下面函數為Kmap圈選的化簡結果:
3A.6 Don’t Care 情況 • 不同的圈選方式會有不同的結果:
3A.6 Don’t Care 情況 • 此函數的真值表: 和這個函數的真值表是不同的: • 但是, 這些不同的輸入對應就是don’t care 情況.
Kmaps 是一種簡單圖形化的布林化簡方法 Kmap 是一個矩陣, 這個矩陣是由布林函數最小項的輸出所組成. 在這一節中, 我們介紹了2- 3- 及 4-輸入的 Kmaps. 這個方法可以擴充到任何輸入. 3A 結論
3A 結論 複習一下Kmap化簡的規則: • 只能圈選1; 沒有 0. • 圈選的群組樣式不能形成對角線. • 群組中1的個數必需是2的次方 – 就算是只有一個1. • 群組越大越好. • 群組可以重疊Kmap可以視為頭尾相接. • 盡量利用don’t care 情況.