先出存儲器
❶ 請問FIFO是什麼意思
FIFO( First Input First Output)簡單說就是指先進先出。由於微電子技術的飛速發展,新一代FIFO晶元容量越來越大,體積越來越小,價格越來越便宜。作為一種新型大規模集成電路,FIFO晶元以其靈
活、方便、高效的特性,逐漸在高速數據採集、高速數據處理、高速數據傳輸以及多機處理系統中得到越來越廣泛的應用。
在系統設計中,以增加數據傳輸率、處理大量數據流、匹配具有不同傳輸率的系統為目的而廣泛使用FIFO存儲器,從而提高了系統性能。FIFO存儲器是一個先入先出的雙口緩沖器,即第一個進入其
內的數據第一個被移出,其中一個存儲器的輸入口,另一個口是存儲器的輸出口。對於單片FIFO來說,主要有兩種結構:觸發導向結構和零導向傳輸結構。觸發導向傳輸結構的FIFO是由寄存器陣列
構成的,零導向傳輸結構的FIFO是由具有讀和寫地址指針的雙口RAM構成。
(1)先出存儲器擴展閱讀:
FIFO存儲器是系統的緩沖環節,如果沒有FIFO存儲器,整個系統就不可能正常工作,它主要有幾方面的功能:
1、對連續的數據流進行緩存,防止在進機和存儲操作時丟失數據;
2、數據集中起來進行進機和存儲,可避免頻繁的匯流排操作,減輕CPU的負擔;
3、允許系統進行DMA操作,提高數據的傳輸速度。這是至關重要的一點,如果不採用DMA操作,數據傳輸將達不到傳輸要求,而且大大增加CPU的負擔,無法同時完成數據的存儲工作。
參考資料來源:網路-FIFO存儲器
❷ FIFO 控制器 的作用是什麼
IFO 是先入先出存儲器的縮寫,FIFO 控制器在數字系統中被大量使用,可以作為數據緩存
使用。時鍾同步的FIFO 控制器介面如下圖所示,主要介面信號定義如下:
RST_N:非同步復位信號,當RST_N 為低電平時,FULL 輸出『0』,EMPTY 信號輸出『1』
電平,FIFO 指針指向0,FIFO 被清空;
CLK:時鍾信號,輸出信號與CLK 信號同步;
DATAIN:數據輸入信號,8 位匯流排;
RD:讀有效信號,高電平有效,當RD 位高時,在時鍾信號CLK 的上升沿,DATAOUT 輸
出一個8 位的有效數據;
WR:寫有效信號,當WR 為高電平時,在CLK 的上升沿,從DATAIN 信號向存儲器寫入
一個8 位的有效數據;
DATAOUT:數據輸出信號,8 位匯流排,在CLK 的上升沿,當RD 為高電平時,從FIFO 中
輸出一個8 位的數據;
FULL:存儲器寫滿標志信號,高電平時表示存儲器中的數據已經寫滿;
EMPTY:存儲器讀空標志信號,高電平時表示存儲器中的數據已經被讀空了。
要求:用Verilog 寫一個8x16 的FIFO,完成先入先出的功能,並且在FIFO讀空時輸出EMPTY
有效信號,讀指針RP 不再移動;FIFO 寫滿時輸出FULL 有效信號,並且即使WR 有效也
不再向存儲單元中寫入數據(寫指針WP 不再移動)。
存儲單元使用一個二維數組來建模。注意存儲單元的地址在讀或者寫到最高地址時要能回到
最低值。
寫出合適的testbench 來測試所寫的Verilog 代碼,檢驗其正確性。
mole fifo_mem(data,clk,rstN,wrN,rdN,empty,full);
inout [7:0] data;
input clk,rstN,wrN,rdN;
output empty,full;
reg [4:0] _cntr,rd_cntr;
wire [3:0] add;
ram16X8 ram(.data(data),.addr(addr),.wrN(wrN),.oe(wrN));
always @(posedge clk or negedge rstN)
if(!rstN) wr_cntr<=0;
else if (!wrN) wr_cntr<=wr_cntr+1;
always @ (posedge clk or negedge rstN)
if(!rstN) rd_cntr<=0;
else if(!rdN) rd_cntr<=rd_cntr+1;
assign addr=wrN?rd_cntr [3:0]: wr_cntr [3:0];
assign empty=(wr_cntr [3:0] == rd_cntr [3:0])&&!(wr_cntr[4]^rd_cntr[4]);
assign full=(wr_cntr [3:0] ==rd_cntr [3:0])&&(wr_cntr[4]^rd_cntr[4]);
endmole