精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

3天內不再提示

FIFO IP核報Memory Collision Error on RAMB36E1解決方案

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

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

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

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

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

圖片

之所以說不是錯誤而是警告,是因為這個提示并沒有影響最終的結果。仿真依舊在運行,直到結束。

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

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

  • WRITE_FIRST: 寫入的數據會馬上出現在數據輸出端口
  • READ_FIRST: 寫入數據的同時,數據輸出端口的數據還是該地址保存的前一個數據
  • NO_CHANGE: 在寫入數據的時候,數據輸出端口的數據會一直保持前一次讀出的數據不變。

最后,官方給出了避免Conflict的建議。雖然,FIFO內部確實使用了Block RAM,但Xilinx對其加密了,無法看到內部的實現細節;官方應該不至于在FIFO Block RAM的設置上有這種錯誤,感覺問題并不是出現在這。

把FIFO單獨拿出來做仿真測試時,卻怎么也無法復原這個BUG。于是找到參考資料3(FIFO IP核手冊),在Reset相關章節發現了一點玄機。

圖片

FIFO Asynchronous Reset Timing Without Safety Circuit

在異步FIFO里,只能選擇異步復位,而FIFO內部會把輸入的異步復位信號同步到各自的時鐘域;根據上圖,復位信號拉低后,還是有一段時間不能對FIFO有讀寫操作,那么怎么知道是哪段時間呢。IP核的設置里面,可以設置在復位狀態下,FULL的輸出狀態,設置為1,這樣就可以根據FULL防止寫入,復位后EMPTY為1,也可以防止讀取。

圖片

而在我對FIFO的操作中,我好心的把異步復位信號同步到RD時鐘域下,然后輸入到FIFO的RST端口,但是卻沒有注意到這個地方。

我取消了異步復位信號的同步,直接輸入到FIFO的RST,復位與寫使能之間的時間隔得足夠長,警告果然消失了。

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

圖片

FIFO Asynchronous Reset Timing With Safety Circuit

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

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

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

    關注

    9

    文章

    428

    瀏覽量

    26489
  • RAM
    RAM
    +關注

    關注

    8

    文章

    1367

    瀏覽量

    114541
  • FIFO存儲
    +關注

    關注

    0

    文章

    103

    瀏覽量

    5965
  • RST
    RST
    +關注

    關注

    0

    文章

    31

    瀏覽量

    7382
  • BRAM
    +關注

    關注

    0

    文章

    41

    瀏覽量

    10942
收藏 人收藏

    評論

    相關推薦

    Distributed Memory Generator IP簡介

    Distributed Memory Generator IP 采用 LUT RAM 資源創建各種不同的存儲器結構。IP可用來創建只讀存儲器 (ROM)、單端口隨機存取存儲器 (RA
    的頭像 發表于 11-17 17:00 ?1817次閱讀
    Distributed <b class='flag-5'>Memory</b> Generator <b class='flag-5'>IP</b><b class='flag-5'>核</b>簡介

    #硬聲創作季 #FPGA FPGA-27-04 Quartus中fifo IP介紹與仿真測試-1

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

    implement時資源不夠的錯誤(新人求助)

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

    Vivado 2013.4中的高扇出網怎么確定得到了優化?

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

    映射錯誤RAMB36E1

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

    請問DRC RTSTAT-1FIFO生成器的部分沖突應該如何解決?

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

    VIVADO的籌碼鏡內存損壞

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

    X_RAMB18E1上的ISim致命錯誤

    X_RAMB18E1.vhd中:prcs_clk 致命錯誤:ISim:該應用程序發現了一種無法恢復的特殊情況。流程將終止。要搜索此問題的可能解決方案,請訪問Xilinx答案數據庫,訪問http
    發表于 04-02 08:42

    RAMB36E1上運行低電平如何強制設計使用RAMB18E1?

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

    花費太多時間在vivado中運行實現怎么縮短時間?

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

    間通信(IPC)解決方案

    是Mailbox的工作方式。 TDA4VM的IPC方案,基于Mailbox的實現的方式的不同,常用的間通信方式有兩種。 基于RPMSG的間通信解決方案,適合小塊數據消息傳遞。基于S
    發表于 11-03 07:26

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

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

    講解幾點關于FIFO IP使用時的注意事項

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

    如何在Vivado中配置FIFO IP

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

    LogiCORE IP AXI4-Stream FIFO內核解決方案

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