今天将要讨论的部分个人感觉非常绕,博主也是在阅读了大量相关书籍和文献之后才有所体悟。如有表述不当之处欢迎大家在评论区斧正!

在上一篇博文中,我们知道串并转换使得OFDM的符号速率降低了,可是总体符号传输效率和 单载波一样,那为什么还要大费周章搞什么串并转换呢?我们今天一起来看看:

如下图所示,我们在实际的工程中,接收机接收到的OFDM信号不仅仅包括从发射机发射出来的直达信号,还有经过了各种各样物体反射之后到达的信号。信号经过不同路径到达接收机的时间是不一样的。(直达的肯定是最快的)。那么就引出了一个问题:晚到的信号可能会对早到的信号产生影响。

我们知道,OFDM信号是由一个个OFDM符号组成的。我们假设发送的OFDM信号如下所示:

那么这个 OFDM信号在城市中传递给手机的过程,我们就假设成只有两条路径:1. 直达路径 2. NLOS路径。那么接收信号如下图所示:


下方的OFDM信号是NLOS路径传递的,因此我们可以看出它比直达信号延迟了一段时间。这个时间就是多径延时。此外我们也发现:由于多径延时的影响,NLOS路径的OFDM信号的 S1符号的尾部对直达OFDM信号S2符号的开头部分有轻微的影响。

下面我们控制多径延时不变,增大符号速率,我们看看会是什么情况:


这里为了简化我就没有标记 S1,S2,S3S_1, S_2, S_3S1​,S2​,S3​了,大家应该明白这个意思,从图中我们可以看出:在多径延时不变的情况下,符号速率越大,这种因多径效应导致的符号间的干扰(ISI)就越强烈。因此对于 OFDM系统,使用了串并转换之后,符号速率降低了,那么就可以减小符号间干扰(ISI)。

而为了彻底消除多径效应带来的 ISI,我们可以在OFDM符号之间加入一个保护间隔(GI):

值得注意的是:我们所插入的保护间隔的时长应该要大于无线信道的最大多径时延:

这样一来,我们就可以消除 ISI了。在保护间隔的时间内可以让时延小于 GI 的前一个符号的多径延迟信号衰减到0,而不会对下一个OFDM符号产生影响。

而多径效应除了引发 ISI ,还会带来另外一个问题:在引入了时间保护间隔之后,假定信道的群时延不是一个常数,那么不同的子载波就会存在时延上的差异,即导致OFDM符号的多径延迟信号对本符号的直达信号的干扰。 换句话说,还记得我们当时在讲OFDM子载波选取时的积分公式吗:∫02πcos(nx)sin(mx)dx=0∫02πcos(nx)cos(mx)dx=0\int_0^{2\pi} cos(nx)sin(mx)dx =0\\ \int_0^{2\pi} cos(nx)cos(mx)dx =0\\ ∫02π​cos(nx)sin(mx)dx=0∫02π​cos(nx)cos(mx)dx=0

此时,我们说子载波之间是没有干扰的,但是现在因为多径延迟,比如说我 sin(mx)sin(mx)sin(mx) 这个频率的信号有了一个延迟 ttt ,变成了 sin(m(x−t))sin(m(x-t))sin(m(x−t)),这样一来它与 cos(nx)cos(nx)cos(nx) 的积分就不再是0了。

我们用 Matlab 举个例子来直观地理解一下:

t_gi=0:0.001:1/8;
gi = 0;
figure;
subplot(311);
plot(t_gi, gi,'b');
hold on;
grid on;
t = 0.125:0.001:1.125;
s1 = sin(2*pi*(t-0.125));  %无时延
plot(t, s1,'b');
hold on;
plot([1/8 1/8],[-1 1], 'k--');
hold on;
plot([1+1/8 1+1/8],[-1 1], 'k--');
axis([0 1.5 -1 1]);subplot(312);
plot([1/8 1/8],[-1 1], 'k--');
hold on;
plot([1+1/8 1+1/8],[-1 1], 'k--');
hold on;
t_gi=0:0.001:1/8;
gi = 0;
plot(t_gi, gi,'b');
hold on;
grid on;
t_delay1 = 1/8:0.001:1/4;
delay1 = 0;
plot(t_delay1, delay1);
hold on;
t = 1/4:0.001:1+1/4;
s2 = sin(2*pi*2*(t-1/4));   %延迟1/8s
plot(t, s2,'b');
axis([0 1.5 -1 1]);subplot(313);
plot([1/8 1/8],[-1 1], 'k--');
hold on;
plot([1+1/8 1+1/8],[-1 1], 'k--');
hold on;
t_gi=0:0.001:1/8;
gi = 0;
plot(t_gi, gi,'b');
hold on;
grid on;
t_delay1 = 1/8:0.001:3/16;
delay1 = 0;
plot(t_delay1, delay1);
hold on;
t = 3/16:0.001:1+3/16;
s3 = sin(2*pi*4*(t-3/16));   %延迟1/16s
plot(t, s3,'b');
axis([0 1.5 -1 1]);

我们可以发现,在同样的码元周期积分区间内(上图的黑色虚线内),这些载波已经不正交了,因为多径延迟信号在积分周期内已经没有一个完整的信号周期了。这样一来就引发了一个新的问题:ICI(子载波间干扰)

一种非常简单却有效的做法是——循环前缀(CP) : 我们将每一个OFDM符号最后的内容搬到保护间隔的位置。如果拆分来看,就是我们也可以分别对每一个子载波进行操作:如果是直达信号,就直接把最后长度为 GI 的部分搬到保护间隔中;如果这个子载波还有多径延迟(假设时间为 △T△T△T),那么就把最后长度为 GI + △T△T△T 的部分搬到前面。我们继续用Matlab展示一下:

figure(2);
subplot(311);
t = 0.125:0.001:1.125;
s1 = sin(2*pi*(t-0.125));  %无时延
plot(t, s1,'b');
hold on;
t_gi=0:0.001:1/8;
gi = s1(876 : end);
plot(t_gi,gi,'r');
hold on;
grid on;
plot([1/8 1/8],[-1 1], 'k--');
hold on;
plot([1+1/8 1+1/8],[-1 1], 'k--');
axis([0 1.5 -1 1]);subplot(312);
plot([1/8 1/8],[-1 1], 'k--');
hold on;
plot([1+1/8 1+1/8],[-1 1], 'k--');
hold on;
grid on;
t = 1/4:0.001:1+1/4;
s2 = sin(2*pi*2*(t-1/4));   %延迟1/8s
plot(t, s2,'b');t_gi=0:0.001:1/4;  %length:251
gi = s2(751 :end);
plot(t_gi, gi,'r');
axis([0 1.5 -1 1]);subplot(313);
plot([1/8 1/8],[-1 1], 'k--');
hold on;
plot([1+1/8 1+1/8],[-1 1], 'k--');
hold on;
t = 3/16:0.001:1+3/16;
s3 = sin(2*pi*4*(t-3/16));   %延迟1/8s
plot(t, s3,'b');
t_gi=0:0.001:3/16;           %length:188
gi = s3(814:end);
plot(t_gi, gi,'r');
grid on;
axis([0 1.5 -1 1]);

上图中,红色线就是我们循环前缀补充之后的结果。这样一来,在对每一个码元解调的过程中,只要抽样时间间隔落在保护间隔到码元结束的时间区间隔内(对于上面的例子来说就是区间 [0,1.125][0, 1.125][0,1.125]),就可以保证在任一长为 T(码元周期) 的时间段内,各子载波都有整数倍周期,就可以避免OFDM符号中子载波间因为多径时延造成的干扰。


可是,问题又来了:我们现在引入了循环前缀,也就是说OFDM符号的时长从原本的基波周期 TTT 扩展到了 基波周期和循环前缀时间的和:Tnew=T+TCPT_{new} = T + T_{CP}Tnew​=T+TCP​(TCPT_{CP}TCP​表示 CP 的时长)。但是细心的同学会发现:我正交子载波的频率并会因为增加了 CP 而改变,该是多少还是多少,那么这就会引发一个大问题:

回顾一下我们之前探讨OFDM频谱的文章:OFDM频谱分析,我们这里再用Matlab给大家分析一下:我们做下面几个假设:

  1. 假设原本的基波周期是 T = 1s
  2. 假设OFDM系统只采用3个子载波,频率分别为:1Hz, 2Hz, 4Hz
  3. 假设我们所就加的CP时长是 1/8 s

我们首先来看看不加CP时的频谱:

%--------------------------不加CP的频域分析------------------------------%
f = -10:0.001:10;
figure;
Ts0 = 1;
X1_ = sinc(f-1);
X2_ = sinc(f-2);
X3_ = sinc(f-4);
plot(f, X1_);
hold on;
plot(f, X2_);
hold on;
plot(f, X3_);
grid on;
title('理想情况下OFDM的频谱');


我们再看看加上 CP 之后的频谱:

figure;
Ts = 1+1/8;
X1 = Ts.*sinc(Ts.*(f-1));
plot(f, X1);
hold on;X2 = Ts.*sinc(Ts.*(f-2));
plot(f, X2);
hold on;
grid on;X3 = Ts.*sinc(Ts.*(f-4));
plot(f, X3);

我们发现:在子载波对应的频点处,居然掺杂了其他频率成分的干扰!也就是说,我们找不到一个特定的频率,上面只有某一个子载波的功率了。

这意味着什么呢?—— 加上CP之后,在传输信道中传输的OFDM符号,其内部各个子载波已经不正交了。


欸,读到这儿大家应该会有疑问了:刚刚你不是说加了CP之后,我们就可以使得子载波在保护间隔到码元结束的时间区间内,在任一长为 T(码元周期) 的时间段内,各子载波都有整数倍周期,不就是子载波正交嘛,可是这会儿你怎么又说加了CP之后子载波不正交了呢???

这里的区别在于:加上CP之后,在真正传输到信道之前,我们的子载波在原本的码元周期内是正交的。 加上CP后,当OFDM符号真正在信道上传输的时候,子载波是不正交的


解决方法也非常简单:我们只需要在接收到OFDM符号之后,首先去掉OFDM符号的CP,这样一来,OFDM符号的子载波就又重新回到了正交的状态!

参考文献

[1] 陈爱军. 深入浅出通信原理[M]. 清华大学出版社 (崧博), 2018.
[2] 孙宇彤. LTE 教程: 原理与实现[M]. 电子工业出版社, 2014.
[3] 沈家欢. OFDM系统中子载波干扰分析与抑制技术研究[D].南京信息工程大学,2019.
[4] 给"小白"图示讲解OFDM的原理
[5] 樊昌信, 曹丽娜. 通信原理[M]. 国防工业出版社, 2006.

