格雷碼(Grey Code)生成規則


(1)

Grey碼在FPGA實際應用中是實用的碼,在8421BCD碼累加計數器中,如果寄存器需要發生多位(兩位或者以上)的跳變,會出現中間態,這樣作為組合邏輯的輸入是不穩妥的。

下面看兩個中間態的例子

 

這是累加器的狀態轉換時序觀察,存在中間不希望的狀態。如果作為組合邏輯的輸入,狀態有可能跑飛。

左邊0111 -> 0101 -> 1000,右邊0101 -> 0111 -> 0110

 

(2)

采用格雷碼可以避免中間態的出現,因為相鄰兩個狀態之間只有1 bit差異。

下面是8421BCD碼(自然計數碼)和格雷碼的對應關系,以3bit為例:

        自然碼    0    1       2     3     4   5    6    7

     自然碼二進制  000   001  010  011   100  100   101   111

  格雷碼對應的十進制    0    1    3   2    6    7    5    4

        格雷碼  000   001  011  010   110   111   101   100

在百度百科上面看到了這個圖片,發現了規律

對於這個4 bit格雷碼,我們發現最高位(g3)在組群前一半是0,后一半是1,非常整齊。而且非最高位(g2,g1,g0)組成的狀態關於黃線對稱,比如離黃線最近的g2g1g0都是100,再遠一位是101,。。。最遠一位是000。

按照這個規則,我們可以由n長度的格雷碼生成n+1長度的格雷碼。

 

- - 附錄 - -

把這個圖倒過來,看到白色藍色的方塊圖案

我們發現格雷碼的方塊圖案關於紅線是軸對稱的(除了最高位g3),

8421BCD碼的方塊圖案關於紅線是取反軸對稱的(除了最高位d3)。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM