衡阳派盒市场营销有限公司

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

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

3天內不再提示

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

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

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

1、什么是FIFO

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

2、FIFO的流水反壓機制

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

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

圖1:fifo流控示意圖

3、FIFO深度如何設置

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

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

圖2:fifo深度計算示意圖

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

2為了充分發揮FIFO的性能,FIFO深度depth應該為多少?

FIFO將滿閾值如何設置:

當FIFO中的數據為cfg_afull_value時,產生afull=1,

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

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

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

FIFO深度depth應該為多少?

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

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

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

圖3:流控信號時序圖

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

結束語

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

編輯:黃飛

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

    關注

    31

    文章

    5363

    瀏覽量

    121158
  • RAM
    RAM
    +關注

    關注

    8

    文章

    1369

    瀏覽量

    115002
  • fifo
    +關注

    關注

    3

    文章

    389

    瀏覽量

    43855
  • Mac
    Mac
    +關注

    關注

    0

    文章

    1110

    瀏覽量

    51706

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

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

收藏 人收藏

    評論

    相關推薦

    FIFO隊列原理簡述

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

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

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

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

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

    FIFO的具體設計和常見問題

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

    什么是FIFO的OV7670

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

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

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

    Proteus程序AMP應用UART0_FIFO

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

    可重構密碼處理器片外流訪存系統的設計

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

    FPGAFIFO練習3:設計思路

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

    FPGAFIFO的原理概述

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

    STM32F429芯片FIFO的DMA傳輸實現過程

    STM32系列芯片都內置DMA外設,其中很多系列的DMA配備了FIFO。這里以STM32F429芯片及開發板為例,演示一下FIFO的DMA傳輸實現過程。
    的頭像 發表于 09-04 14:36 ?7217次閱讀
    STM32F429芯片<b class='flag-5'>帶</b><b class='flag-5'>FIFO</b>的DMA傳輸實現過程

    同步FIFOVerilog實現

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

    異步FIFOVerilog代碼實現案例

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

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

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

    XILINX FPGA IPFIFO Generator例化仿真

    上文XILINX FPGA IPFIFO對XILINX FIFO Generator IP的特性和內部處理流程進行了簡要的說明,本文通過實際例子對該IP的使用進行進一步的說明。本例子例化一個讀數
    的頭像 發表于 09-07 18:31 ?2058次閱讀
    XILINX FPGA IP<b class='flag-5'>之</b><b class='flag-5'>FIFO</b> Generator例化仿真
    赌百家乐官网的方法| 百家乐官网双龙出海| 百家乐官网最好投| 百家乐软件代理| bet365 金融| 澳门百家乐官网怎么看小路| 赌场百家乐投注公式| 尊博| 七胜百家乐官网娱乐场| 百家乐博赌场娱乐网规则| 迁安市| 最新百家乐游戏机| 娱乐城注册送| 扑克王百家乐官网的玩法技巧和规则 | 百家乐官网玩法有技巧| 通吃98| 百家乐是怎样的| tt娱乐城网址| 百家乐官网桌布呢布| 德州扑克的玩法| 百家乐官网骗局视频| 凌龙棋牌官方下载| 百家乐官网统计| 百家乐套利| 百家乐官网有多少种游戏| 百家乐技巧介绍| 至尊百家乐官网2014| 捷豹百家乐的玩法技巧和规则 | 威尼斯人娱乐场开户| 赌王百家乐的玩法技巧和规则| 金百亿百家乐官网娱乐城| 苹果百家乐的玩法技巧和规则| 波音百家乐官网现金网投注平台排名导航| 永利百家乐赌场娱乐网规则| 澳门百家乐官网介绍| 明溪百家乐的玩法技巧和规则| 现金百家乐官网赌法| 太阳城丝巾| 网上的百家乐官网怎么才能赢| 旅游赌博景点lydb| 百家乐发牌靴遥控|