- 前言
- OFDM的数学实现: FFT
- OFDM与DFT
- 循环前缀
在上一篇中, 我们详细讲述了OFDM的重要概念: 【通信原理| OFDM技术的最简讲解(上)】窄带、宽带与频分复用、多载波调制的讲解:
- 宽带和窄带: 宽带的多径干扰是OFDM技术的应用背景。
- 多载波复用: OFDM的本质内核
本篇我们填坑,把上篇未讲完的OFDM的具体实现详细说明一遍。
OFDM的数学实现: FFT早在70年代就已被提出的OFDM技术, 却在4G中才初露峥嵘, 前期正是受制于其较高的计算复杂度。 但后来人们发现, OFDM的调制与解调过程, 可以看做是离散傅里叶变换 (DFT) 和 逆变换IDFT 操作, 而后者, 恰恰可以通过 快速傅里叶变换(FFT)和 IFFT 来快速实现。 可以说, 正是有了FFT的出现, 才让OFDM真正有了实际的用武之地。 关于DFT的介绍我在【通信原理| DFT】 从数学和代码角度理解离散傅里叶变换写过一些相关的介绍, 但这里我们只需要了解:
DFT { x [ n ] } = X [ i ] ≜ 1 N ∑ n = 0 N − 1 x [ n ] e − j 2 π n i N , 0 ≤ i ≤ N − 1 \operatorname{DFT}\{x[n]\}=X[i] \triangleq \frac{1}{\sqrt{N}} \sum_{n=0}^{N-1} x[n] e^{-j \frac{2 \pi n i}{N}}, 0 \leq i \leq N-1 DFT{x[n]}=X[i]≜N 1n=0∑N−1x[n]e−jN2πni,0≤i≤N−1 IDFT { X [ i ] } = x [ n ] ≜ 1 N ∑ i = 0 N − 1 X [ i ] e j 2 π n i N , 0 ≤ n ≤ N − 1 \operatorname{IDFT}\{X[i]\}=x[n] \triangleq \frac{1}{\sqrt{N}} \sum_{i=0}^{N-1} X[i] e^{j \frac{2 \pi n i}{N}}, 0 \leq n \leq N-1 IDFT{X[i]}=x[n]≜N 1i=0∑N−1X[i]ejN2πni,0≤n≤N−1 这就是DFT与IDFT的公式。 那这个和多载波调制有什么关系呢?
OFDM与DFT 回顾下上篇博客里写的多载波复用的发送端操作:
N
N
N个符号用不同的N个正交的子载波
cos
(
2
π
f
i
t
)
\cos(2\pi f_it)
cos(2πfit)进行调制, 最后在时域相加, 也就是:
s ( t ) = ∑ i = 0 N − 1 s i cos ( 2 π f i t ) s(t) = \sum_{i=0}^{N-1}s_i\cos(2\pi f_it) s(t)=i=0∑N−1sicos(2πfit),
但我们注意到, sin ( 2 π f i t ) \sin(2\pi f_it) sin(2πfit) 和 cos ( 2 π f i t ) \cos(2\pi f_it) cos(2πfit)其实是正交的。 因此如同【无线通信】女朋友都能看懂的等效基带模型介绍 中所说, 实际中我们是同时发送 I路 和 Q路 两路, 在数学模型上体现为: s i s_i si是一个复数, 因此, 我们可以再有等效基带模型: s ( t ) = ∑ n = 0 N − 1 s i e j 2 π f i t s(t) = \sum_{n=0}^{N-1}s_ie^{j2\pi f_it} s(t)=n=0∑N−1siej2πfit,
从而复用 I路和Q路, 这里用了欧拉公式 (尽管这里 s ( t ) s(t) s(t)是一个复数, 但显然,可以不遗失信息量地将之加在在 sin \sin sin和 cos \cos cos上,同时在接收端做一个相反的操作, 最终形成的效果就是可以看做是上式的等效复数模型, 不深究。)。不失一般性的, 我们假设整个 OFDM 符号的周期为 T T T,那么根据上一篇中的介绍, f 0 f_0 f0应为 1 T \frac{1}{T} T1, 而 f i = i T f_i = \frac{i}{T} fi=Ti, 这是满足载波正交的必要条件。 OK, 下一步我们再对 s ( t ) s(t) s(t)进行采样, 共采样 N N N个点, 即 s ( 0 ) , … , s ( N − 1 ) s(0),\dots, s(N-1) s(0),…,s(N−1), 那么 s ( n ) s(n) s(n)是多少呢? 显然, 就是把 t = n N T t = \frac{n}{N}T t=NnT代入(1)中计算:
s ( n ) = ∑ n = 0 N − 1 s i e j 2 π f i t = ∑ n = 0 N − 1 s i e j 2 π n i N s(n) = \sum_{n=0}^{N-1}s_ie^{j2\pi f_it} = \sum_{n=0}^{N-1}s_ie^{j\frac{2\pi ni}{N}} s(n)=n=0∑N−1siej2πfit=n=0∑N−1siejN2πni
这是什么? 这就是IDFT的公式! 也就是说, 加入我们需要复用 N N N个子载波, 每个子载波上加载的数据是 s 0 , … , s N − 1 s_0,\dots, s_{N-1} s0,…,sN−1, 那我们只需要对这个长度为 N N N的序列进行IDFT操作, 就能得到时域的 N N N个符号了 s ( 0 ) , … , s ( N − 1 ) s(0), \dots, s(N-1) s(0),…,s(N−1). 相同的, 在接收端, DFT操作就可以把接收到的 N N N个时域符号恢复成 N N N个载波频域符号, 这里就不再赘述了。 而对于DFT和IDFT,工业上已经有了成熟的FFT和IFFT运算方法, 来大幅降低复杂度。 正因此, OFDM也走上了时代的舞台。
总结一下: OFDM的思想虽然基于多载波调制, 但可以非常简便地通过DFT和IDFT来实现。 因此, OFDM的系统框图可以表示为: (注意,第一张图是多载波调制的示意图, 而不是OFDM的!在OFDM中, 上述的推导表明, 不需要对不同载波进行乘以 cos \cos cos这样的操作, 直接使用DFT和IDFT即可)
发送端框图:
接收端框图: 需要注意一点: IFFT和FFT操作必须在数字上进行!即, IFFT必须在D/A转换之前, FFT必须在A/D转换之后! 这也是5G毫米波, 混合波束成形技术在宽带OFDM场景下的最大挑战。
OFDM系统中, 不可或缺的循环前缀 (CP)有两个重要的作用。
第一, 防止多径干扰。 如下图, 尽管在OFDM中,由于码元周期极大, 使得多径延时相比于整个周期较小, 但还是会有干扰。 下图为了简便, 直接标了
s
(
1
)
s(1)
s(1), 这里的
s
(
1
)
s(1)
s(1)代表的是一整个OFDM符号, 也就是说里面包含了上节中说到的
N
N
N个时域采样。 假设第一行是通过第一径信道的数据, 第二行是通过第二径信道的数据, 相比于第一径有一定的延时。 那么此时, 如果我们对符号进行采样的时候, 比如
s
(
2
)
s(2)
s(2),也就是图中虚线框出的部分, 本该全是
s
(
2
)
s(2)
s(2)这一帧的内容, 但由于第二径的延时, 混入了
s
(
1
)
s(1)
s(1)的干扰, 也就是箭头标出的部分。 当然啦, 其实这里第二径是对第一径全方位的干扰, 不光是
s
(
1
)
s(1)
s(1)尾部信号对第一径
s
(
2
)
s(2)
s(2)头部的干扰, 还有自己延时的
s
(
2
)
s(2)
s(2)部分和第一径的
s
(
2
)
s(2)
s(2)混叠的干扰。 但后者的干扰在OFDM中是可以直接消除的: 因为他包含的所有信息仍是
s
(
2
)
s(2)
s(2)的信息, 而利用子载波的正交性,最后恢复出的信号不会有任何的干扰。 例如, 对于后半段(即没有箭头指向的那段中), 对混叠的
s
(
2
)
s(2)
s(2)信号做傅里叶变换, 就会提取出对应子载波的信息, 究其本质, 这是由于
s
(
2
)
s(2)
s(2)的每一个码元都加载了同样的频域信息, 而同样的信息又怎么会干扰呢?
而 s ( 1 ) s(1) s(1)的拖尾的干扰则完全不同了。因为 s ( 1 ) s(1) s(1)和 s ( 2 ) s(2) s(2)是两个不同的OFDM符号, 携带的也就是不同的子载波信息。因此, s ( 1 ) s(1) s(1)的干扰必须要消除。
由于我们最初的假设, 利用OFDM的频分复用, 可以让符号周期大大降低, 因此信道时延是远小于符号周期的。 那么,我们可以选择在头部加入一段前缀, 这样,来自上一个OFDM符号的干扰就被限制在前缀中了。 然后我们再将前缀丢弃即可。
+。、;;;;;;;;;;;;‘’
】
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、\、、\、、、、、\、、、、