女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

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

3天內不再提示

FIFO最小深度計算所有情況

FPGA之家 ? 來源:數(shù)字ICer ? 作者:數(shù)字ICer ? 2021-05-11 14:37 ? 次閱讀

由于平時我們工作中,F(xiàn)IFO都是直接調用IP核,對于FIFO深度選擇并沒有很在意,而在筆試面試過程中,經常被問及的問題之一就是如何計算FIFO深度。

當讀數(shù)據的速率小于寫數(shù)據的速率時,我們需要先將數(shù)據緩存下來,那么我們需要開多大的空間緩存這些數(shù)據呢?緩存開大了會浪費資源,開小了會丟失數(shù)據,如何去計算最小FIFO深度是本文的重點。

本文涵蓋了FIFO最小深度計算所有情況:

假如模塊A不間斷的往FIFO中寫數(shù)據,模塊B同樣不間斷的從FIFO中讀數(shù)據,不同的是模塊A寫數(shù)據的時鐘頻率要大于模塊B讀數(shù)據的時鐘頻率,那么在一段時間內總是有一些數(shù)據沒來得及被讀走,如果系統(tǒng)一直在工作,那么那些沒有被讀走的數(shù)據會越累積越多,那么FIFO的深度需要是無窮大的;

但是若寫操作是連續(xù)的數(shù)據流,那么再大的FIFO都無法保證數(shù)據不溢出。因此可以認為這種情況下寫數(shù)據的傳輸是“突發(fā)Burst”的,即寫操作并不連續(xù);

要確定FIFO的深度,關鍵在于計算出在突發(fā)讀寫這段時間內有多少個數(shù)據沒有被讀走。即FIFO的最小深度就等于沒有被讀走的數(shù)據個數(shù)。

Case1 fa》fb with no idle cycles in both write and read

即寫時鐘快于讀時鐘,寫和讀的過程中沒有空閑周期;

假設:

寫數(shù)據時鐘頻率fa=80MHz

讀數(shù)據時鐘頻率fb=50MHz

突發(fā)長度= number of data to be transferred = 120

在突發(fā)傳輸過程中,數(shù)據都是連續(xù)讀寫的

那么:

寫一個數(shù)據所需要的時間 = 1/80MHz = 12.5ns

突發(fā)傳輸中,寫完所有數(shù)據所需要的時間 = 120*12.5ns = 1500ns

讀一個數(shù)據所需要的時間 = 1/50MHz = 20ns

所以寫完所有的突發(fā)傳輸數(shù)據需要花費1500ns

在1500ns內能夠讀走的數(shù)據個數(shù) = 1500ns/20ns = 75

所以在1500ns內還沒有被讀走的數(shù)據個數(shù) = 120-75 = 45

因此FIFO的最小深度為45

Case2 fa》fb with two clock cycle delay between two successive read and write

即寫時鐘頻率大于讀時鐘頻率,但在讀寫的過程中存在空閑周期;

Case2在Case1的基礎上增加了一個假設,即讀比寫慢兩拍。這種假設是真正存在的,在異步FIFO設計中,我們需要去判斷FIFO的空滿來保證邏輯的正確性,判斷空滿標志需要去比較讀寫指針,而讀指針與寫指針處在不同的時鐘域中,我們需要采用格雷碼和兩級同步寄存器去降低亞穩(wěn)態(tài)的概率,而兩級同步必然會導致空滿標志位的判斷至少延遲2個cycle。對于空標志位來說,將寫指針同步到讀時鐘域至少需要花費2個時鐘,而在同步這段時間內有可能還會寫入新的數(shù)據,因此同步后的寫指針一定小于或等于(當且僅有同步時間內沒有新數(shù)據寫入的情況下才會等于)當前的寫指針,所以此時判斷不一定是真空;同理,對于滿標志位來說,將讀指針同步到讀時鐘域至少需要花費2個時鐘,而在同步這段時間內有可能還會讀出新的數(shù)據,因此同步后的讀指針一定小于或等于當前讀指針,所以此時判斷并不一定是真滿。

通過上述討論可以知道Case2的FIFO最小深度應該比場景1的FIFO最小深度45略大。

Case3 fa 》 fb with idle cycles in both write and read

即寫時鐘頻率大于讀時鐘頻率,但在讀寫的過程中存在空閑周期;

假設:

