TB processing in TX side

TB processing in TX side

本篇主要介绍一个TB从产生到资源映射的过程。

简介

From R1-1707670 On rate matching with LDPC code for eMBB LG

首先通过一张流程图说明整个流程。
在这里插入图片描述

TB size determination

MCS 表格选择

From 3GPP TS 38.214 V15.10.0 5.1.3.1/6.1.4.1 Modulation order, target code rate determination

下行数据信道(PDSCH)

下行数据信道共有三个MCS table,

Title最高调制阶数最高码率
1Table 5.1.3.1-1: MCS index table 1 for PDSCH64QAM0.926
2Table 5.1.3.1-2: MCS index table 2 for PDSCH256QAM0.926
3Table 5.1.3.1-3: MCS index table 3 for PDSCH64QAM0.754

注:三个表格中颗粒度也不同,赋能了更加灵活的MCS 选择。

每个MCS table中包含多行,每一行中包含了4列,如下图所示。在这里插入图片描述
第一列是MCS的序号,与DCI中5bit的Modulation and coding scheme field对应。第二列是调制阶数,取值可以是2,4,6,8,分别对应了QPSK,16QAM,64QAM,256QAM。第三列是信道编码的码率,注意这一列的值是码率*1024(R*1024),该码率的含义是TB 的比特数与Rate matching 后比特数的比值。第四列是频谱效率, S E = Q m ∗ R SE=Q_{m}*R SE=QmR.

UE根据高层参数的配置以及调度当前PDSCH的DCI类型,从这三个表格中选择一个,作为本次传输的MCS表格。
之后,UE通过DCI中5bit的指示位(Modulation and coding scheme field)在已经确定的MCS table中选择一行,从而确定 Q m , R Q_{m},R Qm,R

上行数据信道(PUSCH)

首先,需要说明的一个问题是,上文中提到的PDSCH三个表格也可以用于PUSCH;而PUSCH的两个专属表格是用于上行transform precoding使能的情况,即使用DFT-S-OFDM作为波形。

上行有两个专属的MCS table。

Title最高调制阶数最高码率
1Table 6.1.4.1-1: MCS index table for PUSCH with transform precoding and 64QAM64QAM0.926
2Table 6.1.4.1-2: MCS index table 2 for PUSCH with transform precoding and 64QAM64QAM0.754

Table 6.1.4.1-1/2与Table 5.1.3.1-1/2/3的另一个显著区别是Table 6.1.4.1-1/2最低的调制阶数不确定。
在这里插入图片描述
在这里插入图片描述
配置了高层参数tp-pi2BPSK时,q=1,意味着Table 6.1.4.1-1/2可支持 π / 2 \pi/2 π/2-BPSK/QPSK/16QAM/64QAM;当未配置该高层参数时,q=2,意味着Table 6.1.4.1-1/2只支持QPSK/16QAM/64QAM。

注:tp-pi2BPSK在PUSCH-Config中配置

TB size determination

