vivado 的IFFT/FFT IP核的配置及调用
對于viavado 中IFFT IP的使用剛開始的時候,沒有找到IFFT的IP,最后經過查找資料發現,在VIVADO中 FFT IP和IFFT IP是用的統一個IP,具體是IFFT還是FFT通過設s_axis_config_tdata=1/0設置fft或ifft模式,而且在同一個工程當中,盡量選擇同一個IP多次例化使用。
FFT IP的設置主要包括三個界面,雖然不是每一個標簽欄都需要修改配置,但最好也要知道一下他的作用:
第一頁界面:
第一個標簽頁里主要配置通道數,點數,時鐘,吞吐量,結構,以及是否可以運行時配置,需要注意的是結構的配置會影響調整因子。如下圖所示:
number of channels :變換通道,可以選擇多通道,實現多幀數據同時進行FFT運算;
transform lenfgth : FFT變換長度,如果選擇了最下面的‘run time configurable transdorm legth’,則該參數是FFT變化的最大長度,一般不選。
architecure choice : 這個標簽里主要是用來實現,FFT變換所選用的架構:
Automatically selected : 自動選擇所需要的,FFT變化架構。
pipelined streaming : 并行流水線結構
radix-4, burst i/o : 基4 I/O突發結構
radix-2, burst i/o : 基2 I/O突發結構
radix-2 life, burst i/o : 基2 I/O突發結構
其中流水線的結構變換處理時間最短,資源消耗最大。
run time configurable transdorm legth : 該選項可以在FFT變換中通過設置s_axis_config_tdata中NFFT字段的長度來改變FFT變化的長度。
第二頁界面:
第二配置頁主要是數據寬度,格式,控制信號,輸出方式,和可選的控制信號。需要注意的是輸據的輸入是自然方式(Natural Order),輸出可以是自然方式也可以是倒序方式(Reversed Order),如果選用倒序方式輸出,在后面處理中就要注意這一特性。
其中在data format;下拉標簽中,對應著FFT IP核支持兩種數據類型:
1. 定點全精度
2. 定點縮減位寬
scaling optios :縮放選項 :
1、 block floating point :不管輸入的格式如何,FFT變化內部都采用浮點,會根據每一級的的數據情況自動縮放,是的數據不出現溢出的情況,
2、scaled :在m_axis_data_tuser中會有5BIT表示每一級的縮放情況,在s_axis_config_data中會有相應的字段配置配置縮放因子.每一級別包含2個stage ,2個bit 表示一級縮放,一般0-3可選,如果log(NFFT)不是2的倍數,則最高一級的縮放只能在0-1之間選取。
3、unscaled :不用擔心變化過程中會出現溢出,但是輸入是32bit的話,輸出是64bit。
Aresten : 復位信號要勾選,至少保持兩個時鐘的低電平。
output odering options: 輸出順序選項。
1、nature order:就是FFT變化后的輸出已經調整了順序,按照xk_index自然順序列出變化結果,
2、bit/digital reserved oder就是按照變化后的順序直接輸出,是倒序輸出,需要自己后續處理,
3、cyclic perfix insertion :循環前綴插入,一般添加,在進行IFFT后可以根據s_axis_config_data中的CP長度配置自動添加CP。
optional output fileds :選項輸出字段,
1、xk_index:FFT 變幻的結果索引,在m_axis_data_user中有相應的字段。
2、OVFLO是變換中溢出的指示信號,對應event_fft_overflow.
第三頁界面:
不做任何修改。
第四:
關于一些端口的說明:
s_axis_config_tdata:控制輸入模式,進行fft/ifft以及衰減因子的設置,第0位為1fft,為0做ifft,高位用于scale因子的設置。
s_axis_config_tvalid:拉高若干個時鐘周期后歸零,之后將s_axis_data_tvalid拉高
s_axis_config_tready:s_axis_config_tvalid拉高兩個時鐘周期后,該口給1輸出;
s_axis_data_tready:s_axis_config_tvalid拉高兩個時鐘周期后,該口給1輸出,ip核初始化完成,可進行數據輸入必須進行賦值;
s_axis_data_tvalid:拉高2048個周期,輸入2048個數據進行fft;
s_axis_data_tdata:輸入32位數據,取低12位數據進行運算;
s_axis_data_tlast:輸入2048個數據后拉高,停止數據輸入;
做fft需要耗費的時鐘周期計算如下s_axis_data_tlast- s_axis_data_tvalid
,在ip核中可看到:
m_axis_data_tdata:高位為實部,低位為虛部,由于本程序在always內將值給fft_real端口,所以會延遲一個時鐘周期,實際為41,fft_real為42;
m_axis_data_tvalid:當fft結果輸出時拉高,輸出2048個點的數據后拉低;
m_axis_data_tuser:輸出fft的地址值,輸出值*fs/N為對應頻點;
m_axis_data_tready:完成2048個點的fft后拉高一個時鐘周期表示完成fft;
event_frame_started:輸入信號數據時拉高一個時鐘周期;
總結
以上是生活随笔為你收集整理的vivado 的IFFT/FFT IP核的配置及调用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: wd移动硬盘测试软件,西数硬盘修复工具(
- 下一篇: 微信小程序制作表格代码「建议收藏」(下载