異步FIFO格雷碼與空滿

異步FIFO格雷碼與空滿


在傳遞讀寫時鐘域的指針使用格雷碼來傳遞,如何把二進制轉換為格雷碼,格雷碼是如何判斷讀空寫滿呢?

二進制碼轉換成二進制格雷碼,其法則是保留二進制碼的最高位作為格雷碼的最高位,而次高位格雷碼為二進制碼的高位與次高位相異或,而格雷碼其餘各位與次高位的求法相類似。

異步FIFO格雷碼與空滿

這樣就可以實現二進制到格雷碼的轉換了,總結就是移位並且異或,verilog代碼實現就一句:assign wgraynext = (wbinnext>>1) ^ wbinnext。

異步FIFO格雷碼與空滿

因為格雷碼與二進制計數的有區別,我們可以得出以下的結論:

當高2bit的相反,後幾位的bit相同時,寫滿;

當寫指針等於讀指針時,讀空。

異步FIFO格雷碼與空滿

原文地址:卿萃科技FPGA極客空間 微信公眾號


分享到:


相關文章: