格雷碼為典型的無權(quán)碼,雷碼的編碼規(guī)則是相鄰的兩代碼之間只有一位二進(jìn)制位不同,每位并沒有權(quán)值,對應(yīng)的十進(jìn)制數(shù)是規(guī)定的,并不是如8421碼能算出來的。
典型的二進(jìn)制格雷碼因1953年公開的弗蘭克·格雷(frank gray,18870913-19690523)專利“pulse code communication”而得名,當(dāng)初是為了通信,現(xiàn)在則常用于模擬-數(shù)字轉(zhuǎn)換和位置-數(shù)字轉(zhuǎn)換中。法國電訊工程師波特(jean-maurice-émile baudot,18450911-19030328)在1880年曾用過的波特碼相當(dāng)于它的一種變形。1941年george stibitz設(shè)計的一種8元二進(jìn)制機(jī)械計數(shù)器正好符合格雷碼計數(shù)器的計數(shù)規(guī)律。格雷碼(gray code)曾用過grey code、葛萊碼、葛蘭碼、格萊碼、戈萊碼、循環(huán)碼、二進(jìn)制反射碼、最小差錯碼等名字,它們有的是錯誤的,有的易與其它名稱混淆,建議不再使用它們。
在一組數(shù)的編碼中,若任意兩個相鄰的代碼只有一位二進(jìn)制數(shù)不同,則稱這種編碼為格雷碼(gray code),另外由于最大數(shù)與最小數(shù)之間也僅一位數(shù)不同,即“首尾相連”,因此又稱循環(huán)碼或反射碼。在數(shù)字系統(tǒng)中,常要求代碼按一定順序變化。例如,按自然數(shù)遞增計數(shù),若采用8421碼,則數(shù)0111變到1000時四位均要變化,而在實(shí)際電路中,4位的變化不可能絕對同時發(fā)生,則計數(shù)中可能出現(xiàn)短暫的其它代碼(1100、1111等)。在特定情況下可能導(dǎo)致電路狀態(tài)錯誤或輸入錯誤。使用格雷碼可以避免這種錯誤。格雷碼有多種編碼形式。
格雷碼(gray code)曾用過grey code、葛萊碼、格萊碼、戈萊碼、循環(huán)碼、反射二進(jìn)制碼、最小差錯碼等名字,它們有的不對,有的易與其它名稱混淆,建議不要再使用這些曾用名。
格雷碼的特點(diǎn)
格雷碼屬于可靠性編碼,是一種錯誤最小化的編碼方式。因?yàn)?,雖然自然二進(jìn)制碼可以直接由數(shù)/模轉(zhuǎn)換器轉(zhuǎn)換成模擬信號,但在某些情況,例如從十進(jìn)制的3轉(zhuǎn)換為4時二進(jìn)制碼的每一位都要變,能使數(shù)字電路產(chǎn)生很大的尖峰電流脈沖。而格雷碼則沒有這一缺點(diǎn),它在相鄰位間轉(zhuǎn)換時,只有一位產(chǎn)生變化。它大大地減少了由一個狀態(tài)到下一個狀態(tài)時邏輯的混淆。由于這種編碼相鄰的兩個碼組之間只有一位不同,因而在用于風(fēng)向的轉(zhuǎn)角位移量-數(shù)字量的轉(zhuǎn)換中,當(dāng)風(fēng)向的轉(zhuǎn)角位移量發(fā)生微小變化(而可能引起數(shù)字量發(fā)生變化時,格雷碼僅改變一位,這樣與其它編碼同時改變兩位或多位的情況相比更為可靠,即可減少出錯的可能性。
格雷碼是一種絕對編碼方式,典型格雷碼是一種具有反射特性和循環(huán)特性的單步自補(bǔ)碼,它的循環(huán)、單步特性消除了隨機(jī)取數(shù)時出現(xiàn)重大誤差的可能,它的反射、自補(bǔ)特性使得求反非常方便。
由于格雷碼是一種變權(quán)碼,每一位碼沒有固定的大小,很難直接進(jìn)行比較大小和算術(shù)運(yùn)算,也不能直接轉(zhuǎn)換成液位信號,要經(jīng)過一次碼變換,變成自然二進(jìn)制碼,再由上位機(jī)讀取。
典型格雷碼是一種采用絕對編碼方式的準(zhǔn)權(quán)碼,其權(quán)的絕對值為2^i-1(設(shè)最低位i=1)。
格雷碼的十進(jìn)制數(shù)奇偶性與其碼字中1的個數(shù)的奇偶性相同。