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

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

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

如何簡單快速地計算FIFO的最小深度

C29F_xilinx_inc ? 來源:賽靈思 ? 作者:賽靈思 ? 2022-02-26 17:41 ? 次閱讀

1、為什么需要計算FIFO的最小深度

因為筆試???。

開玩笑的。首先我們來想下FIFO有哪些作用?我大概總結(jié)下FIFO的幾個重要作用:

解決不同時鐘域傳輸?shù)膯栴}

用來緩存一定量的數(shù)據(jù)

解決位寬不匹配的問題

FIFO最常被用來解決寫、讀不匹配的問題(時鐘、位寬),總結(jié)下來,其實FIFO最大的作用就是緩沖。既然是緩沖,那么就要知道這個緩存的空間到底需要多大。接下來的討論,都建立在滿足一次FIFO突發(fā)傳輸?shù)幕A(chǔ)上。連續(xù)無止境的突發(fā)不考慮。比如寫時鐘100M,讀時鐘50M,無限制的讀寫,那么FIFO的深度只能是無窮大了,因為寫比讀快,F(xiàn)IFO一定永遠(yuǎn)都不夠用。所以在實際運(yùn)用中,不會存在無限制的對FIFO進(jìn)行讀寫。如果這樣的話,F(xiàn)IFO就變成了一個“存儲器件”,而不是一個“緩存器件”,對于FIFO的這種用法無疑是毫無意義的。

2、實例

2.1、寫時鐘快、讀時鐘慢

2.1.1、無間斷的寫、讀操作

條件:

寫入時鐘頻率 fA = 80MHz;讀取時鐘頻率 fB = 50MHz. 一次寫入的突發(fā)長度120

讀寫操作不間斷

解法:

寫入一個數(shù)據(jù)需要的時間:1/80MHz = 12.5ns;讀取一個數(shù)據(jù)需要的時間:1/50MHz = 20ns

寫入120個數(shù)據(jù),需要的時間:120 * 12.5ns = 1500ns

在寫入全部數(shù)據(jù)所需的時間(1500ns)內(nèi),可以讀取出的數(shù)據(jù)數(shù):1500ns / 20ns = 75

所以一次突發(fā),一共需要寫入120數(shù)據(jù),在這段時間內(nèi)可以被讀出75數(shù)據(jù),剩下的數(shù)據(jù)就是需要使用FIFO來緩存,所以FIFO的最小深度為120 - 75 = 45

2.1.2、間斷的寫、讀操作

條件:

寫入時鐘頻率 fA = 80MHz;讀取時鐘頻率 fB = 50MHz. 一次寫入的突發(fā)長度120。

每兩次寫入操作間隔1個寫時鐘周期,每兩次讀取操作間隔3個讀時鐘周期。

解法:

每兩次寫入操作間隔1個寫時鐘周期,等于每兩個寫時鐘周期才寫入1個數(shù)據(jù),即等價的寫入時鐘頻率 fA'=40MHz,寫入一個數(shù)據(jù)需要的時間:1/40MHz = 25ns

每兩次讀取操作間隔3個讀時鐘周期,等于每4個寫時鐘周期才讀取1個數(shù)據(jù),即等價的讀取時鐘頻率 fB'=12.5MHz,讀取一個數(shù)據(jù)需要的時間:1/12.5MHz = 80ns

寫入120個數(shù)據(jù),需要的時間:120 * 25ns = 3000ns

在寫入全部數(shù)據(jù)所需的時間(3000ns)內(nèi),可以讀取出的數(shù)據(jù)數(shù):3000ns / 80ns = 37.5 ≈ 37(要向下取整,不然有1個數(shù)據(jù)會丟)

所以一次突發(fā),一共需要寫入120數(shù)據(jù),在這段時間內(nèi)可以被讀出37數(shù)據(jù),剩下的數(shù)據(jù)就是需要使用FIFO來緩存,所以FIFO的最小深度為120 - 37 = 83

2.2、寫時鐘慢、讀時鐘快

2.2.1、無間斷的寫、讀操作

條件:

寫入時鐘頻率 fA = 30MHz;讀取時鐘頻率 fB = 50MHz. 一次寫入的突發(fā)長度120

寫、讀操作無間斷

解法:

因為讀操作的頻率快于寫操作的頻率,所以數(shù)據(jù)一旦被寫入FIFO后很快就會被讀走,所以FIFO的最小深度為1即可

2.2.2、間斷的寫、讀操作

條件:

寫入時鐘頻率 fA = 30MHz;讀取時鐘頻率 fB = 50MHz. 一次寫入的突發(fā)長度120。

每兩次寫入操作間隔1個寫時鐘周期,每兩次讀取操作間隔3個讀時鐘周期。

解法:

