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

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

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

你們知道FIFO最小深度計算嗎

FPGA設(shè)計論壇 ? 來源:CSDN技術(shù)社區(qū) ? 作者:昨日傍晚 ? 2021-09-10 09:23 ? 次閱讀

FIFO 最小深度計算

例子 - 1:f_wr 》 f_rd,連續(xù)讀寫

時鐘80MHz。

讀時鐘50MHz。

Burst_Len = 120,也就是要求至少安全寫入120個數(shù)據(jù)。

連續(xù)寫入和連續(xù)讀取,無空閑時間,寫入后立即開始讀取 ,讀寫寬度相同。

Sol:

寫速率 》 讀速率,F(xiàn)IFO遲早會被寫滿,但它要求至少寫入120個數(shù)據(jù)后FIFO不滿。

寫入120個數(shù)據(jù)耗時 120 * 12.5 ns = 1500 ns。

寫入開始后FIFO內(nèi)數(shù)據(jù)以 30M/Date 速率增加。

數(shù)據(jù)增加持續(xù)了 1500 ns ,F(xiàn)IFO最小深度:0.0000015 * 30000000 = 45

例子-1 總結(jié)公式:

de4c36ea-117d-11ec-8fb8-12bb97331649.png

例子 - 2 :f_wr 》 f_rd & 寫速率 》 讀速率,非連續(xù)讀寫

寫時鐘80MHz。

讀時鐘50MHz。

Burst_Len = 120,也就是要求至少安全寫入120個數(shù)據(jù)。

寫入后立即開始讀取 ,讀寫寬度相同。

2個時鐘中有1個數(shù)據(jù)寫入(寫速率:80M * 1/2 = 40M)。

4個時鐘中有1個數(shù)據(jù)讀出(讀速率:50M * 1/4 = 12.5M)。

Sol:

FIFO遲早會被寫滿 ,但它要求至少寫入120個數(shù)據(jù)后FIFO不滿。

寫一個數(shù)據(jù)耗時:2/80MHz = 25ns

需要至少寫入120數(shù)據(jù),耗時:25 * 120 = 3000ns

例子2只是讀寫速率和例子1不同,可以直接用的公式(1) :

FIFO_DEPTH 》 (寫速率-讀速率)* Burst_Len/寫速率 = (40M-12.5M)*120/40M = 83

例子 - 3:f_wr 《 f_rd ,連續(xù)讀寫

寫時鐘30MHz。

讀時鐘50MHz。

Burst_Len = 120,也就是要求至少安全寫入120個數(shù)據(jù)。

連續(xù)寫入和連續(xù)讀取,無空閑時間,寫入后立即開始讀取 ,讀寫寬度相同。

Sol:

FIFO_DEPTH 》 1 即可。讀速率比寫速率快,數(shù)據(jù)不會滯留。

例子 -4:f_wr 《 f_rd & 寫速率 》 讀速率,非連續(xù)讀寫

寫時鐘30MHz。

讀時鐘50MHz。

Burst_Len = 120,也就是要求至少安全寫入120個數(shù)據(jù)。

2個時鐘中有1個數(shù)據(jù)寫入(寫速率:30M * 1/2 = 15M)。

4個時鐘中有1個數(shù)據(jù)讀出(讀速率:50M * 1/4 = 12.5M)。

Sol:

雖然寫時鐘小于讀時鐘頻率,但是,宏觀上寫速率大于讀速率??梢灾苯佑玫墓剑?) :

FIFO_DEPTH 》 (寫速率-讀速率)* Burst_Len/寫速率 = (15M-12.5M)*120/15M = 20

例子 1-4總結(jié)

當(dāng)滿足以下所有條件時,就可使用公式(1):

寫速率 》 讀速率時。

讀寫有效數(shù)據(jù)占比 《= 0.5,且 有效數(shù)據(jù)均勻分布在所有時間上?;蛘哒f,無論微觀時間、還是宏觀時間上,讀寫速率近似于 時鐘頻率 * 有效數(shù)據(jù)占比時。

當(dāng)每100個時鐘寫80個數(shù)據(jù)時,微觀時間上的寫速率與數(shù)據(jù)排列有關(guān),不能將宏觀寫速率帶入式子(1)

