FIFO在設(shè)計是一個非常常見并且非常重要的模塊,很多公司有成熟的IP,所以一部分人并沒有人真正研究寫過FIFO,本文僅簡述FIFO中部分值得保留的設(shè)計思路。
FIFO可以分為2大類:有直接使用寄存器搭的FIFO(多用于小型FIFO、和異步FIFO),也有使用SRAM搭的FIFO(多用于大型存儲)。
因為SRAM比寄存器面積小。其他更細(xì)劃分如單口,雙口等等不做詳細(xì)介紹。
本文將簡述以下兩個方向:
lSRAM出口通常不是當(dāng)拍可以讀出數(shù)據(jù),因此需要邏輯對這部分做邏輯,實現(xiàn)和寄存器相同時序。
l由于第一條邏輯造成,當(dāng)用戶讀取SRAM數(shù)據(jù)時會有幾拍延遲,因此為消除延遲將會增加數(shù)據(jù)輸出開關(guān)功能(見本公眾號文章模塊端口握手設(shè)計模塊多對多端口握手設(shè)計-總結(jié))以及數(shù)據(jù)輸入切換功能。
本文設(shè)計FIFO如下圖所示:

第一條中SRAM出口無法做到當(dāng)怕出數(shù)的原因是由SRAM的知道工藝造成(可以在存儲器芯片手冊里看到),例如在TSMC 5nm工藝下,讀使能有效到數(shù)據(jù)穩(wěn)定輸出大概需要500ps,而且如果位寬過大,在ECC時又需要幾百ps延遲,因此可能一拍數(shù)據(jù)無法收斂,因此需要幾級寄存器緩存,一般是3拍(控制信號緩存+讀數(shù)據(jù)延遲+ECC延遲)。
第二條中輸出開關(guān)功能,參見本文相應(yīng)文章,功能主要保證當(dāng)FIFO有數(shù)據(jù)時會傳遞至最后一級輸出寄存器中。
第二條中的輸入切換功能,是指2個mux模塊,功能主要保證輸出reg優(yōu)先被填滿,當(dāng)輸出reg被填滿之后,新數(shù)據(jù)才會被存入SRAM中。輸出寄存器數(shù)量和SRAM延時寄存器數(shù)量相同,保證當(dāng)輸出寄存器中數(shù)據(jù)在3拍讀出之后SRAM數(shù)據(jù)經(jīng)過延時之后恰好可以繼續(xù)被讀出,而不會中間出現(xiàn)間隔。
對于mux2的功能是在FIFO數(shù)據(jù)為空,且同時又讀寫使能,可以直接把輸入數(shù)據(jù)輸出。
上述內(nèi)容僅用于同步FIFO設(shè)計,而異步大型FIFO經(jīng)常采用同步SRAM緩存+異步寄存器FIFO的設(shè)計模式,有時間待續(xù)異步FIFO設(shè)計。
-
寄存器
+關(guān)注
關(guān)注
31文章
5608瀏覽量
129968 -
sram
+關(guān)注
關(guān)注
6文章
819瀏覽量
117459 -
fifo
+關(guān)注
關(guān)注
3文章
407瀏覽量
45746 -
FIFO設(shè)計
+關(guān)注
關(guān)注
0文章
7瀏覽量
5116
發(fā)布評論請先 登錄
FIFO隊列原理簡述
握手型接口的同步FIFO實現(xiàn)
求助verilog編寫實現(xiàn)AXIStream-FIFO功能思路
高速異步FIFO的設(shè)計與實現(xiàn)
一種異步FIFO的設(shè)計方法
什么是fifo fifo什么意思 GPIF和FIFO的區(qū)別
最經(jīng)典的FIFO原理
如何配置自己需要的FIFO?FIFO配置全攻略
FPGA之FIFO練習(xí)1:設(shè)計思路
FPGA之FIFO練習(xí)3:設(shè)計思路
FPGA之FIFO練習(xí)2:設(shè)計思路
FIFO設(shè)計—同步FIFO
淺談FIFO設(shè)計思路
評論