在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

異步FIFO設計之格雷碼

ruikundianzi ? 來源:IC的世界 ? 2023-11-01 17:37 ? 次閱讀

相鄰的格雷碼只有1bit的差異,因此格雷碼常常用于異步fifo設計中,保證afifo的讀地址(或寫地址)被寫時鐘(或讀時鐘)采樣時最多只有1bit發生跳變。

在不考慮路徑延時的情況下,因為源數據(讀寫地址)只有1bit變化,即使發生了亞穩態,最終的結果相當于被目的時鐘延遲一拍采樣。

需要注意的是:異步fifo中使用格雷碼無法避免亞穩態,它起到的作用是,即使發生了亞穩態,依舊能夠保證異步fifo的功能正確

10進制 二進制 格雷碼
0 000 000
1 001 001
2 010 011
3 011 010
4 100 110
5 101 111
6 110 101
7 111 100

1.二進制轉格雷碼



47432c84-7898-11ee-939d-92fbcf53809c.png 圖1:二進制轉格雷碼

如圖所示,二進制轉格雷碼實現簡單,二進制數據右移1bit,高位補零后與自身進行位異或得到格雷碼。代碼實現如下:waddr為二進制寫地址,waddr_gray為對應的寫地址格雷碼

assign waddr_gray[ADDR_WDTH:0]=waddr[ADDR_WDTH:0] ^ {1’b0,waddr[ADDR_WDTH:1] }; 

2.格雷碼轉二進制




4761a06a-7898-11ee-939d-92fbcf53809c.png

圖2:格雷碼轉2進制 首先需要強調一下異或操作的特點:

A、B、C為1bit二進制整數,假設等式為A^B==C,那么已知B和C的情況下,可以通過A==B^C求得A數值。此處可以使用窮舉法嘗試一下,只有4種情況。




從二進制轉格雷碼也可以反推出格雷碼轉二進制的思路。

首先:最高bit位是相等的,b7等于g7。

因為g6==b7^b6,根據異或特性(由A^B==C得到A==B^C),可得知b6=b7^g6,即b6=g7^g6

因為g5==b5^b6,根據異或特性,可得知b5=g5^b6,即b5=g5^g6^g7

依次類推:b0=g0^g1^g2^g3^g4^g6^g7



在如下Verilog代碼實現中,我們提供了3種寫法。
寫法1和寫法2都是已知確定位寬的情況下,實現格雷碼轉二進制碼,不利于參數化。

寫法3采用function函數實現,不限制位寬,支持參數化。

//寫法 1


assign bin_code[0]=gray_code[0]^gray_code[1]^gray_code[2]^gray_code[3] ;
assign bin_code[1]=gray_code[1]^gray_code[2]^gray_code[3] ;
assign bin_code[2]=gray_code[2]^gray_code[3] ;
assign bin_code[3]=gray_code[3] ;




//寫法2
assign bin_code = {gray_code[3], ^gray_code[3:2], ^gray_code[3:1], ^gray_code};






//寫法3:
function       [ADDR_WIDTH:0]   bin_out;    
   input       [ADDR_WIDTH:0]   gray_in;    
   reg         [ADDR_WIDTH:0]   gray_code;  
   reg         [ADDR_WIDTH:0]   bin_code;   
   integer i,j;                             
   reg tmp;                                 
   begin
       gray_code = gray_in;
       for(i=0;i<=ADDR_WIDTH;i=i+1)
           begin
           tmp=1'b0;
           for(j=i;j<=ADDR_WIDTH;j=j+1)
              tmp=gray_code[j]^tmp;
           bin_code[i]=tmp;
           end
       bin_out= bin_code;
   end
endfunction 

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • fifo
    +關注

    關注

    3

    文章

    390

    瀏覽量

    43891
  • 格雷碼
    +關注

    關注

    2

    文章

    34

    瀏覽量

    13234
  • 異步FIFO
    +關注

    關注

    0

    文章

    20

    瀏覽量

    8413
  • FIFO設計
    +關注

    關注

    0

    文章

    7

    瀏覽量

    4985

原文標題:

