FPGA实现OFDM通信—C语言实现N点FFT

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结果如下:
​​


压力传感器是什么,它的工作原理是什么
电缆护层保护器的安装方法是怎样的
TCL华星展示高刷新率的手机屏幕,采用独家COF+动态帧频技术
Valyant AI通过扩展度量驱动功能以迎接AI的新时代
什么是ITS?为什么要进行ITS的建设?
FPGA实现OFDM通信—C语言实现N点FFT
人工智能的发展将深入影响到安防行业
基于射频的无线技术改进助听器设计
这几款超性价比的国产千元机,学生党玩王者荣耀的首选机!
Veeco与ALLOS共同展示200mm硅基氮化镓外延片产品
三星即将推出首款支持WiFi 6E机型
选择云服务器租用托管有哪些优势?
Celer Network宣布与Conflux合作共同打造下一代区块链分布式系统
植物光谱测量仪的作用是什么,它有什么意义
如何使用DFplayer单元进行操作
中国愿发起《全球数据安全倡议》
数据中心电气火灾监控系统解决方案
不断发展的网络和协议使智慧城市创新成为可能
驱动神经刺激器实现植入式能量传递方案解析
NVIDIA将为自主机器引入现代AI机器人开发者工具箱即将出现