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

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

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

FIFO IP核報(bào)Memory Collision Error on RAMB36E1解決方案

冬至配餃子 ? 來源:Bug記錄 ? 作者:woodfan ? 2023-06-19 14:56 ? 次閱讀

以前很少用到仿真,這次在仿真的過程中,遇到了某個(gè)警告,于是轉(zhuǎn)過頭又去研究了FIFO中的Safety Circuit的作用。

FIFO在FPGA中用的很多,常用于做少量數(shù)據(jù)的緩存和同步數(shù)據(jù)時(shí)鐘域, 本文將介紹Memory Collision Error on RAMB36E1錯(cuò)誤及相應(yīng)的解決方案,其中涉及到Vivodo FIFO IP核的Safety Circuit設(shè)置。

事情是這樣的,在某個(gè)設(shè)計(jì)中,我需要用異步FIFO同步數(shù)據(jù)的時(shí)鐘域,在這個(gè)工程中,讀寫會(huì)持續(xù)進(jìn)行,雖然讀時(shí)鐘速率是寫時(shí)鐘速率的N倍,但是讀使能N個(gè)讀時(shí)鐘周期才會(huì)拉高一次,所以兩邊速率可以說是一致;在寫入一半的數(shù)據(jù)后,讀過程也開始了,兩邊一讀一寫,F(xiàn)IFO內(nèi)部的數(shù)據(jù)量不增不減。

在仿真的過程中,我遇到了下圖的仿真警告提示。

圖片

之所以說不是錯(cuò)誤而是警告,是因?yàn)檫@個(gè)提示并沒有影響最終的結(jié)果。仿真依舊在運(yùn)行,直到結(jié)束。

隨后搜集了一番資料,在參考資料1(AR34859)中,解決方案是對(duì)FIFO內(nèi)部的Block RAM,在雙端口模式下,使用WRITE_FIRST或NO_CHANGE模式;

在資料2(Xilinx Memeory Resource pdf)的17頁,介紹了Block RAM寫模式,幾種模式中,區(qū)別主要在

  • WRITE_FIRST: 寫入的數(shù)據(jù)會(huì)馬上出現(xiàn)在數(shù)據(jù)輸出端口
  • READ_FIRST: 寫入數(shù)據(jù)的同時(shí),數(shù)據(jù)輸出端口的數(shù)據(jù)還是該地址保存的前一個(gè)數(shù)據(jù)
  • NO_CHANGE: 在寫入數(shù)據(jù)的時(shí)候,數(shù)據(jù)輸出端口的數(shù)據(jù)會(huì)一直保持前一次讀出的數(shù)據(jù)不變。

最后,官方給出了避免Conflict的建議。雖然,F(xiàn)IFO內(nèi)部確實(shí)使用了Block RAM,但Xilinx對(duì)其加密了,無法看到內(nèi)部的實(shí)現(xiàn)細(xì)節(jié);官方應(yīng)該不至于在FIFO Block RAM的設(shè)置上有這種錯(cuò)誤,感覺問題并不是出現(xiàn)在這。

把FIFO單獨(dú)拿出來做仿真測(cè)試時(shí),卻怎么也無法復(fù)原這個(gè)BUG。于是找到參考資料3(FIFO IP核手冊(cè)),在Reset相關(guān)章節(jié)發(fā)現(xiàn)了一點(diǎn)玄機(jī)。

圖片

FIFO Asynchronous Reset Timing Without Safety Circuit

在異步FIFO里,只能選擇異步復(fù)位,而FIFO內(nèi)部會(huì)把輸入的異步復(fù)位信號(hào)同步到各自的時(shí)鐘域;根據(jù)上圖,復(fù)位信號(hào)拉低后,還是有一段時(shí)間不能對(duì)FIFO有讀寫操作,那么怎么知道是哪段時(shí)間呢。IP核的設(shè)置里面,可以設(shè)置在復(fù)位狀態(tài)下,F(xiàn)ULL的輸出狀態(tài),設(shè)置為1,這樣就可以根據(jù)FULL防止寫入,復(fù)位后EMPTY為1,也可以防止讀取。

