OFDM简介

news2024/12/23 23:51:41

  OFDM(Orthogonal Frequency Division Multiplexing)全称为正交频分复用,在无线通信中被广泛应用。本文结合下图对OFDM的基本原理进行说明。

图1. OFDM信号生成流程示意图

  上图为OFDM信号生成、传输和接收的整体流程图。结合该流程图对其中每一个模块进行详细说明。

1. Demux

  如上图所示,OFDM调制的第一步是将原始01比特序列分成多路(串行转并行),后面每一路都会用一个载波进行传输。

2. 数字调制

  数字通信系统本质上传输的是0,1序列,但是如果直接按0,1序列去传输,那提高传输速率的难度是比较大的。比如说本来传输速率是100kb/s,现在要提高到200kb/s,那就只能将传输时钟提高两倍,系统每个模块工作的频率也相应地要提高两倍。这会带来一些问题:
  (1) 传输速率越快,从时域角度看,意味着单位时间内传输的bit数越多,留给每个bit的传输时间就越少。我们知道,信号在信道中传输,会受到信道低通特性的影响,造成信号边沿变缓,能量扩散,相邻符号间产生相互干扰(称为符号间干扰,ISI),这会引起严重的信号失真,导致接收端无法正确恢复信号。此外,符号的持续时间变短,也让其抖动容忍能力降低,更容易造成误码;
  (2) 传输速率越快,从频域角度看,意味着信号所占的频谱带宽越大,为了尽量减小信号失真,要求信道的带宽足够大,这对系统各个组件的实现都提出来更高的要求。
  为了解决上面的问题,一个很直观的思路就是,能不能把原来的0,1序列,几个几个一组去分段,然后一段一段一起传,这样就不用传那么多次,留给每次传输的时间也就更长了。比如说,要传输的原始序列是:0101010101,如果不做任何处理,那需要传10次,但如果两个两个分组,将原始序列改写长kkkkk(其中k表示01对应的编码),则只需要传输5次k即可,传输时间节省了一半,传输速率提高了一倍。数字调制本质上就是将原始01序列进行分段,然后按一定的规则对分段后的序列进行编码,用一个新的值替代原来的一个分段序列。不同调制方式的差异仅仅在于按多少个一组去分段以及分段后如何映射到新的数值上。常用的调制可分为基带调制和载波调制,两者的差别见附录。下面分别以一种常用的基带调制和载波调制方式进行说明。

2.1 PAM_n调制

  PAM(Pulse Amplitude Modulation,脉冲幅度调制)是常用的一种基带幅度调制方式。PAM-n表示将原始0,1序列中每 l o g 2 ( n ) log_2(n) log2(n)个bit为一组,重新进行编码,编码生成的新序列中有 n n n种不同符号。如常用的PAM-2(又称NRZ),PAM-4信号的调制方式如下
N R Z : 0 → − 1 , 1 → 1 P A M 4 : 00 → − 1 , 01 → − 1 / 3 , 10 → 1 / 3 , 11 → 1 NRZ: 0\rightarrow -1, 1\rightarrow 1\\ PAM4: 00 \rightarrow -1, 01 \rightarrow -1/3, 10 \rightarrow 1/3, 11\rightarrow 1 NRZ:01,11PAM4:001,011/3,101/3,111
  显然,PAM2信号中一个符号表示1个bit信息,所以其信号速率和原始bit序列的信号速率是一致的。PAM4信号中一个符号表示2个bit信息,节省了一半的传输带宽(相同bit速率下,NRZ和PAM4的频谱对比见下图)。

图2. 相同bit速率的NRZ和PAM4信号频谱对比

  显然,调制阶数越高(n越大),每个符号包含的bit数越多,越能节省传输带宽。但是,需要注意的是,调制阶数越高,意味着在相同信号幅度的情况下,相邻信号电平的间隔越小,对噪声越敏感,对信号的信噪比提出来更高的要求。实际应用中选择多高的调制阶次,需要结合信道衰减情况,信号的信噪比等因素进行折中权衡。

2.2 N-QAM调制

  从QAM(Quadrature Amplitude Modulation, 正交幅度调制)名字中我们知道它本质上也是一种幅度调制,但是它与普通幅度调制不一样的地方体现在“正交”二字。正交表明至少有两个对象,它这边的正交指的是两路载波正交。调制后的信号可以表示为
