正交频分复用(OFDM)原理及实现

目录

1.OFDM原理

1.1时域正交与基带信号

1.2频域正交与频率间隔Δf 

2.基带信号的调制框图

3.OFDM调制与IDFT

4.串行比特流怎么进行IDFT


1.OFDM原理

1.1时域正交与基带信号

[1]OFDM的核心就是利用各个子载波的正交性,信号的正交性是什么呢?就是无论两个函数(信号的表达式称为函数)的幅值为多少,在确定的一个时间周期内相乘,其积分总是等于0(也就是面积相加为0)。比如最简单的一对正交函数sin(t)和sin(2t),其中红色是sin(t),蓝色是sin(2t)。他们均在2π时间内具有完整的周期,各自在2π时间内的积分问为0(正负面积相加为0)。而sin(t)*sin(2t)的图像为:

正交频分复用(OFDM)原理及实现_第1张图片

 可以大概地看出,图像中正负面积相加同样为0,也就是:

那么如果使得sin(t)的幅度为a,sin(2t)的幅度为b,也就是将a调制于sin(t),将b调制于sin(2t),同时传输这两个调制了信号的正弦波(子载波):a*sin(t)+b*sin(2t),在接收时又分别对两路子载波进行积分,也就是:

这样就将原始信息a和b解调出来了,两路子载波互不干扰,而OFDM就是通过多路互不干扰的子载波传递了不同的信息。而由于子载波的正交性,其频率间隔很小,使得频带利用率很高。

设f0~fN-1是以Δf(能使每个子载波互相正交的频率间隔)为频率间隔的N个频率,那么就有:

                                                   s(t)=b_{0}sin(2\pi f_{0}t)+b_{1}sin(2\pi f_{1}t)+...+b_{N-1}sin(2\pi f_{N-1}t)

由于正弦函数与余弦函数的正交关系,上式还可以扩展得到OFDM的基带信号表达式

                                              s(t)=b_{0}sin(2\pi f_{0}t)+b_{1}sin(2\pi f_{1}t)+...+b_{N-1}sin(2\pi f_{N-1}t)

                                                     +a_{0}cos(2\pi f_{0}t)+a_{1}cos(2\pi f_{1}t)+...+a_{N-1}cos(2\pi f_{N-1}t)

1.2频域正交与频率间隔Δf 

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

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

将sin(t)和sin(2t)所传信号的频谱叠加在一起,正交在频域看就是他们的主瓣关系以及零点关系,如下:

那么子载波的间隔怎么取呢?即下图中的Δf :

正交频分复用(OFDM)原理及实现_第2张图片

假设s(t)的一个码元周期是Ts,即Ts内所有的子载波波形分别代表一个码元,且子载波都应该正交,就是任意两个子载波在Ts内的积分为0,幅度不影响,有如下[4]:

                                                    \int_{0}^{T_{s}} cos(2\pi f_{i}t)cos(2\pi f_{j}t) dt=0

                                                    =\frac{1}{2}\int_{0}^{T_{s}}cos[2\pi(f_{i}-f_{j})t] dt+\frac{1}{2}\int_{0}^{T_{s}}cos[2\pi(f_{i}+f_{j})t]dt

                                                    =\frac{sin[2\pi(f_{i}-f_{j})T_{s}]}{2\pi(f_{i}-f_{j})}+\frac{sin[2\pi(f_{i}+f_{j})T_{s}]}{2\pi(f_{i}+f_{j})}

上式等于0的即为分母等于零:

                                                      (f_{i}+f_{j})T_{s}=m,(f_{i}-f_{j})T_{s}=n

m,n为整数,即子载波频率:

                                                     f_{i}=(m+n)/(2T_{s}) ,f_{j}=(m-n)/(2T_{s})

要求子载波满足:f_{k}=k/(2T_{s}),k为整数, 最小子载波间隔:min(f_{i}-f_{j})=min(n/T_{s})=\Delta f_{min}=1/T_{s}

2.基带信号的调制框图

设一个OFDM系统有N个子信道,第k个子载波公式为:

                                                              x_{k}(t)=a_{k}cos(2\pi f_{k}t)-b_{k}sin(2\pi f_{k}t),其中k=0,1,...N-1           

(注意这里中间的加号变成了减号是为了推导下面的复频域信号方便)子载波是承载所要传递的信息的正/余弦波,那么它怎么体现所承载的信息内容?幅度。频率是用来区分哪个子载波的。

 一路子载波包括两路正交的信号(任意频率的正弦余弦波都相互正交),这就可以看做IQ信号。下图是单个子载波的IQ调制:

正交频分复用(OFDM)原理及实现_第3张图片

把N个携带信息的子载波累加,就得到了OFDM信号的模拟形式:

                                                            s(t)=\sum_{k=0}^{N-1} \left [ a_{k} cos(2\pi f_{k}t) - b_{k} sin(2\pi f_{k}t) \right ]      

