精华内容
下载资源
问答
  • ofdm 调制解调 全过程 绘图 星座图
  • OFDM调制

    2021-08-07 20:10:07
    从这个角度来开始学习OFDM,一直有个困惑的地方,图中的频域采样位置处确实是不受其他载波影响,但是在OFDM调制过程中什么时候对它采样了,也就是什么时候拿到了下图红色位置(频域采样点)处的信息,如果不能准


    前言

    关于ofdm一些问题的思考,记录一下,有不对的地方希望大家在评论中指出。

    一、频域采样点

    一些资料讲解OFDM原理时,一开始都直接从频域出发解释正交的意思,如下图中频域采样点(红色箭头位置)只与当前载波有关,不受其他载波影响,子载波间不需要增加保护带宽。

    从这个角度来开始学习OFDM,一直有个困惑的地方,图中的频域采样位置处确实是不受其他载波影响,但是在OFDM调制过程中什么时候对它采样了,也就是什么时候拿到了下图红色位置(频域采样点)处的信息,如果不能准确对红色箭头位置处采样,采样的位置偏一点就带来了其他子载波的影响。
    在这里插入图片描述 图 1 图1 1

    Ψ l , k ( t ) \Psi_{l, k}(t) Ψl,k(t) 表示在第 k k k个子载波上的第 l l l个 OFDM 信号: Ψ l , k ( t ) = { e j 2 π f k ( t − l T s y m ) , 0 < t ⩽ T s y m 0 ,  其他  , l = 0 , 1 , 2 , ⋯   , ∞ , k = 0 , 1 , 2 , ⋯   , N − 1 。 T s y m \\ \Psi_{l, k}(t)=\left\{\begin{array}{ll} \mathrm{e}^{\mathrm{j} 2 \pi f_{k}\left(t-l T_{\mathrm{sym}}\right)}, & 0<t \leqslant T_{\mathrm{sym}} \\ 0, & \text { 其他 } \end{array}\right., l=0,1,2, \cdots, \infty,\\ k=0,1,2, \cdots, N-1 。T_{\mathrm{sym}} Ψl,k(t)={ej2πfk(tlTsym),0,0<tTsym 其他 ,l=0,1,2,,,k=0,1,2,,N1Tsym表示单个 OFDM符号的持续时间 。

    OFDM基带信号可表示为: x l ( t ) = ∑ l = 0 ∞ ∑ k = 0 N − 1 X l [ k ] e j 2 π f k ( t − l T s y m ) x_{l}(t)=\sum_{l=0}^{\infty} \sum_{k=0}^{N-1} X_{l}[k] e^{j 2 \pi f_{k}\left(t-l T_{ \mathrm{sym}}\right)} xl(t)=l=0k=0N1Xl[k]ej2πfk(tlTsym)
    子载波 e j 2 π f k ( t − l T s y m ) , 0 < t ⩽ T s y m \mathrm{e}^{\mathrm{j} 2 \pi f_{k}\left(t-l T_{\mathrm{sym}}\right)},0<t \leqslant T_{\mathrm{sym}} ej2πfk(tlTsym),0<tTsym的频谱可由时移后门函数的频谱与相应的冲激进行卷积得到,由时移特性知,门函数信号 x ( t ) x(t) x(t) 在时域中延迟 t 0 t_{0} t0 等价于在频域中乘以因子 e − j 2 π f t 0 , \mathrm{e}^{-\mathrm{j} 2 \pi f {t}_{0} }, ej2πft0,模不变 ,其频谱幅度为Sa函数

    在这里插入图片描述 图 2 图2 2

    X l [ k ] = a l , k + j b l , k , X l [ k ] e j 2 π f k ( t − l T s y m ) = a l , k ∗ e j 2 π f k ( t − l T s y m ) + j b l , k ∗ e j 2 π f k ( t − l T s y m ) X_{l}[k] =a_{l,k}+jb_{l,k}, X_{l}[k] e^{j 2 \pi f_{k}\left(t-l T_{ \mathrm{sym}}\right)}=a_{l,k}*e^{j 2 \pi f_{k}\left(t-l T_{ \mathrm{sym}}\right)}+jb_{l,k}*e^{j 2 \pi f_{k}\left(t-l T_{ \mathrm{sym}}\right)} Xl[k]=al,k+jbl,kXl[k]ej2πfk(tlTsym)=al,kej2πfk(tlTsym)+jbl,kej2πfk(tlTsym),上式相当于门函数由1变为 a l , k a_{l,k} al,k j b l , k jb_{l,k} jbl,k,所以相应频谱中Sa函数幅度变为之前的 a l , k a_{l,k} al,k b l , k b_{l,k} bl,k倍, j b l , k jb_{l,k} jbl,k同时引入了因子 j j j,可知 X l [ k ] e j 2 π f k ( t − l T s y m ) X_{l}[k] e^{j 2 \pi f_{k}\left(t-l T_{ \mathrm{sym}}\right)} Xl[k]ej2πfk(tlTsym)的频谱为两个Sa函数复数求和,其幅值还是Sa函数,OFDM基带信号为 k k k个子载波的频谱求和,在相应得频谱采样处,其他子载波幅值为零,采样可得到 a l , k + j b l , k a_{l,k}+jb_{l,k} al,k+jbl,k(即 X l [ k ] X_{l}[k] Xl[k])与时延 带来的旋转因子 e − j 2 π f t 0 \mathrm{e}^{-\mathrm{j} 2 \pi f {t}_{0} } ej2πft0信息,时延带来的影响在基带信号中已经体现在子载波 e j 2 π f k ( t − l T s y m ) \mathrm{e}^{\mathrm{j} 2 \pi f_{k}\left(t-l T_{\mathrm{sym}}\right)} ej2πfk(tlTsym)里,实际中是没有真的在频域中对红色箭头处采样的,当我们对比特流映射成的PSK或QAM符号序列 X l [ k ] X_{l}[k] Xl[k]进行处理时,就已经利用了红色箭头处的 a l , k + j b l , k a_{l,k}+jb_{l,k} al,k+jbl,k信息,从某种角度可以认为是已经在频域中对红色箭头处准确采样了

    综上,当我们由比特流进行星座调制后拿到复数信息时,相当于准确拿到上图红色位置(频域采样点)处的信息了

    二、OFDM基带信号——实数和复数

    2.1 OFDM基带实信号

    有些资料中在OFDM调制时会构造 X l [ k ] X_{l}[k] Xl[k] 的复共轭对称数据 X l ∗ [ k ] X_{l}^{*}[k] Xl[k],再拼接到一起,进行2N点IFFT,得到2N个实数数据(虚部为0),频谱带宽是 ( − f m , f m ) (-f_{m} ,f_{m} ) (fm,fm)(实信号频谱对称的),这样得到实的 OFDM 信号。因为有些情况下信号用基带传输 (不用载波调制),这只能传输实信号,需要得到实的OFDM 信号。这种情况下,用基带传输,带宽为 fm,传递 N 个复数信息数据。如果用通带传输(RF 载波) ,带宽为 2fm,传递N个复数信息数据。

    2.2 OFDM基带复信号

    还可以得到复数的 OFDM基带信号,如直接从星座映射后取 2N 个复数,直接做2N点 IFFT 后得到2N个复数点(基带信号),再用IQ两路中的正弦信号和余弦信号分别传送OFDM基带信号的实部和虚部,详见正交采样(复频率域角度)。与OFDM基带实数信号相比,OFDM复数基带信号不需要产生共轭对称的频谱,负频率部分用来传送信息数据。但不能直接传输OFDM复数基带信号,只能利用RF 载波传输信号实部和虚部,其带宽为 2fm,传送 2N 个复数信息数据。(为了和实数对应,取的2N点,也可以取N个复数,做N点的IFFT变换,得到N个复数时域信号)

    OFDM实基带信号,直接用基带传输,带宽为 fm,传递 N 个复数信息数据。OFDM复基带信号用RF载波(IQ两路)传输,带宽为2fm,可以传递2N 个复数信息数据。这两种方式频带效率是一样的。

    三、生成 ( − f m , f m ) (-f_{m} ,f_{m} ) (fm,fm)OFDM基带信号

    OFDM调制时子载波为 e j 2 π f k ( t − l T s y m ) , 0 < t ⩽ T s y m , k = 0 , 1 , 2 , ⋯   , N − 1 , \mathrm{e}^{\mathrm{j} 2 \pi f_{k}\left(t-l T_{\mathrm{sym}}\right)}, 0<t \leqslant T_{\mathrm{sym}}, k=0,1,2, \cdots, N-1, ej2πfk(tlTsym),0<tTsym,k=0,1,2,,N1,频率 f 0 f_{0} f0 f N − 1 f_{N-1} fN1都是正频率,N个子载波叠加后频谱如下图3所示(在该部分未关注频谱的相位,重点关注频谱的幅值):
    请添加图片描述 图 3 图3 3
    但是利用OFDM调制的基带信号,如WIFI信号,其信号频谱都是负频率到正频率部分,类似为下图4所示:
    在这里插入图片描述 图 4 图4 4

    OFDM调制时做了什么操作可以从频率 f 0 f_{0} f0 f N − 1 f_{N-1} fN1都是正频率,得到负频率部分到正频率部分(零频在中心)?

    在第一部分频域采样点中,OFDM基带信号是时间连续信号,而IFFT得到的是N个时间离散数据,必定要对OFDM时间连续信号进行采样,具体过程如下

    OFDM基带信号为: x l ( t ) = ∑ l = 0 ∞ ∑ k = 0 N − 1 X l [ k ] e j 2 π f k ( t − l T s y m ) x_{l}(t)=\sum_{l=0}^{\infty} \sum_{k=0}^{N-1} X_{l}[k] e^{j 2 \pi f_{k}\left(t-l T_{ \mathrm{sym}}\right)} xl(t)=l=0k=0N1Xl[k]ej2πfk(tlTsym)
    在时刻 t = l T sym  + n T s , T s = T s y m / N , f k = k / T s y m , t=l T_{\text {sym }}+n T_{\mathrm{s}}, \quad T_{\mathrm{s}}=T_{\mathrm{sym}} / N,f_{k}=k / T_{\mathrm{sym}} , t=lTsym +nTs,Ts=Tsym/N,fk=k/Tsym, 对时间连续的基带 OFDM 信号进行采样, 可以得到相应的离散时间的 OFDM 符号: x l [ n ] = ∑ k = 0 N − 1 X l [ k ] e j 2 π k n / N , n = 0 , 1 , ⋯   , N − 1 , x_{l}[n]=\sum_{k=0}^{N-1} X_{l}[k] \mathrm{e}^{\mathrm{j} 2 \pi kn / \mathrm{N}}, \quad n=0,1, \cdots, N-1, xl[n]=k=0N1Xl[k]ej2πkn/N,n=0,1,,N1,上式相当于数据符号 { X l [ k ] } k = 0 N − 1 \left\{X_{l}[k]\right\}_{k=0}^{N-1} {Xl[k]}k=0N1 的 N 点 IDFT, 可利用 IFFT 算法。

    对连续时间数据进行采样,那采样后离散时间信号的频谱相对于采样前的时间连续信号频谱相比会发生什么变换 ?根据离散时间傅里叶变换(DTFT),其频谱沿频率轴周期延拓,周期为 2 π 2\pi 2π (如果变量是数字频率 ω \omega ω )或 f s f_{s} fs (如果变量是模拟频率 f f f), f s = 1 T s y m / N f_{s} =\frac{1}{T_{\mathrm{sym}} / N} fs=Tsym/N1(由N点IFFT得到N个时域离散数据,产生N个数据用时为 T s y m T_{\mathrm{sym}} Tsym,所以 f s = 1 T s y m / N f_{s} =\frac{1}{T_{\mathrm{sym}} / N} fs=Tsym/N1,而 T s y m = 1 Δ f T_{\mathrm{sym}}=\frac{1}{\Delta f } Tsym=Δf1,即 f s = Δ f ⋅ N 。 f_{s} =\Delta f\cdot N。 fs=ΔfN

    需要注意的是数字频率 ω = 2 π f f s \omega=2\pi\frac{f}{f_{s} } ω=2πfsf是与采样频率 f s f_{s} fs联系在一起的,单位是弧度,表示相邻两个采样点弧度变化

    假设OFDM基带时域连续信号 x l ( t ) x_{l}(t) xl(t)频谱示意图如下所示
    在这里插入图片描述 图 5 图5 5
    采样后离散时间信号 x l [ n ] x_{l}[n] xl[n]频谱沿频率轴周期延拓,示意图如下
    在这里插入图片描述 图 6 图6 6
    由于频谱是以 2 π 2\pi 2π为周期进行周期延拓的,通常我们取 ( − π , π ) (-\pi ,\pi ) (π,π)范围内频谱来观察,所以我们生成的OFDM时域离散信号 x l [ n ] x_{l}[n] xl[n]其频谱一般如图4所示

    当我们由比特流得到数据符号 { X l [ k ] } k = 0 N − 1 \left\{X_{l}[k]\right\}_{k=0}^{N-1} {Xl[k]}k=0N1后,如果用式 x l ( t ) = ∑ l = 0 ∞ ∑ k = 0 N − 1 X l [ k ] e j 2 π f k ( t − l T s y m ) x_{l}(t)=\sum_{l=0}^{\infty} \sum_{k=0}^{N-1} X_{l}[k] e^{j 2 \pi f_{k}\left(t-l T_{ \mathrm{sym}}\right)} xl(t)=l=0k=0N1Xl[k]ej2πfk(tlTsym)产生OFDM基带信号,将 X l [ k ] X_{l}[k] Xl[k]信息调制到子载波 f k f_{k} fk上,如下图所示
    请添加图片描述 图 7 图7 7
    当我们在 ( − π , π ) (-\pi ,\pi ) (π,π)范围内查看OFDM离散时间信号 x l [ n ] x_{l}[n] xl[n]频谱时, X l [ k ] X_{l}[k] Xl[k]从左到右依次如下所示
    请添加图片描述 图 8 图8 8
    对于图8,我们希望 X l [ k ] X_{l}[k] Xl[k]从左到右依次为 X l [ 0 ] , X l [ 1 ] , X l [ 2 ] , X l [ 3 ] 和 X l [ 4 ] , X l [ 5 ] , X l [ 6 ] , X l [ 7 ] X_{l}[0],X_{l}[1],X_{l}[2],X_{l}[3]和X_{l}[4],X_{l}[5],X_{l}[6],X_{l}[7] Xl[0],Xl[1],Xl[2],Xl[3]Xl[4],Xl[5],Xl[6],Xl[7],需要我们得到数据符号 { X l [ k ] } k = 0 N − 1 \left\{X_{l}[k]\right\}_{k=0}^{N-1} {Xl[k]}k=0N1后,将 X l [ k ] X_{l}[k] Xl[k]序列的前一半与后一半整体互换得到 Y l [ k ] Y_{l}[k] Yl[k]
    Y l [ k ] = { X l [ 4 ] , X l [ 5 ] , X l [ 6 ] , X l [ 7 ] , X l [ 0 ] , X l [ 1 ] , X l [ 2 ] , X l [ 3 ] } Y_{l}[k]=\left \{ X_{l}[4],X_{l}[5],X_{l}[6],X_{l}[7],X_{l}[0],X_{l}[1],X_{l}[2],X_{l}[3]\right \} Yl[k]={Xl[4],Xl[5],Xl[6],Xl[7],Xl[0],Xl[1],Xl[2],Xl[3]}
    通过式 y l ( t ) = ∑ l = 0 ∞ ∑ k = 0 N − 1 Y l [ k ] e j 2 π f k ( t − l T s y m ) y_{l}(t)=\sum_{l=0}^{\infty} \sum_{k=0}^{N-1} Y_{l}[k] e^{j 2 \pi f_{k}\left(t-l T_{ \mathrm{sym}}\right)} yl(t)=l=0k=0N1Yl[k]ej2πfk(tlTsym)产生OFDM基带信号,在 y l [ n ] y_{l}[n] yl[n]频谱中, X l [ k ] X_{l}[k] Xl[k]从左到右依次如下所示
    请添加图片描述 图 9 图9 9
    在802.11a中物理层是用OFDM实现的,子载波间隔是312.5kHz,有64个可使用的子载波,所以其 f s = Δ f ⋅ N = 312.5 k ∗ 64 = 20 f_{s} =\Delta f\cdot N=312.5k*64=20 fs=ΔfN=312.5k64=20MHz,实际使用的子载波数目有52个,其中4个给导频使用,48个作为数据子载波。其余12个子载波不携带数据,用作保护带,主要是为了减少信道间的干扰(最中间的子载波作为DC偏置,左边的序号最低的6个子载波,以及最高的5个子载波),下图为基带信号在 ( − π , π ) (-\pi ,\pi ) (π,π)范围内的频谱:
    请添加图片描述 图 10 图10 10
    在图10中为了得到数据符号从左到右依次为 X l [ 0 ] , X l [ 1 ] , X l [ 2 ] , X l [ 3 ] ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ X l [ 48 ] , X l [ 49 ] , X l [ 50 ] , X l [ 51 ] X_{l}[0],X_{l}[1],X_{l}[2],X_{l}[3]\cdot \cdot \cdot \cdot \cdot \cdot X_{l}[48],X_{l}[49],X_{l}[50],X_{l}[51] Xl[0],Xl[1],Xl[2],Xl[3]Xl[48],Xl[49],Xl[50],Xl[51],在进行OFDM调制产生基带信号时,数据符号与子载波 f k f_{k} fk映射关系如下图所示, k = 0 , 1 , 2 , ⋯   , N − 1 k=0,1,2, \cdots, N-1 k=0,1,2,,N1
    请添加图片描述 图 11 图11 11
    图12很容易在802.11a资料中见到,结合图10和图11,很容易理解图中子载波标号-26 到 -1映射到 IFFT 输入端口的 38 到 63,1 到 26映射到 相同标号的IFFT 输入端口,(-26到26是从 ( − π , π ) (-\pi ,\pi ) (π,π)出发映射到 ( 0 , 2 π ) (0,2\pi ) (0,2π)
    请添加图片描述 图 12 图12 12

    展开全文
  • OFDM调制过程及原理解释-个人笔记.doc
  • OFDM调制理解

    千次阅读 2020-01-08 18:55:24
    OFDM调制理解-----gnuradio上实例 OFDM调制 基本原理 正交频分复用(OFDM)的基本原理就是把高速的数据流通过串-并转换,分配到传输速率相对较低的若干个子信道中进行传输。由于每个子信道的的符号周期会相对增加,...

    前言

    因为要学习gnuradio的使用,然后要看他的一个例子是生成一串随机比特数据,然后经过OFDM调制后通过USRP发送出去。整了一下不是很明白这一过程,所以先弄清楚OFDM的调制过程吧。于是,复制卡卡西附体。把资料整理在这里,供以后方便查看(小声逼逼,期末来了没时间慢慢打字,所以还是截图放在这里快点)。
    因为大都是截图来的,可能有些符号不统一。所以符号的话在一个小标题内是统一的,在大标题范围上就不一定了

    OFDM调制理解

    OFDM调制

    基本原理

    正交频分复用(OFDM)的基本原理就是把高速的数据流通过串-并转换,分配到传输速率相对较低的若干个子信道中进行传输。由于每个子信道的的符号周期会相对增加,因此可以减小多径时延拓展对系统造成的影响。另一方面,还可以在OFDM符号间插入保护间隔,进一步降低或消除由多径时延带来的符号间干扰(ISI)。
    OFDM是一种特殊的多载波复用(MCM)传输方案,可以被当作一种调制技术,也可以被当作一种复用技术。多载波传输把数据流分解成若干个子数据流,这样每个数据流将具有低的多的数据速率,用这样的低数据率符号再去调制相应的子载波,就构成多个低速率符号并行发送的传输系统。OFDM是对多载波调制的一种改进,基本思想就是把高速的数据流通过串-并转换成N路低速率并行数据流,然后对N路相互正交的载波进行调制。与传统的频分复用相比,OFDM的子载波正交复用技术大大提高了频带利用率。如图
    简单的说OFDM 是一种多载波传输技术,N 个子载波把整个信道分割成 N 个子信道,N 个子信 道并行传输信息。
    在这里插入图片描述
    上面这副图是普通FDM的频谱图

    在这里插入图片描述
    继续靠近就成OFDM的频谱图了,间隔频率互相正交,因此频谱虽然有重叠,但是仍然是没有互相干扰的。

    OFDM系统组成

    OFDM 系统的组成框图如下图 1.1 所示。
    输入比特序列完成串并变换后,根据采用的调制方式,完成相应的调制映射,形成调制信息序列 ,对进行 IDFT,计算出 OFDM 已调信号的时域抽样序列,加上循环前缀 CP(循环前缀可以使 OFDM 系统完全消除信号的多径传播造成的符号间干扰(ISI)和载波间干扰(ICI)),再作 D/A 变换,得到 OFDM 已调信号的时 域波形。接收端先对接收信号进行 A/D 变换,去掉循环前缀 CP,得到 OFDM 已调信号的抽样序列,对该抽样序列作 DFT 即得到原调制信息序列 。
    在这里插入图片描述
    简单点即输入比特信号- - ->64QAM调制映射- - ->串并行转换- - ->得到N位调制信X(K)序列 - - ->对频域数据符号X(K)进行IFFT变换- - ->N位时域抽样信号X(N)- - ->加起来,加上循环前缀CP- - ->D/A转换- - ->发射
    下面按照步骤一步步来:先调制

    QAM调制映射

    IQ调制

    IQ信号与IQ调制有关,IQ调制也叫正交调制,调制原理如下:

    在这里插入图片描述

    输入正交调制器得信号一般被称为IQ信号,经常用复数来表示:a+jb,对应复平面上得一个点,因此IQ信号通常被大家称为“复信号”。
    IQ解调原理:
    在这里插入图片描述
    这个就是IQ调制和解调的原理,然后就是如何应用IQ调制来实现MPSK调制(QPSK、8PSK等)、MQAM调制(16QAM、64QAM等)了。
    BPSK(二相相移位键控):
    在这里插入图片描述
    在这里插入图片描述
    也就是用载波的相位来调制基带信号。然后MPSK就是通过IQ调制得到不同的相位来表示符号。比较简单就不继续写啦。

    使用IQ调制实现QAM调制

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    映射关系表
    星座图解释:星座图,就是说一个坐标,如单位圆,横坐标是I,纵坐标是Q,相应于投影到I轴的,叫同相分量,同理投影到Q轴的叫正交分量。由于信号幅度有差别,那么就有可能落在单位圆之内。具体地说,64QAM,符号有64个,等于2的6次方,因此每个符号需要6个二进制来代表才够用。这64个符号就落在单位圆内,根据幅度和相位的不同 落的地方也不同。从其中一个点跳到另一个点,就意味着相位调制和幅度调制同时完成了。”
    调制中用格雷码原因:为了减少误判比特,解调出的值按汉明距离来判断是哪个码,如果错了格雷码上下左右也才差一个比特。

    多载波调制和DFT

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    进行IFFT计算时, IFFT的运算过程是纯数学运算,必须认为的赋予数据物理意义。输入的数据是频域信息,每一个数据代表了对应频点上的采样值,输入数据的数量代表了以采样频率权值的频域采样值,假设输入数据的数量为n,每两个数据之间的频率间隔为f,则采样速率为nf,也就是说输入数据是在带宽为nf范围内的均匀采样值输出的数据是时域信息,假设OFDM每一个符号时间为T,IFFT输出数据的数量为n,那么输出数据的采样频率即为n/T,根据奈奎斯特采样定理,如果信号的带宽为f1,那么如果要准确表达被采样信号的频域信息,采样速率至少为2f1。(结合数字信号时域频域采样的知识)
    在这里插入图片描述

    保护间隔和循环前缀

    为了最大限度地消除符号间干扰,还可以在每个OFDM符号之间插入保护间隔,而且保护间隔长度Tg一般要大于无线信道中的最大时延,这样一个符号就不会对下一个符号造成干扰。再这段保护间隔内可以不插入任何信号,即是一段空白的传输时段,然而在这种情况下,由于多径传播的影响,接收端实现同步有一定困难。

    帮助理解:信号可以在多条路径上传播而先后到达接收端,多经效应造成了了OFDM符号间的干扰(ISI),所以需要在OFDM符号之前留出一段保护时间(Guard time),又叫前缀(Prefix),其时间宽度大于信道的最大时延扩展(delay spread)。这样前一个符号的多个时延信号完全被前缀吸收,不会影响后一个符号。如果采用全零前缀,只能消除符号间的ISI,却不能消除符号内部的码间干扰(ICI)。为了解决上述问题,在实际系统中使用OFDM符号的周期扩展作为循环嵌缀,将OFDM符号的最后一段的时域信号的拷贝插入到保护时间当中。(还是很没有理解保护间隔是如何保护)

    为了便于同步,人们又在OFDM符号的保护间隔内填入循环前缀信号,即将每个OFDM符号后的Tg时间中的样点复制到OFDM符号的前面,形成前缀,在交接点没有任何的间断,下图显示了循环前缀的插入
    在这里插入图片描述
    循环前缀CP的引入,使得OFDM传输在一定条件下可以完全消除由于多径传播造成的符号间干扰(ISI)和子信道间干扰(ICI)的影响,大大推进了OFDM技术实用化的进程。
    注意:OFDM“符号”(symbol)是一个容易产生歧义的概念。在多数OFDM 文献中,OFDM“符号”指的是调制信息序列X(N)(IFFT输出的时域抽样序列),而X(N)的各分量(即各子载波上的调制信息)也用“符号”(symbol)表示。为避免这种混乱,我们将X(N)连同循环前缀称为OFDM“帧符号”,简称“符号”,称的分量为“帧内符号”。OFDM 文献中的符号间干扰(ISI)指的是帧符号间的干扰,具体是指除去循环前缀后的帧符号间的干扰,同样符号同步也是指帧符号同步。
    好了,这个就是OFDM我所了解的调制过程吧,然后下面就是有一些疑惑点的补充。

    OFDM频谱和功率谱

    频谱

    上面的多载波调制和FFT的公式1.2.2忽略了矩形函数(当基带信号为矩形脉冲表示时,一个码元宽度)。即可以表示如下:
    在这里插入图片描述
    所以,时域上每个OFDM信号X(K)与脉冲宽度为T的矩形脉冲相乘,频域上时对应频谱的卷积,即Sa(fT)函数与一组位于各个子载波频率上的δ函数的卷积,即相当于把Sa(fT)的中心频率搬移到δ函数的频率上。卷积结果如图所示:
    在这里插入图片描述
    在这里插入图片描述
    当所有载波组合在一起时,总的频谱非常接近与矩形频谱,看上面确实长的像对不。与其它多载波调制方案相比,OFDM信号载波之间的正交性,可以避免载波间干扰(ICI),具有更高频带利用率。
    在这里插入图片描述
    所以假设采样频率为fs,OFDM符号长度为Ts,子载波频率为fk
    若基带信号采用矩形信号,则每个子信道已调信号频谱为Sa(x)形状,主花瓣宽度为2/Ts
    所以他们关系为:
    由前面IFFT调制那得到fk=k*fs/N
    且采样频率fs=N/Ts
    采样周期T=N/Ts
    由这里知相邻子载波间隔为Δf=fs/N=1/Ts
    所以注意对比相邻子载波间隔Δf和Sa(x)形状,主花瓣宽度为2/Ts就可以看出前面频谱的关系啦。

    功率谱

    OFDM符号的功率谱密度为N个子载波上的信号的功率谱密度之和。
    在这里插入图片描述
    在这里插入图片描述
    这是N=32的OFDM功率谱密度图。纵坐标为归一化功率谱密度,单位dB,很坐标为归一化频率ft。

    正交的理解

    sin(t)和sin(2t)是正交的【因为:sin(t)·sin(2t)在区间[0,2π]上的积分为0】
    在下面的图示中,在[0,2π]的时长内,采用最易懂的幅度调制方式传送信号:sin(t)传送信号a,因此发送a·sin(t),sin(2t)传送信号b,因此发送b·sin(2t)。其中,sin(t)和sin(2t)的用处是用来承载信号,是收发端预先规定好的信息,称为子载波;调制在子载波上的幅度信号a和b,才是需要发送的信息。因此在信道中传送的信号为a·sin(t)+b·sin(2t)。在接收端,分别对接收到的信号作关于sin(t)和sin(2t)的积分检测,就可以得到a和b了。(和IQ调制那一样)
    再下一步,将cos(t)也引入。容易证明,cos(t)与sin(t)是正交的,也与整个sin(kt)的正交族相正交。同样,cos(kt)也与整个sin(kt)的正交族相正交。因此发射序列扩展到{sin(2π·Δf·t),sin(2π·Δf·2t),sin(2π·Δf·3t),…,sin(2π·Δf·kt),cos(2π·Δf·t),cos(2π·Δf·2t),cos(2π·Δf·3t),…,cos(2π·Δf·kt)}
    所以咧,上面的多载波调制和FFT的公式1.2.2可以看出s(t)的实部和虚部分别对应于符号的同相和正交分量,通过IFFT就可以让X(t)调制实现。

    总结

    就这样吧,虽然还有好些东西没有搞懂和写上,但是总的来说应该达到我想要的了,不够再补充。害,准备期末去了。
    留下的问题:

    • 循环前缀cp实现他的作用原理

    参考

    OFDM调制解调
    OFDM的基本原理
    这两个文档都有下载到
    给"小白"图示讲解OFDM的原理

    无线通信中的IQ调制,BPSK调制,QPSK调制,16QAM调制的理解

    展开全文
  • OFDM调制程序,详细的介绍了OFDM调制及解调过程,希望对大家有帮助
  • OFDM调制matlab仿真详细代码

    万次阅读 多人点赞 2019-12-04 11:31:09
    MATLAB仿真代码 % ================================================== ...% =================OFDM仿真参数说明:================ % % 子载波数 carrier_count ---200 % 总符号数 symbol_count ...

    MATLAB仿真代码

    % ==================================================
    % 作者: 肆拾伍
    % 时间:11/30 2019
    % 版本:V3
    % =================OFDM仿真参数说明:================
    % 
    % 子载波数 carrier_count     ---200
    % 总符号数 symbol_count      ---100
    % IFFT长度 ifft_length       ---512
    % 循环前缀 CP_length         ---512/4=128
    % 循环后缀 CS_length         ---20
    % 升余弦窗系数 alpha         ---7/32
    % 调制方式                   QAM16、QPSK 可选
    % 多径幅度 mult_path_am      ---[1 0.2 0.1] 
    % 多径时延 mutt_path_time    ---[0 20 50]
    % ====================仿真过程=======================
    % 产生0-1随机序列 => 串并转换 => 映射 => 取共轭、过采样
    % => IFFT => 加循环前缀和后缀 => 加窗 => 并串转换 => 
    % 多径信道 =>  加AWGN => 串并转换 => 去前缀 => FFT =>
    % 下采样 =>  解映射 => 求误码率 
    % ==================================================
    clear all;
    close all;
    carrier_count = 200; % 子载波数
    symbol_count = 100;
    ifft_length = 512;
    CP_length = 128;
    CS_length = 20;
    rate = [];
    SNR =20;
    bit_per_symbol = 4; % 调制方式决定
    alpha = 1.5/32;
    % ================产生随机序列=======================
    bit_length = carrier_count*symbol_count*bit_per_symbol;
    bit_sequence = round(rand(1,bit_length))'; % 列向量
    % ================子载波调制方式1========================
    % 1-28置零 29-228有效 229-285置零 286-485共轭 486-512置零
    carrier_position = 29:228;
    conj_position = 485:-1:286;
    bit_moded = qammod(bit_sequence,16,'InputType','bit');
    figure('position',[0 0 400 400],'menubar','none');
    scatter(real(bit_moded),imag(bit_moded));
    title('调制后的散点图');
    grid on;
    % ===================IFFT===========================
    % =================串并转换==========================
    ifft_position = zeros(ifft_length,symbol_count);
    bit_moded = reshape(bit_moded,carrier_count,symbol_count);
    figure('position',[400 0 400 400],'menubar','none');
    stem(abs(bit_moded(:,1)));
    grid on;
    ifft_position(carrier_position,:)=bit_moded(:,:);
    ifft_position(conj_position,:)=conj(bit_moded(:,:));
    signal_time = ifft(ifft_position,ifft_length);
    figure('position',[0 400 400 400],'menubar','none');
    subplot(3,1,1)
    plot(signal_time(:,1),'b');
    title('原始单个OFDM符号');
    xlabel('Time');
    ylabel('Amplitude');
    % ==================加循环前缀和后缀==================
    signal_time_C = [signal_time(end-CP_length+1:end,:);signal_time];
    signal_time_C = [signal_time_C; signal_time_C(1:CS_length,:)];
    subplot(3,1,2); % 单个完整符号为512+128+20=660
    plot(signal_time_C(:,1));
    xlabel('Time');
    ylabel('Amplitude');
    title('加CP和CS的单个OFDM符号');
    % =======================加窗========================
    signal_window = zeros(size(signal_time_C));
    % 通过矩阵点乘
    signal_window = signal_time_C.*repmat(rcoswindow(alpha,size(signal_time_C,1)),1,symbol_count);
    subplot(3,1,3)
    plot(signal_window(:,1))
    title('加窗后的单个OFDM符号')
    xlabel('Time');
    ylabel('Amplitude');
    % ===================发送信号,多径信道====================
    signal_Tx = reshape(signal_window,1,[]); % 变成时域一个完整信号,待传输
    signal_origin = reshape(signal_time_C,1,[]); % 未加窗完整信号
    mult_path_am = [1 0.2 0.1]; %  多径幅度
    mutt_path_time = [0 20 50]; % 多径时延
    windowed_Tx = zeros(size(signal_Tx));
    path2 = 0.2*[zeros(1,20) signal_Tx(1:end-20) ];
    path3 = 0.1*[zeros(1,50) signal_Tx(1:end-50) ];
    signal_Tx_mult = signal_Tx + path2 + path3; % 多径信号
    figure('menubar','none')
    subplot(2,1,1)
    plot(signal_Tx_mult)
    title('多径下OFDM信号')
    xlabel('Time/samples')
    ylabel('Amplitude')
    subplot(2,1,2)
    plot(signal_Tx)
    title('单径下OFDM信号')
    xlabel('Time/samples')
    ylabel('Amplitude')
    % =====================发送信号频谱========================
    % ====================未加窗信号频谱=======================
    % 每个符号求频谱再平均,功率取对数
    figure % 归一化
    orgin_aver_power = 20*log10(mean(abs(fft(signal_time_C'))));
    subplot(2,1,1)
    plot((1:length(orgin_aver_power))/length(orgin_aver_power),orgin_aver_power)
    hold on
    plot(0:1/length(orgin_aver_power):1 ,-35,'rd')
    hold off
    axis([0 1 -40 max(orgin_aver_power)])
    grid on
    title('未加窗信号频谱')
    % ====================加窗信号频谱=========================
    orgin_aver_power = 20*log10(mean(abs(fft(signal_window'))));
    subplot(2,1,2)
    plot((1:length(orgin_aver_power))/length(orgin_aver_power),orgin_aver_power)
    hold on
    plot(0:1/length(orgin_aver_power):1 ,-35,'rd')
    hold off
    axis([0 1 -40 max(orgin_aver_power)])
    grid on
    title('加窗信号频谱')
    % ========================加AWGN==========================
    signal_power_sig = var(signal_Tx); % 单径发送信号功率
    signal_power_mut = var(signal_Tx_mult); % 多径发送信号功率
    SNR_linear = 10^(SNR/10);
    noise_power_mut = signal_power_mut/SNR_linear;
    noise_power_sig = signal_power_sig/SNR_linear;
    noise_sig = randn(size(signal_Tx))*sqrt(noise_power_sig);
    noise_mut = randn(size(signal_Tx_mult))*sqrt(noise_power_mut);
    % noise_sig=0;
    % noise_mut=0;
    Rx_data_sig = signal_Tx+noise_sig;
    Rx_data_mut = signal_Tx_mult+noise_mut;
    % =======================串并转换==========================
    Rx_data_mut = reshape(Rx_data_mut,ifft_length+CS_length+CP_length,[]);
    Rx_data_sig = reshape(Rx_data_sig,ifft_length+CS_length+CP_length,[]);
    % ====================去循环前缀和后缀======================
    Rx_data_sig(1:CP_length,:) = [];
    Rx_data_sig(end-CS_length+1:end,:) = [];
    Rx_data_mut(1:CP_length,:) = [];
    Rx_data_mut(end-CS_length+1:end,:) = [];
    % =========================FFT=============================
    fft_sig = fft(Rx_data_sig);
    fft_mut = fft(Rx_data_mut);
    % =========================降采样===========================
    data_sig = fft_sig(carrier_position,:);
    data_mut = fft_mut(carrier_position,:);
    figure
    scatter(real(reshape(data_sig,1,[])),imag(reshape(data_sig,1,[])),'.')
    grid on;
    figure
    scatter(real(reshape(data_mut,1,[])),imag(reshape(data_mut,1,[])),'.')
    grid on;
    % =========================逆映射===========================
    bit_demod_sig = reshape(qamdemod(data_sig,16,'OutputType','bit'),[],1);
    bit_demod_mut = reshape(qamdemod(data_mut,16,'OutputType','bit'),[],1);
    % =========================误码率===========================
    error_bit_sig = sum(bit_demod_sig~=bit_sequence);
    error_bit_mut = sum(bit_demod_mut~=bit_sequence);
    error_rate_sig = error_bit_sig/bit_length;
    error_rate_mut = error_bit_mut/bit_length;
    rate = [rate; error_rate_sig error_rate_mut]
    % ==========================================================
    % ==========================================================
    function window=rcoswindow(alpha,bit_length)
        warning off;
        window = zeros(1,bit_length/2);
        t = 1:bit_length/2;
        T = bit_length/(2*(1+alpha));
        window(t) = 0.5*(1 - sin(pi/(2*alpha*T)*(t-T)));
        window(1:(1-alpha)*T) = 1;
        window=[fliplr(window) window]';
    end
    

    直接运行代码可以得到下面的结果
    在这里插入图片描述

    自己加个循环就可以得到误码率和信噪比的曲线了
    在这里插入图片描述

    展开全文
  • 基于PYNQ-z2的OFDM调制解调PYNQ-z2实现OFDMOFDM系统IFFT/FFT的IP核设计基于overlay的测试基于PYNQ-z2的OFDM调制解调的测试 PYNQ-z2实现OFDM 最近学校开设了实践课,提供了PYNQ-z2开发板并要求实现一些功能。由于...

    PYNQ-z2实现OFDM

    最近学校开设了实践课,提供了PYNQ-z2开发板并要求实现一些功能。由于我们组是做语音和通信的,我们选择了实现OFDM调制解调作为选题。当然这块板子也很适合图像识别神经网络搭建,具体案例也可在指导手册中找到。

    OFDM系统

    关于OFDM的原理在此处就不具体介绍了,可以参考一下博文,介绍地非常详细:
    链接: https://blog.csdn.net/madongchunqiu/article/details/18614233.

    我们基于802.11a的OFDM标准,要求IFFT/FFT均为64点,802.11a标准的介绍:
    链接: https://blog.csdn.net/rs_network/article/details/49162455.

    OFDM调制、解调的过程如下图所示,其中只有IFFT/FFT是需要设计IP核的。
    调制、解调过程图

    IFFT/FFT的IP核设计

    IFFT/FFT的IP核建立完全一样,区别只在于代码,接下来详细介绍一下FFT的IP核创建。

    1. 写完FFT的C++程序后,使用vivado HLS工具生成IP核。首先是添加c程序,Top function就是主要实现的函数,我们fft函数的的名字叫做kfft64。
      Top function
      TestBench就是测试文件,也提前导入。
      TestBench
      HLS内没有PYNQ-z2的板子信息,因此只能选择芯片,输入xc7z020clg400-1,如图所示
      选择芯片
      完成之后分别点击Run C Synthesis、Run C Simulation、Export RTL,完成IP核测试和生成。
      生成IP核
      在TestBench内采用相同一段比特流2PSK调制后作为输入,拿IP核输出结果对比matlab输出结果(左为IP核,右为matlab):
      测试
      在HLS左侧区域找到IP核调用地址,例如INR代表输入的实部,其为整型,存储在从0x100开始,以4个字节为存储空间的内存中。这里讲一下为什么采用整型变量来进行存储的原因:按照理论,输入输出应该为浮点型,但是我在调用IP核的过程中总是出现浮点型数据写入、读取困难的问题。由于问题一直没有解决,最后选择在数据输入IP核前先进行放大,将数据放大为10万倍后强制转成整型,然后在输出端再除以10万倍。整型的写入、读取没有遇到过困难,由补码到原码的转换也比较顺利。由于采用了16QAM的调制方式,数据的大小最大为3,乘上10万倍相对于采用32位存储的整型来说也完全没有问题。如果有人解决了浮点数读取这个问题,希望能告诉一下我方法,非常感谢。
      内存地址
      2.IP核创建完成后,使用vivado连接到AXI总线上,这里比较简单,推荐一个博客,照做就行:
      链接: https://blog.csdn.net/weixin_38438451/article/details/84778938.

    在vivado里新建工程是可以找到板子信息的,如果找不到的话,需要去下载并存放在vivado安装目录下。
    板子

    基于overlay的测试

    调用板子内的jupyter,并写代码测试:

    调用IP核的程序

    from pynq import Overlay
    overlay =Overlay('/home/xilinx/pynq/overlays/base/kfft.bit')
    overlay?
    kfft = overlay.kfft64_0
    

    测试的例子不是很形象(可以不看)。为了比较性能,在使用IP核解调的同时也调用python内的fft函数来进行解调。下图中左边的是用ip核解调后的实部,右边的是用python的fft函数解调后的复数,只看实部的话,二者的差距还是比较小的。
    对比

    基于PYNQ-z2的OFDM调制解调的测试

    为了测试IP核性能,实验采用PYNQ开发板进行OFDM调制,matlab设计算法进行解调。

    采用16QAM的调制方法,星座图如图:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    30
    如果有意见、建议或者需要代码,可以联系1025805741@qq.com,祝大家新年快乐。

    展开全文
  • 基于DVB标准来说明OFDM技术的信号的调制、发射、接收和解调过程,并基于MATLAB对整个通信链路进行了仿真。
  • OFDM即正交频分复用技术,实际上OFDM是MCM Multi-CarrierModulation多载波调制的一种。其主要思想是:高速信息数据流通过串并变换,分配到速率相对较低的若干子信道中传输,每个子信道中的符号周期相对增加,这样可...
  • end 这段代码主要用来模拟MIMO-OFDM系统的发送部分,首先模拟实际情况生成一个随机信号,然后将随机信号通过QAM调制再经过IFFT变化得到我们所要的信号。这个过程就是上述系统结果的描述。 for rx=1:mr for tx=1:mt ...
  • 利用固有时间尺度分解对接收信号提取瞬时参数,结合方向数据的统计分析方法,提取了3个特征参数作为联合特征向量组,对正交频分复用(OFDM)信号和常见单载波调制信号进行类间识别,并对载波频率、符号速率和采样率等系统...
  • OFDM QPSK调制解调

    2020-04-14 14:51:33
    OFDM系统QPSK调制解调以及星座图画图。程序中有详细注释,适合初学者理解QPSK调制过程以及星座图画法。
  • 一、OFDM调制原理流程 在无线传输系统中,如果传输信号的带宽大于信道的相干带宽,信道为频率选择性信道,这会带来严重的码间串扰,极大的影响系统的传输性能。在研究对抗多径衰落的过程中,多载波并行传输体制逐渐...
  • 本代码是关于正交频分复用索引调制的仿真代码
  • 下一代基于5G-OFDM调制:用于“强度调制直接检测(IM-)的下一代基于5G OFDM调制”一文中介绍的用于研究工作的实验部分的不同MATLAB代码的编译DD)光纤前传”
  • OFDM完整仿真过程及解释(MATLAB)

    万次阅读 多人点赞 2019-04-19 17:03:45
    OFDM完整仿真过程及解释(MATLAB) - 子木的文章 - 知乎 https://zhuanlan.zhihu.com/p/57967971 目录: 一、说明 二、ofdm总体概述 三、基本原理 四、过程中涉及的技术 五、OFDM基本参数的选择 六、OFDM的...
  • 中 文 摘 要正交频分复用(OFDM)是一种多载波宽带数字调制技术。相比一般的数字通信系统,它具有频带利用率高和抗多径干扰能力强等优点,因而适合于高速率的无线通信系统。正交频分复用 OFDM 是第四代移动通信的核心...
  • OFDM系统调制解调详细框图

    万次阅读 2018-11-07 17:25:38
  • OFDM信道调制解调的仿真及其FPGA设计

    千次阅读 2018-10-27 12:23:22
    OFDM信道调制解调的仿真及其FPGA设计 OFDM(正交频分复用)是一种高效的多载波调制技术,其最大的特点是传输速率高,具有很强的抗码间干扰和信道选择性衰落能力。OFDM最初用于高速MODEM、数字移动通信和无线调频信道...
  • 图文并茂—FDM、OFDM的区别及优缺点、调制解调过程

    千次阅读 多人点赞 2020-05-13 16:54:26
    目录频分复用(FDM)-(FDMA频分多址):正交频分复用(OFDMOFDM的实现OFDM优缺点 频分复用(FDM)-(FDMA频分多址): 这一部分来自我的另一篇文章: 图文并茂——频分复用、时分复用、码分复用、复用和多址的区别 频分...
  • UF-OFDM以及OFDM 传输过程及功率谱密度的仿真

    千次阅读 热门讨论 2018-04-17 11:36:42
    关于UF-OFDM原理请见我所翻译的《用于长延迟多径衰落环境的eUF-DM》一文参数设置见matlab代码,采用16QAM调制,SNR为10的信道传输,适当改变SNR数值可以清楚看到理想情况以及恶劣情况下该技术的信号传输情况根据仿真...
  • 本程序给出了OFDM系统中的QAM调制系统仿真程序源代码,仅供参考。
  • BPSK调制OFDM系统仿真程序,BER性能分析
  • 多载波调制,OFDM

    千次阅读 2011-04-12 10:58:00
    <br />数字电视传输技术问答多载波调制 (上)  ...OFDM     什么是单载波调制?   单载波(SFN)调制是指用一个信号去调制一个载波,并且在一个信道中只有一个载波信号,即一个
  • 辛苦写了关于OFDM的详细仿真,从产生信息流到最终解调,包含星座图,误码率图。包括了相关技术的详细解释,(信道编码,扩频,导频,信道估计等)。注:本段程序不包括射频传输部分,即载波调制,基带调制为QPSK。...
  • 基于16QAM调制OFDM系统仿真实现

    千次阅读 热门讨论 2020-07-21 15:51:26
    基于16QAM调制OFDM系统仿真实现 【摘要】正交频分复用(OFDM)是一种运用多载波的调制技术,具有频谱效率高、能有效抗多径、信道均衡简单等多种优势,是第四代移动通信的核心技术,研究其有重要意义。本文根据OFDM...
  • 一个完整的OFDM系统仿真设计,其中包括加密、解密,编码、解码,调制解调过程
  • 总第43卷第482期2006年第2期电测与仪表I丑ecmcalMeasureInent&InstnlnlentatlonV0l43FebNo.4822006基于DSP的电力线载波oFDM调制解调器设计...
  • OFDM

    千次阅读 2019-01-03 17:52:16
    正交频分复用技术,由多载波技术MCM(Multi-Carrier Modulation,多载波调制)发展而来,OFDM既属于调制技术,又属于复用技术。采用快速傅里叶变换FFT可以很好地实现OFDM技术,在以前由于技术...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,119
精华内容 847
关键字:

ofdm调制过程