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

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

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

3天內不再提示

FIFO使用及其各條件仿真介紹

冬至子 ? 來源:FPGA開發備忘錄 ? 作者:小創 ? 2023-04-25 15:55 ? 次閱讀

1

定義

FIFO(First In First Out )先入先出存儲器,在FPG設計中常用于跨時鐘域的處理,FIFO可簡單分為同步FIFO和異步FIFO。同步FIFO可理解為讀寫時鐘同源且頻率相同的FIFO,異步FIFO為讀寫時鐘不同源,時鐘頻率不一樣的FIFO。

2

同步FIFO的仿真

該仿真基于XIlinx的fifo generator13.2進行設計,IP core的配置如下。

圖片

由圖所示,時鐘模式配置為common clock,FIFO深度為16,FIFO數據位寬為36bit,其中32bit為數據位寬,4bit為用戶自定義比特tuser。下圖為FIFO例化的IPcore。

圖片

理論情況下FIFO的數據傳輸時序如下

圖片

當復位拉高后,FIFO模塊若沒有滿,s_axis_tready信號會拉高,然后用戶將s_axis_valid信號拉高就可以向FIFO里面寫入有效的數據了,這就發起了寫操作;此時在主端口用戶可將m_axis_tready拉高,FIFO若不為空,則m_tvalid信號會拉高,此時就可以源源不斷的從FIFO里讀出數據了,這就發起了讀操作。

下面討論下在同步FIFO中的兩種情況

2.1 讀寫時鐘為100M,m_axis_tready在m_axis_tvaild后,此時的仿真圖如下所示。

圖片

由上圖所示,在用戶側還未將m_axis_tready拉高之前,valid到來后,FIFO輸出的數據就不為0了,而是FIFO中存入的第一個數據,一直到用戶將m_axis_tready拉高,才會輸出FIFO里的下一個數據。所以并不是我們理解的,只有用戶發起FIFO讀,FIFO才會輸出數據。

2.2 讀寫時鐘為100M,m_axis_tready在m_axis_tvaild前,此時的仿真圖如下所示。

圖片

由上圖所示,在FIFO的valid數據到來之前,我們先將tready拉高,這樣就不會在讀操作之前FIFO就吐出數據了。在做設計時,將復位拉高后,隨即將tready拉高即可。

3

** 異步FIFO的仿真**

做異步FIFO時,IPCORE的配置如下圖所示

圖片

時鐘模式配置為independent clock,FIFO深度為16,FIFO數據位寬為36bit,其中32bit為數據位寬,4bit為用戶自定義比特tuser。

理論情況下FIFO的數據傳輸時序如下

圖片

由上圖所示,讀速率是寫速率的1/2,因此寫不是連續的,讀速率是連續的。下面分幾個情況進行討論。

3.1 寫為100M讀為30.3M,m_trady在m_tvaild前

圖片

由上圖所示,寫數據也不連續,s_tready為周期性有效,切換周期和讀時鐘周期一樣,其中高電平時間為一個寫數據時鐘周期。

3.2 寫為50M讀為100M,m_trady在m_tvaild前

圖片

由上圖所示,此時讀數據不連續,m_tvalid為周期性有效,切換周期和寫時鐘周期一樣,其中高電平時間為一個讀數據時鐘周期。

4

對不同深度配置進行討論

4.1當FIFO深度為16時

圖片

由上圖可知,若讀數據不及時,比較滯后,則FIFO可以存入15個數據,當FIFO滿后,s_axis_tready拉低,不能繼續寫FIFO,當讀操作開始時,FIFO將從存入的第一個數據依次輸出。

4.2 當fifo為32時

圖片

由上圖可知,若讀數據不及時,比較滯后,則FIFO可以存入33個數據,當FIFO滿后,s_axis_tready拉低,不能繼續寫FIFO,當讀操作開始時,FIFO將從存入的第一個數據依次輸出。

5

在仿真時遇到的問題

圖片

在仿真時提示說t_user管腳找不到,但打開代碼和block_design看了下,該端口是存在的,后面把block_design刪掉,重新例化新模塊后,問題解決,目前不知道是什么問題導致。

6

激勵文件