每兩次寫入操作間隔1個寫時鐘周期,等于每兩個寫時鐘周期才寫入1個數(shù)據(jù),即等價的寫入時鐘頻率 fA'=15MHz,寫入一個數(shù)據(jù)需要的時間:1/15MHz = 66.667ns

每兩次讀取操作間隔3個讀時鐘周期,等于每4個寫時鐘周期才讀取1個數(shù)據(jù),即等價的讀取時鐘頻率 fB'=12.5MHz,讀取一個數(shù)據(jù)需要的時間:1/12.5MHz = 80ns

寫入120個數(shù)據(jù),需要的時間:120 * 66.667ns = 8000ns

在寫入全部數(shù)據(jù)所需的時間(8000ns)內(nèi),可以讀取出的數(shù)據(jù)數(shù):8000ns / 80ns = 100

所以一次突發(fā),一共需要寫入120數(shù)據(jù),在這段時間內(nèi)可以被讀出100數(shù)據(jù),剩下的數(shù)據(jù)就是需要使用FIFO來緩存,所以FIFO的最小深度為120 - 100 = 20

2.3、寫時鐘、讀時鐘一樣快

2.3.1、無間斷的寫、讀操作

條件:

寫入時鐘頻率 fA = 讀取時鐘頻率 fB = 30MHz。一次寫入的突發(fā)長度120。

寫、讀操作無間斷

解法:

1、假設(shè)讀、寫時鐘無位差、則兩個時鐘同頻、同相,是同步信號,故可以直接對接操作,無需FIFO

2、若讀、寫時鐘存在相位差,則被寫入的數(shù)據(jù)在一個時鐘周期內(nèi)會被讀走,所以FIFO的最小深度為1即可

2.3.2、間斷的寫、讀操作

條件:

寫入時鐘頻率 fA = 讀取時鐘頻率 fB = 50MHz。一次寫入的突發(fā)長度120。

每兩次寫入操作間隔1個時鐘周期,每兩次讀取操作間隔3個時鐘周期。

解法:

每兩次寫入操作間隔1個寫時鐘周期,等于每兩個寫時鐘周期才寫入1個數(shù)據(jù),即等價的寫入時鐘頻率 fA'=25MHz,寫入一個數(shù)據(jù)需要的時間:1/25MHz = 40ns

每兩次讀取操作間隔3個讀時鐘周期,等于每4個寫時鐘周期才讀取1個數(shù)據(jù),即等價的讀取時鐘頻率 fB'=12.5MHz,讀取一個數(shù)據(jù)需要的時間:1/12.5MHz = 80ns

寫入120個數(shù)據(jù),需要的時間:120 * 40ns = 4800ns

在寫入全部數(shù)據(jù)所需的時間(4800ns)內(nèi),可以讀取出的數(shù)據(jù)數(shù):4800ns / 80ns = 60

所以一次突發(fā),一共需要寫入120數(shù)據(jù),在這段時間內(nèi)可以被讀出60數(shù)據(jù),剩下的數(shù)據(jù)就是需要使用FIFO來緩存,所以FIFO的最小深度為120 - 60 = 60

2.4、特定時間內(nèi)時間寫、讀速率固定

條件:

每100個時鐘寫入80個數(shù)據(jù),剩余20個隨機(jī)值(無效)

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

一次寫入的突發(fā)長度160

解法:

因為每100個時鐘內(nèi),僅寫入80個數(shù)據(jù),而這80個數(shù)據(jù)可能任意分布,所以160個數(shù)據(jù)的寫入可能有以下幾種情況:

如何簡單快速地計算FIFO的最小深度

可以看到,第4種情況是最極端的:一次性需要寫入160數(shù)據(jù),時間為160個時鐘

160個時鐘內(nèi),讀出的數(shù)據(jù)是160*8/10 = 128

所以一共需要寫入160數(shù)據(jù),在這段時間內(nèi)可以被讀出128數(shù)據(jù),剩下的數(shù)據(jù)就是需要使用FIFO來緩存,所以FIFO的最小深度為160 - 128 = 32

3、總結(jié)

FIFO是用來緩存的,不是用來存數(shù)據(jù)的,當(dāng)寫快讀慢時,無止境的對FIFO操作是沒有意義的(不管FIFO多大,一定都會被寫滿)

FIFO深度的計算建立在滿足一次突發(fā)傳輸?shù)幕A(chǔ)上

當(dāng)讀快寫滿或者讀寫一樣快時,F(xiàn)IFO的深度最多只需要1

當(dāng)寫快讀慢時,在一次突發(fā)傳輸時,因為讀慢,所以肯定無法全部讀走。全部寫入的數(shù)據(jù)量 - 已經(jīng)被讀走的數(shù)據(jù)量 = 需要緩存到FIFO的數(shù)據(jù)量,即異步FIFO的最小深度