s ( t ) = A c o s ( ω 0 t + θ ) = A c o s ( θ ) c o s ( ω 0 t ) − A s i n ( θ ) s i n ( ω 0 t ) s(t)=Acos(\omega_0 t+\theta)=Acos(\theta)cos(\omega_0 t)-Asin(\theta)sin(\omega_0 t) s(t)=Acos(ω0t+θ)=Acos(θ)cos(ω0t)Asin(θ)sin(ω0t)
  上式中, ω 0 \omega_0 ω0表示载波频率,所以QAM调制实际上用来两路载波,一路是 c o s ( ω 0 t ) cos(\omega_0 t) cos(ω0t),另一路是 s i n ( ω 0 t ) sin(\omega_0 t) sin(ω0t),显然这两路载波是相互正交的。式子中的 A A A θ \theta θ分别表示调制信号的幅度和相位,通过设置不同的 A A A θ \theta θ即可得到不同的调制信号。而这些 A A A θ \theta θ是通过原始0,1序列按照一定规则编码映射得到的,以下图16QAM调制为例,原始符号0,1符号序列首先会每4个分成一组,然后按照一定的规则把它放在IQ平面上对应的位置,这些点与IQ平面的坐标原点连线形成的向量模长即为 A A A,该向量与X轴正方向形成的夹角即为 θ \theta θ。具体地,星座图上每个点的位置,按照如下规则得到:将原始0/1bit序列4个一组进行分组,每组中前两个bit组合成I路坐标,后两个bit组合成Q路坐标,由此得到每个点在IQ平面上的坐标。显然,从原始01bit序列到IQ平面坐标的映射关系乘以常数并不会影响每个点在平面上的相对位置,但是会影响信号功率。为此,在调制的时候,经常会进行功率归一化,功率归一化的目的是使得后面将这些调制信息作用到子载波上时,每个子载波上的平均功率相等,从而保证在各个子载波上的信号能够以相同的能量水平进行传输。

图3. 16QAM示意图

3. OFDM过程

  IFFT变换是OFDM中核心和精髓,下面将详细解释OFDM的原理。在上面我们说到通过调制可以将信号变成适合在信道中传输的形式,同时提高传输速率。做完调制之后,我们需要将这些信息放在载波上才能传出去。当然,你可以选择只用一个载波,慢慢地传,但是我们很自然地会想能不能多用几个载波一起传,这样不就又可以进一步提高传输速率了吗?显然这种思路是可行的,OFDM就是同时用多个正交的子载波进行传输,从时域上看,OFDM波形可表示为
s ( t ) = ∑ i A i s i n ( 2 π f i t ) + ∑ i B i c o s ( 2 π f i t ) s(t)=\sum_i A_i sin(2\pi f_i t)+\sum_i B_i cos(2\pi f_i t) s(t)=iAisin(2πfit)+iBicos(2πfit)
  其中 s i n ( 2 π f i t ) sin(2\pi f_i t) sin(2πfit) c o s ( 2 π f i t ) cos(2\pi f_i t) cos(2πfit)即为正交的子载波,将上述表达式写成复数形式得到
s ( t ) = ∑ i C i e j 2 π f i t s(t)=\sum_i C_i e^{j2\pi f_i t} s(t)=iCiej2πfit
  显然,对上式中的 t t t进行离散化,即为一个IFFT的操作,IFFT本质上就是将待传输的信号( C i C_i Ci)和各路子载波相乘叠加的过程,如下图所示

图4. OFDM的时域示意图

  从频率上看,时域里面待传输的信号和各路子载波相乘,在频域里为这些待传输信号的频谱(门函数的频谱)和子载波频谱的卷积,最终表现为对这些门函数频谱的搬移,如下图所示,门函数的频谱为sinc函数,为了保证各个门函数频谱在最佳采样点上不会相互影响(即保证各个子载波的正交性),要求一个子载波的峰值恰好对应另一个子载波的零点,由此推出最小的子载波间隔为 Δ f = 1 / T s \Delta f =1/T_s Δf=1/Ts,其中 T s T_s Ts为码元周期。由于OFDM允许频谱的部分混叠,故其频谱利用率较高。

