5G NR PDSCH MCS、目标码率和TBSize计算

       码率控制在MAC层调度流程中是非常重要的一部分,通过码控算法可以将需要传输的信息比特与传输资源相匹配的前提下尽可能的降低码率,保证PDSCH/PUSCH的解调性能。本文接下来将简单介绍码控算法中如何计算下行PDSCH的TBSize和码率。

MCS和目标码率

       PDSCH的调制阶数MCS是通过DCI的5bit字段I_MCS来查表指示,5bit也意味表的行数最大为32。协议中总共定义了3张MCS表单,分别对应正常码率、高码率和低码率。对于调制阶数值和目标码率的确定,在UE的不同工作状态时获取的方式不同;
       在接入阶段且调度PDSCH的DCI通过P-RNTI、RA-RNTI和SI-RNTI加扰时,PDSCH只能使用QPSK调制,即Qm=2,这样设计的原因是小区在发送寻呼、msg2和sib1信息时需要覆盖整个小区,则需要通过限制调制阶数的方式降低码率,提高PDSCH的解调性能,保证覆盖;在接入后,PDSCH的调制阶数可通过CSI-RS测量的反馈结果确定,使得MCS阶数以及层数与信道质量匹配,最大化数据传输速率与流量。
       具体关于3张表单的使用规则约束,详情可查阅38.214.5.1.3章节说明。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

TBSize

       1、计算PDSCH在1个slot内的RE数

在这里插入图片描述
       其中N_RB_sc=12表示一个RB内的子载波个数;N_sh_symb表示一个slot内PDSCH的调度符号数;N_PRB_DMRS表示在PDSCH调度符号内每 PRB内DMRS所占的RE数,注意,DMRS RE数的计算还与DMRS CDM Group组中是否与PDSCH Data复用情况有关;N_PRB_oh由高层参数xOverhead in PDSCH-ServingCellConfig确定,其中xOverhead可配置值0、6、12、18,当高层参数xOverhead 未配置时,N_PRB_oh配置为0,并且当调度PDSCH的PDCCH由SI-RNTI, RA-RNTI, MsgB-RNTI 或 P-RNTI加扰时,N_PRB_oh也同样配置为0。需要说明一点,MsgB-RNTI类型是在R16中新提出的议题2步RACH中调度msgB消息的DCI加扰类型
       2、计算PDSCH总的调度RE数
在这里插入图片描述
       其中n_PRB为PDSCH中的调度PRB个数。
       3、计算信息值N_info值
在这里插入图片描述
       其中R表示目标码率,Qm表示调制阶数、v表示层数。
       关于N_info值的量化,需要与3824做一个判断(具体3824值个人理解为保证LDPC编码性能的一个仿真值),若N_info<=3824,则通过步骤4进行量化并查表计算TBSize;如果N_info>3824,则通过下述步骤5进行量化并计算TBSize。
       4、量化N_info值并查表计算TBSize
       量化的目的是将N_info的值取整为2^3的整数倍(具体与LDPC编译码内部实现有关),量化公式如下

在这里插入图片描述       其中
在这里插入图片描述
       最终的TBSize可通过查表获得,查表的规则是找到表中大于上述计算量化的N_info并与之最接近的值,假设量化后的N_info值为680,则TBSize查表后的结果为704。
在这里插入图片描述
       5、量化N_info值并公式计算TBSize
       具体量化公式如下
在这里插入图片描述
       其中对n有约束
在这里插入图片描述
       当码率R<=1/4时,TBSize计算如下

在这里插入图片描述
       当码率R>1/4且有N’_info>8424时,TBSize计算如下

在这里插入图片描述
       当码率R>1/4且有N’_info<=8424时,TBSize计算如下

在这里插入图片描述
       在TBSize的计算时,有两点需要注意:
       1)当调度PDSCH的DCI由SI-RNTI加扰,即PDSCH传输SIB1信息时,TBSize的大小不能超过2976,这个约束条件与前述对调制方法只能用QPSK原因一样,这里不再赘述。
       2)当调度PDSCH的DCI由P-RNTI、RA-RNTI和Msg-B RNTI加扰时,在信息量N_info计算时与前述略微由差别,多了缩放因子S,
在这里插入图片描述
       S值由DCI位域中的字段TB scaling值查表可得,从表中可以看出S的取值小于等于1,整体还是为了降低码率,增强小区覆盖能力。
在这里插入图片描述

以下是用MATLAB实现5G NR PDSCH DMRS解扰的示例代码: ``` % 5G NR PDSCH DMRS解扰 % 参数设置 N_ID = 1; % DMRS组ID(0-335) delta_ss = 0; % DMRS序列间隔(0或1) delta_p = 0; % DMRS位置(0或1) n_PRB = 50; % 资源块数 n_SC_RB = 12; % 每个资源块的子载波数 n_SC = n_PRB*n_SC_RB; % 总子载波数 n_RE = 12; % 每个OFDM符号的RE数 n_DMRS = 6; % DMRS符号数 n_sym = 14; % 用于PDSCH的OFDM符号数 n_ant = 2; % 天线数 % 生成DMRS序列 [n_cell_id, n_h] = nr_dmrs_pusch(N_ID, n_ant, delta_ss); dmrs_seq = nr_pusch_dmrs(n_cell_id, n_h, delta_p, n_PRB, n_DMRS, n_ant); % 生成PDSCH符号 pdsch_sym = zeros(n_SC,n_sym,n_ant); for i_sym = 1:n_sym pdsch_sym(:,:,i_sym) = randi([0,1],n_SC,n_ant); end % 插入DMRS符号 pdsch_sym_dmrs = zeros(n_SC,n_sym+n_DMRS,n_ant); for i_ant = 1:n_ant for i_sym = 1:n_sym pdsch_sym_dmrs(:,i_sym+(i_sym>n_DMRS),i_ant) = pdsch_sym(:,i_sym,i_ant); end pdsch_sym_dmrs(:,1:n_DMRS,i_ant) = dmrs_seq(:,:,i_ant); end % 解扰DMRS符号 pdsch_sym_dmrs_descrambled = zeros(n_SC,n_sym+n_DMRS,n_ant); for i_ant = 1:n_ant pdsch_sym_dmrs_descrambled(:,:,i_ant) = nr_pdsch_dmrs_descramble(pdsch_sym_dmrs(:,:,i_ant),N_ID,i_ant); end % 提取解扰后的DMRS符号 dmrs_sym_descrambled = pdsch_sym_dmrs_descrambled(:,1:n_DMRS,:); % 检查解扰后的DMRS符号与原DMRS符号是否一致 if isequal(dmrs_sym_descrambled,dmrs_seq) disp('DMRS符号解扰成功!'); else disp('DMRS符号解扰失败!'); end ``` 需要注意的是,以上代码仅实现了5G NR PDSCH DMRS解扰的基本过程,实际应用中还需要处理更多细节和异常情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

寂小小寞

原创不易,希望多多支持,感谢

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值