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

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

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

3天內(nèi)不再提示

異步FIFO設計之格雷碼

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

相鄰的格雷碼只有1bit的差異,因此格雷碼常常用于異步fifo設計中,保證afifo的讀地址(或?qū)懙刂罚┍粚?a href="http://m.xsypw.cn/tags/時鐘/" target="_blank">時鐘(或讀時鐘)采樣時最多只有1bit發(fā)生跳變。

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

需要注意的是:異步fifo中使用格雷碼無法避免亞穩(wěn)態(tài),它起到的作用是,即使發(fā)生了亞穩(wěn)態(tài),依舊能夠保證異步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.二進制轉(zhuǎn)格雷碼



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

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

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

2.格雷碼轉(zhuǎn)二進制




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

圖2:格雷碼轉(zhuǎn)2進制 首先需要強調(diào)一下異或操作的特點:

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




從二進制轉(zhuǎn)格雷碼也可以反推出格雷碼轉(zhuǎn)二進制的思路。

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

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

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

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



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

寫法3采用function函數(shù)實現(xiàn),不限制位寬,支持參數(shù)化。

//寫法 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 

審核編輯:湯梓紅

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

    關(guān)注

    3

    文章

    400

    瀏覽量

    44668
  • 格雷碼
    +關(guān)注

    關(guān)注

    2

    文章

    34

    瀏覽量

    13371
  • 異步FIFO
    +關(guān)注

    關(guān)注

    0

    文章

    20

    瀏覽量

    8531
  • FIFO設計
    +關(guān)注

    關(guān)注

    0

    文章

    7

    瀏覽量

    5033

原文標題:

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

收藏 人收藏

    評論

    相關(guān)推薦
    熱點推薦

    什么是

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

    簡介及格與二進制的轉(zhuǎn)換程序

    簡介及格與二進制的轉(zhuǎn)換程序
    發(fā)表于 04-22 09:00

    什么是BCD、8421、余三

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

    介紹

    介紹
    發(fā)表于 08-14 09:44

    詳細討論異步FIFO的具體實現(xiàn)???

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

    的規(guī)則和應用問題?

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

    異步FIFO的VHDL設計

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

    簡介及格與二進制的轉(zhuǎn)換程序

    簡介及格與二進制的轉(zhuǎn)換程序
    發(fā)表于 01-16 11:52 ?5256次閱讀

    運算研究

    運算研究 在數(shù)字系統(tǒng)中只能識別0和1,各種數(shù)據(jù)要轉(zhuǎn)換為二進制代碼才能進行處理,是一
    發(fā)表于 03-18 14:07 ?1531次閱讀

    循環(huán)VHDL源程序

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

    辨析

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

    編碼規(guī)則_有什么規(guī)律

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

    如何把二進制轉(zhuǎn)換為是如何判斷讀空寫滿呢?

    在傳遞讀寫時鐘域的指針使用來傳遞,如何把二進制轉(zhuǎn)換為
    的頭像 發(fā)表于 09-15 09:38 ?8639次閱讀
    如何把二進制轉(zhuǎn)換為<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空狀態(tài)判斷(同步后的寫地址一定
    的頭像 發(fā)表于 08-04 14:05 ?4718次閱讀

    異步FIFO-

    很多人在面試時被問到為什么異步FIFO中需要用到,可能大部分的答案是
    的頭像 發(fā)表于 08-26 14:20 ?1250次閱讀
    <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>
    主站蜘蛛池模板: 国产精品国产三级国产普通话对白 | 天天射天天爱天天干 | 一本一本大道香蕉久在线精品 | 好硬好湿好爽再深一点h | 国产色网址| 国产精品色片 | 2019天天爱天天做 | 国产色产综合色产在线观看视频 | 欧美大片国产在线永久播放 | 精品久久香蕉国产线看观看亚洲 | 色视频免费观看 | 中文字幕av一区二区三区 | 婷婷开心激情 | 天天干天天色天天干 | 玖玖在线国产精品 | 天天躁夜夜躁狠狠躁 | chinese国产videoxx实拍 | 免费看美女毛片 | 美国一级毛片免费看成人 | 美女黄色毛片免费看 | 国产真实灌醉美女疯狂弄 | 亚洲成a人片在线观看中 | 四虎影视在线影院4hutv | 国产精品久久久精品视频 | 男人操女人免费网站 | 国产黄网站在线观看 | 一区卡二区卡三区卡视频 | 真实女人寂寞偷人视频 | 色婷婷激情 | 成人免费国产gav视频在线 | 色你懂的 | 很黄很色的网站 | 色天使色护士 | 日本三级欧美三级香港黄 | 精品国产三级在线观看 | 久久国产视频一区 | 色综合色| aaa在线观看高清免费 | 你懂的在线视频播放 | 色在线免费观看 | 国产亚洲精品久久久久久牛牛 |