格雷碼就是壹種可靠性編碼。在壹組數的編碼中,若任意兩個相鄰的代碼只有壹位二進制數不同,則稱這種編碼為格雷碼,另外由於最大數與最小數之間也僅壹位數不同,即“首尾相連”,因此又稱循環碼。在數字系統中,常要求代碼按壹定順序變化。
例如,按自然數遞增技術,若采用8421碼,則數0111變到1000時四位均要變化,而在實際電路中,4位的變化不可能絕對同時發生,則計數中可能出現短暫的其他代碼(1100、1111等)。在特定情況下可能導致電路狀態錯誤或輸入錯誤。使用格雷碼可以避免這種錯誤。
擴展資料:
格雷碼發展歷史:
格雷碼(Gray Code)因Frank Gray 1947年申請、1953年獲得批準的專利“Pulse Code Communication”而得名,當初是為了通信,現在則常用於模擬-數字轉換中。法國工程師Jean-Maurice-Émlle Baudot在1880年曾用過的波特碼是典型格雷碼的壹種變形。1941年George Stibitz設計過壹種8元格雷碼計數器。
格雷碼的優點:
1、格雷碼是壹種絕對編碼方式,典型格雷碼是壹種具有反射特性和循環特性的單步自補碼,它的循環、單步特性消除了隨機取數時出現重大誤差的可能,它的反射、自補特性使得求反非常方便。
格雷碼屬於可靠性編碼,是壹種錯誤最小化的編碼方式,因為,雖然自然二進制碼可以直接由數/模轉換器轉換成模擬信號,但在某些情況,例如從十進制的3轉換為4時二進制碼的每壹位都要變,能使數字電路產生很大的尖峰電流脈沖。而格雷碼則沒有這壹缺點,它在相鄰位間轉換時,只有壹位產生變化。它大大地減少了由壹個狀態到下壹個狀態時邏輯的混淆。
由於這種編碼相鄰的兩個碼組之間只有壹位不同,因而在用於風向的轉角位移量-數字量的轉換中,當風向的轉角位移量發生微小變化(而可能引起數字量發生變化時,格雷碼僅改變壹位,這樣與其它編碼同時改變兩位或多位的情況相比更為可靠,即可減少出錯的可能性。
2、格雷碼是壹種變權碼,每壹位碼沒有固定的大小,很難直接進行比較大小和算術運算,也不能直接轉換成液位信號,要經過壹次碼變換,變成自然二進制碼,再由上位機讀取。
解碼的方法是用‘0’和采集來的4位格雷碼的最高位(第4位)異或,結果保留到4位,再將異或的值和下壹位(第3位)相異或,結果保留到3位,再將相異或的值和下壹位(第2位)異或,結果保留到2位,依次異或,直到最低位,依次異或轉換後的值(二進制數)就是格雷碼轉換後自然碼的值.
參考資料: