2012年8月27日 星期一

格雷碼 ( gray code)


格雷碼 ( gray code)
格雷碼 也稱 灰色碼、反射碼、鏡射碼,通常 用在 卡諾圖的外圍 X軸,Y軸上 可以化簡 布林代數式,也就是 用畫圖的方式 圈幾個圈 答案 就 出來了。

格雷碼 的特徵:
1. 上下相鄰的 兩個碼 只變化 一個位元。
2. 第一個碼(首碼) 與 最後一個碼(尾碼) 也是 只有一個位元變化,所以 稱為 首尾相鄰。

格雷碼 如何寫出來的呢?
EX:請寫出 一位元格雷碼?
0
1
變化過程
0 
先寫上一個 0 ,在 0 的正下方 畫上一條 紅色小橫線 代表 反相 及 鏡子 的功能
所以 0 的 反相 及鏡射值 為 1,寫在 小橫線 的 正下方,這就是答案。
0
1

EX:請寫出 二位元格雷碼?(兩位元以上 都分成兩段討論:紅色 黑色)
0 0
0 1
1 1
1 0
變化過程
在 一位元格雷碼 左邊 各補上 一個 0,新加入的 0  一定是 紅色橫線
0 0
0 1
左邊 垂直 讀下來 是 0 0, 其正下方 有一條 紅色橫線 代表反相 及 鏡子 的功能
右邊 垂直 讀下來 是 0 1,其正下方 有一條 黑色橫線 代表 只有 鏡子 的功能
左邊的答案先寫
0 0
0 1
1 1
1 0
對顏色 可知 排在 鏡子 最前面的 其反射值 一定在 最前面,後面的 一定也在後面。
一般來說,橫線 上方的數字 是 由下 往上 唸 0 0
          橫線 下方的答案 是 由橫線 正下方 由上 往下 寫 1 1
注意 紅色橫線 是代表 反相 及 鏡子 的功能

再寫 右邊的答案
0 0
0 1
1 1
1 0
一般來說,橫線 上方的數字 是 由下 往上 唸 1 0
          橫線 下方的答案 是 由橫線 正下方 由上 往下 寫 1 0
注意 黑色橫線 是代表 鏡子 的功能 沒有 反相。

EX:請寫出 三位元格雷碼?(兩位元以上 都分成兩段討論:紅色 黑色)
ANS:
0
1


00
01
11
10


000
001
011
010
1
1
1
1


000
001
011
010
11
11
10
10


000
001
011
010
110
111
101
100

狄摩根 定律 ( DeMorgan's Law ) 閘變換 的 方法


閘變換 的 方法
總的來說,就是 A閘 相當於 B閘
譬如說: A and B = (A bar or B bar) bar  即 AND閘  相當於 反輸入NOR閘。
其實 很簡單,利用 A=A double bar 的原理 就可以 算出來。
A 反相 180度  兩次 相當於 沒反相。

閘變換的方法 有兩種
1. 純計算 利用 A=A double bar 的原理,或 參考 狄摩根 定律 ( Demorgen Law )
2. 用畫圖的方式

兩個方法 共通的部份  就是
1. and 與 or 直接 互換 (當 bar 切斷時)
2. 兩個 bar 重疊時,一定 記得 將 兩個 bar 直接消去  (當 bar 切斷時)

在 畫圖時 ,是用氣泡 代替 bar,
EX:
請用心算,在腦袋中 想像 圖 現在 變成 怎樣了
A and B 就是 及閘
兩個 輸入端,一個 輸出端,
在 每一個 端 (兩個 輸入端,一個 輸出端,同時 各加上一個 氣泡)
將 and符號  改成  or 符號
現在的畫面  就是 答案 ( 從左到右 是  兩個輸入端 均有 一個氣泡,再來就是 or 符號,再來就是 輸出端 一個氣泡。)  就是 反輸入 NOR閘

EX:
請用心算,在腦袋中 想像 圖 現在 變成 怎樣了
(A and B) bar 就是 反及閘---NAND 閘
兩個 輸入端 沒氣泡,一個 輸出端 有氣泡,
在 每一個 端 (兩個 輸入端,一個 輸出端,同時 各加上一個 氣泡)
將 and符號  改成  or 符號
現在的畫面  就是 答案 ( 從左到右 是  兩個輸入端 均有 一個氣泡,再來就是 or 符號,再來就是 輸出端 兩個氣泡 直接消掉。)  就是 反輸入 OR閘
(A and B) bar=A bar or B bar= A bar + B bar=A’ + B’

暈了 沒,休息一下!