图5. OFDM频谱示意图

  OFDM的优点:
  (1) 调制效率高;
  (2) 可以克服多径效应和码间串扰的问题,抗干扰能力强。
  OFDM的缺点:
  (1) OFDM对子载波正交性要求十分严格,对可能影响子载波之间的正交性的相位噪声和频率偏移十分敏感,从而引起子载波间干扰。
  (2) OFDM信号在时域中由多个子载波信号叠加而成,同相叠加在幅度上可能会产生很大的瞬时峰值幅度,造成较大的峰均功率比。这个信号通过发射端的功率放大器时,可能会进入放大器的非线性工作区间,造成信号失真

4. 后续处理

  进行IFFT变换后即可得到OFDM波形,将其经过DAC转化为模拟信号,并将频谱搬移到一定载波频率上通过天线发送出去。在接收端进行和发射端相反的流程,即首先在模拟前端里将信号搬移回基带,然后用ADC采样,再进行FFT变换进行OFDM的解调得到各个QAM调制信号,再进行QAM的解调,最后将解调后的多路并行数据重新组合成一路串行数据。


【附录】

1.基带调制和载波调制

  基带调制仅对基带信号的波形进行转化,使其能与信道特性相适应,调制后的信号仍是基带信号。由于基带调制是把数字信号转化为另一种形式的数字信号,人们通常将这个过程称为编码,常用的编码方式有不归零制、归零制、曼彻斯特编码、差分曼特斯特编码等。
  载波调制是利用载波将基带信号的频率范围搬移到较高的频段,并将信号转化为模拟信号。经过载波调制的信号称带通信号(即仅在一段频率范围内能够通过信道)。使用载波的调制过程称为带通调制,常用的带通调制方式有调幅、调频和调相,为了达到更高的信息传输速率,必须采用技术上更为复杂的多元制混合调制方法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2143895.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Logstash 安装与部署(无坑版)

下载 版本对照关系:ElasticSearch 7.9.2 和 Logstash 7.9.2 ; 官方下载地址 选择ElasticSearch版本一致的Logstash版本 https://www.elastic.co/cn/downloads/logstash 下载链接:https://artifacts.elastic.co/downloads/logstash/logst…

一、XML与Tomcat

文章目录 1. XML简介1.1 什么是XML1.2 XML的作用 2. XML语法2.1 文档声明2.2 xml 注释2.3 元素(标签)2.4 xml 属性2.5 语法规则2.5.1 所有XML元素都须有关闭标签(也就是闭合)2.5.2 XML 标签对大小写敏感2.5.3 XML 必须正确地嵌套2…

# windows 运行框输入mrt提示错误:Windows 找不到文件‘mrt‘。请确定文件名是否正确后,再试一次

windows 运行框输入mrt提示错误:Windows 找不到文件’mrt’。请确定文件名是否正确后,再试一次 一、错误描述: 当您在 windows 运行框中输入mrt并收到错误提示“Windows 找不到文件’mrt’。请确定文件名是否正确后,再试”时,这…

【无人机设计与控制】四旋翼无人机轨迹跟踪及避障Matlab代码

摘要 本文主要研究了四旋翼无人机在复杂环境中的轨迹跟踪与避障控制策略。通过Matlab/Simulink对四旋翼无人机进行了建模与仿真。系统集成了避障算法,使得无人机在执行任务时能够有效避开障碍物,保证飞行的安全性与稳定性。 理论 无人机飞行控制通常涉…

着色器 简介

着色器(Shader)是运行在 GPU 上的小程序。这些小程序为图形渲染管线的某个特定部分而运行。从基本意义上来说,着色器只是一种把输入转化为输出的程序。着色器也是一种非常独立的程序,因为它们之间不能相互通信;它们之间…

【JavaSE】--数组的定义与使用

文章目录 1. 数组的基本概念1.1 什么是数组1.2 数组的创建及初始化1.2.1 数组的创建1.2.2 数组的初始化 1.3 数组的使用1.3.1 数组中元素访问1.3.2 遍历数组 2. 数组是引用类型2.1 初识JVM的内存分布2.2 基本类型变量与引用类型变量的区别2.3 再谈引用变量2.4 认识null 3. 数组…

es的封装

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、类和接口介绍0.封装思想1.es的操作分类 二、创建索引1.成员变量2.构造函数2.添加字段3.发送请求4.创建索引总体代码 三.插入数据四.删除数据五.查询数据 前…

公共建筑能耗监测系统解决方案

