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

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

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

3天內不再提示

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

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

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

因為筆試常考。

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

解決不同時鐘域傳輸的問題

用來緩存一定量的數據

解決位寬不匹配的問題

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

2、實例

2.1、寫時鐘快、讀時鐘慢

2.1.1、無間斷的寫、讀操作

條件:

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

讀寫操作不間斷

解法:

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

寫入120個數據,需要的時間:120 * 12.5ns = 1500ns

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

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

2.1.2、間斷的寫、讀操作

條件:

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

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

解法:

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

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

寫入120個數據,需要的時間:120 * 25ns = 3000ns

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

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

2.2、寫時鐘慢、讀時鐘快

2.2.1、無間斷的寫、讀操作

條件:

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

寫、讀操作無間斷

解法:

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

2.2.2、間斷的寫、讀操作

條件:

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

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

解法:

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

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

寫入120個數據,需要的時間:120 * 66.667ns = 8000ns

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

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

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

2.3.1、無間斷的寫、讀操作

條件:

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

寫、讀操作無間斷

解法:

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

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

2.3.2、間斷的寫、讀操作

條件:

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

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

解法:

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

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

寫入120個數據,需要的時間:120 * 40ns = 4800ns

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

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

2.4、特定時間內時間寫、讀速率固定

條件:

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

每10個時鐘讀出8個數據

一次寫入的突發長度160

解法:

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

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

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

160個時鐘內,讀出的數據是160*8/10 = 128

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

3、總結

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

FIFO深度的計算建立在滿足一次突發傳輸的基礎上

當讀快寫滿或者讀寫一樣快時,FIFO的深度最多只需要1

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

審核編輯:湯梓紅

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

    關注

    13

    文章

    4266

    瀏覽量

    85686
  • fifo
    +關注

    關注

    3

    文章

    387

    瀏覽量

    43561
  • 計算
    +關注

    關注

    2

    文章

    446

    瀏覽量

    38740
收藏 人收藏

    評論

    相關推薦

    FIFO Generator的Xilinx官方手冊

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

    FIFO深度應該怎么計算

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

    FPGA加速深度學習模型的案例

    計算機主板上,以高速PCIe總線進行數據傳輸。 利用FPGA的并行計算能力,快速處理大量的卷積計算。 可編程性
    的頭像 發表于 10-25 09:22 ?150次閱讀

    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仿真問題 -v1

    基于Python的深度學習人臉識別方法

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

    簡單認識深度神經網絡

    深度神經網絡(Deep Neural Networks, DNNs)作為機器學習領域中的一種重要技術,特別是在深度學習領域,已經取得了顯著的成就。它們通過模擬人類大腦的處理方式,利用多層神經元結構
    的頭像 發表于 07-10 18:23 ?947次閱讀

    基于深度學習的小目標檢測

    計算機視覺領域,目標檢測一直是研究的熱點和難點之一。特別是在小目標檢測方面,由于小目標在圖像中所占比例小、特征不明顯,使得檢測難度顯著增加。隨著深度學習技術的快速發展,尤其是卷積神經網絡(CNN
    的頭像 發表于 07-04 17:25 ?772次閱讀

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

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

    深度學習在計算機視覺領域的應用

    隨著人工智能技術的飛速發展,深度學習作為其中的核心技術之一,已經在計算機視覺領域取得了顯著的成果。計算機視覺,作為計算機科學的一個重要分支,旨在讓
    的頭像 發表于 07-01 11:38 ?685次閱讀

    同步FIFO和異步FIFO區別介紹

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

    關于同步FIFO和異步FIFO的基礎知識總結

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

    計算機行業深度報告

    電子發燒友網站提供《計算機行業深度報告.pdf》資料免費下載
    發表于 03-04 10:07 ?0次下載

    異步FIFO結構設計

    電子發燒友網站提供《異步FIFO結構設計.pdf》資料免費下載
    發表于 02-06 09:06 ?0次下載

    一種使用fifo節約資源降低功耗的設計方法

    本案例中,我們講解一種使用fifo節約資源,降低功耗的設計。
    的頭像 發表于 12-15 16:34 ?648次閱讀
    一種使用<b class='flag-5'>fifo</b>節約資源降低功耗的設計方法

    計算快速全息生成技術研究

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