FFT IP核的設置
這里做最簡單的設置,打開Vivado,點開IP Catalog,找到FFT IP核。設置界面如下:
Configuration 設置
設置的參數意義如下:
- Numbers of Channels: 通道數,FFT IP核可以設置多個數據通道,進行多路FFT操作
- Transform Length: 傳輸的數據長度,就是FFT中的點數,決定輸出的頻譜分辨率
- Architecture Configuration:如果Architecture Choice選擇Automatically Select,IP核會根據你填的時鐘頻率和數據吞吐量選擇適合的架構
Implementation
設置的參數意義如下:
- Data Format: 數據格式,定點數或浮點數,浮點數不能使用多個通道同時進行FFT操作
- Scaling Options: 對輸出的數據進行等比例縮小,如果選Scaled,則在控制IP核時需要設置縮小比例,詳情見: 資料1
- Input Data Width:輸入數據位寬,這里只用輸入I,Q一路的位寬,不需要輸入組合起來的位寬
- Phase Factor Width:因為進行FFT 操作涉及乘加操作,肯定會有精度損失,這里可以設置一個合適的值平衡精度和面積的要求。
- 控制信號:時鐘使能跟復位信號,復位信號拉低最少要保持兩個時鐘周期。
- Output Ordering: Natural Order輸出的頻譜數據還要做fftshift,這個跟fft算法流程有關系
- Optional Output Fields: 輸出的索引信號和overflow信號,勾選后這些信息會跟頻譜數據一起輸出
Detail Implementation
直接默認跳過。
IP核生成后可以看到有很多信號,這些信號代表的意義又是怎么樣的。可以在IP核設置界面的左側Implementation Detail看到下圖內容
從圖中可以看出:
- Output Data Width: 輸出數據的位寬,當然也是I,Q一路信號的位寬
- S_AXIS_DATA_TDATA: 這是把時域信號往FFT IP核傳輸的數據通道,通過圖中可以看到,57:32傳輸Q路信號,25:0傳輸I路信號。
- S_AXIS_CONFIG_TDATA: 這是對FFT IP核設置參數內容;圖中很明顯告知,16:1傳輸SCALE_SCH信號,這個信號決定輸出的數據等比例縮小多少倍,具體參數設置可以看: 資料1的內容;0位傳輸的控制信號,為1時IP核做FFT運算,為0時做IFFT運算。
- M_AXIS_DATA_TDATA: 這是FFT輸出的頻譜數據,從圖中可以看到,57:32對應的是虛部數據,25:0對應的是實部數據。
- M_AXIS_DATA_TUSER: 這個信號根據圖中可知,傳輸的是輸出頻譜的索引,有一定的作用。這里輸出的具體內容根據上述的FFT IP核設置決定
大概的運算時間
這些信號其實都是AXI4-Stream的相關信號
AXI4-Stream協議
除了AXI4-Lite的信號,AXI4-Stream還增加了以下信號:
- TKEEP:指示信號,指明當前數據數據類型,發送數據方控制該信號;為低電平表明對應字節數據是空字節,可以移除;與TSTRB一同發揮作用,兩個信號都是可選非必需信號
當去掉TKEEP信號,TKEEP視作全高電平
當去掉TSTRB信號,TSTRB的值等同TKEEP
兩個信號都被選擇后作用如下圖: - TLAST:指示信號,指明當前是最后一次數據傳輸,發送數據方控制該信號;只有在最后一次數據傳輸時該信號會拉高一次,信號一直拉高表明數據都是獨立的而不是來自同一個數據包,可選非必需信號;
發送方(Master)不要求一定要支持該信號
接受方(Slave)的該信號固定為低電平 - TID: 指示信號,指明當前數據流的ID,標明不同的數據流,發送數據方控制該信號,可選非必需信號,內容見TLAST;
- TDEST:指示信號,提供數據流的路由信息,發送數據方控制該信號,可選非必需信號,內容見TLAST;
- TUSER:可以自定義的數據信息,發送方跟接收方協商好,數據內容根據雙方協商確定,起傳輸輔助信息內容,發送數據方控制該信號,并且跟隨發送方的數據流一同發送,雙方的TUSER數據位寬確定規則如下:
MIN(MAX[TUSER bits per byte of masters], MAX[TUSER bits per byte of slaves]) - TREADY,TDATA也是可選非必需信號;去掉TREADY信號,TREADY視作為高電平;去掉TDATA,TSTRB也被視作去掉
而在FFT IP核中,一共出現了下列信號:
- s_axis_data: FFT IP核的時域數據輸入通道,這個傳輸過程中,FFT IP核作為接收方(Slave)
- s_axis_config: FFT IP核的配置數據輸入通道,這個傳輸過程中,FFT IP核作為接收方(Slave)
- m_axis_data: FFT IP核的頻譜數據輸出通道,這個傳輸過程中,FFT IP核作為發送方(Master)
而且,s_axis_config只使用了TDATA,TREADY,TVALID; s_axis_data使用了TDATA,TREADY,TVALID, TLAST; m_axis_data使用TDATA,TREADY,TVALID, TLAST, TUSER;相對來說控制并不復雜;
FFT IP核的控制流程如下:
- 配置好s_axis_config_tdata, s_axis_config_tready跟s_axis_config_tvalid握手(都為高)后,配置數據傳入;
- 等待s_axis_data_tready和s_axis_data_tvalid拉高,通過s_axis_data_tdata傳入數據至FFT IP核,等到最后一次數據傳輸,同時拉高s_axis_data_tlast;
- 等待m_axis_data_tvalid和m_axis_data_tready拉高,接收m_axis_data_tdata的數據,m_axis_data_tuser的數據是頻譜數據的索引,根據這個索引可以知道當前頻譜數據的位置;等到m_axis_data_tlast拉高,數據傳輸結束。
最終結果圖:
-
FFT
+關注
關注
15文章
443瀏覽量
60541 -
AXI4總線
+關注
關注
0文章
9瀏覽量
1464
發布評論請先 登錄
一文詳解Video In to AXI4-Stream IP核

評論