jianzhunenghao 建筑节能监测系统公共建筑能耗监测系统建筑能耗监测系统节能监测系统能耗监测建筑能耗监测能耗分析能耗管理能耗预测能耗监控能耗监测平台建筑能耗 介绍 能耗监控系统是为耗电量、耗水量、耗气量(天然气量或者煤气量)、集中供热耗热量…

STHS34PF80高灵敏度红外感应器(2)----InfraredPD存在感应检测

STHS34PF80人体存在传感器.2--InfraredPD存在感应检测 概述视频教学样品申请完整代码下载硬件准备开启CRC串口设置开启X-CUBE-MEMS1InfraredPD文件InfraredPD算法库注意事项对应DEMOMX_MEMS_InitMX_MEMS_Processt_obj_comp(补偿后的物体温度)t_obj_chang…

清理C盘缓存,电脑缓存清理怎么一键删除,操作简单的教程

清理C盘缓存是维护电脑性能、释放磁盘空间的重要步骤。以下是一个详细且操作简单的教程,旨在帮助用户通过一键或几步操作完成C盘缓存的清理。 1.使用Windows系统自带工具 磁盘清理 1.打开磁盘清理工具: -按下“WinE”打开文件资源管理器…

数据结构与算法——Java实现 5.链表

目录 一、定义 链表的分类 二、性能 随机访问 插入或删除 三、单向链表 链表内部节点类 ① 增加(插入) 1.头插法 2.寻找最后一个节点位置 3.尾插法 4.根据索引位置插入 ② 删除 1.删除首个结点 2.获取链表的指定索引节点 3.删除链表指定索引元素节点 4.删…

【Java】【力扣】83.删除排序链表中的重复元素

题目 给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。 示例 1: 输入:head [1,1,2] 输出:[1,2]示例 2: 输入:head [1,1,2,3,3] 输出&#…

js 控制台自动 debugger

在全局文件中加入以下代码,即可打开控制台自动调试 setInterval(function() {check() }, 1000); var check function() {function doCheck() {(function() {}["constructor"]("debugger")())doCheck()}try {doCheck()} catch (err) {} }; che…

Flask-WTF的使用

组织一个 Flask 项目通常需要遵循一定的结构,以便代码清晰、可维护。下面是一个典型的 Flask 项目结构: my_flask_app/ │ ├── app/ │ ├── __init__.py │ ├── models.py │ ├── views.py │ ├── forms.py │ ├── templat…

T3打卡-天气识别

🍨 本文为🔗365天深度学习训练营中的学习记录博客🍖 原作者:K同学啊 1.导入数据: #设置GPU import tensorflow as tf gpustf.config.list_physical_devices("GPU") if gpus:gpu0gpus[0]tf.config.experime…

Android OkHttp源码分析(一):为什么OkHttp的请求速度很快?为什么可以高扩展?为什么可以高并发

目录 一、为什么要使用OkHhttp? 在不使用OkHhttp之前,我们都是在使用什么?使用HttpURLConnection,那么我们看看HttpURLConnection发起一次请求,两次请求要花多长时间,而OkHttp花多长时间。HttpURLConnection会比okht…

【银河麒麟高级服务器操作系统实例】tcp_mem分析处理全过程内核参数调优参考

了解更多银河麒麟操作系统全新产品,请点击访问 麒麟软件产品专区:https://product.kylinos.cn 开发者专区:https://developer.kylinos.cn 文档中心:https://documentkylinos.cn 现象描述 系统中出现大量的TCP: out of memory…

Mina protocol - 体验教程

Mina protocol - 体验教程 一、零知识证明( Zero Knowledge Proof )1、零知识证明(ZKP)的基本流程工作流程: 2、zkApp 的优势:3、zkApp 每个方法的编译过程: 二、搭建第一个zkapp先决条件1、下载或者更新 zkApp CLI​2…

基于Springboot美食推荐小程序的设计与实现(源码+数据库+文档)

一.项目介绍 pc端: 支持用户、餐厅老板注册 支持管理员、餐厅老板登录 管理员: 管理员模块维护、 餐厅管理模块维护、 用户管理模块维护、 商品管…

Qt:NULL与nullptr的区别(手写nullptr)

前言 发现还是有人不知道NULL 与nullptr的区别,故写此文章。 正文 对于NULL 先看NULL的源码 我们可以看出这段代码是一个典型的预处理器宏定义块,用于处理 NULL 宏的定义。 先看开头 #if defined (_STDDEF_H) || defined (__need_NULL)这行代码检…