色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

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

跨時(shí)鐘設(shè)計(jì):異步FIFO設(shè)計(jì)

sanyue7758 ? 來源:IC的世界 ? 2023-07-31 11:10 ? 次閱讀

1、異步FIFO

ASIC設(shè)計(jì)或者FPGA設(shè)計(jì)中,我們常常使用異步fifo(first in first out)(下文簡稱為afifo)進(jìn)行數(shù)據(jù)流的跨時(shí)鐘,可以說沒使用過afifo的Designer,其設(shè)計(jì)經(jīng)歷是不完整的。廢話不多說,直接上接口信號(hào)說明。

2、afifo接口信號(hào)說明

如下表格為常見的afifo接口信號(hào),非必須指的部分場景的afifo可能不存在此信號(hào)。不同公司對(duì)afifo接口的設(shè)計(jì)可能不一樣,但是基本都包含了如下接口:wr表示write,寫側(cè)時(shí)鐘域信號(hào),rd表示read,讀側(cè)時(shí)鐘域信號(hào)。

信號(hào)名稱 位寬 必要性 含義
almost_full 1 非必須 將滿信號(hào),1表示afifo快滿了,當(dāng)afifo的有效數(shù)量大于配置時(shí),置1
full 1 非必須 afifo滿信號(hào),1表示afifo已滿
empty 1 非必須 1表示
rd_data [DATA_WIDTH-1:0] 必須 有效數(shù)據(jù)
ovf_int 1 非必須 1表示上溢出,即afifo滿了還有數(shù)據(jù)寫入
udf_int 1 非必須 1表示下溢出,即afifo空了外部邏輯還產(chǎn)生了讀使能
data_count [ADDR_WIDTH:0] 非必須 afifo存儲(chǔ)的數(shù)據(jù)量
cfg_almost_full_value [ADDR_WIDTH:0] 非必須 將滿配置信號(hào),一般由配置寄存器模塊提供驅(qū)動(dòng)
wr_rst_n 1 必須 寫側(cè)復(fù)位
wr_clk 1 必須 寫側(cè)時(shí)鐘
wr_en 1 必須 寫使能,1表示有數(shù)據(jù)寫入
wr_data [DATA_WIDTH-1:0] 必須 寫數(shù)據(jù)
rd_rst_n 1 必須 讀時(shí)鐘與復(fù)位
rd_clk 1 必須 讀時(shí)鐘
rd_en 1 必須 讀使能

3、設(shè)計(jì)原理

為了方便描述,本章節(jié)將以深度為8的afifo進(jìn)行講解,其中讀寫地址位寬為3,格雷碼地址位寬為4。

7cc25bde-2ee5-11ee-815d-dac502259ad0.png

圖1 afifo結(jié)構(gòu)圖(來自eetop ThinkSpark)

7cedfa82-2ee5-11ee-815d-dac502259ad0.png

7d12f972-2ee5-11ee-815d-dac502259ad0.png

圖2:讀寫地址計(jì)算圖

(1)存儲(chǔ)模塊:

中間區(qū)域?yàn)閙emory存儲(chǔ)模塊,用于存儲(chǔ)數(shù)據(jù)data,要么是1R1W的ram,要么是普通的寄存器。項(xiàng)目自研代碼中,存儲(chǔ)模塊通常使用1R1W的ram,其需要memory生成器生成,需要與制造工藝匹配。而在soft IP中,針對(duì)小規(guī)格的afifo,為了方便,常常使用寄存器作為afifo的存儲(chǔ)。

(2)寫地址產(chǎn)生邏輯

寫地址waddr在wr_clk時(shí)鐘域產(chǎn)生,有兩個(gè)作用,作為存儲(chǔ)模塊的寫地址并且產(chǎn)生格雷碼waddr_gray。此種需要注意:waddr是遞增的,且會(huì)翻轉(zhuǎn)。如果afifo深度為8(n),則waddr位寬為3(log2(n) ),waddr計(jì)數(shù)到7后,再次寫入則翻轉(zhuǎn)為0。

(3)讀地址產(chǎn)生邏輯

