1、FIFO定義
FIFO是英文First In First Out的縮寫(xiě),是一種先進(jìn)先出的數(shù)據(jù)緩存器,他與普通存儲(chǔ)器的區(qū)別是沒(méi)有外部讀寫(xiě)地址線(xiàn),這樣使用起來(lái)非常簡(jiǎn)單,但缺點(diǎn)就是只能順序?qū)懭霐?shù)據(jù),順序的讀出數(shù)據(jù),其數(shù)據(jù)地址由內(nèi)部讀寫(xiě)指針自動(dòng)加1完成,不能像普通存儲(chǔ)器那樣可以由地址線(xiàn)決定讀取或?qū)懭肽硞€(gè)指定的地址。
2、FIFO功能
FIFO存儲(chǔ)器是系統(tǒng)的緩沖環(huán)節(jié),如果沒(méi)有FIFO存儲(chǔ)器,整個(gè)系統(tǒng)就不可能正常工作,它主要有幾方面的功能:
1)對(duì)連續(xù)的數(shù)據(jù)流]進(jìn)行緩存,防止在進(jìn)機(jī)和存儲(chǔ)操作時(shí)丟失數(shù)據(jù);
2)數(shù)據(jù)集中起來(lái)進(jìn)行進(jìn)棧和存儲(chǔ),可避免頻繁的總線(xiàn)操作,減輕CPU的負(fù)擔(dān);
3)允許系統(tǒng)進(jìn)行DMA操作,提高數(shù)據(jù)的傳輸速度。這是至關(guān)重要的一點(diǎn),如果不采用DMA操作,數(shù)據(jù)傳輸將達(dá)不到傳輸要求,而且大大增加CPU的負(fù)擔(dān),無(wú)法同時(shí)完成數(shù)據(jù)的存儲(chǔ)工作。
3、FIFO分類(lèi)
FIFO的分類(lèi)根據(jù)FIFO工作的時(shí)鐘域,可以將FIFO分為同步FIFO和異步FIFO。同步FIFO是指讀時(shí)鐘和寫(xiě)時(shí)鐘為同一個(gè)時(shí)鐘。在時(shí)鐘沿來(lái)臨時(shí)同時(shí)發(fā)生讀寫(xiě)操作。異步FIFO是指讀寫(xiě)時(shí)鐘不一致,讀寫(xiě)時(shí)鐘是互相獨(dú)立的。同步FIFO和異步FIFO如圖所示,從圖中可以看到,同步FIFO 具有一個(gè)獨(dú)立的時(shí)鐘端口 clock,因此所有的輸入輸出信號(hào)都同步于 clock 信號(hào)。而在異步FIFO 結(jié)構(gòu)中,寫(xiě)端口和讀端口分別有獨(dú)立的時(shí)鐘,所有與寫(xiě)相關(guān)的信號(hào)都是同步于寫(xiě)時(shí)鐘 wrclk,所有與讀相關(guān)的信號(hào)都是同步于讀時(shí)鐘 rdclk。
同步 FIFO 常用于同步時(shí)鐘的數(shù)據(jù)緩存,異步 FIFO 常用于跨時(shí)鐘域的數(shù)據(jù)信號(hào)的傳遞,例如時(shí)鐘域 A 下的數(shù)據(jù) data1 傳遞給異步時(shí)鐘域 B,當(dāng) data1 為連續(xù)變化信號(hào)時(shí),如果直接傳遞給時(shí)鐘域 B 則可能會(huì)導(dǎo)致收非所送的情況,即在采集過(guò)程中會(huì)出現(xiàn)包括亞穩(wěn)態(tài)問(wèn)題在內(nèi)的一系列問(wèn)題,使用異步 FIFO 能夠?qū)⒉煌瑫r(shí)鐘域中的數(shù)據(jù)同步到所需的時(shí)鐘域中。
4、FIFO的幾個(gè)重要參數(shù)
FIFO 的寬度:FIFO 一次讀寫(xiě)操作的數(shù)據(jù)位 N;
FIFO 的深度:FIFO 可以存儲(chǔ)多少個(gè)寬度為 N 位的數(shù)據(jù)。
空標(biāo)志:對(duì)于雙時(shí)鐘 FIFO 又分為讀空標(biāo)志 rdempty 和寫(xiě)空標(biāo)志 wrempty。FIFO 已空或?qū)⒁諘r(shí)由 FIFO
的狀態(tài)電路送出的一個(gè)信號(hào),以阻止 FIFO 的讀操作繼續(xù)從 FIFO 中讀出數(shù)據(jù)而造成無(wú)效數(shù)據(jù)的讀出。
滿(mǎn)標(biāo)志:對(duì)于雙時(shí)鐘 FIFO 又分為讀滿(mǎn)標(biāo)志 rdfull 和寫(xiě)滿(mǎn)標(biāo)志 wrfull。FIFO 已滿(mǎn)或?qū)⒁獙?xiě)滿(mǎn)時(shí)由 FIFO
的狀態(tài)電路送出的一個(gè)信號(hào),以阻止 FIFO 的寫(xiě)操作繼續(xù)向 FIFO 中寫(xiě)數(shù)據(jù)而造成溢出。
讀時(shí)鐘:讀 FIFO 時(shí)所遵循的時(shí)鐘,在每個(gè)時(shí)鐘的上升沿觸發(fā)。
寫(xiě)時(shí)鐘:寫(xiě) FIFO 時(shí)所遵循的時(shí)鐘,在每個(gè)時(shí)鐘的上升沿觸發(fā)。