OFDM原理和仿真实现(1)原理、QAM

OFDM – 正交频分复用技术,现广泛应用于通信系统。由于其能有效抑制干扰,对MIMO天线支持较好、且能加大传输带宽,主流的LTE-A、5G NA、WiFi等协议都使用这种技术传输数据。这篇文章将详细介绍OFDM、nPSK-OFDM等技术,并且使用MATLAB仿真实现。

这篇文章内容框架为:介绍OFDM的原理(正交性),并解释其能有效传输信号的原因、与FDM对比、介绍nPSK、QAM技术,以及与OFDM的融合。

基础知识

调制、相干解调原理

相干解调框图

一般使用同步检波解调OFDM信号。同步检波情况下,只要解调的相干载波与调制的频率和相位完全一致,那么再通过一个低通滤波器,就能从调制信号中恢复出原始信号。

代码:https://git.mewwoof.cn/JourneyBean/qam-ofdm-learning-matlab/-/blob/main/learn_02_modulation_demodulationm.m

相干解调实验

对于多个信号源、多个载波的信号,同步解调也能将对应信号检出来:

代码:https://git.mewwoof.cn/JourneyBean/qam-ofdm-learning-matlab/-/blob/main/learn_01_orthogonal_signals.m

正交性、相干解调实验

但是要获取完全同步的载波有深奥的学问,这一点将在文章的稍后详细说明。

正交正弦波

信号通过载波传输时,一般使用正弦波为载波信号。而提到正弦波的正交,你可能第一反应是,同一频率两个电磁波的相位差为90度时,两正弦波正交。事实上,只要一个周期内两个正弦波相乘积分等于零,就能视为正交:

\int_{-\pi}^\pi{} \psi_1(r) \psi_2(r) \mathrm{d} \tau = 0

可以证明,如果两个正弦波频率不相等,那么这两个正弦波就是正交的。

需要注意的是,不仅仅正弦波有一定的正交特性,其他信号也可能具有此特点,比如ZC码与循环移位的自身正交。

OFDM原理

FDM

先来了解一下FDM即频分多路复用。为了实现多用户同时通信,或者单个用户同时使用两个载波来提高速率,可以为不同用户分配不同频率,各个用户在不同频率上通信,就不会干扰到对方了。

这个方案看似不错,但是存在一些问题,其中最主要的是频谱利用率不高。因为如果两个用户的频率相近,会相互影响,所以必须在两个相邻频带中间设保护带,这无疑浪费了大量本可以利用的频谱资源。

如图,可以看到,要传输多少带宽的数据,至少需要占用这么宽的频谱。如果两个载波靠太近,就会相互“打架”,使得无法正确检出。这就是ICI,信道间干扰。

传输15kHz带宽的数据,就至少要占这么宽的频谱(图源见水印)

