格雷码介绍与应用
學過晶體管知識的朋友們都知道,數據位跳變就相當于硬件電路中的晶體管翻轉。
許多位同時跳變就相當于多個晶體管同時翻轉,會導致電路中出現很大的尖峰電流脈沖,從而導致數據不穩定。
格雷碼(Gray Code)不同于我們常用的二進制編碼,它只是一種無權碼,連算術編碼都算不上。
其重要特征是一個數變為相鄰的另一個數時,只有一個數據位發生跳變,由于這種特點,就可以避免電路中出現亞穩態而導致數據錯誤。
簡而言之,格雷碼的一位改變特征減小了電路出錯概率,實際很多場合也用到了格雷碼。
下表舉例了4位格雷碼、4位二進制碼以及十進制碼的對應關系:
二進制到格雷碼轉換的固定規律為:
1,格雷碼中的最高有效位(最左邊)等同于二進制數中相應的最高有效位。
2,從左到右,加上每一對相鄰的二進制編碼位,從而得到下一個格雷碼位,舍去進位。
例如二進制數10110到格雷碼的轉換如下,格雷碼是11101:
? ? ? ? ?? ? ? ? ? ? ? ?
下面給出任意位寬的二進制轉格雷碼verilog代碼:
格雷碼到二進制轉換的固定規律為:
1,二進制碼的最高有效位(最左邊)等同于格雷碼中相應的最高有效位。
2,將所產生的每個二進制碼位加下一個相鄰位置的格雷碼位,從而得到下一個二進制位。舍去進位。
例如格雷碼11011到二進制數轉換如下,二進制數是10010:
下面給出任意位寬的格雷碼轉二進制verilog代碼:
總結
- 上一篇: 使用工具Android Studio实现
- 下一篇: 如何使用notepad运行python程