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

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

3天內不再提示

常見的流控機制之fifo與帶外流控

sakobpqhz6 ? 來源:IC學習 ? 2023-07-26 12:40 ? 次閱讀

在數(shù)據處理模塊中,我們經常會涉及數(shù)據流控反壓。什么是流控呢?簡單來說就是控制數(shù)據流停止發(fā)送。常見的流控機制分為帶內流控和帶外流控。帶外流控流控比較簡單,就是需要一根額外的信號線來表示流控信息,如ready,1表示可以發(fā)送數(shù)據,0表示不可以發(fā)送數(shù)據.如果取名為fc(flowcontrol),則0表示可以發(fā)送數(shù)據,1表示停止發(fā)送數(shù)據。帶內流控機制中,流控信息是通過數(shù)據通路傳輸?shù)?,沒有額外的流控信號線。帶內流控在接口模塊非常常見,例如以太MAC的pause幀和PCIe的信用量機制。流控系列文章分為4篇,今天是第一篇。首先將最簡單的流控機制,fifo與帶外流控。

1、什么是FIFO

FIFO(first in first out)是一種用寄存器reg或者RAM實現(xiàn)的存儲結構,常用于存儲數(shù)據通道中的數(shù)據流,采用先入先出的數(shù)據,當下游模塊無法及時處理上流模塊輸出的數(shù)據時,此時需要用FIFO暫存數(shù)據,防止數(shù)據丟失。

2、FIFO的流水反壓機制

每一個fifo都有一個將滿閾值cfg_afull_value(名稱隨意,看得懂就行),通常由寄存器配置模塊cfg_csr提供。當fifo內的數(shù)據量達到或超過cfg_afull_value時,將滿信號afull從0跳變成1,即fc信號從0跳變1。上游發(fā)送模塊感知到fc為1時,則停止發(fā)送數(shù)據,有可能是1~2周期就停止,有可能是一個整包發(fā)送完才停止,根據代碼實現(xiàn)才能判斷。在fc跳變成1后,fifo需要能夠緩存路徑上的data以及上游發(fā)送模塊停止發(fā)流之前發(fā)出的所有data。這就是fifo的流控機制。

894b9626-2b6c-11ee-a368-dac502259ad0.png

圖1:fifo流控示意圖

3、FIFO深度如何設置

如圖2所示,數(shù)據data和有效信號vld從模塊A產生,經過N拍延時,輸入到FIFO,F(xiàn)IFO產生將滿信號afull,經過M拍延時反饋到模塊A,假設模塊A接收到afull=1時,立即停止發(fā)送數(shù)據。假設FIFO深度為fifo_depth,每拍為一個時鐘周期。

897db4b2-2b6c-11ee-a368-dac502259ad0.png

圖2:fifo深度計算示意圖

1為了保證FIFO不發(fā)生溢出,請問將滿閾值cfg_afull_value至少應該設置成多少?

2為了充分發(fā)揮FIFO的性能,F(xiàn)IFO深度depth應該為多少?

FIFO將滿閾值如何設置:

當FIFO中的數(shù)據為cfg_afull_value時,產生afull=1,

Afull=1經過M拍到達模塊A,此時FIFO中應該有(cfg_afull_value+M)個數(shù)據。

Afull=1到達模塊A時,模塊A立即停止發(fā)送數(shù)據,此時電路中還存在N拍數(shù)據將陸續(xù)送到FIFO中,所以最后FIFO中應該為(cfg_afull_value+M+N)個數(shù)據,

為了保證數(shù)據不會溢出,所以應該滿足公式fifo_depth>= cfg_afull_value+M+N,因此,將滿閾值應該至少為depth_fifo-(M+N)

FIFO深度depth應該為多少?

若fifo_depth過小,afull有效之后,fifo中存儲的數(shù)據將很快被下游數(shù)據讀取,而新的數(shù)據又無法及時到達FIFO,因此會造成流水氣泡,影響電路性能。

假設M=5 ,N=10,假設fifo_depth=20,則cfg_afull_value=5, 所以在T時刻,fifo中存了5個數(shù)據后afull=1會有效,在之后的15個周期內會陸續(xù)存入15個數(shù)據。假設下游模塊B每個周期讀取FIFO中的一個數(shù)據,因為當FIFO內的數(shù)據data_cnt小于5時,afull才會無效(為0),因此在T+15和T+30的時刻內,下游電路B只能讀5個數(shù)據,因此會造成數(shù)據斷流,影響電路性能。

899b3bfe-2b6c-11ee-a368-dac502259ad0.jpg

圖3:流控信號時序圖

為保證電路性能,在T+15到T+30這個時間段內應該有15個數(shù)據可讀,因此cfg_afull_value應該不小于15(M+N)。所以FIFO深度應該不小于2*(M+N)

結束語

其實FIFO的流控方式有個明顯的弊端,一旦反壓路徑M(見圖2)過大,會明顯浪費資源。

