对正交频分复用OFDM系统的理解
OFDM系统
正交频分复用OFDM(Orthogonal Frenquency Division Multiplexing)是一种多载波调制技术。
基本思想:在发送端,它将高速串行数据经过串并变换形成多路低速数据分别对多个正交的子载波进行调制,迭加后构成发送信号。在接收端,用同样数量的载波进行相干解调,获得低速率数据流,经过并串变换形成高速数据流。
主要优点:提高频带利用率,有效抑制符号间干扰(Inter Symbol Interference,ISI),有很好的抗多径延迟和衰落的性能。

图一 OFDM系统框图
OFDM也是一种FDM频分复用系统。在传统的频分方法中,将频带划分为若干个不相交的子频带来传输并行的数据流,在接收端用一组滤波器来分离各个子信道,子信道之间要留有保护频带,因此这种方法的频带利用率低。OFDM由大量在频率上等间隔的子载波构成,这些子载波的频谱可以相互重叠,这样,大大提高了频谱利用率。并且子载波在整个符号周期上是相互正交的,即加于符号周期上的任何两个子载波的乘积积分等于零。这样,即使各子载波频谱间存在重叠,也能无失真地复原。
当载波间的最小间隔
等于符号周期T的倒数的整数倍时,可满足正交条件。
不能设计过小,过小的话,对抗多普勒频移的影响能力下降,无法支撑高速移动的无线通信,
不能设计过大,过大的话,OFDM符号周期T就会过小,于是为克服子载波间的干扰,加入CP的开销相对于有用符号来说就会过大,使传送效率受到影响。为实现最大频谱效率,一般取载波最小间隔为符号周期的倒数,
。比如在LTE物理层,子载波的间隔Δf=15kHz,一个OFDM symbol的发送时间是66.7us。

图二 OFDM调制后的信号频谱
如图二所示,时域的方波在频域对应sinc()函数,时域的正余弦信号在频域对应一个单频的冲击信号,因此时域的方波信号经过正交子载波调制后,在频域对应sinc()函数的不同搬移(时域的乘积对应频域的卷积),叠加后的效果如图二(d),再经过
的调制,频谱如图二(e)所示。可以观察出,与传统FDM不同,经过OFDM调制后的信号频谱是交叠的,因此有效提高了频带利用率。
使用IDFT-DFT来实现OFDM
设OFDM信号发射周期为[0,T],在一个周期内传输N个符号(C0,C1,…,CN-1),其中Ck为PSK或者QAM调制后的复数
,表示相位或者幅度信息。
第k个符号信息调制在第k个载波上
,合成的OFDM信号为


图三 OFDM调制解调过程
一般在OFDM系统中,fk为
,fc为系统的发射载频,
为子载频间的最小间隔,一般取


X(t)的低通复包络为:

如果以
为采样频率对S(t)采样,[0,T]内共有Ns个样值:

如图四所示,直观上理解,就是每一个OFDM符号信息对应相当于一个单频的频谱,其余采样点的值为0,第i个符号对应的载波频率是i/Nifft或者N-i/Nifft,幅度为d(i)(即上述公式中的Ck),使用IFFT将离散频域变换到连续的时域,对应时域载波,变换后以Nifft个离散点存储,对所有符号的Nifft个离散点求和,即可得到OFDM信号(离散点表示连续信息)。

图四 基于IDFT和DFT的示意图
加入循环前缀(Cyclic Prefix,CP):
由于是多径信道,各路子载波被接收到的时间可能有偏差,这就造成在FFT积分时间长度内子载波之间相差不再是整数周期,子载波之间的正交性受到破坏,如果保护间隔中只是单纯地填零,那么在解调时子载波之间就会产生干扰。循环前缀是将符号尾部的信号复制搬移到前方构成的。当多径时延小于保护间隔时,由于在传输之前已经把尾部的一段信息复制到头部,即使由于时延在接收端损失了一部分信息,但是头部的信息依然可以检测到。这样,就可以保证各路子载波在一次FFT积分时间长度内,各子载波之间相差总是整数个周期,避免了ISI干扰。