其中0\leq t\leq T_{s},意思是所有子载波的一个码元周期T_{s}的连续波形。注意我们这里得到的是基带信号,也就是:

                                                                   f_{0}=0,\Delta f=\frac{1}{T_{s}},f_{k}=\frac{k}{T_{s}},k=0,1,...N-1

所以根据s(t)的公式,我们可以对每个子载波进行IQ调制,把所有的子载波中的I路加起来,把所有Q路加起来,基带信号的输出结果就是两路IQ信号,一路cos,一路sin,(关于调制方式可以是QPSK,QAM等)如下图所示:

正交频分复用(OFDM)原理及实现_第4张图片

解调框图就是对接收的s(t)乘以相应载波并积分就得到相应载波承载的信息ak或bk了,详细内容参考资料[6].

然而理论上可行,实际生成多个子载波然后分别调制后求和,就很难了;是否可以避免一个一个的调制后再求和,而是直接生成求和后的信号呢?当然可以,用IDFT。

3.OFDM调制与IDFT

上述信号s(t)可以写成复指数表示:   

                                                            s(t)= Re[\sum_{k=0}^{N-1} (a_{k}+jb_{k})e^{j2\pi f_{k}t}]      

原因:                                              \sum_{k=0}^{N-1} (a_{k}+jb_{k})e^{j2\pi f_{k}t}=\sum_{k=0}^{N-1}(a_{k}+jb_{k})(cos(2\pi f_{k}t)+jsin(2\pi f_{k}t))

                                                    =\sum_{k=0}^{N-1} [a_{k} cos(2\pi f_{k}t) - b_{k} sin(2\pi f_{k}t)] +\mathbf{ j}\sum_{k=0}^{N-1}[b_{k} cos(2\pi f_{k}t) + a_{k} sin(2\pi f_{k}t)]

                                                  =s(t)+\mathbf{j}z(t)

                                                           z(t)= Im[\sum_{k=0}^{N-1} (a_{k}+jb_{k})e^{j2\pi f_{k}t}]

其中Re[]是取实部操作, Im[]是取虚部操作,所以s(t)的复指数形式的调制框图就不言而喻了,参考[6].

因为硬件实现上复数是没有意义的,复数只是数学计算上才有意义。我们硬件实现时传递的两路信号I和Q也都是实数,来代表复数。不要纠结这两个式子的关系,只要做到硬件实现和数学计算上的对应就可以了。

这个式子是模拟信号,我处理的是离散的数字信号,带入f_{k}=\frac{k}{T_{s}},k=0,1,...N-1,在一个码元周期内采样N点即t=T_{s}\frac{n}{N},n=0,1,...N-1带入得到信号采样后的离散OFDM基带信号:

                                                         s(n)=Re[\sum_{k=0}^{N-1} (a_{k}+jb_{k})e^{j \frac{2\pi}{N} k n} ] ,n=0,1,2,...N-1

注意这里子载波个数k和采样点n都是N个。

说到这里,很明显上式就是IDFT的形式了,输入就是N个单独子载波的a_{k}+jb_{k}输出就是子载波叠加后信号进行N点采样的N个数据点。

4.串行比特流怎么进行IDFT

那么a_{k}+jb_{k}对应的是什么呢?

事实上,原始数据是串行的二进制数据,我们把数据分成帧,一帧F比特就是合成后的s(t)在一个码元周期T_{s}的数据,F比特分成N组:B_{0}-B_{N-1},N组分别对应N个子载波,每组的比特数可以不同,因为每个子载波可以采用不同的调制方式。

将每组中的b_{i}个比特看作是一个M_{i}进制码元 B_{i},则b_{i}=log_{2}M_{i},例如16进制对应4个比特,假设这4比特为1100,我们采用16QAM映射,根据星座图

正交频分复用(OFDM)原理及实现_第5张图片

调制后的相位45度,振幅A/\sqrt{2},即把1100映射为\boldsymbol{B_{i}}=(\frac{A}{\sqrt{2}})e^{j\frac{\pi}{4}}=\frac{A}{2}+j\frac{A}{2},这就是a_{k}+jb_{k},当然我们会把a和b均用二进制表示,这就完成了把一路子载波上的信息映射成两路信号I和Q。假设每个子载波调制方式相同,我们把所有数据映射完后的示意图如下:

正交频分复用(OFDM)原理及实现_第6张图片

最终,我们得到了IDFT的输入:a_{k}+jb_{k},使用IFFT算法即可得到输出的离散的s(n),对应s(t)的N个采样点。

当然,实际实现中我们的数据在进行IFFT之前和之后都要进行一系列的编码和处理等,这个我会另外再写博文详细讲解。

参考资料:

1.OFDM基本原理及简单实例应用

2.通信里 星座图 到底是什么意思啊? 

3.给"小白"图示讲解OFDM的原理

4.《通信原理》樊昌信第六版

5.OFDM专题之输入的复信号从何而来

6.OFDM专题之理解原理图(暂不包含用IFFT以及FFT的原理图形式)

你可能感兴趣的:(正交频分复用(OFDM)原理及实现)