`timescale 1ns / 1ps
module tb_fifo( );
reg [31:0] s_axis_tdata ; 
wire       s_axis_tready;
reg        s_axis_tvalid;
reg [3:0]  s_axis_tuser ;     
reg        m_aclk       ;      
reg        s_aclk       ;       
reg        s_aresetn    ;  
wire [31:0] m_axis_tdata ; 
reg         m_axis_tready;
wire        m_axis_tvalid;
wire [3:0]  m_axis_tuser ;


initial begin 
  s_aresetn = 1'b0;
  s_axis_tdata = 32'h0000_0001;
  s_axis_tvalid = 1'b0;
  m_aclk =1'b1;
  s_aclk =1'b1;
  s_axis_tuser = 4'b1010;
  #50
  s_aresetn = 1'b1;
  #10
  s_axis_tvalid = 1'b1;
end


initial begin
  m_axis_tready = 1'b0;
  #340
  m_axis_tready= 1'b1;
end
always #10 s_aclk = ~s_aclk;
always #5 m_aclk = ~m_aclk;


always @(posedge s_aclk) begin
  s_axis_tdata = s_axis_tdata +1'b1;
end


design_1_wrapper tb_design_fifo_wrapper (
  .S_AXIS_0_tdata (s_axis_tdata ),
  .S_AXIS_0_tready(s_axis_tready),
  .S_AXIS_0_tvalid(s_axis_tvalid),
  .S_AXIS_0_tuser (s_axis_tuser ),
  .m_aclk_0       (m_aclk       ),
  .s_aclk_0       (s_aclk       ),
  .s_aresetn_0    (s_aresetn    ),
  .M_AXIS_0_tdata (m_axis_tdata ),
  .M_AXIS_0_tready(m_axis_tready),
  .M_AXIS_0_tvalid(m_axis_tvalid),
  .M_AXIS_0_tuser (m_axis_tuser)
);
endmodule

圖片

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

    關注

    9

    文章

    428

    瀏覽量

    26489
  • 存儲器
    +關注

    關注

    38

    文章

    7455

    瀏覽量

    163623
  • FIFO存儲
    +關注

    關注

    0

    文章

    103

    瀏覽量

    5965
  • 時鐘源
    +關注

    關注

    0

    文章

    93

    瀏覽量

    15938
收藏 人收藏

    評論

    相關推薦

    Efinity FIFO IP仿真問題 -v1

    Efinity目前不支持聯合仿真,只能通過調用源文件仿真。 我們生成一個fifo IP命名為fifo_sim 在Deliverables中保留Testbench的選項。 在IP的生成目
    的頭像 發表于 10-21 11:41 ?869次閱讀
    Efinity <b class='flag-5'>FIFO</b> IP<b class='flag-5'>仿真</b>問題 -v1

    異步FIFO結構及FPGA設計

    首先介紹異步FIFO 的概念、應用及其結構,然后分析實現異步FIFO的難點問題及其解決辦法; 在傳統設計的基礎上提出一種新穎的電路結構并對其
    發表于 04-16 09:25 ?46次下載

    基于LPM的高速FIFO的設計

    利用參數可設置模塊庫(LPM)中的兆功能模塊,根據實際系統的需要,對其參數進行必要的調整設置,介紹了一個高速FIFO 存儲器的設計方法和步驟,給出了仿真結果,方便實用。
    發表于 09-02 09:33 ?26次下載

    異步FIFO結構

    設計一個FIFO是ASIC設計者遇到的最普遍的問題之一。本文著重介紹怎樣設計FIFO——這是一個看似簡單卻很復雜的任務。一開始,要注意,FIFO通常用于時鐘域的過渡,是雙時鐘設計
    發表于 10-15 08:44 ?94次下載

    高速異步FIFO的設計與實現

    本文主要研究了用FPGA 芯片內部的EBRSRAM 來實現異步FIFO 設計方案,重點闡述了異步FIFO 的標志信號——空/滿狀態的設計思路,并且用VHDL 語言實現,最后進行了仿真驗證。
    發表于 01-13 17:11 ?40次下載

    異步FIFO結構及FPGA設計

    摘要:首先介紹異步FIFO的概念、應用及其結構,然后分析實現異步FIFO的難點問題及其解決辦法;在傳統設計的基礎上提出一種新穎的電路結構并對
    發表于 06-20 12:46 ?3853次閱讀
    異步<b class='flag-5'>FIFO</b>結構及FPGA設計

    嵌入式 FIFO 數據傳輸系統設計

    本文以dMAX和EMIF接口的數據傳輸為例,介紹嵌入式FIFO的設計、配置及其使用。
    發表于 06-23 17:19 ?1204次閱讀
    嵌入式 <b class='flag-5'>FIFO</b> 數據傳輸系統設計

    SVPWM原理及其Simulink仿真

    SVPWM原理及其Simulink仿真
    發表于 04-15 17:49 ?71次下載

    基于FLASH的FIFO讀寫

    基于FLASH的FIFO讀寫,介紹的比較詳細,值得一讀。
    發表于 04-28 10:30 ?22次下載

    LED照明節電裝置的技術要求及其應用條件介紹

    本文介紹了照明節電裝置及其應用技術的條件分析。
    發表于 10-23 16:54 ?2次下載
    LED照明節電裝置的技術要求<b class='flag-5'>及其</b>應用<b class='flag-5'>條件</b>的<b class='flag-5'>介紹</b>

    以太網基礎介紹:MAC地址,FIFO, DMA

    介紹了STM32中以太網外設的特性:MAC地址,FIFO, DMA
    的頭像 發表于 07-03 05:04 ?7704次閱讀

    系統仿真及其Matlab實現

    系統仿真及其Matlab的實現方法介紹
    發表于 06-17 17:13 ?27次下載

    FIFO的使用介紹

    FIFO的使用非常廣泛,一般用于不同時鐘域之間的數據傳輸,或者用于不同數據寬度之間的數據匹配。在實際的工程應用,可以根據需要自己寫FIFO。不考慮資源的情況下,也可以使用Xilinx提供的IP核來完成。
    的頭像 發表于 08-14 10:49 ?5101次閱讀

    同步FIFO和異步FIFO的區別 同步FIFO和異步FIFO各在什么情況下應用

    同步FIFO和異步FIFO的區別 同步FIFO和異步FIFO各在什么情況下應用? 1. 同步FIFO和異步
    的頭像 發表于 10-18 15:23 ?1643次閱讀

    同步FIFO和異步FIFO區別介紹

    1. FIFO簡介 FIFO是一種先進先出數據緩存器,它與普通存儲器的區別是沒有外部讀寫地址線,使用起來非常簡單,缺點是只能順序讀寫,而不能隨機讀寫。 2. 使用場景 數據緩沖:也就是數據寫入過快
    的頭像 發表于 06-04 14:27 ?1360次閱讀
    同步<b class='flag-5'>FIFO</b>和異步<b class='flag-5'>FIFO</b>區別<b class='flag-5'>介紹</b>