模拟无法正确检出的小实验:(代码:https://git.mewwoof.cn/JourneyBean/qam-ofdm-learning-matlab/-/blob/main/learn_03_fdm_shortcomings.m

载波间隔过小,即使使用同步检波,也无法正确解调

事实上,由于正交性存在,只要将载波间距缩短到一合理数值,也能保证解调。这就是OFDM。

OFDM正交编解码

我们现在已经知道,使用不同载波调制信号,需要保持一定间隔,否则两个载波会相互影响。那么这个影响的最小极限是多少呢?因为OFDM中的正交性,将每个载波的频率继续靠近移动一下,直到最小的载波频率的一半,会发现也能完美解码:(代码:https://git.mewwoof.cn/JourneyBean/qam-ofdm-learning-matlab/-/blob/main/learn_04_ofdm_no_ici.m

靠近到二分之一的载波频率(奈奎斯特带宽),都能解调
正交信号频域上的表示(图源见水印)

这就是OFDM,说得简单一些,相比FDM,就是缩减载波间距为奈奎斯特带宽罢了。当然了,OFDM一般只能用相干解调,而FDM一般还可以用包络解调等方式解调。

OFDM时域、时隙

阅读到这里,你应该对OFDM有了大致的了解了。下面让我们看看一段时间内的OFDM信号情况。

这里转载一部分CSDN一位老哥写的博文(蓝色字):

对限制在[0,2π]内的sin(t)信号,相当于无限长的sin(t)信号乘以一个[0,2π]上的门信号(矩形脉冲),其频谱为两者频谱的卷积。sin(t)的频谱为冲激,门信号的频谱为sinc信号(即sin(x)/x信号)。冲激信号卷积sinc信号,相当于对sinc信号的搬移。所以分析到这里,可以得出图一的时域波形其对应的频谱如下:

限定在[0,2π]内的a·sin(t)信号的频谱,即以sin(t)为载波的调制信号的频谱

sin(2t)的频谱分析基本相同。需要注意的是,由于正交区间为[0,2π],因此sin(2t)在相同的时间内发送了两个完整波形。相同的门函数保证了两个函数的频谱形状相同,只是频谱被搬移的位置变了:

限定在[0,2π]内的b·sin(2t)信号的频谱,即以sin(2t)为载波的调制信号的频谱

将sin(t)和sin(2t)所传信号的频谱叠加在一起,如下:

a·sin(t)+b·sin(2t)信号的频谱

OFDM Symbol

为了保证接收端接收信息的有效性,并在一定程度上防止码间串扰(ISI),每个频谱在发出后需要保持一段时间。一个OFDM Symbol的意思就是:时隙内空中的一个波形,这个波形的频谱就像上图所示,是已经叠加好的。

用IFFT和FFT加速调制解调

IFFT部署在调制端,可以直接将频域的载波信号叠加,成为时域信号。而FFT部署在解调端,可以直接将接收到的时域信号转换为频域信号,这样就不用积分判决,方便多了。

在结束OFDM理论学习之前,我想向读者提一个问题:你认为OFDM中的子载波,可以采用调频(FM)方式传输信号吗?(选择文字来查看答案)

一般不行。首先,如果使用调频,那么接收到的每个子载波频率就不一定了,此时各信号可能无法满足正交关系了。其次,即使这样发送出去了,也无法产生同步的相干载波来解调,除非预知了信号的变化,当然那样传输的信息量就是0,没有意义的传输。当然了,相关的思想可以转换深挖一下,比如高速移动产生多普勒频移时,我们也需要调整相干载波频率,来正确解码。

OFDM编解码仿真

理解了OFDM,发现这事实上仅仅是一种有效利用频谱资源的频率分配方法。我们还需要将信息加载在OFDM上。于是,根据加载信息的方式不同,又可以有nPSK-OFDM、mQAM-OFDM,甚至PAM-OFDM。下面还是简单介绍一下PSK、QAM。

nPSK调制解调

PSK是通过控制载波相位来传输数字信号的方式。如2PSK(BPSK)一次表示2进制,分别移相0和180度;4PSK(QPSK)一次表示4进制,分别移相0、90、180、270度0。2PSK图:

2PSK(BPSK)

2PSK解调非常简单,看图即可:

2PSK解调(图源见水印)

至于QPSK及以上,可以直接使用或参考下一节QAM的IQ解调。

mQAM调制解调

QAM,正交振幅调制,是通过同时控制振幅和相位来传输数字信号或模拟信号的方式。(推荐阅读文献[2])

我们可以先推导一下:如果一个信号,可选4种振幅,同时可选4种相位,那么这个信号一共可以表示多少种信号?答案是4*4=16种,而这就是16QAM。

正交?又是正交!

那么如何让一个信号既有不同幅度,又有不同相位呢?还记得文章开始讲的正交吗?完全可以用两个正交的信号来分别承担幅度和相位。但OFDM的子载波频率固定,也就是说没法继续通过频率正交实现分别承载这两个要素,还有什么方法呢?对了,此时就可以使用同频率、相位差90度的正交。

我们继续写一个小脚本来验证这一点。结果如下:(代码:https://git.mewwoof.cn/JourneyBean/qam-ofdm-learning-matlab/-/blob/main/learn_05_orthogonal_signals_90_degree.m

相位差为90度的正弦波相互正交,也能承载不同载波

看到这里,你也许能进一步理解QAM-OFDM信号的结构了。哦,原来OFDM同时使用多个子载波承载信号,设计的每个子载波频率间隔使得它们正交,能方便地从一个OFDM符号中解出每一路子载波原来的样子,使用FFT还能加速这一过程;解出每个子载波后,子载波本身还可以通过QAM以正交方式同时传递幅度和相位信息,而QAM的制式还可以不断提高,如16QAM、64QAM甚至256QAM等等

IQ调制解调

星座图

现在我们当务之急是调制解调QAM信号。让我们从简单的QPSK开始。这里没有写错,QPSK就相当于4QAM。认识一下星座图,你就明白了:

4PSK与8PSK星座图(来源文献[3]
16QAM星座图(来源文献[2]

显然,4PSK和4QAM的星座图是一样的。

QPSK调制解调、IQ调制

很简单,生成相位分别为 1/4 pi, 3/4 pi, 5/4 pi, 7/4 pi 的正弦波信号就可以了。但为了可拓展性,我们不妨将其写成两个正交正弦波(即正弦和余弦)相加的形式,这也就是IQ调制:

IQ调制(图源见水印)

QPSK使用IQ调制推导(来自文献[4]

注意,QAM一般使用格雷码而不是不同的二进制。

实现一个QPSK调制解调小实验:(代码:https://git.mewwoof.cn/JourneyBean/qam-ofdm-learning-matlab/-/blob/main/learn_06_qpsk.m

QPSK调制解调实验
16QAM

调制和解调mQAM数据时,与QPSK的主要区别有:一是由于幅度不再单一,解调时的判决要下功夫。二是由于数据变长了,格雷码的编解码不能手工进行了,也需要想办法。这些问题将在下一篇文章介绍。以下是仿真结果:(代码:https://git.mewwoof.cn/JourneyBean/qam-ofdm-learning-matlab/-/blob/main/learn_07_qam.m

16QAM调制解调实验结果

64QAM-OFDM调制解调

基本原理相信大家也很清晰了:调制时,先将比特数据4个分组,送入IQ分为两个通道,并分别加载在相位差为90度的载波上,混合成QAM调制的信号。再将多路这样的载波使用OFDM,以正交方式发出。

这次实验使用64QAM调制,并使用4路子载波发送信号,子载波频率15Hz,加载在240-300Hz频段上。按照理论,传输码率为24bps。具体见下一篇文章,同时还将引入随机信道,并尝试解决最佳接受问题。

参考文献/资料

[1] CSDN-OFDM的基本原理:https://blog.csdn.net/a493823882/article/details/80058002

[2] 华为-QAM调制:https://info.support.huawei.com/info-finder/encyclopedia/zh/QAM.html

[3] https://www.sohu.com/a/279378366_819742

[4] CSDN-QPSK调制解调原理(IQ调制):https://blog.csdn.net/qq_40074819/article/details/105046970

[5] 知乎-IQ调制解调:https://www.zhihu.com/question/23107539/answer/72521819?utm_source=wechat_session&utm_medium=social&utm_oi=736516591579037696

发表评论