寫數(shù)據時鐘頻率fa=80MHz

讀數(shù)據時鐘頻率fb=50MHz

突發(fā)長度= number of data to be transferred = 120

連續(xù)寫入之間的空閑周期為1。

連續(xù)讀取之間的空閑周期為3。

那么:

兩個連續(xù)寫之間的空閑周期為1個時鐘周期。它的意思是,在寫入一個數(shù)據后,模塊A等待一個時鐘周期,開始下一個寫入。因此,可以理解為每兩個時鐘周期,一個數(shù)據被寫入;

兩個連續(xù)讀取之間的空閑周期為3個時鐘周期。即讀取一個數(shù)據后,B模塊等待3個時鐘周期,開始下一次讀取。因此,我們可以理解,每四個時鐘周期,讀取一個數(shù)據;

寫一個數(shù)據所需要的時間 = 2*1/80MHz = 25ns

突發(fā)傳輸中,寫完所有數(shù)據所需要的時間 = 120*25ns = 3000ns

讀一個數(shù)據所需要的時間 = 4*1/50MHz = 80ns

所以寫完所有的突發(fā)傳輸數(shù)據需要花費3000ns

在3000ns內能夠讀走的數(shù)據個數(shù) = 3000ns/80ns = 37.5

所以在3000ns內還沒有被讀走的數(shù)據個數(shù) = 120-37.5 = 82.5

因此FIFO的最小深度為83

Case4 fa 》 fb with duty cycles given for wr_enb and rd_enb.

即寫時鐘頻率大于讀時鐘頻率,給定wr_enb和rd_enb的占空比;

假設:

寫數(shù)據時鐘頻率fa=80MHz

讀數(shù)據時鐘頻率fb=50MHz

突發(fā)長度= number of data to be transferred = 120

寫使能信號占整個burst時間比重為1/2

讀使能信號占整個burst時間比重為1/4

那么:

此場景與前一個場景(場景3)沒有任何不同,因為在本例中,一個數(shù)據項將在2個時鐘周期內寫入,而一個數(shù)據項將在4個時鐘周期內讀取。

因此FIFO的最小深度也為83

Case5 fA 《 fB with no idle cycles in both write and read ( the delay between two consecutive writes and reads is one clock cycle)

即寫時鐘頻率小于讀時鐘頻率,且讀寫過程中沒有空閑周期;

假設:

寫數(shù)據時鐘頻率fa=30MHz

讀數(shù)據時鐘頻率fb=50MHz

突發(fā)長度= number of data to be transferred = 120

在突發(fā)傳輸過程中,數(shù)據都是連續(xù)讀寫的

那么:

由于讀數(shù)據比寫數(shù)據要快,這種情況下永遠也不會發(fā)生數(shù)據丟失的,因此FIFO只起到過時鐘域的作用,F(xiàn)IFO的最小深度為1即可;

Case6 fa 《 fb with idle cycles in both write and read(duty cycles of wr_enb and rd_enb can also be given in these type of questions)。

即寫時鐘頻率小于讀時鐘頻率,給定wr_enb和rd_enb的占空比;

假設:

寫數(shù)據時鐘頻率fa=40MHz

讀數(shù)據時鐘頻率fb=50MHz

突發(fā)長度= number of data to be transferred = 120

連續(xù)寫入之間的空閑周期為1。

連續(xù)讀取之間的空閑周期為3。

那么:

兩個連續(xù)寫之間的空閑周期為1個時鐘周期。它的意思是,在寫入一個數(shù)據后,模塊A等待一個時鐘周期,開始下一個寫入。因此,可以理解為每兩個時鐘周期,一個數(shù)據被寫入;

兩個連續(xù)讀取之間的空閑周期為3個時鐘周期。即讀取一個數(shù)據后,B模塊等待3個時鐘周期,開始下一次讀取。因此,我們可以理解,每四個時鐘周期,讀取一個數(shù)據;

寫一個數(shù)據所需要的時間 = 2*1/40MHz = 50ns

突發(fā)傳輸中,寫完所有數(shù)據所需要的時間 = 120*50ns = 6000ns

讀一個數(shù)據所需要的時間 = 4*1/50MHz = 80ns

所以寫完所有的突發(fā)傳輸數(shù)據需要花費6000ns

在6000ns內能夠讀走的數(shù)據個數(shù) = 6000ns/80ns = 75

