h1_key

當(dāng)前位置:首頁 >新聞資訊 > 行業(yè)資訊>什么是FIFO
什么是FIFO
2023-04-10 6438次

  什么是FIFO?

  FIFO: First in, First out

代表先進(jìn)的數(shù)據(jù)先出 ,后進(jìn)的數(shù)據(jù)后出。

 

  為什么需要FIFO?

FIFO存儲器是系統(tǒng)的緩沖環(huán)節(jié),如果沒有FIFO存儲器,整個系統(tǒng)就不可能正常工作。

 

  FIFO的功能可以概括為

  (1)對連續(xù)的數(shù)據(jù)流進(jìn)行緩存,防止在進(jìn)機和存儲操作時丟失數(shù)據(jù);

  (2)數(shù)據(jù)集中起來進(jìn)行進(jìn)機和存儲,可避免頻繁的總線操作,減輕CPU的負(fù)擔(dān);

(3)允許系統(tǒng)進(jìn)行DMA操作,提高數(shù)據(jù)的傳輸速度。這是至關(guān)重要的一點,如果不采用DMA操作,數(shù)據(jù)傳輸將達(dá)不到傳輸要求,而且大大增加CPU的負(fù)擔(dān),無法同時完成數(shù)據(jù)的存儲工作。

 

  FIFO的幾個重要概念

  

 

 

  讀寫時鐘:根據(jù)FIFO工作的時鐘域分為同步/異步FIFO。同步FIFO是指讀時鐘和寫時鐘為同一個時鐘在時鐘沿來臨時同時發(fā)生讀寫。異步FIFO讀寫時鐘不一致,讀寫相互獨立。

  讀寫控制:讀寫控制的使能

  滿信號:FIFO里面的信號數(shù)量達(dá)到了最大深度值

  空信號:FIFO里面的信號全部被讀出

  讀寫指針:總是指向下一個地址

深度:FIFO所能容納的最大信號數(shù)量

 

 

  如何通俗理解FIFO

其實FIFO理解起來很簡單,就像一個水池,如果寫通道打開了,就代表我們在加水,如果讀通道打開了就代表我們在放水,假如不間斷的加水和放水,如果加水速度比放水速度快,那FIFO 就會有滿的時候,如果滿了還繼續(xù)加水就會溢出overflow 如果放水速度比加水速度快 ,那么 FIFO就會有空的時候。

 

 

  FIFO的空滿檢測

  空信號:我們可以想象一下當(dāng)寫信號較慢的時候,讀信號較快,那么讀信號指針就會追上寫信號指針則會產(chǎn)生EMPTY的空信號?;蛘遰eset復(fù)位時也是空信號。

  

 

  滿信號:當(dāng)寫指針快于讀指針,寫信號較快,很容易使得寫指針越過最大深度后追上讀指針,那么就會產(chǎn)生滿溢出信號。

  

 

