通过概率整形技术对64QAM进行星座图整形,并输出GMI指标

1.算法描述

       对于现有开销为20%左右的FECPre FEC BER门限大概是2.4e-2。根据BERSNR之间的理论关系,我们可以得到不同阶数QAM调制格式时,达到纠前无误码的Required SNR。假设对于QPSK8QAM16QAM分别为a, b, c,其中a<b<c。那现在对于某一个通信系统(考虑某一波特率,某一给定距离下)的SNR的值介于ab之间,那怎么办呢?如果传QPSKSNR浪费了,如果传8QAM性能又比较差,不能满足无误码的要求。所以之前的系统中,这种情况往往是传QPSK,多余的SNR留作了系统裕量。无疑,这样显然浪费了SNR资源,效率没有最大化。还有一个问题,对于MQAM,每个符号携带的信息量是整数,这样在设计给定线路速率的时候,比如200G,如果采用双偏的QPSK调制,波特率为64G左右,而如果采用双偏的8QAM调制,波特率为45G左右,波特率的调节十分有限。如果考虑12.5GHz为精细度的Flex grid的话,分别至少要75GHz62.5GHz的信道间隔。这对于提高频谱效率是不利的。要保证更高的频谱利用效率,应当调节波特率使之尽可能地充满最小的信道间隔。比如把200G的信号填充在50GHz间隔内。也许你会认为16QAM的话,只用32Gbaud,可以在50GHz间隔中传输的。但是200G 16QAM的传输距离大概仅能传输600km,根本满足不了很多的长距骨干网应用。因此,QAM调制在浪费SNR资源的同时,也给系统设计和优化带来了不少的麻烦。

 

      通过改变改变星座图不同位置符号出现的概率,让外圈星座点出现频率降低,有利于减小平均功率,相当于增加了最小欧氏距离,从而有更好的传输性能。这就是我们所说的概率星座整形(PCS)了。它究竟有什么好处呢?

 

1. 具有整形增益,接近香农极限,如图5所示。

 

2. 有望达到更高的传输容量,显著提升频谱效率,如图6所示。

 

3. 传输速率可以灵活调整,以完美适配不同的传输信道,如图7所示。

 

4. 无须多种支持多种QAM映射,仅使用方形QAM调制,需调整整形系数

 

5. 无须调整FEC等技术方案

 

        PCS的关键在于如何对均匀概率的输出映射成非均匀概率幅度分布,而且该概率分布还应该是最优的。理论上可以证明Maxwell-Boltzman分布对于方形QAM整形是最优的概率分布。而这一过程是由概率适配器(Distribution MatcherDM)来实现的,过程如图8所示。根据实现方法,DM可以分为三类,CCDMESSHIDM

 

      概率整形技术与现有的光通信系统相结合的呢?如图9所示,二进制数据经过DM后变成非均匀分布的符号,将这些整形后的符号以二进制标签来表示,以便于进行FEC编码,然后再像普通光通信一样,进行星座图的映射,电光调制,光纤传输,光电转换,DSP处理,解调,解码等过程后,再将二进制标签转化为符号,送入DM逆变换器中,恢复发送的数据。注意到,整形是在FEC之前完成的,并且如果采用概率幅度整形(PAS),一般PCS都是这样做的,整形和FEC是完全独立的,FEC也不会改变DM映射之后的概率分布,这给设计带来了很好的灵活性,也降低了实现的复杂度。正是基于此,Nokia在业内最先发布了支持PCS技术的相干DSP芯片PSE3,并且最近成功完成现场测试,验证了可行性。华为也将PCS成功应用于其自研ODSP芯片中,取得较好的效果。

 

2.仿真效果预览

matlab2022a仿真结果如下:

 

 

 

 

 

 

 

 

3.MATLAB核心程序

 

for i = 1:1:log2(order_QAM)
    for ii= 1:1:order_QAM
        tempx1=datx(ii,1);
        if bitget(tempx1,i)==0
             tempx2     = x2(ii,1); 
             tempx4     = x4(ii,1); 
             xb0(n1,i)  = tempx2;
             pxb0(n1,i) = tempx4;
             n1 = n1+1;
        else 
             tempx2     = x2(ii,1); 
             tempx4     = x4(ii,1); 
             xb1(n2,i)  = tempx2;
             pxb1(n2,i) = tempx4;
             n2 = n2+1;
        end
    end
    n1=1;
    n2=1;
end
 
tic
SNR= -20:30;
for ijk= 1:length(SNR)
    ijk
    Nunifm_dqam = awgn(unifm_dqam,SNR(ijk),'measured');
    NPS_QAMs    = awgn(PS_QAMs,SNR(ijk),'measured');
    %GMI
    for k=1:Lens                            
        y_k     = NPS_QAMs(k,1);
        y_k_bit = imsgss(k,1);
        %分母条件概率
        q_chs   = ch_con_pro(PS_QAMs,NPS_QAMs,y_k,x,Lens);
        denss   = sum(q_chs.*px);
        for i = 1:log2(order_QAM)                 
            bit_temp = bitget(y_k_bit,i);       
            if bit_temp ==0
               x_bit  = xb0(:,i);
               px_bit =  pxb0(:,i);
            else
               x_bit  = xb1(:,i);
               px_bit =  pxb1(:,i);          
            end
.............................................................
n = n +1;
end

 

  

 

posted @ 2023-04-03 14:32  我爱C编程  阅读(214)  评论(0编辑  收藏  举报