OFDM中調制使用IFFT,解調使用IFFT,在OFDM實現系統中,FFT和IFFT時必備的關鍵模塊。在使用Xilinx的7系列FPGA(KC705)實現OFDM系統時,有以下幾種選擇:
(1)在Vivado中調用官方的FFT的IP核(AXI-Stream總線);
(2)在Vivado HLS中調用官方的FFT的IP核(內部FFT通信AXI-Stream總線),可以自己增加外部封裝接口類型;
(3)Verilog編寫FFT,很復雜,找到了一個1024點的并行流水線的,但是資源耗費太大,8192點時很難滿足,不采用;
(4)使用HLS用C語言自己編寫FFT,程序比較簡單,開發快,但是我需要100M時鐘下跑8192點FFT的時鐘時序約束不夠,跑不到100M;
最后還是選擇使用HLS里面調用FFT的庫,并且根據我們的項目需要,對其外部輸入輸出封裝成一個AXI-Master接口,并且在Devcpp里面使用C語言實現(不考慮延時和資源消耗等)對比結果,發現基本一致。
本節主要講Devcpp里的實現結果。
1.定義計算點數和復數類型

2.計算
(1)初始化蝶形因子;
(2)比特反轉,變址運算;
(3)FFT蝶形循環計算;
(4)計算功率,輸出結果;

3.結果驗證
以100Hz的sin函數作為輸入信號,幅值-1~1,輸出功率最大值在p[100],趨近于1。

4.計算IFFT
(1)將輸入的復數取共軛;
(2)調用FFT;
(3)對輸出的數據取共軛;
完成。
最初始的sin信號如下:

經過FFT之后,對結果取共軛,并且縮小N點(8192)倍,再次調用FFT,對輸出取共軛,得到IFFT結果如下:

??審核編輯:湯梓紅
-
FPGA
+關注
關注
1662文章
22446瀏覽量
637574 -
Xilinx
+關注
關注
73文章
2202瀏覽量
131466 -
FFT
+關注
關注
15文章
458瀏覽量
63148 -
C語言
+關注
關注
183文章
7645瀏覽量
145886 -
HLS
+關注
關注
1文章
135瀏覽量
25911
原文標題:FPGA實現OFDM通信——FFT與IFFT(1)——C語言實現N點FFT
文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
【參考書籍】基于XILINX FPGA的OFDM通信系統基帶設計—史治國
【基于Xilinx FPGA的OFDM通信系統基帶設計】隨書光盤
adc采樣后數據無法實現ofdm(fft)解調
怎么使用xilinx系統生成器實現ofdm
怎么使用FPGA實現OFDM系統同步算法?
基于FPGA 的OFDM 寬帶數據通信同步系統設計與實現
導頻疊加OFDM同步方法的FPGA實現
基于FPGA的OFDM系統設計與實現
如何使用FPGA設計和實現OFDM系統和OFDM中的FFT模塊設計及其FPGA實現
如何使用FPGA實現高速移動下的OFDM均衡器
使用Xilinx FPGA實現OFDM系統
評論