審核編輯:湯梓紅

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

    關(guān)注

    13

    文章

    4122

    瀏覽量

    85271
  • fifo
    +關(guān)注

    關(guān)注

    3

    文章

    382

    瀏覽量

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

    關(guān)注

    2

    文章

    437

    瀏覽量

    38604
收藏 人收藏

    評論

    相關(guān)推薦

    基于Python的深度學(xué)習(xí)人臉識別方法

    基于Python的深度學(xué)習(xí)人臉識別方法是一個涉及多個技術(shù)領(lǐng)域的復(fù)雜話題,包括計算機(jī)視覺、深度學(xué)習(xí)、以及圖像處理等。在這里,我將概述一個基本的流程,包括數(shù)據(jù)準(zhǔn)備、模型選擇、訓(xùn)練過程、以及測試與評估,并附上
    的頭像 發(fā)表于 07-14 11:52 ?935次閱讀

    簡單認(rèn)識深度神經(jīng)網(wǎng)絡(luò)

    深度神經(jīng)網(wǎng)絡(luò)(Deep Neural Networks, DNNs)作為機(jī)器學(xué)習(xí)領(lǐng)域中的一種重要技術(shù),特別是在深度學(xué)習(xí)領(lǐng)域,已經(jīng)取得了顯著的成就。它們通過模擬人類大腦的處理方式,利用多層神經(jīng)元結(jié)構(gòu)
    的頭像 發(fā)表于 07-10 18:23 ?735次閱讀

    如何在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 ?426次閱讀

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

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

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

    FIFO是一種先進(jìn)先出數(shù)據(jù)緩存器,它與普通存儲器的區(qū)別是沒有外部讀寫地址線,使用起來非常簡單,缺點是只能順序讀寫,而不能隨機(jī)讀寫。
    的頭像 發(fā)表于 04-09 14:23 ?2609次閱讀
    關(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次下載

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

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

    計算機(jī)快速全息生成技術(shù)研究

    快速生成全息圖的研究還很匱乏。關(guān)于使用路徑追蹤以最小計算工作量和更少的計算時間快速生成CGH的研究很少。
    的頭像 發(fā)表于 12-12 11:15 ?420次閱讀
    <b class='flag-5'>計算</b>機(jī)<b class='flag-5'>快速</b>全息生成技術(shù)研究

    談一談FIFO深度

    最近加的群里面有些萌新在進(jìn)行討論**FIFO深度**的時候,覺得 **FIFO深度計算比較難以理解** 。所
    的頭像 發(fā)表于 11-28 16:19 ?1107次閱讀
    談一談<b class='flag-5'>FIFO</b>的<b class='flag-5'>深度</b>

    如何計算深度放電?深度放電如何影響電池壽命?如何保持鋰電池的健康狀態(tài)?

    如何計算深度放電?深度放電如何影響電池壽命?如何保持鋰電池的健康狀態(tài)? 深度放電是指將電池完全耗盡至低電量狀態(tài)的操作。在深度放電過程中,電池
    的頭像 發(fā)表于 11-10 15:05 ?5250次閱讀

    FIFO為什么不能正常工作?

    FIFO為什么不能正常工作?復(fù)位信號有效長度不夠,接口時序不匹配,可看下面這篇文章。 本文將介紹: 非DFX工程如何確保異步FIFO自帶的set_max_delay生效? DFX工程如何確保異步
    的頭像 發(fā)表于 11-02 09:25 ?980次閱讀
    <b class='flag-5'>FIFO</b>為什么不能正常工作?

    簡述一種fifo讀控制的不合理設(shè)計案例

    本文將簡述一種fifo讀控制的不合理設(shè)計案例,在此案例中,異常報文將會堵在fifo中,造成頭阻塞。
    的頭像 發(fā)表于 10-30 14:25 ?308次閱讀
    簡述一種<b class='flag-5'>fifo</b>讀控制的不合理設(shè)計案例

    請問異步FIFO的溢出操作時怎么樣判斷的?

    請問異步FIFO的溢出操作時怎么樣判斷的? 異步FIFO是數(shù)據(jù)傳輸?shù)囊环N常用方式,在一些儲存器和計算機(jī)系統(tǒng)中,常常會用到異步FIFO。作為一種FIF
    的頭像 發(fā)表于 10-18 15:28 ?1401次閱讀

    同步FIFO和異步FIFO的區(qū)別 同步FIFO和異步FIFO各在什么情況下應(yīng)用

    簡單的一種,其特點是輸入和輸出都與時鐘信號同步,當(dāng)時鐘到來時,數(shù)據(jù)總是處于穩(wěn)定狀態(tài),因此容易實現(xiàn)數(shù)據(jù)的傳輸和存儲。 而異步FIFO則是在波形的上升沿和下降沿上進(jìn)行處理,在輸入輸出端口處分別增加輸入和輸出指針,用于管理數(shù)據(jù)的讀寫。異步FI
    的頭像 發(fā)表于 10-18 15:23 ?1462次閱讀