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