讀地址raddr在rd_clk時(shí)鐘域產(chǎn)生,有兩個(gè)作用,作為存儲(chǔ)模塊的讀地址并且產(chǎn)生格雷碼raddr_gray。此種需要注意:raddr是遞增的,且會(huì)翻轉(zhuǎn)。如果afifo深度為8(n),則raddr位寬為3(log2(n) ),raddr計(jì)數(shù)到7后,再次讀出則翻轉(zhuǎn)為0。

(4)讀地址同步

使用2級(jí)或者3級(jí)單bit同步器Synchronizer將讀地址格雷碼raddr_gray同步到wr_clk時(shí)鐘域得到raddr_gray_sync,raddr_gray_sync進(jìn)行格雷碼逆轉(zhuǎn)成二進(jìn)制編碼得到raddr_sync,用于產(chǎn)生將滿信號(hào)和滿信號(hào)。

在fpga設(shè)計(jì)中,2級(jí)單bit同步器Synchronizer就是2個(gè)串聯(lián)的寄存器,在ASIC設(shè)計(jì)中,通常是定制的cell(會(huì)將兩個(gè)/三個(gè)寄存器擺放靠得很近)。

(5)寫地址同步器

使用2級(jí)或者3級(jí)單bit同步器Synchronizer將寫地址格雷碼waddr_gray同步到rd_clk時(shí)鐘域得到waddr_gray_sync,waddr_gray_sync進(jìn)行格雷碼逆轉(zhuǎn)成二進(jìn)制編碼得到waddr_sync,用于產(chǎn)生將空信號(hào)和空信號(hào)。

(6)滿信號(hào)產(chǎn)生邏輯

此模塊首先計(jì)算在wr_clk時(shí)鐘域的剩余可寫afifo深度,即wr_gap[3:0]=raddr_sync[2:0]+4’d8(FIFO深度)-waddr[2:0],然后根據(jù)wr_gap[3:0]產(chǎn)生amost_full和full信號(hào)

always @(posedge wr_clk or negedge wr_rst_n)
    if(~wr_rst_n)
        full <= 1'b0;
    else
        full <= (!(|wr_gap)) || ((wr_gap==1)&wr_en);
always @(posedge wr_clk or negedge wr_rst_n)
    if(~wr_rst_n) 
        begin
            almost_full <= 1'b0;
        end
    else
        begin
            if( wr_data_cnt>=cfg_almost_full_value )
                    almost_full <= 1'b1;
            else
                    almost_full <= almost_full;
        end

(7)空信號(hào)產(chǎn)生邏輯

此模塊首先計(jì)算在rd_clk時(shí)鐘域的可讀afifo深度,即assign {ovf_nc1,rd_gap} = waddr_sync - raddr,然后根據(jù)rd_gap[3:0]產(chǎn)生empty信號(hào)。

always @(posedge rd_clk or negedge rd_rst_n)
    if(~rd_rst_n)
        empty <= 1'b1;
    else 
        empty <= (!(|rd_gap)) || ((rd_gap==1)&rd_en);? ? ? ? ?

4、重點(diǎn)說明

(1)格雷碼的優(yōu)勢

格雷碼的特點(diǎn)就是在遞增,遞減,或者翻轉(zhuǎn)過程中,只會(huì)有1個(gè)bit位發(fā)生變化。因此單bit同步器Synchronizer同步后,只有存在變化的那一個(gè)bit可能會(huì)發(fā)生亞穩(wěn)態(tài)。即使發(fā)生了亞穩(wěn)態(tài),體現(xiàn)的結(jié)果要么是0,要么是1,在格雷碼上的同步效果就是當(dāng)前clk周期沒有同步(相當(dāng)于delay了一個(gè)目的周期)到或者當(dāng)前周期已采樣到。

同時(shí)它也有自己的局限性,那就是循環(huán)計(jì)數(shù)深度必須是2的n次冪(也可以不是2的n次冪哦),否則就失去了每次只變化一位的特性。深度為16的二進(jìn)制及格雷碼遞變表如下:

Binary Gray

0 0000 0000

1 0001 0001

2 0010 0011

3 0011 0010

4 0100 0110

5 0101 0111

6 0110 0101

7 0111 0100