所以在6000ns內還沒有被讀走的數(shù)據個數(shù) = 120-75 = 45

因此FIFO的最小深度為45

Case7 fA = fB with no idle cycles in both write and read ( the delay between two consecutive writes and reads is one clock cycle)。

即寫時鐘頻率等于讀時鐘頻率,且讀寫過程中沒有空閑周期;

假設:

寫數(shù)據時鐘頻率fa=50MHz

讀數(shù)據時鐘頻率fb=50MHz

突發(fā)長度= number of data to be transferred = 120

讀和寫都沒有空閑周期,這意味著突發(fā)中的所有項都將以連續(xù)的時鐘周期寫入和讀取

那么:

如果clkA和clkB之間沒有相位差,則不需要FIFO;

如果clkA和clkB之間存在相位差,深度“1”的FIFO就足夠了。

Case8 fA = fB with idle cycles in both write and read (duty cycles of wr_enb and rd_enb can also be given in these type of questions)。

即寫時鐘頻率等于讀時鐘頻率,給定wr_enb和rd_enb的占空比;

假設:

寫數(shù)據時鐘頻率fa=50MHz

讀數(shù)據時鐘頻率fb=50MHz

突發(fā)長度= number of data to be transferred = 120

連續(xù)寫入之間的空閑周期為1。

連續(xù)讀取之間的空閑周期為3。

那么:

兩個連續(xù)寫之間的空閑周期為1個時鐘周期。它的意思是,在寫入一個數(shù)據后,模塊A等待一個時鐘周期,開始下一個寫入。因此,可以理解為每兩個時鐘周期,一個數(shù)據被寫入;

兩個連續(xù)讀取之間的空閑周期為3個時鐘周期。即讀取一個數(shù)據后,B模塊等待3個時鐘周期,開始下一次讀取。因此,我們可以理解,每四個時鐘周期,讀取一個數(shù)據;

寫一個數(shù)據所需要的時間 = 2*1/50MHz = 40ns

突發(fā)傳輸中,寫完所有數(shù)據所需要的時間 = 120*40ns = 4800ns

讀一個數(shù)據所需要的時間 = 4*1/50MHz = 80ns

所以寫完所有的突發(fā)傳輸數(shù)據需要花費4800ns

在4800ns內能夠讀走的數(shù)據個數(shù) = 4800ns/80ns = 60

所以在4800ns內還沒有被讀走的數(shù)據個數(shù) = 120-60 = 60

因此FIFO的最小深度為60

Case9 如果數(shù)據速率如下所示

在前面幾種場景中,我們給的條件都是每隔幾個時鐘讀寫一次,這種周期性讀寫在實際中很常見。但是在工程設計中還存在這樣一種情形,只給出數(shù)據在一段時間內的讀寫速率,怎么讀寫完全隨機,這種情況我們需要考慮最壞的一種情況避免數(shù)據丟失。

對于最壞的情況,讀寫之間的數(shù)據速率差異應該是最大的。因此,對于寫操作,應該考慮最大數(shù)據速率,對于讀操作,應該考慮最小數(shù)據速率。

寫數(shù)據時鐘頻率fa=讀數(shù)據時鐘頻率fb

在寫時鐘周期內,每100個周期就有80個數(shù)據寫入FIFO

在讀時鐘周期內,每10個周期可以有8個數(shù)據讀出FIFO

以下是一些可能性:

d73f1736-b20b-11eb-bf61-12bb97331649.png

下面是從上圖中觀察到的情況:

d77b6d4e-b20b-11eb-bf61-12bb97331649.png

寫操作的最大數(shù)據速率在上表格中case - 4。(寫操作在最小的時間內完成)。因此,考慮case - 4來進行進一步的計算。

首先這里沒有給出數(shù)據的突發(fā)長度,從假設中可以得出每100個周期就有80個數(shù)據寫入FIFO,這里可能就有人會說突發(fā)長度就是80個數(shù)據,其實不是這樣的,因為數(shù)據是隨機寫入FIFO的,我們需要考慮做壞的情形,即寫速率最大的情形,只有如下圖背靠背的情形才是寫速率最高的情形,burst length為160;

在讀時鐘周期內,每10個周期可以有8個數(shù)據讀出FIFO;即一個周期可以寫入 8/10 數(shù)據

