> 格雷碼 | 反射 | 二進位 <
// 格雷碼——相鄰數值之間僅有一個位元不同的二進位系統
0 字元
0 字元
[SINGLE-BIT]
單位距離
任兩個相鄰碼字之間僅有一個位元改變。
[ERROR-REDUCTION]
錯誤減少
在類比/數位轉換等場景中,有效減少毛刺與誤判。
[CYCLIC]
循環特性
首碼與尾碼同樣只差一個位元,適合環狀計數。
>> 技術說明
格雷碼的運作原理:
格雷碼(Gray Code,又稱反射二進位碼)是一種編碼方式,使得每次狀態變化時只有一個位元翻轉。常見作法是將二進位數的每一位與前一位做 XOR,產生對應的格雷碼。由於同一時間只會有一位變化,可大幅降低位置編碼器與數位電路在切換瞬間的讀值錯誤。
格雷碼範例:
Decimal | Binary | Gray Code 0 | 0000 | 0000 1 | 0001 | 0001 2 | 0010 | 0011 3 | 0011 | 0010 4 | 0100 | 0110 5 | 0101 | 0111 6 | 0110 | 0101 7 | 0111 | 0100 說明:任兩個相鄰的格雷碼之間僅有 1 位不同
為什麼要使用格雷碼:
- ▸旋轉編碼器與位置感測器
- ▸卡諾圖(Karnaugh Map)化簡邏輯
- ▸數位通訊中的錯誤控制
- ▸健壯的狀態機與計數器設計
- ▸類比訊號取樣時減少毛刺與跳變
>> 常見問題
什麼是格雷碼?
格雷碼是一種相鄰狀態只改變一個位元的二進位編碼方式,又稱反射二進位碼。與一般二進位遞增相比,它能避免多位同時翻轉,減少切換瞬間所產生的錯誤讀值。
如何將二進位轉換為格雷碼?
轉換規則:1)最高有效位元(MSB)保持不變;2)從次高位開始,每一位等於目前二進位位元與前一位的 XOR。公式:G[i] = B[i] XOR B[i-1]。例如,二進位 1011 對應的格雷碼為 1110。
為什麼編碼器喜歡使用格雷碼?
在傳統二進位當中,像 0111 跳到 1000 會有多位元同時翻轉,若感測器不同步,很容易讀到不存在的中間值。格雷碼一次只翻轉一位,在旋轉編碼器、滑動電位器等應用中可以顯著降低歧義。
格雷碼常見的應用有哪些?
格雷碼廣泛用於旋轉編碼器、卡諾圖邏輯化簡、數位通訊調變與錯誤修正、遺傳演算法中的染色體編碼,以及各種希望避免「多位跳變」的計數器與取樣系統。