【通信原理 入坑之路】—— 理解 4G,5G中的天王山:OFDM【学习笔记4】相关推荐

  1. 【通信原理 入坑之路】——深入、详细地理解通信里面“卷积”概念

    文章目录 一.多项式乘法和"卷积" 二."卷积"的计算公式 2.1 实例:利用卷积计算两个信号相乘 三.卷积的生动理解 3.1 卷积能够用来解决什么问题? 3. ...

  2. 【通信原理 入坑之路】—— 信号的包络分析2 包络分析的意义以及OQPSK调制的引入

    本篇 B l o g Blog Blog 是接上一篇未完的分析而作的,主要是继续深入理解信号包络以及包络的意义.同时,本篇 B l o g Blog Blog 是<深入浅出通信原理>的学习 ...

  3. 【通信原理 入坑之路】—— 详解IQ调制以及星座图原理

    写在前面:本博客是<深入浅出通信原理>的学习笔记,仅供个人学习参考使用 文章目录 一. IQ调制与解调的原理与过程 1.1 利用旋转向量理解IQ调制(正交调制) 1.2 利用旋转向量理解I ...

  4. 【通信原理 入坑之路】——信息论部分 之 离散无记忆信源的等长编码

    课本上的讲解公式实在是太多啦!看得人头大,那么本文试图从繁杂的公式中梳理一下几种等长编码的方法,并在最后给出一些解题技巧.我们开始吧! 文章目录 离散无记忆信源的等长编码 1.1 单符号等长编码 1. ...

  5. 【通信原理 入坑之路】—— 模拟信号的数字编码 之 PCM编码(A律13折线和μ律15折线的编译码剖析)

    引言: 在我们的数字通信系统中,一般要发送的绝大多数都是模拟信号.而所谓数字通信,传递的就应该是数字信号.因此,我们首先要对这个待发送的模拟信号进行采样(这在我之前<信号与系统>的相关博客 ...

  6. 【通信原理 入坑之路】—— 信息论部分 离散无记忆信源的不等长编码 之 霍夫曼编码过程详解

    还记得在上一篇博客中,我们讨论的离散无记忆信源的等长编码吗,我们最后得到的结论是 -- 如果使用等长编码,那么对典型序列编码的编码效率是最高的.然而,要满足较高的编码效率,同时还要保证误码率的情况下, ...

  7. 【通信原理 入坑之路】—— 数字载波传输系统 之 2PSK(二进制相移键控)2ASK(二进制幅度键控)的超详细分析

    在之前的文章里面,我们讨论过数字基带传输系统,他们指的是传输二进制脉冲成型信号.然而,在绝大部分场合,我们需要将数字基带信号装载到高频载波上(也就是我们所说的调制),通过天线等将高频波发射出去.这就是 ...

  8. java resource放入的文件没有生成在classes中_JAVA程序员学习笔记----mybatis深入剖析...

    Java中提到持久层框架,相信没有人不知道mybatis的存在,相对于JDBC她多了一份干练(jdbc工作量大),相对于Hibernate她又多了一份灵动(HQL虽然方便,但太呆板).今天我们就一起走 ...

  9. 强化学习入坑之路04

    强化学习入坑之路04 今天继续强化学习的学习,这些内容的学习主要参考了李宏毅的强化学习教程,在此基础上加入了个人的理解和总结.好,废话少说下面开始进入正题. 1.Q-learning(DQN) Sta ...

最新文章

  1. 网易云音乐社交玩法的背后,听说有一只神秘部队保驾护航?
  2. Windows访问Fedora共享文件夹
  3. spring异常 java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderServlet
  4. Ubuntu kylin 14.04 LTS上安装opencv
  5. 走进android的世界(不断更新中)
  6. html页面如何接受提示参数,html页面如何象asp一样接受参数_javascript教程
  7. 超详细深度学习debug指南,国外小哥手把手教你如何调试模型 | 附PPT
  8. Kafka 学习笔记之 架构
  9. sap 中migo收货自动打印smartform_EWM MES/ERP集成 生产收货的几种方式
  10. ICLR'22 | 图机器学习最近都在研究什么?
  11. 【ARM 】CMSIS
  12. 一篇关于数学建模美赛论文撰写的心得
  13. 阿里云备案流程、操作步骤及所需时间图文详解
  14. EDR汽车事件记录系统
  15. 自媒体一般都是去哪里搬运
  16. python超声成像_Python与医疗图像4
  17. 人工智能在日常生活中的10种用途
  18. Unity学习制作Flappy Bird小游戏(超详细全教程,可发布到PC、Web、Android平台)
  19. Activity Result API详解,是时候放弃startActivityForResult了
  20. 数字电子技术基础(七):加法器

热门文章

  1. matlab 像素最大值,如何在MATLAB中的图像中找到局部最大值?
  2. eclipse IDE java and web 最新版安装和配置Tomcat
  3. 手把手教你使用HarmonyOS本地模拟器
  4. java解决魔方阵(奇数阶)问题(适合小白!保会)
  5. Spark的发展历程
  6. Apache Flink在小米的发展和应用
  7. Excel2010专项试题(1)
  8. 应急通信指挥调度|森林防火指挥调度
  9. 自身气力没法胜利 腾讯分拆电商
  10. 机器视觉_工业相机及相关配件选型