1. 程式人生 > >學習筆記20151211——AXI4 STREAM DATA FIFO

學習筆記20151211——AXI4 STREAM DATA FIFO

開始 detail tar 接口 component tween 數據緩存 自動 將在

AXI4 STREAM DATA FIFO是輸入輸出接口均為AXIS接口的數據緩存器,和其他fifo一樣是先進先出形式。可以在跨時鐘域的應用中用於數據緩沖,避免亞穩態出現。支持數據的分割和數據拼接。在使用該IP核之前,我們應該熟悉該IP核的各種參數設定的含義。

技術分享圖片
上圖則是該IP核的參數設定界面(開發環境為VIVADO2015.1),點擊左上角的Documentation,下拉框中選擇Product Guide,打開該IP核的說明文檔。
鏈接如下:
http://www.xilinx.com/support/documentation/ip_documentation/axis_infrastructure_ip_suite/v1_1/pg085-axi4stream-infrastructure.pdf

Component Name:
元件名字:該IP核生成後的模塊名;

FIFO Depth:
FIFO深度:該設定為指定例化FIFO的深度。當FIFO的深度為16或者32時利用基於FIFO的LUTRAM,其他深度的FIFO將利用BLOCK RAM實現。

Enable Packet Mode:
使能包模式:設置為Yes將使能包模式。此項設定需要TLAST信號被使能。FIFO的操作在包模式下被修改為存儲傳送的數據,知道TLAST信號被斷言(響應)。當TLAST信號被響應或者FIFO滿了,存儲的傳送數據將被送至AXI4-Stream master interface。

Asynchronous Clocks:
異步時鐘:如果設定了Yes,S_AXIS_ACLK和M_AXIS_ACLK被設定為與彼此異步,該IP將在異步模式進行操作。

Synchronization Stages across Cross Clock Domain Logic:
跨交叉時鐘域邏輯的同步階段:
當S_AXIS_ACLK和M_AXIS_ACLK是與彼此異步的,此項參數指定了用於跨時鐘域邏輯的同步階段的階數。增加這個值可以增加設計的MTBF,但是會增加延遲時間和邏輯利用。參考the FIFO Generator Product Guide(PG075)獲得該參數的更多信息。

ACLKEN Conversion Mode
ACLKEN轉換模式:
這個下拉選項為ACLKEN信號的轉換模式。當ACLKEN轉換執行時會消耗額外的延遲和邏輯。這個選項有:
None - 這裏沒有ACLKEN信號關聯於IP。
S AXIS Only - 一個S_AXIS_ACLKEN信號關聯到S_AXIS_ACLK時鐘信號和沒M_AXIS_ACLKEN信號。
M AXIS Only - 一個M_AXIS_ACLKEN信號關聯到M_AXIS_ACLK時鐘信號和沒有S_AXIS_ACLKEN信號。
S AXIS & M AXIS - 兩邊時鐘都有 ACLKEN信號關聯到他們。

Signal Properties:
信號特性:
當使用IP集成器是,Vivado IDE會自動計算這些參數的值。

TDATA Width(bytes):
TDATA位寬(字節為最小單位):
該參數指定了所有AXI4-Stream interfaces中的TDATA信號的位寬,以字節為最小單位。該參數為整數,在0到512之間。設為0將省略TDATA信號。如果TDATA信號被省略,TKEEP和TSTRB信號也會被省略。接口數據的位寬按bits計算,需要乘以8。

Enable TSTRB
使能TSTRB信號
如果設定為Yes,這個參數指定是否在所有AXI4-Stream interfaces使用可選的TSTRB信號。這個選項只能在TDATA Width(bytes)參數大於0時才可以使能。

Enable TKEEP
使能TKEEP信號
如果設定為Yes,這個參數指定是否在所有AXI4-Stream interfaces使用可選的TKEEP信號。這個選項只能在TDATA Width(bytes)參數大於0時才可以使能。

Enable TLAST:
使能TLAST:
如果設定為Yes,這個參數指定是否在所有AXI4-Stream interfaces使用可選的TLAST信號。對於TLAST信號要重點說明,因為在使用STREAM FIFO時TLAST的作用特別的重要。對於STREAM FIFO來說,TLAST信號的作用是指示一次傳輸數據流的最後一個數據,也指示著該數據流的結束。其會記錄下TLAST信號的位置,及當其SLAVE接口(SFIFO的數據寫入接口)的某一個數據寫入的同時TLASET信號也為高的話,當MASTER接口(SFIFO的數據讀出接口)讀出該數據的同時也會將TLAST信號拉高。總結起來就是,進的數據有TLAST,該數據出的時候就會有TLAST。
TID Width(bits):
TID位寬(比特為單位):
如果該參數大於0,這個參數指定是否在所有的AXI4-Stream interfaces中使用TID信號。值大於0省略這個信號。

