利用FFT IP Core實(shí)現FFT算法
Stratix II、Stratix GX、Stratix系列FPGA器件。該FFT Core功能是執行高性能的正向復數FFT或反向的FFT(IFFT),采用基2/4頻域抽取(DIF)的FFT算法,其轉換長(cháng)度為2m,這里6≤m≤14。在其內部,FFT采用塊浮點(diǎn)結構,以在最大信噪比(SNR)和最小資源需求之間獲得最大的收益。FFT Core接收一個(gè)長(cháng)度為N的、二進(jìn)制補碼格式、順序輸入的復數序列作為輸入,輸出轉換域的、順序的復數數據序列。同時(shí),一個(gè)累加塊指數被輸出,表示塊浮點(diǎn)的量化因子。FFT Core的轉換方向事先由一個(gè)輸入端口為每個(gè)數據轉換塊指定。
FFT Core可以設置兩種不同的引擎結構:四輸出(Quad-output FFT engine)和單輸出(Single-output FFT engine)。對于要求轉換時(shí)間盡量小的應用,四輸出引擎結構是最佳的選擇;對于要求資源盡量少的應用,單輸出引擎結構比較合適。為了增加整個(gè)FFT Core的吞吐量,可以采用多并行引擎結構。
FFT Core支持3種I/O數據流結構:連續(streaming)、緩沖突發(fā)(Buffered Burst)、突發(fā)(Burst)。連續I/O數據流結構允許處理連續輸入數據,輸出連續復數數據流,而不中斷輸入和輸出數據;緩沖突發(fā)I/O數據流結構與連續結構相比,需要更少的存儲資源,但是,這是以減少平均吞吐量為代價(jià)的;突發(fā)數據流結構的操作與緩沖突發(fā)方式基本上一致,但突發(fā)方式則需要更少的存儲資源,這也是以降低吞吐量為代價(jià)的。
3 硬件設計
圖1整體原理圖
設計的整體原理圖如圖1所示。輸入和輸出緩沖器分別存儲預處理數據和FFT轉換結果;FFT運算器負責FFT運算;控制器為輸入和輸出緩沖器提供讀寫(xiě)地址,并控制FFT運算的時(shí)序和緩沖器的讀寫(xiě)操作;后處理單元從單路復數輸入頻譜數據中分離出兩路實(shí)數輸入頻譜數據;求模運算器實(shí)現CORDIC算法,求取轉換結果的平方根。設計的輸入為兩路實(shí)數序列,一路作為實(shí)部,另一路作為虛部,由連續的256點(diǎn)的數據段組成;輸出是間斷的256點(diǎn)數據段,各數據段的前128點(diǎn)為第一路的頻譜數據,后128點(diǎn)是第二路的頻譜數據。根據FFT頻譜關(guān)于中心點(diǎn)對稱(chēng)的結果,只截取前半段頻譜數據并不會(huì )丟失任何信息。
整個(gè)系統的工作時(shí)序為:
①數據以5MHz的速率輸入到輸入緩沖器;
②FFT運算器以40MHz的速率從輸入緩沖器中取數進(jìn)行運算;
③FFT運算結束時(shí),將轉換結果存入到輸出緩沖器中;
④輸出緩沖器數據以20MHz的速率被送到后處理單元進(jìn)行轉變;
⑤數據被送到求模運算器,進(jìn)行CORDIC運算,輸出;
⑥當③結束時(shí),FFT運算器又回到起始狀態(tài),等待處理下一組數據,從而使運算周而復始地進(jìn)行。整個(gè)設計由控制器嚴格控制。
輸入和輸出緩沖器由FPGA內部的RAM實(shí)現,這些都相對簡(jiǎn)單。下面重點(diǎn)介紹。FFT運算器、控制器、后處理單元和求模運算器。
評論