OFDM802.11a的FPGA实现(十二)使用FFT IP核添加循环前缀

原文链接(相关文章合集)OFDM 802.11a的xilinx FPGA实现

目录

1.前言

为了能够消除传输过程当中的符号间干扰,在IFFT处理完毕之后还要加上循环前缀。

2.循环前缀

实际通信信道中,由于接收到的信号是来自不同传播路径的信号之和,因此会产生多径效应,引起严重的符号干扰(Intersymbol Interference,IS)和信道间干扰(Inter Channel Interference,ICI),限制了信息传输速率的提高。传统方法是使用时域自适应均衡技术来解决多径衰落的问题。但是自适应均衡器的设计、实现、调试往往成为通信系统研制的瓶颈,而且随着传输带宽的不断增加,复杂度和成本也会不断增加。

OFDM 技术可以有效地对抗多径时延扩展。为了最大程度地消除ISI,需要在每个相邻的 OFDM 符号之间插人保护间隔(guard interval,GI),只要该保护间隔的长度 T g T_g Tg大于无线信道的最大时延扩展.,那么该符号的多径分量就不会对下一符号造成干扰。这段保护间隔可以不插入任何信号,传输一段空闲的时段。但这种情况下,可能会产生载波间的干扰(ICI),即子载波之间的正交性遭到破坏,不同的子载波之间产生干扰,如下图所示。

上图中给出了一个带有空闲保护间隔的OFDM符号的第一子载波和第二子载波的延时信号。从图中可以看到,由于在一个FFT运算时间长度内,第一子载波与带有时延的第二子载波之间的周期个数之差不是整数,所以当接收机试图对第一个子载波进行解调时,第二子载波会对此造成干扰。同样,当接收机对第二子载波进行解调时,也会存在来自第一子载波的干扰。

为了消除由于多径造成的ICI,可以在OFDM符号的保护间隔内填入循环前缀信号(CyclicPrefix,CP),即将每个OFDM符号的后 T g T_g Tg时间中的样值复制到OFDM符号前面以形成前缀,如下图所示。

这样就可以保证在一个FFT周期内,OFDM符号的时延副本内所包含的波形周期个数也是整数。这样,时延小于保护间隔 T g T_g Tg的时延信号就不会在解调过程中产生ICI。OFDM系统具体实现中,在计算出快速傅立叶逆变换样值之后,一个循环前缀被加到样值前,形成一个循环拓展的OFDM符号,如下图所示。

添加循环前缀技术利用的是离散线性系统原理中的一个概念。在连续时间域,两个时域信号的卷积等于这两个信号频域形式的乘积。但是,这在离散时域的情况下一般是不成立的。因为只能使用有限个值点N,所以只能利用循环前缀体OFDM符号在感兴趣的时间区内呈现周期性。在信息传输过程中,信道的冲击响应对时域信号造成干扰。由于循环前缀使所传输的OFDM信号表现出周期性,这种卷积就成了一种圆周卷积。根据离散时间线性系统原理这种圆周卷积相当于OFDM信号的频率响应和信道频率响应的乘积。

3.硬件实现

上一节详细讲解了IFFT的实现,其中用到了Xilinx的FFT IP核,其实这个IP核是可以通过配置来实现添加循环前缀的。打开FFT IP核勾选下图中的Cyclic Prefix insertion,特别注意只有当选择自然顺序输出时才可以勾选。

配置字段按以下顺序打包到s_axis_config_tdata向量中(从LSB开始):

  1. (optional) NFFT plus padding
  2. (optional) CP_LEN plus padding
  3. FWD/INV
  4. (optional) SCALE_SCH
      如下图所示:

可选字段显示为虚线。请注意,s_axis_config_tdata的总线宽度可能超过容纳所有字段(包括SCALE_SCH)所需的宽度,即使SCALE_SCH字段被填充以确保宽度是8位的倍数。额外的位未被使用,因此它们将在合成期间被优化掉。

由OFDM的符号长度可以知道,一个OFDM的保护间隔为0.8us,因此只需要将一个OFDM符号有效数据的末尾的1/4,即后16个数据进行复制放到最前面,即可完成循环前缀的添加。所以将CP_LEN设置为16即可。在IP核配置界面的左上角,点击Implementation Details,如下图所示:

可以查看FFT IP核的一些参数信息,此配置下s_axis_config_tdata包含三个字段,如下图所示:

可以看到CP_LEN位于最低的6bit,我们令其等于6'b010000;修改上节所示代码(链接)中的s_axis_config_tdata的值,如下:

复制代码
assign	s_axis_config_tdata	= 16'b0_101110_0_00_010000;

4.ModelSim仿真

仿真效果如下,从下标48后的16个数据被复制到了最前面。

原文链接(相关文章合集)OFDM 802.11a的xilinx FPGA实现

相关推荐
fie888919 小时前
NSCT(非下采样轮廓波变换)的分解和重建程序
算法
晨晖219 小时前
单链表逆转,c语言
c语言·数据结构·算法
程序员游老板20 小时前
基于SpringBoot3+vue3的爱心陪诊平台
java·spring boot·毕业设计·软件工程·课程设计·信息与通信
im_AMBER21 小时前
Leetcode 78 识别数组中的最大异常值 | 镜像对之间最小绝对距离
笔记·学习·算法·leetcode
鼾声鼾语21 小时前
matlab的ros2发布的消息,局域网内其他设备收不到情况吗?但是matlab可以订阅其他局域网的ros2发布的消息(问题总结)
开发语言·人工智能·深度学习·算法·matlab·isaaclab
老蒋新思维21 小时前
创客匠人视角:智能体重构创始人 IP,知识变现从 “内容售卖” 到 “能力复制” 的革命
大数据·网络·人工智能·tcp/ip·创始人ip·创客匠人·知识变现
LYFlied1 天前
【每日算法】LeetCode 25. K 个一组翻转链表
算法·leetcode·链表
Swizard1 天前
别再迷信“准确率”了!一文读懂 AI 图像分割的黄金标尺 —— Dice 系数
python·算法·训练
s09071361 天前
紧凑型3D成像声纳实现路径
算法·3d·声呐·前视多波束
可爱的小小小狼1 天前
算法:二叉树遍历
算法