【通信原理| OFDM技术的最简讲解(下)】DFT 与 OFDM

前言

在上一篇中, 我们详细讲述了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=0N1x[n]ejN2πni,0iN1
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=0N1X[i]ejN2πni,0nN1
这就是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=0N1sicos(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=0N1siej2π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(N1), 那么 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=0N1siej2πfit=n=0N1siejN2πni

这是什么? 这就是IDFT的公式! 也就是说, 加入我们需要复用 N N N个子载波, 每个子载波上加载的数据是 s 0 , … , s N − 1 s_0,\dots, s_{N-1} s0,,sN1, 那我们只需要对这个长度为 N N N的序列进行IDFT操作, 就能得到时域的 N N N个符号了 s ( 0 ) , … , s ( N − 1 ) s(0), \dots, s(N-1) s(0),,s(N1). 相同的, 在接收端, 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符号的干扰就被限制在前缀中了。 然后我们再将前缀丢弃即可。

+。、;;;;;;;;;;;;‘’

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           】
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、\、、\、、、、、\、、、、 
以下是一个基于DFT滤波器组的OFDM通信系统的Matlab代码示例: ```matlab %% 参数设置 fc = 1000; % 基带信号频率 fs = 10000; % 采样率 N = 8; % 子载波个数 M = 16; % 调制阶数 SNR = 10; % 信噪比 tb = 1/fc; % 基带信号周期 Ts = tb/N; % 子载波周期 t = 0:1/fs:tb-1/fs; % 基带信号时间序列 f = -fs/2:fs/N:fs/2-fs/N; % 频率序列 cp = 0.1; % 循环前缀长度 %% 生成基带信号 x = randi([0,M-1],1,N); % 生成随机调制数据 xmod = qammod(x,M); % QAM调制 %% 将调制数据分配到子载波上 Xk = zeros(1,N); Xk(1:length(x)) = xmod; %% 执行IFFT xn = ifft(Xk); % IFFT %% 添加循环前缀 xn_cp = [xn(end-cp+1:end) xn]; %% 生成多载波信号 y = zeros(1,length(xn_cp)); for k = 1:N y = y + xn_cp(k)*sqrt(Ts)*exp(1j*2*pi*(k-1)*fs*t); end %% 加入高斯白噪声 Psignal = mean(abs(y).^2); % 信号功率 Pnoise = Psignal/(10^(SNR/10)); % 噪声功率 noise = sqrt(Pnoise/2)*(randn(1,length(y))+1i*randn(1,length(y))); % 生成噪声 y = y + noise; %% 解调 Yk = zeros(1,N); for k = 1:N Yk(k) = sum(y.*sqrt(Ts)*exp(-1j*2*pi*(k-1)*fs*t(1:length(xn)))); end xhat = qamdemod(Yk,M); % QAM解调 %% 显示结果 subplot(2,1,1); plot(t,real(y)); title('接收信号实部'); subplot(2,1,2); plot(f,abs(fftshift(fft(y)))); title('接收信号频谱'); figure; subplot(2,1,1); stem(x); title('发送信号'); subplot(2,1,2); stem(xhat); title('接收信号解调结果'); ``` 以上代码实现了一个基于DFT滤波器组的OFDM通信系统,包括随机调制、IFFT、循环前缀添加、多载波合成、高斯白噪声添加、解调等过程,并显示了接收信号的时域波形和频谱,以及发送信号和解调结果。实际情况中,可能需要根据具体需求进行修改和优化。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值