所以160個時鐘讀了160*8/10 = 128個數(shù)據;

考慮背靠背(20個clk不發(fā)數(shù)據+80clk發(fā)數(shù)據+80clk發(fā)數(shù)據+20clk不發(fā)數(shù)據的共200個clk)

因此FIFO的最小深度=160 - 128 = 32

總結

從上面分析來看,求FIFO的最小深度主要有以下要點:

在求解之前需要驗證一下在允許的最大時間長度內寫入的數(shù)據量是否等于讀出的數(shù)據量,保證有解;

求FIFO深度需要考慮最壞的情形,讀寫的速率應該相差最大,也就是說需要找出最大的寫速率和最小的讀速率;

不管什么場景,要確定FIFO的深度,關鍵在于計算出在突發(fā)讀寫這段時間內有多少個數(shù)據沒有被讀走;

由于FIFO空滿標志位的判斷延遲,在實際應用中需要預留一些余量。

下面我們來推導一下FIFO深度的求解公式,假設:

寫時鐘周期為clkw

讀時鐘周期為clkr

在讀時鐘周期內,每x個周期內可以有y個數(shù)據讀出FIFO,即讀數(shù)據的讀數(shù)率

在寫時鐘周期內,每m個周期內就有n個數(shù)據寫入FIFO

背靠背“的情形下是FIFO讀寫的最壞情形,burst長度 B = 2*n

由上得到:FIFO的最小深度為 B - B * (clkr/clkw) * (y/x)

原文標題:FIFO深度計算

文章出處:【微信公眾號:FPGA之家】歡迎添加關注!文章轉載請注明出處。

責任編輯:haq

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

    關注

    3

    文章

    400

    瀏覽量

    44612

原文標題:FIFO深度計算

