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
+关注
关注
1627文章
21685浏览量
602321 -
Xilinx
+关注
关注
71文章
2164浏览量
121089 -
FFT
+关注
关注
15文章
434浏览量
59328 -
C语言
+关注
关注
180文章
7602浏览量
136357 -
HLS
+关注
关注
1文章
128浏览量
24047
原文标题:FPGA实现OFDM通信——FFT与IFFT(1)——C语言实现N点FFT
文章出处:【微信号:zhuyandz,微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论