8 1000 1100

9 1001 1101

10 1010 1111

11 1011 1110

12 1100 1010

13 1101 1011

14 1110 1001

15 1111 1000

0 0000 0000

(2)空信號(hào)計(jì)算方法的妙處

在rd_clk時(shí)鐘域計(jì)算可讀數(shù)據(jù)量以及empty信號(hào),看圖2會(huì)發(fā)現(xiàn),實(shí)際rd_gap永遠(yuǎn)小于等于真實(shí)可讀數(shù)據(jù)量,能夠保證empty為0時(shí)永遠(yuǎn)不會(huì)發(fā)生空讀現(xiàn)象,即afifo沒有數(shù)據(jù),也進(jìn)行了讀操作。

(3)滿信號(hào)計(jì)算方法的妙處

在wd_clk時(shí)鐘域計(jì)算可寫數(shù)據(jù)量以及full信號(hào),看圖2會(huì)發(fā)現(xiàn),實(shí)際wr_gap永遠(yuǎn)小于等于真實(shí)可寫數(shù)據(jù)量,能夠保證full為0時(shí)永遠(yuǎn)不會(huì)發(fā)生寫溢出現(xiàn)象,即full為0時(shí),afifo可能存在空閑位置。

(4)格雷碼轉(zhuǎn)二進(jìn)制代碼

function       [ADDR_WIDTH:0]   gray2bin;    //to change the gray code to bin code


   input       [ADDR_WIDTH:0]   gray_in;     //input gray code
   reg         [ADDR_WIDTH:0]   gray_code;   //reg gray 
   reg         [ADDR_WIDTH:0]   bin_code;    //bin code result
   integer i,j;                              //integer
   reg tmp;                                  //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
       gray2bin= bin_code;
   end
endfunction 

(5)二進(jìn)制轉(zhuǎn)格雷碼