編輯:黃飛

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

    關注

    31

    文章

    5270

    瀏覽量

    119646
  • RAM
    RAM
    +關注

    關注

    8

    文章

    1351

    瀏覽量

    114371
  • fifo
    +關注

    關注

    3

    文章

    384

    瀏覽量

    43461
  • Mac
    Mac
    +關注

    關注

    0

    文章

    1085

    瀏覽量

    51274

原文標題:4種常見的流控機制(一) FIFO與流控

文章出處:【微信號:IC學習,微信公眾號:IC學習】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    FIFO隊列原理簡述

    FIFO是隊列機制中最簡單的,每個接口上只有一個FIFO隊列,表面上看FIFO隊列并沒有提供什么QoS保證,甚至很多人認為FIFO嚴格意義上
    發(fā)表于 07-10 09:22 ?1610次閱讀

    轎車外流場的數(shù)值模擬

    轎車外流場的數(shù)值模擬本論文以某轎車為例,車身數(shù)據取自實際產品設計數(shù)據庫,利用目前通用的CAD軟件UG,構建本轎車的1:5模型,構件幾何模型,導入STAR-CD前處理器時生成轎車表面網格,利用網格自動
    發(fā)表于 03-20 11:18

    鏈接后的RX郵箱的FIFO機制是什么意思?

    你好,有人能解釋一下鏈接后的RX郵箱的FIFO機制嗎?我已經注意到,當X是FIFOSIZE時,每X消息只有一個中斷。這是否意味著我必須在中斷中同時處理所有消息,當下一個中斷發(fā)生時,完整
    發(fā)表于 08-15 14:20

    鏈接CAN RX郵箱的FIFO機制怎么使用?

    你好,我聯(lián)系在一起,可以接收郵箱能夠使用它背后的FIFO機制。我已經了解基本的原則,像在這里所說的:https://secure.cypress.com/?ID = 4 &;擺脫
    發(fā)表于 08-28 10:41

    FIFO的具體設計和常見問題

    FIFO的具體設計和常見問題
    發(fā)表于 01-06 06:04

    什么是FIFO的OV7670

    什么是FIFO的OV7670?為什么要帶FIFO呢?
    發(fā)表于 01-19 06:41

    控制機制,控制機制原理是什么?

    控制機制,控制機制原理是什么? 可以將網絡服務分為最優(yōu)的無連接服務或可靠的面向連接的服務。在Internet協(xié)議集中,IP屬于最優(yōu)服
    發(fā)表于 03-20 15:22 ?626次閱讀

    Proteus程序AMP應用UART0_FIFO

    Proteus程序AMP應用UART0_FIFO
    發(fā)表于 01-18 17:44 ?4次下載

    可重構密碼處理器片外流訪存系統(tǒng)的設計

    可重構密碼處理器片外流訪存系統(tǒng)的設計_朱玉飛
    發(fā)表于 01-07 20:49 ?0次下載

    FPGAFIFO練習3:設計思路

    根據FIFO工作的時鐘域,可以將FIFO分為同步FIFO和異步FIFO。同步FIFO是指讀時鐘和寫時鐘為同一個時鐘。在時鐘沿來臨時同時發(fā)生讀
    的頭像 發(fā)表于 11-29 07:08 ?1823次閱讀

    FPGAFIFO的原理概述

    FIFO隊列不對報文進行分類,當報文進入接口的速度大于接口能發(fā)送的速度時,FIFO按報文到達接口的先后順序讓報文進入隊列,同時,FIFO在隊列的出口讓報文按進隊的順序出隊,先進的報文將先出隊,后進的報文將后出隊。
    的頭像 發(fā)表于 11-29 07:04 ?4573次閱讀

    同步FIFOVerilog實現(xiàn)

    FIFO的分類根均FIFO工作的時鐘域,可以將FIFO分為同步FIFO和異步FIFO。同步FIFO
    的頭像 發(fā)表于 11-01 09:57 ?1826次閱讀

    異步FIFOVerilog代碼實現(xiàn)案例

    同步FIFO的意思是說FIFO的讀寫時鐘是同一個時鐘,不同于異步FIFO,異步FIFO的讀寫時鐘是完全異步的。同步FIFO的對外接口包括時鐘
    發(fā)表于 11-01 09:58 ?1516次閱讀

    保護是由什么組成 過保護與其它保護機制的區(qū)別

    保護和過載保護是電路中常見的兩種保護機制,它們的目標都是防止電流超過設定值而引發(fā)設備損壞或安全風險。盡管它們的目標相似,但針對的情況略有不同。
    的頭像 發(fā)表于 07-12 16:05 ?2416次閱讀

    XILINX FPGA IPFIFO Generator例化仿真

    上文XILINX FPGA IPFIFO對XILINX FIFO Generator IP的特性和內部處理流程進行了簡要的說明,本文通過實際例子對該IP的使用進行進一步的說明。本例子例化一個讀數(shù)
    的頭像 發(fā)表于 09-07 18:31 ?1673次閱讀
    XILINX FPGA IP<b class='flag-5'>之</b><b class='flag-5'>FIFO</b> Generator例化仿真