例子 - 5

讀寫時鐘頻率相同。

100個時鐘有80個數(shù)據(jù)寫入。

10個時鐘有8個數(shù)據(jù)讀出。

Burst_Len = 160,也就是要求至少安全寫入160個數(shù)據(jù) 。

Sol:

宏觀上,讀寫速率相同;當(dāng)FIFO足夠深時,F(xiàn)IFO不會溢出。

微觀上,寫速率有多種情況:

de5c56ce-117d-11ec-8fb8-12bb97331649.png

de830166-117d-11ec-8fb8-12bb97331649.png

為了求出安全的最小FIFO深度,我們需要考慮最差的情況。

最差的情況下,寫入和讀出速度應(yīng)該相差最大。寫入要最快,讀出要最慢。FIFO內(nèi)的數(shù)據(jù)增加最快。

從上表中可得出:最大寫入速率是case 4(back to back write,中間沒有空閑,速率為時鐘頻率 f,寫入了160個 )。

讀出要最慢,在寫160個數(shù)據(jù)期間,讀相比于寫端可以認(rèn)為是速率均勻的,速率為 f*8/10,讀出了160 * 8 /10 = 128個。

因此 FIFO_DEPTH 》 160 - 128 = 32。用公式(1)也可以得到這個結(jié)果,寫速率帶入f而不是f*8/10。

總結(jié):求解步驟

考慮最差的情況下,寫入和讀出速度應(yīng)該相差最大。寫入要最快,讀出要最慢。FIFO內(nèi)的數(shù)據(jù)增加最快。

只考慮宏觀上寫入速率 》= 讀出速率的情況。

確定寫入Burst_Len大小。Burst_Len指的是一段連續(xù)寫入?yún)^(qū)間,由于沒有空隙這段時間寫入速率最大最多。一定要對具體的數(shù)據(jù)分布情況具體分析,Burst_Len一定是最長的一段連續(xù)寫入?yún)^(qū)間。

在微觀上,確定最大寫入速率。Burst_Len足夠長時,寫入速率 = 寫時鐘頻率(back to back write)。而在例子 - 2中,Burst_Len很短,沒有back to back write,寫入速率 = 寫時鐘頻率 * 寫有效占比。

在微觀上,確定最小讀出速率。一般認(rèn)為讀出速率是均勻的,讀出速率 = 讀時鐘頻率 * 讀有效占比。

帶入公式(1)計算。

Burst_Len足夠長時,將上面讀出寫入速率帶入公式(1),可得到網(wǎng)上討論最多的FIFO深度求解公式:

de8d5a26-117d-11ec-8fb8-12bb97331649.png

不建議直接用公式(2)無腦計算,上式只有Burst_Len足夠長,發(fā)生back to back write時才適用。建議根據(jù)1~6步驟,判斷微觀寫速率是否均勻,帶入式子(1)計算。

編輯:jq

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

    關(guān)注

    8

    文章

    7048

    瀏覽量

    89076
  • fifo
    +關(guān)注

    關(guān)注

    3

    文章

    388

    瀏覽量

    43693
  • 計算
    +關(guān)注

    關(guān)注

    2

    文章

    450

    瀏覽量

    38821

原文標(biāo)題:FIFO 最小深度計算