always @(posedge rd_clk or negedge rd_rst_n)
    if(~rd_rst_n)
        raddr_gray  <= {(ADDR_WIDTH + 1){1'b0}};
    else
        raddr_gray  <= raddr ^ {1'b0,raddr[ADDR_WIDTH:1]};

5、結(jié)束語

Afifo代碼寫出來還不夠,還需要設(shè)置約束條件,后期我們會(huì)再講講afifo的格雷碼如何約束。

審核編輯:湯梓紅

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

    關(guān)注

    1643

    文章

    21975

    瀏覽量

    614446
  • asic
    +關(guān)注

    關(guān)注

    34

    文章

    1243

    瀏覽量

    122024
  • 接口
    +關(guān)注

    關(guān)注

    33

    文章

    8956

    瀏覽量

    153249
  • fifo
    +關(guān)注

    關(guān)注

    3

    文章

    400

    瀏覽量

    44635
  • 時(shí)鐘
    +關(guān)注

    關(guān)注

    11

    文章

    1885

    瀏覽量

    132873

原文標(biāo)題:

文章出處:【微信號(hào):處芯積律,微信公眾號(hào):處芯積律】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 0人收藏

    評(píng)論

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

    基于FPGA器件實(shí)現(xiàn)異步FIFO讀寫系統(tǒng)的設(shè)計(jì)

    異步 FIFO 讀寫分別采用相互異步的不同時(shí)鐘。在現(xiàn)代集成電路芯片中,隨著設(shè)計(jì)規(guī)模的不斷擴(kuò)大,一個(gè)系統(tǒng)中往往含有數(shù)個(gè)時(shí)鐘,多
    發(fā)表于 07-16 17:41 ?1338次閱讀
    基于FPGA器件實(shí)現(xiàn)<b class='flag-5'>異步</b><b class='flag-5'>FIFO</b>讀寫系統(tǒng)的設(shè)計(jì)

    關(guān)于異步fifo的安全問題:

    由于,如果異步fifo的雙口ram真的空了,而時(shí)鐘域延遲造成的rdempty仍然非空,則讀fifo的邏輯,就有可能根據(jù)rdempty信號(hào)(
    發(fā)表于 03-05 10:40

    使用Xilinx異步FIFO常見的坑

    FIFO是FPGA處理時(shí)鐘和數(shù)據(jù)緩存的必要IP,可以這么說,只要是任意一個(gè)成熟的FPGA涉及,一定會(huì)涉及到FIFO。但是我在使用異步
    發(fā)表于 02-04 06:23

    異步FIFO的設(shè)計(jì)分析及詳細(xì)代碼

    (每個(gè)數(shù)據(jù)的位寬) FIFO有同步和異步兩種,同步即讀寫時(shí)鐘相同,異步即讀寫時(shí)鐘不相同 同步FIFO
    發(fā)表于 11-15 12:52 ?8905次閱讀
    <b class='flag-5'>異步</b><b class='flag-5'>FIFO</b>的設(shè)計(jì)分析及詳細(xì)代碼

    基于FPGA的異步FIFO設(shè)計(jì)方法詳解

    在現(xiàn)代電路設(shè)計(jì)中,一個(gè)系統(tǒng)往往包含了多個(gè)時(shí)鐘,如何在異步時(shí)鐘間傳遞數(shù)據(jù)成為一個(gè)很重要的問題,而使用異步FIFO可以有效地解決這個(gè)問題。
    發(fā)表于 07-17 08:33 ?8607次閱讀
    基于FPGA的<b class='flag-5'>異步</b><b class='flag-5'>FIFO</b>設(shè)計(jì)方法詳解

    基于異步FIFO結(jié)構(gòu)原理

    在現(xiàn)代的集成電路芯片中,隨著設(shè)計(jì)規(guī)模的不斷擴(kuò)大,一個(gè)系統(tǒng)中往往含有數(shù)個(gè)時(shí)鐘。多時(shí)鐘域帶來的一個(gè)問題就是,如何設(shè)計(jì)異步時(shí)鐘之間的接口電路。異步
    發(fā)表于 02-07 14:22 ?0次下載
    基于<b class='flag-5'>異步</b><b class='flag-5'>FIFO</b>結(jié)構(gòu)原理

    關(guān)于一種面向異步FIFO的低開銷容錯(cuò)機(jī)制研究

    異步FIFO(Fist-In-First-Out)是一種先入先出的數(shù)據(jù)緩沖器[1]。由于可以很好地解決時(shí)鐘域問題和不同模塊之間的速度匹配問題,而被廣泛應(yīng)用于全局
    的頭像 發(fā)表于 06-19 15:34 ?3449次閱讀
    關(guān)于一種面向<b class='flag-5'>異步</b><b class='flag-5'>FIFO</b>的低開銷容錯(cuò)機(jī)制研究

    如何解決異步FIFO時(shí)鐘域亞穩(wěn)態(tài)問題?

    時(shí)鐘域的問題:前一篇已經(jīng)提到要通過比較讀寫指針來判斷產(chǎn)生讀空和寫滿信號(hào),但是讀指針是屬于讀時(shí)鐘域的,寫指針是屬于寫時(shí)鐘域的,而異步
    的頭像 發(fā)表于 09-05 14:29 ?6283次閱讀

    Xilinx異步FIFO的大坑

    FIFO是FPGA處理時(shí)鐘和數(shù)據(jù)緩存的必要IP,可以這么說,只要是任意一個(gè)成熟的FPGA涉及,一定會(huì)涉及到FIFO。但是我在使用異步
    發(fā)表于 03-12 06:01 ?12次下載
    Xilinx<b class='flag-5'>異步</b><b class='flag-5'>FIFO</b>的大坑

    異步FIFO之Verilog代碼實(shí)現(xiàn)案例

    同步FIFO的意思是說FIFO的讀寫時(shí)鐘是同一個(gè)時(shí)鐘,不同于異步FIFO
    發(fā)表于 11-01 09:58 ?1936次閱讀

    異步fifo詳解

    和寫入數(shù)據(jù)(對(duì)于大型數(shù)據(jù)存儲(chǔ),在性能上必然緩慢),其數(shù)據(jù)地址是由內(nèi)部讀寫指針自動(dòng)加一完成的,不能像普通的存儲(chǔ)器一樣,由地址線決定讀取或者寫入某個(gè)特定地址的數(shù)據(jù),按讀寫是否為相同時(shí)鐘域分為同步和異步FIFO,這里主要介紹
    的頭像 發(fā)表于 12-12 14:17 ?4765次閱讀

    Verilog電路設(shè)計(jì)之單bit時(shí)鐘域同步和異步FIFO

    FIFO用于為匹配讀寫速度而設(shè)置的數(shù)據(jù)緩沖buffer,當(dāng)讀寫時(shí)鐘異步時(shí),就是異步FIFO。多bit的數(shù)據(jù)信號(hào),并不是直接從寫
    發(fā)表于 01-01 16:48 ?1518次閱讀

    FIFO設(shè)計(jì)—異步FIFO

    異步FIFO主要由五部分組成:寫控制端、讀控制端、FIFO Memory和兩個(gè)時(shí)鐘同步端
    發(fā)表于 05-26 16:17 ?1825次閱讀
    <b class='flag-5'>FIFO</b>設(shè)計(jì)—<b class='flag-5'>異步</b><b class='flag-5'>FIFO</b>

    同步FIFO異步FIFO的區(qū)別 同步FIFO異步FIFO各在什么情況下應(yīng)用

    簡單的一種,其特點(diǎn)是輸入和輸出都與時(shí)鐘信號(hào)同步,當(dāng)時(shí)鐘到來時(shí),數(shù)據(jù)總是處于穩(wěn)定狀態(tài),因此容易實(shí)現(xiàn)數(shù)據(jù)的傳輸和存儲(chǔ)。 而異步FIFO則是在波形的上升沿和下降沿上進(jìn)行處理,在輸入輸出端口處
    的頭像 發(fā)表于 10-18 15:23 ?2062次閱讀

    同步FIFO異步FIFO區(qū)別介紹

    ,并且間隔時(shí)間長,也就是突發(fā)寫入。那么通過設(shè)置一定深度的FIFO,可以起到數(shù)據(jù)暫存的功能,且使得后續(xù)處理流程平滑。 時(shí)鐘域的隔離:主要用異步FIFO。對(duì)于不同
    的頭像 發(fā)表于 06-04 14:27 ?2547次閱讀
    同步<b class='flag-5'>FIFO</b>和<b class='flag-5'>異步</b><b class='flag-5'>FIFO</b>區(qū)別介紹
    主站蜘蛛池模板: 囯产精品久久久久免费蜜桃 | 国产亚洲精品在浅麻豆 | 免费A级毛片无码鲁大师 | 成熟YIN荡美妞A片视频麻豆 | 成人片在线播放 | 欧美又粗又长又大AAAA片 | 久久久中日AB精品综合 | 国产精品69人妻无码久久 | 国产亚洲精品精华液 | 日本xxxxxx片免费播放18 | 日本中文字幕巨大的乳专区 | 免费成年人在线视频 | 色多多污污在线播放免费 | 久久久久毛片免费观看 | 国产精品无码亚洲区艳妇 | 国产欧美日韩精品a在线观看高清 | 鲁一鲁亚洲无线码 | 亚洲精品乱码一区二区三区 | 免费看黄软件 | 秋霞伦理高清视频在线 | 国产精品青青在线麻豆 | 久久国产精品福利影集 | 亚洲中文字幕在线第六区 | 99精品视频在线 | 久久国产精品无码视欧美 | 浪潮色诱AV久久久久久久 | 97超级碰久久久久香蕉人人 | 一个人的视频全免费在线观看www | 97免费视频观看 | 亚洲人成网站在线观看90影院 | 最近免费中文字幕大全免费 | 蜜桃传媒在线观看 | 日韩人妻无码精品-专区 | 国产精品福利片 | 久久亚洲精品专区蓝色区 | 99婷婷久久精品国产一区二区 | 色欲档案之麻雀台上淫 | 欧美一级成人影院免费的 | 国内精品久久影视免费 | 亚洲欧美国产旡码专区 | 天美麻豆成人AV精品 |

    電子發(fā)燒友

    中國電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會(huì)員交流學(xué)習(xí)
    • 獲取您個(gè)性化的科技前沿技術(shù)信息
    • 參加活動(dòng)獲取豐厚的禮品