圖片

而在我對(duì)FIFO的操作中,我好心的把異步復(fù)位信號(hào)同步到RD時(shí)鐘域下,然后輸入到FIFO的RST端口,但是卻沒有注意到這個(gè)地方。

我取消了異步復(fù)位信號(hào)的同步,直接輸入到FIFO的RST,復(fù)位與寫使能之間的時(shí)間隔得足夠長(zhǎng),警告果然消失了。

這里,再介紹另一種方法,選中上圖的Enable Safety Circuit,在Safety Circuit啟用下,時(shí)序圖又變成這樣:

圖片

FIFO Asynchronous Reset Timing With Safety Circuit

在復(fù)位后,需要等待WR_RST_BUSY從1到0后,才能進(jìn)行其他的操作(包括復(fù)位和寫);同理,讀取數(shù)據(jù)也需要等待RD_RST_BUSY從1到0。

此外,Enable Safety Circuit會(huì)同步FIFO內(nèi)部的BRAM輸入信號(hào)和輸出信號(hào),具體可以看看參考資料4(AR42571);文檔也提到了,復(fù)位信號(hào)最好保持MAX(3, C_SYNCHRONIZER_STAGE)個(gè)慢時(shí)鐘周期,兩次復(fù)位中間要間隔6個(gè)慢時(shí)鐘周期。

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

    關(guān)注

    9

    文章

    428

    瀏覽量

    26452
  • RAM
    RAM
    +關(guān)注

    關(guān)注

    8

    文章

    1352

    瀏覽量

    114386
  • FIFO存儲(chǔ)
    +關(guān)注

    關(guān)注

    0

    文章

    103

    瀏覽量

    5953
  • RST
    RST
    +關(guān)注

    關(guān)注

    0

    文章

    31

    瀏覽量

    7373
  • BRAM
    +關(guān)注

    關(guān)注

    0

    文章

    41

    瀏覽量

    10931
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Distributed Memory Generator IP簡(jiǎn)介

    Distributed Memory Generator IP 采用 LUT RAM 資源創(chuàng)建各種不同的存儲(chǔ)器結(jié)構(gòu)。IP可用來創(chuàng)建只讀存儲(chǔ)器 (ROM)、單端口隨機(jī)存取存儲(chǔ)器 (RA
    的頭像 發(fā)表于 11-17 17:00 ?1702次閱讀
    Distributed <b class='flag-5'>Memory</b> Generator <b class='flag-5'>IP</b><b class='flag-5'>核</b>簡(jiǎn)介

    #硬聲創(chuàng)作季 #FPGA FPGA-27-04 Quartus中fifo IP介紹與仿真測(cè)試-1

    fpgafifoIP
    水管工
    發(fā)布于 :2022年10月29日 02:28:30

    implement時(shí)資源不夠的錯(cuò)誤(新人求助)

    , please consider targeting a larger device.說的那些RAMB36/FIFO RAMB36E1 RAMB18 都是什么???求各路大神指導(dǎo)。。。
    發(fā)表于 01-29 11:21

    Vivado 2013.4中的高扇出網(wǎng)怎么確定得到了優(yōu)化?

    嗨,我正在使用vivado 2013.4并且在實(shí)現(xiàn)后從觸發(fā)器的Q引腳到180個(gè)負(fù)載(RAMB36E1上的ENBWREN引腳)獲得高扇出網(wǎng)絡(luò)。它符合時(shí)間,但是,我希望網(wǎng)絡(luò)能夠得到緩沖。1.有沒有
    發(fā)表于 10-18 14:28

    映射錯(cuò)誤RAMB36E1

    ; my_fifo_generated_with_coregen的屬性register_balancing:實(shí)體是“否”;它沒有解決問題。我假設(shè)問題來自RAMB36E1在coregen生成的FIFO中實(shí)例化,該RAM的輸入
    發(fā)表于 10-18 14:41

    請(qǐng)問DRC RTSTAT-1FIFO生成器的部分沖突應(yīng)該如何解決?

    /gf36e1_inst.sngfifo36e1/REGCE Conflicts with Site Pins: BRAM_L_X30Y45/BRAM_FIFO36_REGCEAREGCEL (RAMB36_X1Y9/REGCE
    發(fā)表于 10-31 16:26

    VIVADO的籌碼鏡內(nèi)存損壞

    顯示的信號(hào)。我也在實(shí)施過程中遇到了這個(gè)消息。[DRC 23-20]規(guī)則違規(guī)(REQP-1839)RAMB36異步控制檢查 -RAMB36E1 ........... inst_icon / U0
    發(fā)表于 11-06 11:44

    X_RAMB18E1上的ISim致命錯(cuò)誤

    X_RAMB18E1.vhd中:prcs_clk 致命錯(cuò)誤:ISim:該應(yīng)用程序發(fā)現(xiàn)了一種無法恢復(fù)的特殊情況。流程將終止。要搜索此問題的可能解決方案,請(qǐng)?jiān)L問Xilinx答案數(shù)據(jù)庫,訪問http
    發(fā)表于 04-02 08:42

    RAMB36E1上運(yùn)行低電平如何強(qiáng)制設(shè)計(jì)使用RAMB18E1?

    的245個(gè)97%特定功能利用率: RAMB36E1 / FIFO36E1s數(shù)量:416中的360 86% 僅使用RAMB36E1的數(shù)字:360 僅使用FIFO36E1的數(shù)字:0
    發(fā)表于 06-12 08:35

    花費(fèi)太多時(shí)間在vivado中運(yùn)行實(shí)現(xiàn)怎么縮短時(shí)間?

    %| + ------------------- + ------ + ------- + ----------- + ------- + | Block RAM Tile | 430 | 0 | 545 | 78.89 || RAMB36 / FIFO * | 429
    發(fā)表于 08-06 06:19

    間通信(IPC)解決方案

    是Mailbox的工作方式。 TDA4VM的IPC方案,基于Mailbox的實(shí)現(xiàn)的方式的不同,常用的間通信方式有兩種。 基于RPMSG的間通信解決方案,適合小塊數(shù)據(jù)消息傳遞?;赟
    發(fā)表于 11-03 07:26

    使用VCS仿真Vivado IP時(shí)遇到的問題及解決方案

    前年,發(fā)表了一篇文章《VCS獨(dú)立仿真Vivado IP的一些方法總結(jié)》(鏈接在參考資料1),里面簡(jiǎn)單講述了使用VCS仿真Vivado IP
    的頭像 發(fā)表于 08-29 14:41 ?2101次閱讀

    講解幾點(diǎn)關(guān)于FIFO IP使用時(shí)的注意事項(xiàng)

    FIFO?還是FIFO IP?這也需要寫總結(jié)嗎?太容易了吧。如果我是一個(gè)正在處于面試找工作中的年輕人,肯定關(guān)注的是如何手撕FIFO,這也是
    發(fā)表于 06-21 14:22 ?1327次閱讀
    講解幾點(diǎn)關(guān)于<b class='flag-5'>FIFO</b> <b class='flag-5'>IP</b><b class='flag-5'>核</b>使用時(shí)的注意事項(xiàng)

    如何在Vivado中配置FIFO IP

    Vivado IP提供了強(qiáng)大的FIFO生成器,可以通過圖形化配置快速生成FIFO IP。
    的頭像 發(fā)表于 08-07 15:36 ?3766次閱讀
    如何在Vivado中配置<b class='flag-5'>FIFO</b> <b class='flag-5'>IP</b><b class='flag-5'>核</b>

    LogiCORE IP AXI4-Stream FIFO內(nèi)核解決方案

    LogiCORE IP AXI4-Stream FIFO內(nèi)核允許以內(nèi)存映射方式訪問一個(gè)AXI4-Stream接口。該內(nèi)核可用于與AXI4-Stream IP接口,類似于LogiCORE IP
    的頭像 發(fā)表于 09-25 10:55 ?1269次閱讀
    LogiCORE <b class='flag-5'>IP</b> AXI4-Stream <b class='flag-5'>FIFO</b>內(nèi)核<b class='flag-5'>解決方案</b>