From 3GPP TS 38.214 V15.10.0 5.1.3.2/6.1.4.2 Transport block size determination

  1. UE计算一个slot中的RE数目
  2. UE计算中间信息位数
  3. UE决定TB的大小
  • UE计算一个slot中的RE数目 N R E N_{RE} NRE
    首先计算一个PRB中可以使用的RE数目,公式如下:
    N R E ′ = N s c R B ∗ N s y m b s h − N D M R S P R B − N o h P R B N_{RE}^{'}=N_{sc}^{RB}*N_{symb}^{sh}-N_{DMRS}^{PRB}-N_{oh}^{PRB} NRE=NscRBNsymbshNDMRSPRBNohPRB
    其中,
    N s c R B N_{sc}^{RB} NscRB为一个RB中的子载波数目,始终等于12;
    N s y m b s h N_{symb}^{sh} Nsymbsh为当前slot中分配给数据信道的OFDM符号数目,根据SLIV中的L确定;
    N D M R S P R B N_{DMRS}^{PRB} NDMRSPRB为当前PRB中DMRS占据的RE数目,例如,当配置’1+1’DMRS时,即DMRS占据两个OFDM符号,则该项值为24;
    N o h P R B N_{oh}^{PRB} NohPRB是由高层参数xOverhead配置,取值为{6,12,18},物理含义是计算CSI-RS,CORESET等占据的开销。若xOverhead缺省,则取值0。
    然后计算全部slot中可以使用的RE数目,公式如下:
    N R E = n P R B ∗ m i n ( 156 , N R E ′ ) N_{RE}=n_{PRB}*min(156,N_{RE}^{'}) NRE=nPRBmin(156,NRE)
    其中,
    n P R B n_{PRB} nPRB是分配给该UE的RB数目。
    式中 156 = 14 ∗ 12 ( 1 s l o t , 1 P R B 全 部 R E 数 目 ) − 12 ( 至 少 一 个 D M R S ) 156=14*12(1slot,1PRB全部RE数目)-12(至少一个DMRS) 156=1412(1slot,1PRBRE)12(DMRS)
  • UE计算中间信息位数 N i n f o N_{info} Ninfo
    根据如下公式计算:
    N i n f o = N R E ∗ R ∗ Q m ∗ v N_{info}=N_{RE}*R*Q_{m}*v Ninfo=NRERQmv
    其中,
    N R E N_{RE} NRE是第一步中UE计算一个slot中的RE数目, R , Q m R,Q_{m} R,Qm由MCS表格对应行确定, v v v是UE使用的传输层数,对于单codewords而言,其最大传输层数为4。
    对于中间信息位数 N i n f o N_{info} Ninfo的理解,可以通过下图来表示:
    在这里插入图片描述
    我们认为从TB-CRC attachment到Rate matching整个过程看作channel coding的过程,bit interleaver不会影响比特位数,因此可以暂时忽略。
    一个TB最终会映射到 v ∗ N R E v*N_{RE} vNRE个RE上,因此在基带调制之前共需要 v ∗ N R E ∗ Q m v*N_{RE}*Q_{m} vNREQm个已编码比特。整个channel coding的码率是R,因此在channel coding之前所需要的信息比特为 v ∗ N R E ∗ Q m ∗ R v*N_{RE}*Q_{m}*R vNREQmR
    中间信息比特 N i n f o N_{info} Ninfo已经非常接近最终TB size的大小,但是TB size的大小并不是连续的数值,而是一系列离散的集合,因此还需要进一步计算才能得到最终TB size的大小。

Note: codeword到layer的映射方法在38.211 7.3.1.3的Table 7.3.1.3-1中。

  • UE 决定TB的大小
    • Case 1: 当 N i n f o N_{info} Ninfo小于3824
      首先,根据下列公式量化中间信息位:
      N i n f o ′ = m a x ( 24 , 2 n × ⌊ N i n f o 2 n ⌋ ) N_{info}^{'}=max(24,2^{n}\times\left \lfloor \frac{N_{info}}{2^{n}} \right \rfloor) Ninfo=max(24,2n×2nNinfo)
      其中,
      n = m a x ( 3 , ⌊ l o g 2 ( N i n f o ) ⌋ − 6 ) n=max(3,\left \lfloor {log_2(N_{info})} \right \rfloor-6) n=max(3,log2(Ninfo)6)
      然后,在Table 5.1.3.2-1中找到最接近但不小于 N i n f o ′ N_{info}^{'} Ninfo的TB size
      在这里插入图片描述

    • N i n f o N_{info} Ninfo大于3824
      首先,根据下列公式量化中间信息位:
      N i n f o ′ = m a x ( 3840 , 2 n × r o u n d ( N i n f o − 24 2 n ) ) N_{info}^{'}=max\left(3840,2^{n}\times round\left(\frac{N_{info}-24}{2^{n}}\right)\right) Ninfo=max(3840,2n×round(2nNinfo24)),
      其中, n = ⌊ l o g 2 ( N i n f o − 24 ) ⌋ − 5 n=\left \lfloor {log_{2}(N_{info}-24)} \right \rfloor-5 n=log2(Ninfo24)5并向上取整。

      • Case 2: 如果码率 R R R小于等于1/4
        T B S = 8 ⋅ C ⋅ ⌈ N i n f o ′ + 24 8 ⋅ C ⌉ − 24 TBS=8\cdot C\cdot \left \lceil \frac{N^{'}_{info}+24}{8\cdot C} \right \rceil-24 TBS=8C8CNinfo+2424,
        其中
        C = ⌈ N i n f o ′ + 24 3816 ⌉ C= \left \lceil \frac{N^{'}_{info}+24}{3816} \right \rceil C=3816Ninfo+24,其物理含义是选择BG1时CodeBlock的数目。
      • Case 3: 如果码率 R R R大于1/4且 N i n f o ′ N_{info}^{'} Ninfo大于8424
        T B S = 8 ⋅ C ⋅ ⌈ N i n f o ′ + 24 8 ⋅ C ⌉ − 24 TBS=8\cdot C\cdot \left \lceil \frac{N^{'}_{info}+24}{8\cdot C} \right \rceil-24 TBS=8C8CNinfo+2424,
        其中,
        C = ⌈ N i n f o ′ + 24 8424 ⌉ C= \left \lceil \frac{N^{'}_{info}+24}{8424} \right \rceil C=8424Ninfo+24,其物理含义是选择BG2时CodeBlock的数目。
      • Case 4: 如果码率大于1/4但是 N i n f o ′ N_{info}^{'} Ninfo小于8424,不需要做CB segmentation, (Case 3)
        T B S = 8 ⋅ ⌈ N i n f o ′ + 24 8 ⌉ − 24 TBS=8\cdot \left \lceil \frac{N^{'}_{info}+24}{8} \right \rceil-24 TBS=88Ninfo+2424.
   Notes:
   1.在简介中,我们画出了CB-CRC attachment 以及CB segmentation两个流程,这两个流程不一定会发生。
   2.是否需要做CB segmentation取决于LDPC encode中Base graph的选择以及TB size的大小。
   3.BG2且TB size>3824,需要CB,对应Case 2;BG2且TB size<3824,不需要CB,对应Case 1。
   4.BG1且TB size>8424,需要CB,对应Case 3;BG1且TB size<8424,不需要CB,对应Case 4。
   5.BG2的CB segmentation门限值3824,BG1的CB segmentation门限值8424,取值与LDPC 编码矩阵维度相关,将会在下文介绍。

TB CRC attachment

From 3GPP TS 38.212 V15.10.0 5.1 CRC calculation/ 6.2.1&7.2.1 Transport block CRC attachment

当TB size 小于等于3824时,在传输块后附加16位的CRC,其生成多项式为:
在这里插入图片描述

当TB size 大于3824时,在传输块后附加24位的CRC,其生成多项式为:
在这里插入图片描述

CB segmentation & CB CRC attachment

当TB的长度大于LDPC码最大信息块长度,传输块将被分割为几个分段码块,并独立进行编码。

LDPC编码

  • 选择Base Graph 1,其最大信息块长度为 K c b = 8848 K_{cb}=8848 Kcb=8848 ( T B C R C = 24 , T B m a x = 8848 − 24 = 8824 ) \left( TB_{CRC}=24,TB_{max}=8848-24=8824\right) (TBCRC=24,TBmax=884824=8824);
  • 选择Base Graph 2,其最大信息块长度为 K c b = 3840 K_{cb}=3840 Kcb=3840 ( T B C R C = 16 , T B m a x = 3840 − 16 = 3824 ) \left( TB_{CRC}=16,TB_{max}=3840-16=3824 \right) (TBCRC=16,TBmax=384016=3824).

当TB size大小超过BG1/BG2的门限值(8824,3824),需要进行码块分割。

  • 确定CB的数目 C C C

    C = ⌈ T B + T B C R C K c b − C R C C B ⌉ C=\left \lceil \frac{TB +TB_{CRC}}{K_{cb}-CRC_{CB}} \right \rceil C=KcbCRCCBTB+TBCRC
    其中,
    C R C C B = 24 CRC_{CB}=24 CRCCB=24

  • 确定CB中包含信息比特的数目

    在计算TB size时,对于需要进行CB segmentation的情况(Case2,Case3),都已经对TB size的大小做了规定。
    T B S = 8 ⋅ C ⋅ ⌈ N i n f o ′ + 24 8 ⋅ C ⌉ − 24 TBS=8\cdot C\cdot \left \lceil \frac{N^{'}_{info}+24}{8\cdot C} \right \rceil-24 TBS=8C8CNinfo+2424
    可以发现, T B S + T B C R C TBS+TB_{CRC} TBS+TBCRC正好是 C C C的整数倍,也就意味着,每个CB中包含的比特数目为 8 ⋅ ⌈ N i n f o ′ + 24 8 ⋅ C ⌉ 8\cdot \left \lceil \frac{N^{'}_{info}+24}{8\cdot C} \right \rceil 88CNinfo+24.

  • CB-CRC attachment

    每一个CB后添加24位CRC,其生成多项式为:
    在这里插入图片描述

  Notes:
  1. CB segmentation之前,已经对TB size的大小进行调整,使TB的大小正好能够确保码块均分,也意味着每个CB包含的信息比特数相同。
  2. CB segmentation之后,每个CB均添加24位的CRC,每个CB包含的比特位依旧相等。
  3. 码块分割后,LDPC编码,RM,基带调制均在CB级别进行操作。

Zero padding & LDPC encode

LDPC 简介
矩阵关系与矩阵维度

信息比特序列记作 μ \boldsymbol{\mu} μ,生成矩阵记作 G T \boldsymbol{G}^{T} GT,编码比特序列记作 c \boldsymbol{c} c,校验矩阵记作 H \boldsymbol{H} H
上述矩阵的关系为:
c = G T ⋅ μ \boldsymbol{c}=\boldsymbol{G}^{T} \cdot\boldsymbol{\mu} c=GTμ,

H ⋅ c = 0 \boldsymbol{H} \cdot\boldsymbol{c}=\boldsymbol{0} Hc=0.

编码矩阵与校验矩阵维度:

G T = [ I k × k P m × k ] ∈ R ( m + k ) × k \boldsymbol{G}^{T}=\begin{bmatrix} \boldsymbol{I}_{k\times k} \\ \boldsymbol{P}_{m\times k} \end{bmatrix} \in \mathbb{R}^{(m+k) \times k} GT=[Ik×kPm×k]R(m+k)×k

H = [ P m × k , I m × m ] ∈ R m × ( m + k ) \boldsymbol{H}=\begin{bmatrix} \boldsymbol{P}_{m\times k}, \boldsymbol{I}_{m\times m} \end{bmatrix} \in \mathbb{R}^{m \times (m+k)} H=[Pm×k,Im×m]Rm×(m+k)

信息比特序列 μ \boldsymbol{\mu} μ k × 1 k\times 1 k×1的向量;
而编码比特序列 c \boldsymbol{c} c ( m + k ) × 1 (m+k)\times1 (m+k)×1的向量。

校验矩阵

校验矩阵 H ∈ R M b ⋅ Z × N b ⋅ Z \boldsymbol{H}\in \mathbb{R}^{M_{b}\cdot Z\times N_{b}\cdot Z} HRMbZ×NbZ

m = M b × Z m=M_b\times Z m=Mb×Z, m + k = N b × Z m+k=N_b\times Z m+k=Nb×Z, k = ( N b − M b ) × Z k=(N_b-M_b)\times Z k=(NbMb)×Z.

  • 基础矩阵 H b ∈ R M b × N b \boldsymbol{H}_b \in \mathbb{R}^{M_{b}\times N_{b}} HbRMb×Nb

    LDPC有两个不同的基础矩阵,分别为Base matrix 1和Base matrix 2,对应两个基础图BG1,BG2。
    系统列 K b = N b − M b K_b=N_b-M_b Kb=NbMb
    BG1: M b = 46 , N b = 68 M_b=46,N_b=68 Mb=46,Nb=68,适用吞吐量较高,码率较高,码块较大的情景。
    BG2: M b = 42 , N b = 52 M_b=42,N_b=52 Mb=42,Nb=52,适用吞吐量较低,码率较低,码块较低的情景。

  • 提升值 Z Z Z
    为了使LDPC码可以支持更加灵活的码块大小,NR设计了一系列不同的提升值,使得校验矩阵的维度更加灵活。
    Z = a × 2 j Z=a\times2^{j} Z=a×2j,其中a是偏移系数, j j j的全部可能取值集合为 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 {0,1,2,3,4,5,6,7} 0,1,2,3,4,5,6,7
    在这里插入图片描述
    表格中每一行对应了一个偏移系数,每一行的 a a a依次等于 2 , 3 , 5 , 7 , 9 , 11 , 13 , 15 {2,3,5,7,9,11,13,15} 2,3,5,7,9,11,13,15;

  • 置换矩阵 P ∈ R Z × Z \boldsymbol{P}\in \mathbb{R}^{Z\times Z} PRZ×Z

    P = [ 0 1 0 ⋯ 0 0 0 0 1 ⋯ 0 0 0 0 0 1 ⋯ 0 ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ 0 0 0 0 ⋯ 1 1 0 0 ⋯ 0 0 ] \boldsymbol{P}=\begin{bmatrix} 0 & 1 & 0 &\cdots &0 &0 \\ 0 & 0 & 1 & \cdots &0 &0\\ 0& 0& 0 &1 &\cdots &0\\ \cdots & \cdots & \cdots & \cdots &\cdots &\cdots \\ 0& 0& 0& 0 &\cdots & 1\\ 1 & 0 & 0 &\cdots&0&0 \end{bmatrix} P=0000110000010001000000010

    置换矩阵 P \boldsymbol{P} P的最大循环权重为1。其与基础矩阵的关系如下:基础矩阵 H b \boldsymbol{H}_b Hb中的元素 h b i j hb_{ij} hbij分为三种, − 1 , 0 , -1,0, 1,0,正整数 X X X
    h b i j = − 1 hb_{ij}=-1 hbij=1时,在校验矩阵的第 i i i行第 j j j列,利用全零阵 0 ∈ R Z × Z \boldsymbol{0} \in \mathbb{R}^{Z\times Z} 0RZ×Z的位置代替 h b i j hb_{ij} hbij;
    h b i j = 0 hb_{ij}=0 hbij=0时,在校验矩阵的第 i i i行第 j j j列,利用单位阵 I ∈ R Z × Z \boldsymbol{I} \in \mathbb{R}^{Z\times Z} IRZ×Z的位置代替 h b i j hb_{ij} hbij
    h b i j = X hb_{ij}=X hbij=X时,在校验矩阵的第 i i i行第 j j j列,利用置换矩阵的 X X X幂次矩阵 P X ∈ R Z × Z \boldsymbol{P}^{X} \in \mathbb{R}^{Z\times Z} PXRZ×Z的位置代替 h b i j hb_{ij} hbij

  • 总结
    从上述分析可以看出,根据基础矩阵以及提升值,可以确定校验矩阵的维度。并且,LDPC的编码比特位数应满足 N b × Z N_b\times Z Nb×Z,信息比特位数应满足 ( N b − M b ) × Z (N_b-M_b)\times Z (NbMb)×Z
    即使已经设计了多个提升值,但是可能依旧出现无法与添加TB(CB) CRC后无法匹配的情况。因此仍需要在添加完CRC后,进行补零,从而使信息比特数满足 ( N b − M b ) × Z (N_b-M_b)\times Z (NbMb)×Z

    • 码率
      只从LDPC encode这一步来看,码率是 ( N b − M b ) N b \frac{(N_b-M_b)}{N_b} Nb(NbMb),BG1的(最低)码率是 22 / 66 = 1 / 3 22/66=1/3 22/66=1/3,BG2的(最低)码率 10 / 50 = 1 / 5 10/50=1/5 10/50=1/5。BG1的 R 1 , k e r n e l = 22 / 25 = 0.88 R_{1,kernel}=22/25=0.88 R1,kernel=22/25=0.88;BG2的最大码率 2 / 3 2/3 2/3
    • 最大信息比特
      最大信息比特等于 K b × Z m a x K_b\times{Z_{max}} Kb×Zmax
      对于BG1, 22 × 384 = 8448 22\times384=8448 22×384=8448;对于BG2, 10 × 384 = 3840 10\times384=3840 10×384=3840
LDPC编码部分流程
  • BG1与BG2的选取
    在这里插入图片描述
    如图所示,BG1/BG2的选取依赖于TB size的大小以及选择MCS后确定的码率
    a) 当TB size 小于292bits,选择BG2;
    b) 当码率R小于1/4,选择BG2;
    c) 当TB size大于292bits且小于3824bits,码率小于2/3,选择BG2;
    d) 其他情况,都选择BG1。

  • 提升值的选取
    根据TB size以及MCD的码率已经确定了BG的选取,即此时 K b = 22 K_{b}=22 Kb=22 for BG1, K b = 10 K_{b}=10 Kb=10 for BG 2。
    假设添加CRC之后的TB(或者分割为CB后,每个CB添加CRC之后)大小为 K ′ K^{'} K,挑选最小的提升值 Z Z Z,使其满足 K b × Z ≥ K ′ K_b\times{Z}\ge K^{'} Kb×ZK

  • 零比特填充
    在添加了CRC之后的TB后添加 K b × Z − K ′ K_b\times{Z}-K^{'} Kb×ZK个0比特。

注:当TB需要进行CB segmentation时,根据TB size的计算公式,会调整TB size的大小,确保不再需要零比特填充。

Redundant version(RV) & Rate matching

NR通过循环缓冲区实现HARQ和速率匹配,并将提升值 Z Z Z作为RV的基本单位。
在经过LDPC encode后,会去除掉前 2 Z 2Z 2Z个系统位。如果选择了BG1,编码后的码块长度为 66 Z 66Z 66Z;如果选择了BG2,编码后的码块长度为 50 Z 50Z 50Z
在进行速率匹配时,需要确定三件事情。

  1. 确定循环缓冲区的大小 — (取决于接收端是否使用有限缓冲区进行速率匹配)
  2. 确定从循环缓冲区的哪一个位置开始取出编码后比特 — (取决于RV版本号)
  3. 确定从循环缓冲区拿出多少编码后比特 —(取决于RE数目和调制阶数)
循环缓冲区大小

循环缓冲区的大小记作 N c b N_{cb} Ncb
如果接收端使用有限缓冲区速率匹配,则 N c b = m i n ( N , N r e f ) N_{cb}=min(N,N_{ref}) Ncb=min(N,Nref),其中 N r e f = ⌊ T B S L B R M C × R L B R M ⌋ N_{ref}=\left \lfloor \frac{TBS_{LBRM}} {C \times R_{LBRM}} \right \rfloor Nref=C×RLBRMTBSLBRM C C C为CB的数目, R L B R M = 2 / 3 R_{LBRM}=2/3 RLBRM=2/3, T B S L B R M TBS_{LBRM} TBSLBRM暂时不解释。

如果接收端不使用有限缓冲区( I L B R M = 0 I_{LBRM}=0 ILBRM=0),则 N c b = N N_{cb}=N Ncb=N,即循环缓冲区的大小等于编码后的长度( B G 1 , 66 Z ; B G 2 , 50 Z BG1,66Z;BG2,50Z BG1,66Z;BG2,50Z),其中cb是Circular Buffer的缩写,LBRM是limited buffer Rate Matching的缩写。

Redundant version (RV)

不同的RV版本号指示了循环缓冲区中的不同起始位置。具体来说,如下表所示:
在这里插入图片描述
为了进一步解释,以接收端不使用有限缓冲区速率匹配为例,RV的起始位置如下图所示:
在这里插入图片描述
总结来看,当使用不同的RV版本时,从循环buffer中不同的位置开始挑选比特。

  • RV0/RV3
    1. BG1的信息比特 20 Z 20Z 20Z,校验比特 46 Z 46Z 46Z;BG2的信息比特 8 Z 8Z 8Z,校验位 42 Z 42Z 42Z
    2. RV 0和RV 3可以包含全部的信息比特以及部分校验比特,因此可以进行自解码。

最后需要决定从循环缓冲区中取出多少比特。
假设可用的RE数目为 N R E N_{RE} NRE,调制阶数为 Q m Q_{m} Qm,则需要从循环缓冲区中取出 N R E × Q m N_{RE}\times Q_{m} NRE×Qm个比特。

Bit interleaver

NR中采用的是行数等于调制阶数的行列交织器,采用按行写入,按列读出的方式。示意图如下所示:
在这里插入图片描述

例子

举个例子说明上述流程。
假设PUSCH信道,占用1个PRB,14个OFDM符号,’1+1‘DMRS,使用Table 6.1.4.1-1(q=2)作为MCS表格,选择MCS index 0,即采用QPSK调制,码率 R × 1024 = 120 R\times 1024=120 R×1024=120,单传输层传输 v = 1 v=1 v=1,高层信令的开销 N o h P R B = 0 N_{oh}^{PRB}=0 NohPRB=0,接收端不采用有限缓冲区进行速率匹配 I L B R M = 0 I_{LBRM}=0 ILBRM=0

  1. 计算 N R E N_{RE} NRE
    N R E ′ = 12 × 14 − 14 × 2 = 144 N_{RE}^{'}=12\times14-14\times2=144 NRE=12×1414×2=144, N R E = m i n ( 156 , N R E ′ ) × n P R B = 144 N_{RE}=min(156,N_{RE}^{'})\times n_{PRB}=144 NRE=min(156,NRE)×nPRB=144

  2. 计算 N i n f o N_{info} Ninfo
    N i n f o = N R E ⋅ R ⋅ Q m ⋅ v = 144 ⋅ 0.1172 ⋅ 2 ⋅ 1 = 33.75 N_{info}=N_{RE} \cdot R\cdot Q_{m}\cdot v=144\cdot 0.1172\cdot 2\cdot 1=33.75 Ninfo=NRERQmv=1440.117221=33.75

  3. 由于 N i n f o < 3824 N_{info}<3824 Ninfo<3824,采用 N i n f o ′ = m a x ( 24 , 2 n × ⌊ N i n f o 2 n ⌋ ) N_{info}^{'}=max(24,2^{n}\times\left \lfloor \frac{N_{info}}{2^{n}} \right \rfloor) Ninfo=max(24,2n×2nNinfo),其中 n = m a x ( 3 , ⌊ l o g 2 ( N i n f o ) ⌋ − 6 ) n=max(3,\left \lfloor {log_2(N_{info})} \right \rfloor-6) n=max(3,log2(Ninfo)6)
    n = m a x ( 3 , ⌊ l o g 2 ( 33.75 ⌋ − 6 ) = 3 n=max(3,\left \lfloor {log_2(33.75} \right \rfloor-6)=3 n=max(3,log2(33.756)=3, N i n f o ′ = m a x ( 24 , 2 3 × 4 ) = 32 N_{info}^{'}=max(24,2^{3}\times4)=32 Ninfo=max(24,23×4)=32

  4. 利用Table 5.1.3.2-1确定TB size的大小,即不小于 N i n f o ′ N_{info}^{'} Ninfo
    TB size=32 (Index=2)

  5. 选择BG以及确定是否需要CB segmentation
    TB size<292,选择BG2;TB size<3824,不需要CB segmentation。

  6. 添加TB级别CRC
    TB size+TB CRC=32+16=48 bits

  7. 确定提升值Z的大小。
    K b = 52 − 42 = 10 , K b ⋅ Z ≥ T B S + T B C R C K_b=52-42=10,K_{b}\cdot Z \ge TBS+TB_{CRC} Kb=5242=10,KbZTBS+TBCRC, 即 10 ⋅ Z ≥ 48 10\cdot Z\ge 48 10Z48,因此 Z = 8 Z=8 Z=8

  8. 确定需要的(填充)零比特的大小
    K b ⋅ Z − T B S − T B C R C = 80 − 48 = 32 K_b \cdot Z-TBS-TB_{CRC}=80-48=32 KbZTBSTBCRC=8048=32 bit

  9. 确定循环缓冲区的大小
    N c b = ( N b − 2 ) × Z = ( 52 − 2 ) ⋅ 8 = 400 N_{cb}=(N_{b}-2)\times Z=(52-2)\cdot 8=400 Ncb=(Nb2)×Z=(522)8=400 bit

  10. 确定不同RV 的起始位置

RV id起始bit
00
113*8=104
225*8=200
343*8=344
  1. 确定需要从循环缓冲器取出的比特长度
    N R E = 144 , Q m = 2 N_{RE}=144,Q_m=2 NRE=144,Qm=2,需要拿出 N R E ⋅ Q m = 288 N_{RE}\cdot Q_{m}=288 NREQm=288比特。对于不同的RV id,从循环缓冲区中取出的比特长度如下表所示:
RV id所需bit位置
00~287
1104~391
2200~400, 0~86(second round)
3344~400, 0~230(second round)
  1. 将取出的比特放入行列交织器,并把每一列的比特进行QPSK调制。
  • 13
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值