文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    ADSD3500飛行時間深度成像信號處理器技術手冊

    徑向深度、有效亮度(AB)和秘密幀。ADSD3500支持全深計算、有效亮度和秘密數(shù)據,以實現(xiàn)640x480分辨率,支持部分深度計算(前期展開),以實現(xiàn)1024x1024分辨率。使用集成式ARM
    的頭像 發(fā)表于 05-08 09:43 ?150次閱讀
    ADSD3500飛行時間<b class='flag-5'>深度</b>成像信號處理器技術手冊

    智多晶FIFO_Generator IP介紹

    FIFO_Generator是智多晶設計的一款通用型FIFO IP。當前發(fā)布的FIFO_Generator IP是2.0版本,相比之前的1.1版本主要新增了非等比輸入輸出數(shù)據位寬支持和異步FI
    的頭像 發(fā)表于 04-25 17:24 ?828次閱讀
    智多晶<b class='flag-5'>FIFO</b>_Generator IP介紹

    AXI接口FIFO簡介

    AXI接口FIFO是從Native接口FIFO派生而來的。AXI內存映射接口提供了三種樣式:AXI4、AXI3和AXI4-Lite。除了Native接口FIFO支持的應用外,AXI FIFO
    的頭像 發(fā)表于 03-17 10:31 ?834次閱讀
    AXI接口<b class='flag-5'>FIFO</b>簡介

    海光信息技術團隊完成模型與DCU國產化適配

    近期,中科曙光國家先進計算產業(yè)創(chuàng)新中心有限公司對外發(fā)布了一則重要消息。據悉,該公司的海光信息技術團隊已經成功完成了DeepSeek V3和R1模型與海光DCU(深度計算單元)的國產化適配工作,并
    的頭像 發(fā)表于 02-06 11:37 ?790次閱讀

    請問DAC5682z內部FIFO深度為多少,8SAMPLE具體怎么理解?

    你好,請問DAC5682z內部FIFO深度為多少,8SAMPLE具體怎么理解。 另外,DAC5682zEVM是否可以直接通過TI的ADC-HSMC板卡與ALTERA的FPGA開發(fā)相連(FPGA板HSMC接口與電壓都匹配條件下)。 謝謝
    發(fā)表于 01-03 07:27

    DVI接口的ESD保護方案

    視頻接口時常會受到ESD/EOS靜電的干擾,比如雷電天氣原因等造成靜電浪涌情況發(fā)生或在進行熱插拔的過程中發(fā)生靜電事件,接口沒有做ESD/EOS防護,將會造成視頻輸出異常:無法顯示圖像,色彩異常,畫面閃爍。只能找專業(yè)人員更換視頻輸出芯片,也有情況嚴重的把此接口連接的電視燒毀
    的頭像 發(fā)表于 12-29 13:53 ?601次閱讀
    DVI接口的ESD保護方案

    矢量網絡分析儀(VNA)基礎解析與應用指南

    、濾波器、放大器等的響應。 在所有情況下,VNA的工作都是將其源信號與反射和傳輸信號的測量結果進行比較,從而得出阻抗和信號強度。信號進行比較,得出阻抗和散射參數(shù)(S參數(shù))數(shù)據,從而讓用戶了解設備的功率處理能力。 在所有情況
    的頭像 發(fā)表于 12-27 15:59 ?769次閱讀
    矢量網絡分析儀(VNA)基礎解析與應用指南

    DAC3482內部的FIFO作用是什么?

    指針驅動時鐘的相位誤差,這時候如果要保證FIFO讀寫指針不沖突,最后讀寫指針的驅動時鐘應該完全一致,允許有一定的相位差。 如果是這種情況,那么在使用DAC3482內部PLL產生DACCLK,并且因為
    發(fā)表于 12-23 07:06

    DAC3482在按字寬度輸入模式下,為啥SYNC信號每16*n個FIFO采樣重復一次?

    下圖是DAC3482 中FIFO的說明。該FIFO深度是8。在按字寬度輸入模式下,為啥SYNC信號每16*n個FIFO采樣重復一次?按照我的理解SYNC信號是用來重置
    發(fā)表于 12-20 06:04

    顯示器視頻接口的ESD保護器件選擇指南

    視頻接口時常會受到ESD/EOS靜電的干擾,比如雷電天氣原因等造成靜電浪涌情況發(fā)生或在進行熱插拔的過程中發(fā)生靜電事件,接口沒有做ESD/EOS防護,將會造成視頻輸出異常:無法顯示圖像,色彩異常,畫面閃爍。只能找專業(yè)人員更換視頻輸出芯片,也有情況嚴重的把此接口連接的電視燒毀
    的頭像 發(fā)表于 12-18 09:21 ?1161次閱讀
    顯示器視頻接口的ESD保護器件選擇指南

    脫毛儀產品的EMI整改案例

    在EMI(電磁干擾)整改的歷程中,當我們針對某一系列產品完成了多個項目的整改后,面對該系列中某款產品的測試數(shù)據異常,通常能夠較為準確地預判其可能的問題所在。然而,這并不意味著所有情況都能如此直接判斷。EMI問題的根源復雜多樣,不僅限于產品的PCB(印刷電路板)設計缺陷。
    的頭像 發(fā)表于 12-03 13:44 ?1145次閱讀
    脫毛儀產品的EMI整改案例

    FIFO Generator的Xilinx官方手冊

    FIFO作為FPGA崗位求職過程中最常被問到的基礎知識點,也是項目中最常被使用到的IP,其意義是非常重要的。本文基于對FIFO Generator的Xilinx官方手冊的閱讀與總結,匯總主要知識點
    的頭像 發(fā)表于 11-12 10:46 ?1470次閱讀
    <b class='flag-5'>FIFO</b> Generator的Xilinx官方手冊

    FIFO深度應該怎么計算

    FIFO是FPGA/IC設計中經常使用到的模塊,它經常被用在兩個模塊之間進行數(shù)據的緩存,以避免數(shù)據在傳輸過程中丟失。同時FIFO也經常被用在跨時鐘域處理中。
    的頭像 發(fā)表于 10-25 15:20 ?848次閱讀
    <b class='flag-5'>FIFO</b>的<b class='flag-5'>深度</b>應該怎么<b class='flag-5'>計算</b>

    Efinity FIFO IP仿真問題 -v1

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

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

    ,并且間隔時間長,也就是突發(fā)寫入。那么通過設置一定深度FIFO,可以起到數(shù)據暫存的功能,且使得后續(xù)處理流程平滑。 時鐘域的隔離:主要用異步FIFO。對于不同時鐘域的數(shù)據傳輸,可以通過FIFO
    的頭像 發(fā)表于 06-04 14:27 ?2526次閱讀
    同步<b class='flag-5'>FIFO</b>和異步<b class='flag-5'>FIFO</b>區(qū)別介紹