文章出處:【微信號:IP與SoC設計,微信公眾號:IP與SoC設計】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    什么是

    (Gray code),又叫循環二進制或反射二進制 在數字系統中只能識別0和1,各種數據要轉換為二進制代碼才能進行處理,
    發表于 11-11 09:34 ?7433次閱讀
    什么是<b class='flag-5'>格</b><b class='flag-5'>雷</b><b class='flag-5'>碼</b>

    簡介及格與二進制的轉換程序

    簡介及格與二進制的轉換程序
    發表于 04-22 09:00

    什么是BCD、8421、余三

    的是8421BCD,無權用得較多的是余三,我們通常所說的BCD
    發表于 11-03 17:36

    介紹

    介紹
    發表于 08-14 09:44

    詳細討論異步FIFO的具體實現???

    我在網上看到一篇利用來設計異步FIFO,但是看他們寫的一些源碼,小弟有些不是很理解,在設計時為什么會出現Waddr和wptr兩個關于寫
    發表于 05-19 11:04

    的規則和應用問題?

    今天看到一個計數的程序,搜了下定義,覺得還是云里霧里,定義寫的是若任意兩個相鄰的代碼只有一位二進制數不同,則這種編碼為
    發表于 08-20 14:41

    異步FIFO的VHDL設計

    給出了一個利用對地址編碼的羿步FIFO 的實現方法,并給出了VHDL 程序,以解決異步讀寫時鐘引起的問題。
    發表于 07-16 15:15 ?26次下載

    簡介及格與二進制的轉換程序

    簡介及格與二進制的轉換程序
    發表于 01-16 11:52 ?5064次閱讀

    運算研究

    運算研究 在數字系統中只能識別0和1,各種數據要轉換為二進制代碼才能進行處理,是一
    發表于 03-18 14:07 ?1484次閱讀

    循環VHDL源程序

    我們知道計數的特點就是相鄰的碼字只有一個比特不同,那么我們在設計計數時找到這個比特取
    發表于 11-11 09:32 ?2127次閱讀

    辨析

    討論了Gray Code 的由來,剖析了關于的一些不合理說法,明確了其正宗的發明者應該是弗蘭克·,正確的英文名稱是Gray Cod
    發表于 11-28 16:04 ?5797次閱讀
    <b class='flag-5'>格</b><b class='flag-5'>雷</b><b class='flag-5'>碼</b>辨析

    編碼規則_有什么規律

    典型的二進制簡稱,因1953年公開的弗蘭克·
    的頭像 發表于 03-02 14:29 ?5.6w次閱讀
    <b class='flag-5'>格</b><b class='flag-5'>雷</b><b class='flag-5'>碼</b>編碼規則_<b class='flag-5'>格</b><b class='flag-5'>雷</b><b class='flag-5'>碼</b>有什么規律

    如何把二進制轉換為是如何判斷讀空寫滿呢?

    在傳遞讀寫時鐘域的指針使用來傳遞,如何把二進制轉換為
    的頭像 發表于 09-15 09:38 ?8399次閱讀
    如何把二進制轉換為<b class='flag-5'>格</b><b class='flag-5'>雷</b><b class='flag-5'>碼</b>?<b class='flag-5'>格</b><b class='flag-5'>雷</b><b class='flag-5'>碼</b>是如何判斷讀空寫滿呢?

    異步FIFO的原因有哪些

    異步FIFO通過比較讀寫地址進行滿空判斷,但是讀寫地址屬于不同的時鐘域,所以在比較之前需要先將讀寫地址進行同步處理,將寫地址同步到讀時鐘域再和讀地址比較進行FIFO空狀態判斷(同步后的寫地址一定
    的頭像 發表于 08-04 14:05 ?4487次閱讀

    異步FIFO-

    很多人在面試時被問到為什么異步FIFO中需要用到,可能大部分的答案是
    的頭像 發表于 08-26 14:20 ?1046次閱讀
    <b class='flag-5'>異步</b><b class='flag-5'>FIFO</b>-<b class='flag-5'>格</b><b class='flag-5'>雷</b><b class='flag-5'>碼</b>
    主站蜘蛛池模板: 91青草视频 | 国产一级特黄aa大片免费 | 国产在线欧美精品卡通动漫 | 日本黄色一级大片 | 日韩黄色成人 | 爱爱免费视频 | 五月天婷婷电影 | 国产精品午夜高清在线观看 | 精品一区二区三区在线视频 | 天天射天天干天天操 | 欧美三级日韩三级 | 欧美网站在线 | 欧美网站视频 | 成人丁香乱小说 | 欧美不卡一区 | 色老二精品视频在线观看 | 成人av在线电影 | 免费一级黄 | 亚欧洲乱码专区视频 | 俺来也俺来也天天夜夜视频 | 91大神在线观看精品一区 | 最色成人网 | 亚洲综合激情另类专区 | 国产黄色小视频网站 | 看片在线 | 午夜精品久久久久久久2023 | 手机看片自拍 | 男女爱爱视频免费 | 谁有毛片网站 | 三级在线观看 | 久久aa毛片免费播放嗯啊 | 亚洲成人看片 | 成年网站在线看 | 久久婷婷国产一区二区三区 | 亚洲毛片网 | 日韩精品免费一区二区三区 | 久久久久88色偷偷免费 | 久久99国产亚洲高清观看首页 | 国产三级在线免费 | 亚洲成人www | 日本边添边爱边摸边做边爱 |