理解這兩種信號的機制并不難,但是使用起來就需要費功夫的。

 

  一般有兩種方法檢測:

  (1)Extra bit

  一般情況下深度為N=2^n的FIFO其地址的位寬為n,其讀寫地址的位寬也為n。共有N個存儲單元,若數(shù)據(jù)位寬為W則該FIFO的容量即為N*W bit。

  現(xiàn)在在指針中添加額外的位(extra bit,即地址的MSB)變?yōu)閚+1bit,該extra bit用于指示寫指針是否遞增并越過最后一個FIFO地址,若越過則將該MSB加1,其它位清零。對讀指針也進(jìn)行同樣的操作。如對于深度為8的FIFO,需要采用3+1bit是計數(shù)器:0000-1000、1001-1111,MSB作為折回標(biāo)志,而低3位作為地址指針。

  那么判斷機制為:

  *如果兩個指針的MSB不同,就說明寫指針比讀指針多折回一次:如r_addr=0000,且w_addr=1000,為滿;

  *如果兩個指針的MSB相同,就說明兩個指針折回次數(shù)相等。再者其余位相等(則說明FIFO為空。

  這個方法增加一位數(shù)據(jù)的開銷來獲得判斷。

  (2)設(shè)置計數(shù)器

  設(shè)置一個data_counter, 當(dāng)寫使能有效時每寫入一個data計數(shù)器同時加1;讀操作時,每讀出一個data時該計數(shù)器減1。如此,當(dāng)data_counter為0時FIFO空,當(dāng)data_counter計數(shù)至FIFO深度deep時,表示FIFO寫滿。

  由于計數(shù)器會占用額外的資源,當(dāng)FIFO較大時,可能會降低FIFO的讀寫速度。

 

  • 一文讀懂DRAM(動態(tài)隨機存取存儲器)工作原理、分類、主要廠商
  • DRAM是一種易失性半導(dǎo)體存儲器,用于計算機和其他數(shù)字設(shè)備作為主內(nèi)存。它的名字“動態(tài)”源于需要周期性刷新存儲的數(shù)據(jù)。
    2025-06-19 367次
  • 一文讀懂FPGA的工作原理、關(guān)鍵參數(shù)、品牌、運用
  • FPGA代表Field-Programmable Gate Array,中文譯為現(xiàn)場可編程門陣列。它是一種非常特殊的半導(dǎo)體集成電路芯片。與 CPU、GPU 或?qū)S眉呻娐沸酒诔鰪S時功能就固定不同,F(xiàn)PGA的硬件邏輯功能在制造完成后,可以由用戶在現(xiàn)場(Field)根據(jù)需要進(jìn)行編程(Programmable)來定義。 它本質(zhì)上是由大量可配置邏輯塊、可編程互連資源和豐富的輸入/輸出單元組成的陣列(Array)。
    2025-06-05 231次
  • 一文讀懂ADC(模數(shù)轉(zhuǎn)換器)與DAC(數(shù)模轉(zhuǎn)換器)類型、應(yīng)用
  • ADC(模數(shù)轉(zhuǎn)換器)與DAC(數(shù)模轉(zhuǎn)換器)芯片是連接模擬世界與數(shù)字系統(tǒng)的核心元器件,廣泛應(yīng)用于通信、工業(yè)控制、醫(yī)療設(shè)備、消費電子等領(lǐng)域。以下是它們的核心技術(shù)原理、類型及市場應(yīng)用解析:
    2025-05-21 178次
  • 一文讀懂GNSS模組產(chǎn)品分類、品牌、運用
  • 全球?qū)Ш叫l(wèi)星系統(tǒng)(GNSS,Global Navigation Satellite System)是一種通過衛(wèi)星信號提供地理定位、導(dǎo)航和時間同步服務(wù)的技術(shù)。常見的GNSS包括美國的GPS、俄羅斯的GLONASS、歐盟的伽利略(Galileo)和中國的北斗(BDS)。以下從產(chǎn)品、品牌和應(yīng)用領(lǐng)域三個方面進(jìn)行介紹:
    2025-04-28 384次
  • 一文讀懂什么是MEMS壓力傳感器?
  • MEMS壓力傳感器是一種基于微機電系統(tǒng)(Micro-Electro-Mechanical Systems, MEMS)技術(shù)制造的微型傳感器,主要用于測量氣體或液體的壓力。憑借其小型化、高靈敏度和低成本等優(yōu)勢,MEMS壓力傳感器被廣泛應(yīng)用于汽車、醫(yī)療、工業(yè)、消費電子和航空航天等領(lǐng)域。
    2025-04-17 302次

    萬聯(lián)芯微信公眾號

    元器件現(xiàn)貨+BOM配單+PCBA制造平臺
    關(guān)注公眾號,優(yōu)惠活動早知道!
    10s
    溫馨提示:
    訂單商品問題請移至我的售后服務(wù)提交售后申請,其他需投訴問題可移至我的投訴提交,我們將在第一時間給您答復(fù)
    返回頂部