UCI和数据复用在pusch上传输---第一部分

一.总数

UCI包括 harq-ack,csi,sr。这些uci信息可以通过PUCCH传输,也可以通过pusch传输(这块有了疑问,sr就是在pusch调度前,ue需要发送sr,但是当sr调度基站收不到的时候,会通过重新接入,然后msg3携带的bsr来代替,正常sr是不能通过pusch发送的,这个待确定。),csi有周期性的通过pucch传输,非周期性的通过pusch传输,半持久行通过PUCCH或者dci激活的pusch。CSI报告由两部分组成:CSI port1和CSI port2.CSI port1 有固定的载荷大小,用于标识CSI port2的信息比特数,CSI port1必须在CSI port2传输之前完全传输。CSI和harq-ack可以在PUSCH上传输可以和数据复用,也可以单独传输(这个场景我理解是PUCCH上的资源不够用了,待确定)。本次就以有UC_SCH数据复用的情况来介绍。

案例说明

本片文章的介绍策略就是根据matlab自带的用例来介绍协议,梳理协议,我直接自己写过,但是在公司的电脑上,就不重新写了,用线程的例子来梳理。因为直接梳理协议会比较空洞,所以用案例的方式来梳理协议更好,这是我的学习方式。本案例ack =1 ,csi1=10,csi2=10,选用比较特使的例子可以更好的介绍,当然后面介绍协议不仅仅是;数这个案例,其他情况也会介绍。

##用例输入的小区参数
在这里插入图片描述
这里面的NSizeGrid指的是小区prb数,这个参数由两个因素确定,带宽和子载波间隔,带宽/(子载波间隔12)= 10M/(15K12)=55,两边预留一部分也就是52了,
##用例输入的ue级参数
在这里插入图片描述
tcr是目标码率
在这里插入图片描述
在这里插入图片描述

1.根据数据a的长度A计算,crc的长度,然后计算出crc放在数据 后面,变成b

在这里插入图片描述

2.graph的选择是1还是2,再后面需要使用。

在这里插入图片描述
计算过程:

   if A <= 292 || (A <= 3824 && R <= 0.67) || R <= 0.25
      bgn = 2;
    else
      bgn = 1;
    end

    % Get transport block size after CRC attachment according to 38.212
    % 6.2.1 and 7.2.1, and assign CRC polynomial to CRC field of output
    % structure info
    if A > 3824
      L        = 24;
      info.CRC = '24A';
    else
      L        = 16;
      info.CRC = '16';
    end

    % Get the length of transport block after CRC attachment
    B = A + L;

3.,先计算给每个cb块数据分配容器的大小,B‘=B+C*L ,然后求出K’=B’/C,

再求出一个Zc倍数大于最接近的K作为容器的大小,将数据b,按照K往进放成为cr,每个cr再自行添加crc,从此处开始后面的都是按照每个cb块自己处理的。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

    % Get the maximum code block size
    if bgn == 1  %这个指的是graph
      Kcb = 8448;  %这个指的是每个cb块的大小
    else
      Kcb = 3840;
    end

    % Get number of code blocks and length of CB-CRC coded block
    if B <= Kcb
      L = 0;
      C = 1;
      Bd = B;
    else
      L = 24; % Length of the CRC bits attached to each code block
      C = ceil(B/(Kcb-L));  %这个是分成多少个cb块
      Bd = B+C*L;
    end

    % Obtain the number of bits per code block (excluding CB-CRC bits)
    cbz = ceil(B/C);%这个是排除crc每个cb块的包含bit的多少

    % Get number of bits in each code block (excluding filler bits)
    Kd = ceil(Bd/C);%这个是每个cb块排除了填充bit,包含crc的bit数

    % Find the minimum value of Z in all sets of lifting sizes in 38.212
    % Table 5.3.2-1, denoted as Zc, such that Kb*Zc>=Kd
    if bgn == 1
      Kb = 22;
    else
      if B > 640
        Kb = 10;
      elseif B > 560
        Kb = 9;
      elseif B > 192
        Kb = 8;
      else
        Kb = 6;
      end
    end
    Zlist = [2:16 18:2:32 36:4:64 72:8:128 144:16:256 288:32:384];
    Zc =  min(Zlist(Kb*Zlist >= Kd));%计算出ZC

    % Get number of bits (including <NULL> filler bits) to be input to the LDPC
    % encoder
    if bgn == 1
      K = 22*Zc;  %这块为啥一定要是Zc的倍数,这个是个问题?
    else
      K = 10*Zc;
    end

4.得到包括填充bit数的bit数

在这里插入图片描述

  % Get number of bits (including filler bits) to be encoded by LDPC
    % encoder
    if bgInfo.BGN == 1
        N = 66*cbInfo.Zc;
    else
        N = 50*cbInfo.Zc;
    end

5. 计算UCI 和data 可以放置的位置以及大小

根据type类型,选择下面的表格,对type-1来说,dmrs的位置
在这里插入图片描述
具体位置怎么摆放?

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

计算UCI可以放置的bit子载波,计算数组能够放置的子载波位置

UCI只能在非dmr符号上放,而数据既可以在数据符号上放置,也可以在导频符号上导频没有站的位置上放置。
在这里插入图片描述

  % Calculate bit capacity of PUSCH (excluding DM-RS and PT-RS)
    E = sum(rinfo.MULSCH);
    G = nlqm*E;
    % Get the number of resource elements available for UCI transmission on
    % PUSCH from l_0
    if ~isempty(l0)
        s2 = sum(rinfo.MUCI(l0(1):end)); %s2指是uci可以放置的位置
    else
        s2 = 0;
    end
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值