谈TB size前,首先了解下PDSCH resource mapping,基站会通过RRC层配置的参数告知UE有一些时频资源(RB级/RE级)不能作为UE的PDSCH 资源使用,网络侧会对这些资源可能有特定用途,例如DSS场景中LTE作为NR 的inband部署时。用于发送RAR/OSI/Paging/MSG4/MSGB/SIB1 的PDSCH资源如果与SSB 的PRB overlap,overlap的PDSCH不能用于PDSCH 传输。
PDSCH resource mapping分为RB symbol level granularity和RE level granularity。
RB symbol level granularity:
RRC层PDSCH-Config/ServingCellConfigCommon/ServingCellConfig中配置rateMatchPatternToAddModList中最多配置4个BWP级的RateMatchPattern和4个cell级别RateMatchPattern。
先看下RRC 层配置参数:
RateMatchPatternId:patternType bitmaps 下有多个IE
resourceBlocks:代表频域RB的bitmap,当对应bit置1时,在symbolsInResourceBlock 代表的symbol 上,这个RB用于速率匹配,UE不可用
例如resourceBlocks 1000000.....
symbolsInResourceBlock
oneSlot 1000000...(14bits)
twoSlots 1000000...(28bits)
如上代表频域上在当前分配的RB 资源上第一个RB不可用 ,要用于速率匹配
在时域上 oneSlot 代表以1个slot为周期,在第一个符号上的对应RB 要用于速率匹配;twoSlots 代表以2个slot为周期,在第一个符号上 对应的RB 要用于速率匹配。
periodicityAndPattern:代表 发生的周期,当缺省时,默认为 n1
当为n40时,会有40bit 代表对应的slot,置1 对应的slot要按照resourceBlocks 和symbolsInResourceBlock 确定的时频域资源进行 速率匹配。
当配置有2个rateMatchPatternGroup1 和 rateMatchPatternGroup2时,要根据DCI 中的field动态进行rate matching。DCI 1_1/1_2中有Rate matching indicator :当有两个group时,最高位代表goup 1 最低位代表group 2。
另一种 是以CORESET的形式 进行rate matching,即按照CORESET 和searchspace对应的时频域资源进行速率匹配。
RE level granularity
通过配置RateMatchPatternLTE-CRS或者配置周期和非周期ZP CSI-RS资源实现。
配置周期和非周期ZP CSI-RS 资源
这些都在38.214 5.1.4 PDSCH resource mapping 讲述,上面方式确定的PDSCH 资源是网络侧预留的,不能用作UE PDSCH 资源。
下面看下NR TB size确定。
首先看下Tput问题的基本流程。基站会配置CSI-RS资源,UE根据配置测量CSI-RS,然后通过PUCCH/PUSCH向UE反馈CSI report。NR的CSI比LTE 要多些内容例如CRI/LI/PMI/CQI/RI,其中CRI和LI是NR中新增的CSI,CSI相关内容在后面会有专门介绍。RI 和LTE类似,UE测量后评估得到的最佳下行transmission rank,也就是对应的传输层数。单codeword时,RI个数1~4,双Codeword时,RI 1~8。PMI是根据RI,UE推荐的PMI预编码矩阵索引;CQI是根据PMI和RI,得到合适的编码和调制方式,上报时要针对每个codeword反馈。下图是DL 调度的基本过程。
基站获得CSI 信息后,就会根据CSI通过DCI调度MCS RB等资源。有一点需要注意,基站并不一定会按照UE 的要求进行资源的分配,例如UE 上报的CSI 很好,实际中可能基站分配的资源很差,导致吞吐率很低;这些情况也是可能发生的,所以实际问题中需要用公平性对比测试进一步理清问题。什么是公平性对比测试?针对Tput的问题,测试方法建议是DUT和REF 插入相同运营商SIM卡,在相同地点交叉轮流测试,多次测试取平均值的方法。为什么不能同时测试?因为网络的资源是一定的,在同时间测试时,即使DUT和REF上报的CSI 情况类似,也难免会出现资源分配不均的情况,测试期间同一区域有多少台UE在进行类似的操作,也会影响到测试结果。因而要采用在相同地点交叉轮流测试,多次测试,取平均值,进一步降低环境因素的影响。
扯多了回到原题。我们都知道LTE中计算TB size的方法是通过DCI确定Imcs 和Nprb ,然后用Imcs查表确定Itbs,最后根据Itbs 和Nprb 联合查表确定一个TB size,统计一定时间的TB size 就可以得到一个速率。LTE是完全通过查表确定的TBS。NR 由于带宽大,速率也提升了很多,所以在计算TBS的时候有一个分段过程,没有超过协议设定的3824时,还是可以通过查表确定;超过的时候,要通过公式计算得出TBS。下面具体看下。
确定PDSCH TB size前 要先根据DCI 中的field MCS 确定modulation order和target code rate 及RV(DCI中有对应的field)。 最后UE 结合layer数和分配的PRB确定TB size(layer数的确定在PDSCH DMRS中再说)。
38.214针对不同的需求定义了3张MCS-table,UE要根据RRC配置选择一张表确定MCS与modulation order 和target code rate。38.214 5.1.3.1 有讲MCS-table的具体选取规则,协议上列了一大堆内容阐述了不同情况要的用不同MCS table。简单总结说就是当mcs-Table 为qam256时,用Table 5.1.3.1-2(0<=Imcs<=27);MCS-C-RNTI(使用场景为URLLC)或者msc-table为qam64LowSE(Low Spectral Efficiency)时,用Table 5.1.3.1-3(0<=Imcs<=28);其他情况用Table 5.1.3.1-1(0<=Imcs<=28)。
这三张表有什么区别呢?Table 1和Table 2适用于EMBB场景,相比Table 1,Table 2加入了256 QAM 。 Table 3适用于URLLC高可靠场景。Table 3和Table 1一样,调制方式只支持QPSK、16 QAM和64 QAM,不支持256 QAM,URLLC场景更注重可靠性和时延,所以code rate 更加保守。
协议规定通过P-RNTI, RA-RNTI, SI-RNTI 调度的PDSCH ,只能用QPSK调制。
网络端可以通过RRC层配置的maxNrofCodeWordsScheduledByDCI 指示有enable两码字传输,当然网络也可以通过DCI 1_1 (Imcs=26 RVid =1)将其中的一个码字disable。如果所有的TB 都有enable, 那TB1和TB2要分别映射到codeword 0和codeword 1;如果只有enable 一个TB,则这个TB 要直接映射到codeword0 。
例如在PDSCH-Config中mcs-Table 为qam256 ,在计算TB size时就用Table 5.1.3.1-2确定modulation order 和target code rate;maxNrofCodeWordsScheduledByDCI为1 说明只有enable 一个codeword,是单TB传输,RI个数1~4。
下面看下具体的TB size计算方法 38.214 5.1.3.2Transport block size determination。
首先确定在1个PRB内的RE数,计算公式 N'_RE=N_RB_sc *N_sh_symb-N_PRB_DMRS-N_PRB_oh。N_RB_sc=12 代表一个PRB 的子载波数;N_sh_symb代表1个slot内的PDSCH占用的符号数;N_PRB_DMRS代表PRB内DMRS占用的RE数;N_PRB_oh 为slot内额外占用的符号数,如CSI-RS CORSET0等,通过PDSCH-ServingCellConfig中的xOverhead确定,如果该参数没有配置,则N_PRB_oh=0。对于SI-RNTI/RA-RNTI/MSGB-RNTI/P-RNTI加扰的PDCCH调度的PDSCH,N_PRB_oh也为0。
最后N'_RE 要与156比较,两者取小确定最后1个PRB内的RE数,总共的RE数为N_RE=min(156,N'_RE)*n_PRB。
为什么这里要用156?协议上并未说明原因,这里156=13(symbol)×12(subcarrier),在计算PDSCH TBS 时,可能至少要考虑有一列是其他的dmrs,例如PDCCH DMRS,所以要排除12个RE,反正这里协议上就是定义的156,就是不让最大满配。
通过公式N_info=N_RE*R*Qm*v ,计算N_info,其中R、Qm和 v通过DCI field的参数已经可以确定。
如果N info <=3824 使用下图中公式对N_info做一个量化处理,得到N'_info,然后在38.214 Table5.1.3.2-2中选取一个不超过但最接近N'_info的值作为TBS。
从表中找一个不超过N'info的最接近的TBS值。
如果N_info >3824, TBS太大的时候,就通过下图中的公式确定TBS,TBS 太大的话,查表都费劲,3GPP直接把具体计算TBS 的公式祭出,省去查表的麻烦。
对于SI-RNTI加扰的PDCCH调度的PDSCH ,TB size不能超过2976bits。
对于P-RNTI/RA-RNTI/MSGB-RNTI加扰的DCI 1_0调度的PDSCH,需要对N_info做个,TBS做个缩放 处理 ,N_info=S*N_RE*R*Qm*v,这个S由DCI 1_0中的TB scaling field给出,如Table 5.1.3.2-2。
上面有几个关键的数字8824, 3816, R=1/4和 24。主要和NR PDSCH 的信道编码流程有关系。
NR TB data会进行LDPC编码,然后要对base graph进行选择,R=1/4 是BG1 BG2的一个分界点,R<=1/4 用BG2 , 否则用BG1;选择完base graph后,要对TB进行码块的分割,BG1会用到参数max code block(Kcb)=8448,对应每个码块的大小,由于还有24bits的CRC 长度,所以一个码块的有用data 为 8448-24=8424。BG2 max code block(Kcb)=3840,由于还有24bits的CRC 长度,所以有用data为3840-24=3816。
信道编码的过程可以看下NR PDSCH(五)PDSCH 信道编码与调制流程。其他公式都是根据几个数字的一个量化操作。