TDEST Width(bits):
TDEST位寬(bits):
如果該參數大於0,這個參數指定是否在所有的AXI4-Stream interfaces中使用TDEST信號。值大於0省略這個信號。

TUSER Width(bits):
TUSER 位寬(bits):
如果該參數大於0,這個參數指定是否在所有的AXI4-Stream interfaces中使用TDEST信號。值大於0省略這個信號。

這裏重點說下Synchronization Stages across Cross Clock Domain Logic,這個參數的出現是由於在進行跨時鐘域操作時,即FIFO的讀寫時鐘異步時,在讀時鐘域與寫時鐘域進行數據交互時可能會存在亞穩態,而通過在數據交換節點插入連續的寄存器進行時鐘同步,而這個參數的數值就是插入的同步寄存器的個數,或者叫做階數。階數越高,MTBF(Mean Time Between Failures,平均無故障時間)越大,則出現亞穩態的幾率越小,但是同時也會增加信號傳輸的延遲和增加額外的邏輯資源。

還有一個參數Packet Mode,當開啟整包發送模式後,FIFO會一直檢測當前接收數據量,只有當數據量到達FIFO的深度時,即FIFO滿的時候(在實際測試中發現當STREAM FIFO滿的時候不會輸出TLAST信號),或者是FIFO的SLAVE接口接收到TLAST信號時,該FIFO的MASTER接口才可以輸出有效數據,及才會允許後級模塊接收FIFO內數據。

在使用STREAM FIFO的應用中只應用到了TDATA、TVALID、TREADY以及TLAST信號,所以接下來對STREAM FIFO的功能說明只要是針對只是用以上信號的條件下的。

STREAM FIFO的復位信號為低有效,當復位信號拉高後的第三個時鐘上升沿s_axis_tready信號會自動拉高,該fifo處於等待接收數據狀態。
技術分享圖片

當STREAM FIFO的前端有數據需要發送時,在s_axis_tready為高時拉高s_axis_tvalid信號,在下個時鐘上升沿,STREAM FIFO便開始收數。
技術分享圖片

當STREAM FIFO內部的數據達到fifo的深度時,在接收進最後一個數據的同時,s_axis_tready將會變為低,告訴前級fifo已滿,不能在收數據了。其實S_axis_tready信號相當於普通FIFO的full與empty信號的綜合體。
技術分享圖片

對STREAM FIFO 的MASTER接口為FIFO的數據輸出接口。當STREAM FIFO接收到數據並傳到MASTER接口上時,m_axis_tvalid便會拉高,由於使用的STREAM FIFO為異步時鐘模式,數據寫入時鐘比數據讀出時鐘要快,而讀數據計數器的刷新是在讀數據時鐘的上升沿,所以可以從圖中看到讀數據計數器的值是跳躍上升的。當FIFO的後端將m_axis_tready拉高時,MASTER接口便會將數據送出去。

最後再來觀測下TLAST信號:
技術分享圖片

為了說明TLAST信號的傳輸特點,我們在SLAVE的寫入數據時在數據1023 和數據1024的時候將s_axis_tlast拉高。然後打開MASTER接口將STREAM FIFO內部的數據讀出。
技術分享圖片

從MASTER接口的數據流可以看出,將數據1023和數據1024讀出的同時也會將m_axis_tlast信號拉高。

最後說明一下STREAM FIFO的Packet mode包模式,開啟包模式必須是采用同步時鐘,而且TLAST信號必須使用。
在包模式下,數據將是以包的單位,而包內數據的數量由TVALID、TREADY和TLAST信號控制,TVALID信號和TREADY信號一起為包數據的開始,TLAST信號為包數據的結束。當STREAM FIFO裏面沒有收到一包的數據時,FIFO的MASTER接口將處於關閉狀態,即m_axis_tvalid將一直保持為低。當STREAM FIFO內部數據有至少一包及以上的數據時,MASTER接口將開啟,m_axis_tvalid將會拉高,當後級將存的包數據取完之後,MASTER接口又將關閉,m_axis_tvalid將拉低,直到接收到下一包數據之後才會重新打開。
技術分享圖片

轉載:http://blog.csdn.net/qq_20748649/article/details/50265141

學習筆記20151211——AXI4 STREAM DATA FIFO