0. 写在前面
对于新技术的学习我认为主要分为两种,一种是从理论到实践,这就类似于现在的本科教育,比如需要设计一个OFDM系统,那么就会找来一本讲OFDM的书,按照目录从头开始学,最后所有的基础都有了再来搭系统;第二种是从实践到本质,也是我经过多年实践发现最适合我的一种,就是先给我一个整个系统的具体的、大的流程图,再从网上找一个非常基本的程序先跑通,再利用debug搞清楚数据是怎么变化的,一边debgu一边找书中的相关原理,这样不仅学得快还能立马发现问题。所以这篇文章我就会按照这个思路,从新人的角度去搞懂OFDM数据链路层仿真到底是什么样。
系统框图
注:图片源自《MIMO-OFDM无线通信技术及MATLAB实现》P106
2. 系统描述
研究的是什么问题:OFDM物理链路层仿真
OFDM是什么东西:它是多载波传输方案的实现方式之一
先简单介绍一下系统是如何工作的,知道它是什么就可以了。
首先我们要发送的信息会被转换成由很多个1和0构成的序列,也就是比特流,至于什么FEC编码、比特交织,其实就是信道编码部分,FEC编码就是前向纠错编码,是为了解决多载波下由于深度衰落引起的随机差错,像我们熟知的LDPC编码就是这部分内容,除此之外还有RS编码、卷积码、Turbo码等。比特交织是用来解决突发差错的,因为FEC编码解决不了突发差错。本质就是通过增加已知的“冗余的0和1”来对抗信道传输时产生的误差。这部分内容在《MIMO-OFDM无线通信技术及MATLAB实现》中4.3节编码OFDM中有详细介绍。
然后需要对信号进行调制,以QPSK为例,比如00、01、10、11会被映射成0.707+0.707i、-0.707+0.707i、-0.707-0.707i、0.707-0.707i;
接下来是串并变换并插入导频和虚载波,这里就是OFDM技术的特色了,串并变换你可以想象成变成很多个并行的子载波,然后在这些并行的子载波间隔再插入一些全是0的子载波(就是虚拟载波),同时每一个子载波序列里面再插入一些导频符号,这导频符号干啥的呢,它是一段已知的序列,现在插进去等到接收了以后再在相同的位置把它提出来,看一看它有啥变化以此来估计信道的特性。关于导频,在《MIMO-OFDM无线通信技术及MATLAB实现》第六章中有介绍。
关于导频的详细分析在本专栏的第''(2)''篇中。
下面就是对这些已经插入导频和虚载波的序列做IFFT,说白了就是从频域变成时域序列。
然后给时域序列加CP,CP又叫循环前缀,其实就是保护间隔,可以理解为符号之间别离那么近,不然有干扰。
加窗。OFDM信号的功率谱是许多频移后的sinc函数的总和,具有比较大的带外功率,会导致邻道干扰,为了降低邻道干扰,在OFDM系统中需要一个保护频带。
并串变换当然是把信号变成一维的再经过数模转换利用天线发射出去了,接下来就是要经过无线信道了,在这个信道中可能会发生多径效衰落、阴影衰落等现象,根本原因是无线电波会发生反射、绕射、散射,当然AWGN是肯定会有的。
然后接收端的过程与发送部分基本类似,其中的“定时/频率同步和信道估计”主要做的目的是将信号对齐、同时对利用提取的导频信息来估计信道状态,“信道均衡”其实做的工作就是X=Y/H的过程,其中H就是“定时/频率同步和信道估计”这一步得到的。这样在根据后面的过程就可以在接收端恢复出我原始的比特流了。