【通信原理 入坑之路】—— 理解 4G,5G中的天王山:OFDM【学习笔记4】
今天将要讨论的部分个人感觉非常绕,博主也是在阅读了大量相关书籍和文献之后才有所体悟。如有表述不当之处欢迎大家在评论区斧正!
在上一篇博文中,我们知道串并转换使得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给大家分析一下:我们做下面几个假设:
- 假设原本的基波周期是 T = 1s
- 假设OFDM系统只采用3个子载波,频率分别为:1Hz, 2Hz, 4Hz
- 假设我们所就加的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】相关推荐
- 【通信原理 入坑之路】——深入、详细地理解通信里面“卷积”概念
文章目录 一.多项式乘法和"卷积" 二."卷积"的计算公式 2.1 实例:利用卷积计算两个信号相乘 三.卷积的生动理解 3.1 卷积能够用来解决什么问题? 3. ...
- 【通信原理 入坑之路】—— 信号的包络分析2 包络分析的意义以及OQPSK调制的引入
本篇 B l o g Blog Blog 是接上一篇未完的分析而作的,主要是继续深入理解信号包络以及包络的意义.同时,本篇 B l o g Blog Blog 是<深入浅出通信原理>的学习 ...
- 【通信原理 入坑之路】—— 详解IQ调制以及星座图原理
写在前面:本博客是<深入浅出通信原理>的学习笔记,仅供个人学习参考使用 文章目录 一. IQ调制与解调的原理与过程 1.1 利用旋转向量理解IQ调制(正交调制) 1.2 利用旋转向量理解I ...
- 【通信原理 入坑之路】——信息论部分 之 离散无记忆信源的等长编码
课本上的讲解公式实在是太多啦!看得人头大,那么本文试图从繁杂的公式中梳理一下几种等长编码的方法,并在最后给出一些解题技巧.我们开始吧! 文章目录 离散无记忆信源的等长编码 1.1 单符号等长编码 1. ...
- 【通信原理 入坑之路】—— 模拟信号的数字编码 之 PCM编码(A律13折线和μ律15折线的编译码剖析)
引言: 在我们的数字通信系统中,一般要发送的绝大多数都是模拟信号.而所谓数字通信,传递的就应该是数字信号.因此,我们首先要对这个待发送的模拟信号进行采样(这在我之前<信号与系统>的相关博客 ...
- 【通信原理 入坑之路】—— 信息论部分 离散无记忆信源的不等长编码 之 霍夫曼编码过程详解
还记得在上一篇博客中,我们讨论的离散无记忆信源的等长编码吗,我们最后得到的结论是 -- 如果使用等长编码,那么对典型序列编码的编码效率是最高的.然而,要满足较高的编码效率,同时还要保证误码率的情况下, ...
- 【通信原理 入坑之路】—— 数字载波传输系统 之 2PSK(二进制相移键控)2ASK(二进制幅度键控)的超详细分析
在之前的文章里面,我们讨论过数字基带传输系统,他们指的是传输二进制脉冲成型信号.然而,在绝大部分场合,我们需要将数字基带信号装载到高频载波上(也就是我们所说的调制),通过天线等将高频波发射出去.这就是 ...
- java resource放入的文件没有生成在classes中_JAVA程序员学习笔记----mybatis深入剖析...
Java中提到持久层框架,相信没有人不知道mybatis的存在,相对于JDBC她多了一份干练(jdbc工作量大),相对于Hibernate她又多了一份灵动(HQL虽然方便,但太呆板).今天我们就一起走 ...
- 强化学习入坑之路04
强化学习入坑之路04 今天继续强化学习的学习,这些内容的学习主要参考了李宏毅的强化学习教程,在此基础上加入了个人的理解和总结.好,废话少说下面开始进入正题. 1.Q-learning(DQN) Sta ...
最新文章
- 网易云音乐社交玩法的背后,听说有一只神秘部队保驾护航?
- Windows访问Fedora共享文件夹
- spring异常 java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderServlet
- Ubuntu kylin 14.04 LTS上安装opencv
- 走进android的世界(不断更新中)
- html页面如何接受提示参数,html页面如何象asp一样接受参数_javascript教程
- 超详细深度学习debug指南,国外小哥手把手教你如何调试模型 | 附PPT
- Kafka 学习笔记之 架构
- sap 中migo收货自动打印smartform_EWM MES/ERP集成 生产收货的几种方式
- ICLR'22 | 图机器学习最近都在研究什么?
- 【ARM 】CMSIS
- 一篇关于数学建模美赛论文撰写的心得
- 阿里云备案流程、操作步骤及所需时间图文详解
- EDR汽车事件记录系统
- 自媒体一般都是去哪里搬运
- python超声成像_Python与医疗图像4
- 人工智能在日常生活中的10种用途
- Unity学习制作Flappy Bird小游戏(超详细全教程,可发布到PC、Web、Android平台)
- Activity Result API详解,是时候放弃startActivityForResult了
- 数字电子技术基础(七):加法器