在異步FIFO中,數(shù)據(jù)讀取和寫入操作使用不同的時鐘頻率。由于寫入和讀取時鐘不同步,因此稱為異步FIFO。通常,這些用于數(shù)據(jù)需要從一個時鐘域傳遞到另一個時鐘域的系統(tǒng)中,這通常稱為“時鐘域交叉”。因此,異步FIFO有助于在兩個工作于不同時鐘的系統(tǒng)之間同步數(shù)據(jù)流。
異步FIFO框圖
信號:
wr_en:寫使能
wr_data:寫入數(shù)據(jù)
full:FIFO 已滿
empty:FIFO 為空
rd_en:讀取啟用
rd_data:讀取數(shù)據(jù)
b_wptr:二進制寫入指針
g_wptr:格雷碼寫入指針
b_wptr_next:二進制寫入指針 下一頁
g_wptr_next: 下一個格雷碼寫指針
b_rptr:二進制讀取指針
g_rptr:格雷碼讀取指針
b_rptr_next: 下一個二進制讀取指針
g_rptr_next:下一個格雷碼讀取指針
b_rptr_sync:二進制讀取指針同步
b_wptr_sync:二進制寫入指針同步
異步FIFO操作
在同步FIFO的情況下,寫入和讀取指針在同一時鐘上生成。但是,在異步FIFO的情況下,寫入指針與寫入時鐘域?qū)R,而讀取指針與讀取時鐘域?qū)R。因此,它需要域交叉來計算FIFO的滿條件和空條件。這會導致實際設(shè)計中的亞穩(wěn)態(tài)。為了解決這種亞穩(wěn)態(tài)問題,可以使用2個觸發(fā)器或3個觸發(fā)器同步器來傳遞寫入和讀取指針。為了解釋,我們將使用 2 個觸發(fā)器同步器。請注意,單個“兩拍同步器”只能解析一位的亞穩(wěn)態(tài)。因此,根據(jù)寫入和讀取指針的不同,需要多個 兩拍?同步器。文章來源:http://www.zghlxwxcb.cn/news/detail-827490.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-827490.html
module synchronizer
#(parameter WIDTH=3)
(input clk,
rst_n,
[WIDTH:0] d_in,
output reg [WIDTH:0] d_out
);
reg [WIDTH:0] q1;
always@(posedge clk) begin
if(!rst_n) begin
q1 <= 0;
d_out <= 0;
end
else begin
q1 <= d_in;
d_out <= q1;
end
end
endmodule
在異步FIFO中使用二進制到格雷碼轉(zhuǎn)換器?
到了這里,關(guān)于IC設(shè)計入門——異步FIFO的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!