非同步fifo的讀寫

2022-08-11 00:39:15 字數 1156 閱讀 1954

這裡不討論非同步fifo是如何實現的,而是在實現fifo的前提下,對fifo的讀寫。

**如下:

接收到的資料位00.

可能是時序約束問題,在之前我確實沒有約束。

改了解碼的編寫後就好了,在此,沒有解碼必須是1個1的解碼,不然就會出錯。但是,位址不夠,我要如何改,現在還不確定。但是解碼必須是1 個 1.

//控制三態

always @(cpu_read_req or intrp_en_en or fifo_con_en) begin

if(cpu_read_req)

en_tri = 1'b1;

else

en_tri = 1'b0;

end由於read和write是同一位址,所以這樣匯流排就衝突了。這樣讀匯流排上的讀資料就都是0.

always @(cpu_read_req or intrp_en_en or fifo_con_en) begin

if(cpu_read_req && cpu_read_clk ) 

en_tri = 1'b1;

else

en_tri = 1'b0;

end修改後的**,讀請求和cpu_read_clk同時有效,才使能輸出。這樣匯流排就不會衝突了。

結果正確。

注:通過這個,知道匯流排上只能有乙個是發資料,其他的裝置只能是接收資料。不然就會衝突,且此時接收可能為0。

非同步fifo 關於非同步fifo的快轉慢的問題

最近一位童鞋跟我聊到乙個非同步fifo的問題,還是很有水準的。我貼在這裡給大家看一下 非同步fifo需要將讀寫的pointer作比較產生滿和空訊號,但是假如fifo的兩個時鐘域的clk相差特別大,pointer在做跨時鐘域轉換的時候就會出現問題。什麼問題呢?慢時鐘採快時鐘會漏採資料。舉個栗子 非同步...

非同步fifo 跨時鐘域同步(非同步FIFO)

本文使用 zhihu on vscode 創作並發布 之前學習了跨時鐘域下的單bit訊號同步的方法,這些單bit訊號多是作為控制訊號或者標誌訊號來使用,再實際的專案中,處理多bit資料也是十分常見的,即資料的同步。非同步fifo的實現其實本質上和雙口ram是一樣的,其實現思路就是將資料在src cl...

非同步FIFO程式

module fifo wr clk,write fifo clock nwr,write fifo signal din,write fifo data rd clk,read fifo clock nrd,read fifo signal dout,read fifo data full,1 f...