文章出處:【微信號:gh_9d70b445f494,微信公眾號:FPGA設(shè)計論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

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

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

    FIFO Generator的Xilinx官方手冊

    知道FF資源在FPGA是非常珍貴的。 built-in FIFO:這種類型的FIFO只有7系列之后(包括UltraScale)才有。筆者
    的頭像 發(fā)表于 11-12 10:46 ?446次閱讀
    <b class='flag-5'>FIFO</b> Generator的Xilinx官方手冊

    FIFO深度應(yīng)該怎么計算

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

    Efinity FIFO IP仿真問題 -v1

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

    FPGA做深度學(xué)習(xí)能走多遠(yuǎn)?

    。FPGA的優(yōu)勢就是可編程可配置,邏輯資源多,功耗低,而且賽靈思等都在極力推廣。不知道用FPGA做深度學(xué)習(xí)未來會怎樣發(fā)展,能走多遠(yuǎn),你怎么看。 A:FPGA 在深度學(xué)習(xí)領(lǐng)域具有獨特的優(yōu)勢和潛力,未來
    發(fā)表于 09-27 20:53

    ESP8266在深度睡眠模式下是否會保持其GPIO狀態(tài)?

    我想知道是否有人知道ESP8266在深度睡眠模式下是否會保持其 GPIO 狀態(tài)。 簡單示例:假設(shè)有一個 LED 連接到 GPIO4 之一。我想點亮 LED,然后進(jìn)入深度睡眠 10 秒
    發(fā)表于 07-08 06:39

    如何在CYUSB2014-BZXC中以8位模式配置Slave FIFO?

    我有關(guān)于CYUSB2014-BZXC的問題 我想以 8 位為單位發(fā)送和接收數(shù)據(jù)。 手冊中列出的Slave FIFO是16位模式的最小值,所以請教我如何在8位模式下配置Slave FIFO。 我還希望獲得有關(guān) 8 位模式下信號分配
    發(fā)表于 07-04 07:40

    深度學(xué)習(xí)在計算機(jī)視覺領(lǐng)域的應(yīng)用

    隨著人工智能技術(shù)的飛速發(fā)展,深度學(xué)習(xí)作為其中的核心技術(shù)之一,已經(jīng)在計算機(jī)視覺領(lǐng)域取得了顯著的成果。計算機(jī)視覺,作為計算機(jī)科學(xué)的一個重要分支,旨在讓
    的頭像 發(fā)表于 07-01 11:38 ?822次閱讀

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

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

    示波器怎么設(shè)置存儲深度?

    存儲深度,也稱為記錄長度,是指示波器能夠連續(xù)捕獲和存儲的采樣點數(shù)。它決定了示波器能夠捕獲的波形的時間長度,以及能夠分辨的最小時間間隔。
    的頭像 發(fā)表于 05-31 15:42 ?1726次閱讀

    深度解析深度學(xué)習(xí)下的語義SLAM

    隨著深度學(xué)習(xí)技術(shù)的興起,計算機(jī)視覺的許多傳統(tǒng)領(lǐng)域都取得了突破性進(jìn)展,例如目標(biāo)的檢測、識別和分類等領(lǐng)域。近年來,研究人員開始在視覺SLAM算法中引入深度學(xué)習(xí)技術(shù),使得深度學(xué)習(xí)SLAM系統(tǒng)
    發(fā)表于 04-23 17:18 ?1299次閱讀
    <b class='flag-5'>深度</b>解析<b class='flag-5'>深度</b>學(xué)習(xí)下的語義SLAM

    關(guān)于同步FIFO和異步FIFO的基礎(chǔ)知識總結(jié)

    FIFO是一種先進(jìn)先出數(shù)據(jù)緩存器,它與普通存儲器的區(qū)別是沒有外部讀寫地址線,使用起來非常簡單,缺點是只能順序讀寫,而不能隨機(jī)讀寫。
    的頭像 發(fā)表于 04-09 14:23 ?3286次閱讀
    關(guān)于同步<b class='flag-5'>FIFO</b>和異步<b class='flag-5'>FIFO</b>的基礎(chǔ)知識總結(jié)

    計算機(jī)行業(yè)深度報告

    電子發(fā)燒友網(wǎng)站提供《計算機(jī)行業(yè)深度報告.pdf》資料免費下載
    發(fā)表于 03-04 10:07 ?0次下載

    如何清除SPI通信中的TX_FIFO和RX_FIFO

    你好, 如何清除 SPI通信中的 TX_FIFO 和 RX_FIFO?是否有任何 API 可以清除接收數(shù)據(jù)緩沖區(qū)。
    發(fā)表于 02-27 07:16

    異步FIFO結(jié)構(gòu)設(shè)計

    電子發(fā)燒友網(wǎng)站提供《異步FIFO結(jié)構(gòu)設(shè)計.pdf》資料免費下載
    發(fā)表于 02-06 09:06 ?0次下載