zoukankan      html  css  js  c++  java
  • 4G数据传输流程系列(四)—物理层OFDM、MIMO实现

    上回书讲到4G网络物理层处理共11个步骤(Bob小编看一个小视频的背后发生了这么多事…),并且详细介绍第一部分:第一步到第五步,从传输块到码字的处理流程,重点是信道编码和速率匹配。今天,小编要说说第二部分:第六步到第十一步,重点讲4G网络哼哈二将MIMO和OFDM在物理层如何实现,同时本文也是4G数据传输流程的收官之战。

     
     

    来吧,和小编一起继续物理层之战。第六步~第十一步依次是加扰、调制、层映射、预编码、资源映射、OFDM符号生成,其中第八步层映射和第九步预编码实现MIMO,第十一步OFDM符号生成实现另一关键技术OFDM。

    第六步:加扰。输入是一串称为码字的比特流,与一串已知的码序列,称为扰码,进行异或运算就得到输出比特流。

     
     

    A:这么折腾为啥?

    B:加扰的目的是为了避免干扰,下行方向避免小区间干扰,上行方向避免用户间干扰。

    A:怎么就避免干扰了?

    B:看图说话。以下行为例,Bob手机所属基站叫eNB X,旁边一个基站eNB Y发射的信号对于Bob手机来说就是干扰;基站X发送的数据采用扰码1数据加扰,这是有用数据;基站Y发送的数据采用扰码2加扰,这是干扰数据;两个扰码1和2是正交的。

    B:Bob手机接收到两个基站的信号后,用扰码1和接收到的数据做运算,把基站X发送的数据还原出来;而基站Y的数据采用扰码2加扰,并且扰码1和扰码2正交,所以运算后干扰数据就被抵消掉了。这样Bob手机相当于没收到干扰基站Y的信号,从而避免小区间干扰。

     
     

    第七步:调制。输入是加扰后的一串比特流;输出是I路和Q路两路数据。调制的目的很简单,使无线资源,即一个载波,承载更多的信息bit,提高频谱利用率,增加传输速率和小区容量。怎么使一个载波承载更多的信息bit呢?信息bit就是0101的一串数据,载波上某些参数的变化就能反映出01的信息来,这些参数包括幅度、相位、频率等。比如,对于一个载波,幅度高代表1,幅度低代表0,相位0度代表1,相位90度代表0,这样幅度和相位两个参数就有四种组合,分别代表11,10,01,00四种信息bit。

    4G网络中,数据传输采用的是QAM调制方式,就是用一个载波的幅度和相位来表示信息bit。输入数据,按照调制方式星座图,将若干个信息bit映射成一个调制符号,调制符号从数学表达上看是一个复数S=I+j*Q,其实部和虚部分别对应输出的I路和Q路信号值,利用欧拉公式可以计算出幅度和相位。具体映射方式在36.211 7.1中有详细介绍。

     
     

    举个栗子,输入的一串数据为01011000,采用16QAM调制方式,这8个比特将被映射为两个调制符号,查36.211 Table 7.1.3-1可以得到映射后的I,Q取值,如下图。也就是说01011000这串数据通过16QAM调制器后,输出两路信号,其中I路取值XX和XX,Q路取值XX和XX(看下图吧,不知道怎么打根号。。。),对应两个调制符号。工程实现上当然无法输出一个复数,只需要把I路、Q路信号的取值保存成一张表,后续处理直接从表中取数就OK。

     
     

    第八步:层映射,第九步:预编码。 4G网络一项关键技术是多天线,这里第七步和第八步就是为了实现多天线技术。多天线在移动通信史有重要地位,移动通信发展史就是与无线资源做斗争的血泪史,而多天线就是一个重要武器,它发现了除频率、时间等无线资源外另一片新的资源,就是空间资源。2G、3G中已经开发利用了频域、时域、码域,4G要好好开发利用空域资源,就像在拓宽车道的基础上架立交桥。

    想利用空域资源,至少得能在空间中区分出不同的路呀,不然肯定撞车,靠什么区分?怎么区分?哈哈,就是靠多天线,发送端多天线,就收端也是多天线,这样从发送端到接收端连线,就得到一条一条的路,天线越多,路越多,我们的新天地越广阔。既然这样,使劲的加天线,岂不更好?用膝盖想想也是不对的。

    天线越多,设计越复杂,越贵啊,对比下带8根天线长得像蜘蛛的路由器和普通2根天线的路由器价格就知道啦;

    天线越多,道路越密,有些路就不好区分了,既然路都分不开了,要多天线有毛线用啊。

    所以目前4G网络的基站一般最多8天线,4G手机一般两天线。当然,现在大规模天线也如火如荼,成为5G的关键技术,小编也会在后续天线系列中说说大规模天线是什么鬼,记得关注呦~

     
     

    铺垫了这么多,到底第七、八步是怎么处理的呢?看图。

     
     

    还得继续铺垫…先说说上图里层/流、天线端口、物理天线。

    物理天线数,就是基站和手机上实际的天线,这是硬件基础设施,决定了多天线性能的理论上限。现在绝大部分手机有两根天线,基站最多有八根天线(像某动的TD-LTE基站)。

    天线端口:小编编在第二段(自己找哈~)中提到了,多天线技术核心是利用不同天线创造出不同的路,这些路必须得能区分开,不然如果两条路离得很近,我们也只能把它们当成一条来看了。翻译成通信汪的话,就是不同天线信道环境要不相关。这里天线端口就是指不相关的物理天线数,那么当然,天线端口<=物理天线数,天线端口数决定了多天线实际最高性能。

    层/流:这两其实是一个意思,但好像在国内大家都叫流,翻译成E文就成了layer,经常说的下行双流,上行双流,以及近期比较火热的下行四流就是dual layers,four layers。第七步层映射输出的数据就叫层,层映射输出几个layer,就称为几流。

    终于铺垫完了,开始说层映射和预编码哈。我们知道4G 下行最多可以同时处理2个TB,对应两个CW;上行只能处理一个TB,对应一个CW。而我们上面提到的天线数、层数/流数动不动就4呀,8呀的,显然比2大,所以存在这么个关系:TB数=CW数<=层数<=天线端口数<=物理天线数,而层映射和预编码这两货就是把CW数、层/流数、天线端口数匹配起来。数学上看,层映射就是串并转换,预编码就是和一个矩阵做乘法。层映射串并转换规则参考TS36.211 6.3.3节,预编码乘的那个矩阵叫预编码矩阵,取值参考TS36.211 6.3.4节。

    简单讲,通过层印射、预编码首先将CW变成多层并行数据,进而再与多天线匹配,获得多天线不同增益,包括复用、分集、波束赋形。当然,具体CW映射到多少层,选择哪个预编码矩阵都是由物理层的上层MAC层资源调度器决定的,物理层仍然是个干活的。这其中,也需要手机的参与,包括反馈信道状态信息(CSI)、预编码矩阵指数(PMI)、RI等,具体过程说来话长,所以就不说了。

    举个栗子,看下图。第一个码字调制后得到4个符号,记为矩阵S;要把它映射到两层,按照TS36.211 6.3.3规则,串并转换后得到两层数据(也就是两流),数学上看就是个两行矩阵,第一层是[S0,S2],第二层是[S1,S3];假设天线端口数为2,则两层数据分别乘以一个2*2的预编码矩阵W,仍然得到一个2*2的矩阵Y,Y的两行[Y0,Y2]和[Y1,Y3]就是每个天线端口的数据。层数、预编码矩阵、天线端口数是由基站资源调度器根据手机反馈上来的一些关键信息(如RI、CSI、PMI)决定的。

     
     

    最后,说明一点,层映射和预编码处理的数据都是复数信号,也就是同时处理I路和Q路。输出仍然是复信号,对应I和Q两路,并且每一个天线端口输出的数据都是如此。

    第十步:资源映射, 第十一步:OFDM信号生成。把第十步和第十一步一起讲的目的是,在逻辑上,资源映射和OFDM信号生成是分开的,没什么关系;但在实现上,可以认为二者是同时进行的。这两个步骤功能很简单,就是把每一个天线端口对应的数据(I和Q路)映射到二维时频资源,然后生成OFDM波形,但是不容易理解。这里小编将通过具体工程实现来说明白,下图是OFDM信号生成器。

    一个天线端口输出的I路和Q路调制数据经过OFDM波形发生器,输出两路OFDM信号,I-OFDM和Q-OFDM,完了。

     
     

    A:完了?这么简单…你逗我吧?

    B:流程和实现就是这样的,玄妙都在那个专用的DSP信号发生器。

    A:说说呗…

    B:OFDM的原理和好处都被嚼烂了,就不说了,小编重点说OFDM的实现。

    B:OFDM其实就是一系列正交正弦或余弦信号(子载波)的叠加,从数学表达式上看更清晰:OFDM=Σa(k)*cos(kft),也就是说,在某一个时刻(已知t),如果知道k阶子载波的取值cos(kft),把它和输入的信号a(k)乘起来,在对k求和,就得到OFDM在t时刻的值。

    A:输入信号a(k)肯定是已知的,只要能产生k阶子再波cos(kft)就OK了呗。

    B:对,过去产生载波信号使用本振,一个本振产生一个频率的载波信号,k阶载波就需要k个本振。4G网路中,20MHz带宽时大概有1300多个子载波。

    A:那就要用1300多个本振??受的了吗…

    B:受不了啊,所以这也是OFDM技术原理早就出现了,但一直没能得到应用的原因之一。直到随着集成数字电路和数字信号处理器件的迅猛发展,采用专用的DSP来实现OFDM,子载波通过软件生成,其数量与硬件没有关系,OFDM才开始迈向高速移动通信领域。

    A:这就是上图“OFDM波形发生器”中DSP的来龙去脉吧!

    A:那“复数IFFT算法”又是神马?

    B:现在实现OFDM硬件已经不是问题了,但光有硬件还不行,还要有实现的算法,复数IFFT就是一种算法。

    A:一种?这么说有好多可以实现OFDM的算法喽?

    B:当然,刚才说了,某一时刻的OFDM信号实际上就是输入信号a(k)和k阶子载波乘积的叠加,本质就是输入一个序列a(k),输出另一个相同长度的序列。所以只要能满足这个要求的算法都可以生成OFDM信号。像离散余弦变换、反向离散哈特莱变换、实数IDFT变换等,还有就是复数IFFT变换。

    A:为什么选复数IFFT变换呢?

    B:小编认为有两个原因:(1)子载波数量相同时,复数IFFT能传递的参数最多,提高带宽利用率;(2)QAM调制后的信号也是复信号,复数IFFT输入也是复数,二者一拍即合。

    A:明白!

    A:还有一个问题…OFDM波形发生的硬件和算法都有了,到底怎么工作呢?

    B:复数IFFT算法同时处理I路和Q路,处理流程完全相同,以I路处理为例。

    B:首先,基站和手机里要存一张表,这张表是1~k阶子载波(正弦或余弦)在0~N-1这N个采样点的幅值,即函数C(k, n) = cos(k*n*2π/N)取值,k是载波阶数,在4G中最大取2048;n是采样点序号,取值0~N-1。

    B:其次,取I路数据的k个值a(1)~a(k),分别与C(k,n),即1~k子载波幅值相乘,得到k个值,再把k个值相加,得到采样点n的OFDM信号幅值,即OFDM(n)=Σa(k)*C(k, n)=Σa(k)*cos(k*n*2π/N)。

    B:这样依次计算出一个采样周期OFDM信号的幅值:OFDM(0),OFDM(1)~OFDM(N-1),再通过D/A转换就得到OFDM信号波形。

    B:放一张时域的OFDM信号波形直观感受下。

    A:这是I路的数据,Q路同理,最后也得到这样一张图?

    B:聪明。

    B:这两张图最后通过上变频/下变频、功放、合路、滤波变成射频信号,通过天线发射出去。

     
     

    A:最后一个问题…上面讲辣么多,好像没有提到资源映射吧?

    B:其实已经提到了,我们在说OFDM生成的时候,讲到要用子载波幅值和输入信号做运算,选择用哪些子载波就是资源映射。这也是由基站资源调度器决定,不是物理层决定。

    A:酱紫啊!

    B:当然,资源映射也没这么简单。还涉及到虚拟资源块概念,以及集中映射还是分布映射。另外,上行由于采用SC-OFDM,所以一个用户分配的资源在频域上是连续的,这点与下行不同。

    A:Soga!

    至此,4G物理层之战就大获全胜,数据传输流程也已收官



    作者:读万卷行万里
    链接:https://www.jianshu.com/p/d4541ee1efce
    来源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  • 相关阅读:
    目标跟踪学习笔记1
    求职笔记
    Pycharm使用问题小结-002
    Pycharm使用问题小结-001
    Python基础练习-004-百变乘法表
    Python基础练习-003-求100-999之间所有的水仙花数
    Python基础练习-002-求1000以内的完全数
    Python基础练习-001-猜数字小游戏
    java.io.FileNotFoundException: rmi_keystore.jks (No such file or directory)(转)
    Jmeter
  • 原文地址:https://www.cnblogs.com/darksong/p/12807793.html
Copyright © 2011-2022 走看看