h1_key

當(dāng)前位置:首頁 >新聞資訊 > 技術(shù)文章>什么是FIFO
什么是FIFO
2023-04-10 5909次

  什么是FIFO?

  FIFO: First in, First out

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

 

  為什么需要FIFO?

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

 

  FIFO的功能可以概括為

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

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

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

 

  FIFO的幾個(gè)重要概念

  

 

 

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

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

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

  空信號(hào):FIFO里面的信號(hào)全部被讀出

  讀寫指針:總是指向下一個(gè)地址

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

 

 

  如何通俗理解FIFO

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

 

 

  FIFO的空滿檢測

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

  

 

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

  

 

理解這兩種信號(hào)的機(jī)制并不難,但是使用起來就需要費(fèi)功夫的。

 

  一般有兩種方法檢測:

  (1)Extra bit

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

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

  那么判斷機(jī)制為:

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

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

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

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

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

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

 

  • XILINX賽靈思 XC7K160T-2FBG484E
  • 賽靈思(XILINX)作為行業(yè)的領(lǐng)軍企業(yè),其推出的 XC7K160T-2FBG484E 更是一款備受矚目的產(chǎn)品。XC7K160T-2FBG484E 屬于賽靈思 7 系列 FPGA(現(xiàn)場可編程門陣列),具有強(qiáng)大的性能和豐富的功能。
    2024-09-25 102次
  • XILINX賽靈思 XCKU085-2FLVA1517E
  • 賽靈思(XILINX)作為全球領(lǐng)先的可編程邏輯器件供應(yīng)商,其推出的 XCKU085-2FLVA1517E 以卓越的性能和豐富的功能,成為眾多電子工程師和設(shè)計(jì)師的首選。XCKU085-2FLVA1517E 屬于賽靈思 UltraScale 架構(gòu)系列產(chǎn)品,采用先進(jìn)的 20 納米工藝技術(shù)制造。這一工藝不僅帶來了更高的性能,還實(shí)現(xiàn)了更低的功耗,為各種復(fù)雜的電子系統(tǒng)設(shè)計(jì)提供了理想的解決方案。
    2024-09-25 83次
  • XILINX賽靈思 XCKU060-1FFVA1517C
  • 賽靈思(XILINX)作為全球領(lǐng)先的可編程邏輯解決方案供應(yīng)商,其 XCKU060-1FFVA1517C 更是一款備受矚目的產(chǎn)品。XCKU060-1FFVA1517C 屬于賽靈思 UltraScale 架構(gòu)系列,采用了先進(jìn)的 16 納米 FinFET 工藝技術(shù)。這一工藝帶來了諸多優(yōu)勢,如更高的性能、更低的功耗以及更小的芯片尺寸。
    2024-09-25 88次
  • XILINX賽靈思 XCKU060-2FFVA1517E
  • 賽靈思(XILINX)作為行業(yè)的領(lǐng)軍企業(yè),其推出的 XCKU060-2FFVA1517E 更是一款備受矚目的產(chǎn)品。XCKU060-2FFVA1517E 屬于賽靈思 UltraScale 架構(gòu)系列的 FPGA(現(xiàn)場可編程門陣列)。它融合了先進(jìn)的技術(shù)和強(qiáng)大的性能,為各種復(fù)雜的應(yīng)用場景提供了高度靈活且可靠的解決方案。
    2024-09-25 79次
  • XILINX賽靈思 XC7Z035-3FFG676E
  • 賽靈思(XILINX)作為全球領(lǐng)先的可編程邏輯解決方案供應(yīng)商,其 XC7Z035-3FFG676E 更是一款備受矚目的產(chǎn)品。XC7Z035-3FFG676E 屬于賽靈思 Zynq - 7000 系列,該系列將處理器系統(tǒng)(PS)和可編程邏輯(PL)完美結(jié)合,為用戶提供了高度靈活的解決方案。這款器件采用了先進(jìn)的 28 納米工藝技術(shù),在性能、功耗和成本之間實(shí)現(xiàn)了出色的平衡。
    2024-09-25 79次

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

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