格雷码介绍与应用
學(xué)過(guò)晶體管知識(shí)的朋友們都知道,數(shù)據(jù)位跳變就相當(dāng)于硬件電路中的晶體管翻轉(zhuǎn)。
許多位同時(shí)跳變就相當(dāng)于多個(gè)晶體管同時(shí)翻轉(zhuǎn),會(huì)導(dǎo)致電路中出現(xiàn)很大的尖峰電流脈沖,從而導(dǎo)致數(shù)據(jù)不穩(wěn)定。
格雷碼(Gray Code)不同于我們常用的二進(jìn)制編碼,它只是一種無(wú)權(quán)碼,連算術(shù)編碼都算不上。
其重要特征是一個(gè)數(shù)變?yōu)橄噜彽牧硪粋€(gè)數(shù)時(shí),只有一個(gè)數(shù)據(jù)位發(fā)生跳變,由于這種特點(diǎn),就可以避免電路中出現(xiàn)亞穩(wěn)態(tài)而導(dǎo)致數(shù)據(jù)錯(cuò)誤。
簡(jiǎn)而言之,格雷碼的一位改變特征減小了電路出錯(cuò)概率,實(shí)際很多場(chǎng)合也用到了格雷碼。
下表舉例了4位格雷碼、4位二進(jìn)制碼以及十進(jìn)制碼的對(duì)應(yīng)關(guān)系:
二進(jìn)制到格雷碼轉(zhuǎn)換的固定規(guī)律為:
1,格雷碼中的最高有效位(最左邊)等同于二進(jìn)制數(shù)中相應(yīng)的最高有效位。
2,從左到右,加上每一對(duì)相鄰的二進(jìn)制編碼位,從而得到下一個(gè)格雷碼位,舍去進(jìn)位。
例如二進(jìn)制數(shù)10110到格雷碼的轉(zhuǎn)換如下,格雷碼是11101:
? ? ? ? ?? ? ? ? ? ? ? ?
下面給出任意位寬的二進(jìn)制轉(zhuǎn)格雷碼verilog代碼:
格雷碼到二進(jìn)制轉(zhuǎn)換的固定規(guī)律為:
1,二進(jìn)制碼的最高有效位(最左邊)等同于格雷碼中相應(yīng)的最高有效位。
2,將所產(chǎn)生的每個(gè)二進(jìn)制碼位加下一個(gè)相鄰位置的格雷碼位,從而得到下一個(gè)二進(jìn)制位。舍去進(jìn)位。
例如格雷碼11011到二進(jìn)制數(shù)轉(zhuǎn)換如下,二進(jìn)制數(shù)是10010:
下面給出任意位寬的格雷碼轉(zhuǎn)二進(jìn)制verilog代碼:
總結(jié)
- 上一篇: 使用工具Android Studio实现
- 下一篇: Verilog——格雷码和二进制码转换的