5G 业务信道LDPC 信道编码

1 NR LDPC 编码

1.1 CRC 和 码块分割

NR 中支持两种graph, 第一种graph 支持最大的码块大小为8448, 第二种graph支持的最大码块大小为3840.这两种大小也跟两种graph的核心矩阵对应,在提升因子最大为zc = 384时, 8448 = 384 * 22; 3840 = 3840 * 10; 提升因子如下图所示:

 

      

对于PUSCH,根据38.212 6.2.1节, 当TB payload A  > 3824, 添加24bit CRC, CRC 效验方程为Gcrc24A. 其他情况下,添加16bitCRC , 效验方程为Gcrc16;

根据A的大小以及码率,选择graph1/2:

 

 根据5.2.2 节,根据选择的graph, 确定最大的cb块的size ,则进行码块分割,确定码块数量和码块的大小,提升因子Zc。

码块大小K = 22Zc (for graph1 )

         K = 10Zc (for graph2)

 填入K’-24个原始Bit,添加24bitCRC, 不足Kbit的位置上填0.

 

1.2 编码

1.2.1 H 矩阵架构

在Table 5.3.2-2 中定义了8个基础矩阵中的每一个元素的移位因子。每一行对应的有效列位置根据列索引得到。其示意图如下图所示:

      

 

将上述矩阵分成如下6个子矩阵,如下图所示:

 

       其中,核心矩阵AB,  维度为4*26,具有较多的非零元素,B 矩阵第一列含有3个非零元素,除了首尾两个位置非零之外,其他行任意位置有一个非零元素,B矩阵可以将第一列向量和后面3列向量分开,B= [b1,b2], C 是全0 矩阵;  F是对角矩阵,对角上的非零元素实际值是0。   

        对于稀疏矩阵H,有列索引的是有Zc * Zc 单位矩阵的,无索引的是Zc * Zc全0矩阵。列上对应的数字表示Z *Z 单位矩阵的右移次数,0表示不右移。每一个具体的数值是对单位矩阵进行循环移位的提升值.

     根据协议,BG1 和BG2的pattern 分别如下:

 

 

     

 

1.2.2 编码步骤

在确定了H矩阵之后,按照线性码的编码方式,计算出N-K个效验bit.

Step1: 根据原始TB块大小确定是否分割码块,码块添加CRC, 码块大小为K,确定每个码块的graph 和K 的大小,输出码块bit为dk.

 

   对于单个码块,K个bit中包含了K’_L个原始bit ,K’ = B’/C, L 个CRCbit, K-K‘个’padding bit ,

Setp2: 从原始码块中取值生成dk, 将ck 从2Zc 开始一直填充到K -2Zc个bit,作为dk的输出,填充到d0 ---d(K-2Zc)

        这里相当于将2Zc个bit 打掉。

Setp3: 根据校验矩阵产生N- (K-2 * Zc)个校验Bit。

   

     

      

根据第一个公式,根据系统bit 和矩阵A,B,计算得到P1对应的效验bit.P1包含4bit的效验Bit, 具体的计算过程如下:

 ------------------------------------- ------------------------------------- ------------------------------------- ------------------------------------- ------------------------------------- ------------------------------------- ------------------------------------- -------------------------------------

%% 0423:by clarilb 以BG1为例,分块矩阵[A,B.C; D,E,F]; 其中,C 是全0矩阵,F是单位矩阵, A*S'+B*P1' = 0;  D*S'+E*P1' + F*P2' = 0.

%% step1, 利用核心矩阵A 【4 *22】的矩阵和系统Bit序列 c ,zc = 192, length(c)= 4224,在GF(2)计算下,第一个校验bit序列(Zc长度) = A矩阵和系统bit 求和的结果
   % A*S'+B*P1' = 0;, 其中B 具有准对角结构,根据GF(2)的计算,得到在GF(2)计算下,P1中第一个校验bit序列(Zc长度) = A矩阵和系统bit 求和的结果

v = [ [0,   1,   2,   3,   4,   5,   6,   7,   8,   9,    10,    11,   12,   13,   14,   15,   16,   17,   18,   19,   20,  21]
     [307,  19,  50, 369,  nan, 181, 216, nan, nan, 317, 288,    109,  17,   357,  nan,  215,  106,  nan,  242,  180,  330, 346];
     [76,   nan, 76, 73,   288, 144, nan, 331, 331, 178, nan,    295,  342,   nan, 217,  99,   354,  114,   nan ,331,  nan, 112];
     [205,  250, 328,nan,  332,  256, 161, 267, 160,63,  129,    nan,  nan,   200, 88,  53,    nan,   131,  240, 205, 13 , nan];
     [276,  87,  nan, 0,   275,  nan, 199, 153,  56, nan, 132,   305,  231,   341,  212, nan,  304,   300,  271, nan , 39, 357]]

d = reshape(c,192,22)
%% 矩阵A 和 序列C 以ZC为单位进行相乘,C的序列被分成ZC小段,每一个小段乘上A矩阵里的元素相当于小段进行左移对应的mod(V(i,j),Zc)位。
for v_index = 1:4
    for index = 1:size(d,2)
        if ( ~isnan(v(v_index+1,index)))
            ff(:,index)= circshift(d(:,index),-mod(v(v_index+1,index),192)) %% 左移对应的长度
        else
            ff(:,index) = 0;
        end
    end

    for index = 1:size(d,1)
           g(v_index,index) = mod(sum(ff(index,:)),2)
    end
end
p0 = mod(sum(g),2)'

%% 求出P0之后,继续求P1  A 矩阵的第一行和C序列的求和结果 = P0 左移1bit + P1, 则P1 = 求和结果 +P0左移1bit
p1 = mod(g(1,:)' + circshift(p0,-1), 2)
%  求出P1 之后,继续求p3; A 矩阵的第4行和C序列的求和结果 = p0 左移1bit + p3,
p3 = mod(g(4,:)' + circshift(p0,-1), 2)
%  最后求P2, A 矩阵的第3行和C序列的求和结果 = p2 + p3,
p2 = mod(g(3,:)' + p3, 2)


%% step2: 求取p2的校验bit, 校验矩阵中的分块矩阵D,E,F 分别和S,P1,P2相乘,得到  D*S'+E*P1' + F*P2' = 0. F 是单位矩阵,根据GF(2).P2 = D*S'+E*P1'. 后续就是乘加模2操作了

 ------------------------------------- ------------------------------------- ------------------------------------- ------------------------------------- ------------------------------------- ------------------------------------- ------------------------------------- ------------------------------------- ------------------------------------- ------------------------------------- -------------------------------------

计算A矩阵和系统bit的矩阵乘时,利用如下方式可以简化计算:

校验矩阵的每一个Zc*Zc的单位矩阵经过右移位mod(Vij,Zc)之后的矩阵 *( Zc个系统Bit)列向量 =(Zc个系统bit)列向量左移对应的位数。

在P1 计算出来之后,根据第二个公式计算P2效验Bit,从而得到所有的效验bit.

 

 -------------------------------------

posted on 2020-05-15 15:38  clairlb  阅读(2254)  评论(0)    收藏  举报