图五 循环前缀
References:
[1] 正交频分复用_OFDM_及其在高速数字通信中的应用_梅剑平
对正交频分复用OFDM系统的理解的更多相关文章
- 小小知识点(三十九) 正交频分复用OFDM的基本原理及实现
引言 符号间干扰(ISI)是无线传输系统设计中需要考虑的因素,采用什么样的处理方法取决于数据传输速率或等效传输带宽来决定 (1)若数据速率低且与信道最大延迟相比符号持续时间较长,那么就可能无需任何均衡 ...
- OFDM正交频分复用---基础入门图示
@(162 - 信号处理) 整理转载自:给小白图示讲解OFDM 下面以图示为主讲解OFDM,以"易懂"为第一要义. 注:下面的讨论如果不做说明,均假设为理想信道. *** 一张原理 ...
- 多用户OFDM系统资源分配研究
首先,OFDMA 是什么? OFDM 技术的基本原理是将无线信道划分为若干互相正交的子信道,把高速串行数据流转化为低速并行子数据流,低速并行子数据流在子信道上独立传输. OFDMA 是LTE的下行多址 ...
- Linux系统的理解及学习Linux内核的心得
作业列表 (点击作业跳转) linux内核分析作业:以一简单C程序为例,分析汇编代码理解计算机如何工作 linux内核分析作业:操作系统是如何工作的进行:完成一个简单的时间片轮转多道程序内核 ...
- [转帖]关于4A(统一安全管理平台)系统的理解
雪山上的蒲公英 https://www.cnblogs.com/zjfjava/p/10674577.html 关于4A(统一安全管理平台)系统的理解 1. 4A系统的需求分析 近年来企业用户的业 ...
- 20135323符运锦期中总结----Linux系统的理解及学习心得
一.网易云课堂 1.各章节总结 第一周:计算机是如何工作的http://www.cnblogs.com/20135323fuyunjin/p/5222787.html 第二周:操作系统是如何工作的ht ...
- Android系统分区理解及分区目录细解【转】
本文转载自:https://blog.csdn.net/u010001503/article/details/51853822 Android 通常有以下分区: System分区: 就是我们刷ROM的 ...
- Linux图像系统框架-理解X11与Qt的层次结构
转:http://blog.csdn.net/kjfureone/article/details/52848550 1. 前言 图形子系统是linux系统中比较复杂的子系统之一:对下,它要管理形态各异 ...
- Android系统分区理解及分区目录细解
@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...
随机推荐
- 消息队列(message queue)
最近纠结于一个问题,就是horizon 在处理前台数据的时候非得等到cinder client将数据全部获取后才开始执行horizon的下一行代码,这给大量数据显示造成了很大的时延,其实对于用户体验来 ...
- WPF的本质:数据和行为
如果自己来做一个UI框架,我们会首先关注哪些方面?我想UI框架主要处理的一定包括两个主要层次的内容,一个是数据展现,另一个就是数据操作,所以UI框架必须能够接收各种不同的数据并通过UI界面展现出来,然 ...
- 12个十分实用的JavaScript小技巧
12个非常实用的JavaScript小技巧 在这篇文章中将给大家分享12个有关于JavaScript的小技巧.这些小技巧可能在你的实际工作中或许能帮助你解决一些问题. 使用!!操作符转换布尔值 有时候 ...
- Laravel5.1 数据库-查询构建器
今儿个咱说说查询构建器.它比运行原生SQL要简单些,它的操作面儿也是比较广泛的. 1 查询结果 先来看看它的语法: public function getSelect() { $result = DB ...
- Java语言如何进行异常处理,关键字:throws、throw、try、catch、finally分别如何使用?
先上代码再进行分析 public class Test { public static void main(String[] args) { try{ int i = 100 / 0; System. ...
- 【BZOJ2770】YY的Treap 结论+线段树
[BZOJ2770]YY的Treap Description 志向远大的YY小朋友在学完快速排序之后决定学习平衡树,左思右想再加上SY的教唆,YY决定学习Treap.友爱教教父SY如砍瓜切菜般教会了Y ...
- JAVA性能调试+JProfiler使用相关
一.JProfiler下载.安装与激活 1.1 下载 直接官网下载(https://www.ej-technologies.com/download/jprofiler/files) 建议下载9.X系 ...
- 坑爹的 HTTPClient java.lang.NoSuchFieldError: INSTANCE
项目中需要用到httpclient ,maven配置如下 <dependency> <groupId>org.apache.httpcomponents</groupId ...
- C#关于AutoResetEvent的使用介绍----修正
说明 之前在博客园看到有位仁兄发表一篇关于AutoResetEvent介绍,看了下他写的代码,看上去没什么问题,但仔细看还是能发现问题.下图是这位仁兄代码截图. 仁兄博客地址:http://www.c ...
- style="display:{{searchInput==='' ? 'none':'block'}} "
当用户没有有效输入时,是否显示提交按钮 style="display:{{searchInput==='' ? 'none':'block'}} "