NR PUSCH(六) PUSCH UL Transmission shcemes

article/2025/11/10 13:57:34

微信公众号同步更新欢迎关注同名modem协议笔记

PDSCH只支持一种传输模式,就是基于DMRS的空分复用传输,PDSCH的DMRS和PDSCH采用相同的预编码矩阵,基站无需指示码本信息,即non-codebook传输。

PUSCH 传输模式要比PDSCH 复杂,分为码本(codebook)和非码本(non-codebook)传输。codebook based UL transmission就是UE根据网络配置的SRS resource,进行SRS传输,由基站根据SRS评估上行信道的情况,之后通过DCI 0_1/0_2的相关field告知UE用于上行传输的预编码矩阵(这里的codebook协议上已定义好);而Non-codebook based UL transmission就是 UE不再依据已有的codebook进行PUSCH传输,而是依据associated CSI-RS自行计算precoder,进而调整PUSCH的传输。上一篇中有提到在确定DMRS 时需要用到rank,rank的确定方法也在这篇会讲到,下面就来看下UL transmission schemes,主要内容在38.214 6.1章节,其他内容分散在38.331,38.211和38.212相关章节中。

先看下总体概括:

bdabb366243b455c83d3dccabd956166.png

1 PUSCH支持码本和非码本的传输,当pusch-Config 中的txConfig 配置为 codebook时,就用码本传输;配置为nonCodebook时,就用非码本传输

2 当txConfig没有配置时,UE就不应该收到DCI 0_1/0_2的调度。

3 如果UE 收到DCI 0_0调度,代表PUSCH 的传输时单天线端口传输。

4 FR2 连接态:如果没有配置PUCCH-SpatialRelationInfo,UE 不应收到DCI 0_0的调度(除非有配置enableDefaultBeamPL-ForPUSCH0_0=enabled,此时UE会根据对应的规则推导 spatial relation及相关的pathloss reference Rs)

txConfig RRC 层配置如下

c86952cbbd6d441b9c71878035ea894b.png

codebook based transmission

一般流程是基站给UE配置1~2个SRS resource,UE 发送SRS,基站进行上行CSI测量;基站根据测量结果,确定CSI参数,例如通过DCI field SRI指定SRS resouce,TPMI指定预编码矩阵索引,TRI指定rank;最后UE根据基站的指示进行上行传输,下面就看下协议中的相关描述。

ba7f389df6ac4de39a28c68569bb9bc6.png

基于码本的UL传输:其PUSCH 可以由DCI 0_1/0_0/0_2调度或者通过半静态configured Grant调度

1 如果PUSCH 是由DCI 0_1/0_2或半静态configured Grant调度时,UE需要根据SRI  TPMI 和传输rank,决定transmission precoder;SRI ,TPMI 和transmission rank 是分别通过DCI 中的SRS resource indicator 及Precoding information and layers number得到(DCI 0_1/0_2调度时)或者通过srs-ResourceIndicator 和precodingAndNumberOfLayers 得到(configuredGrant时会配置对应RRC参数 )。

2 DCI 0_1/0_2 调度的PUSCH所用的SRS-ResourceSet是由RRC 层参数SRS-config中的srs-ResourceSetToAddModList/srs-ResourceSetToAddModListDCI-0-2提供。

3 用于UL codebook 传输的SRS-ResourceSet 的usage要设定为codebook,RRC层 SRS-ResourceSet对应的参数usage=codebook时,srs-ResourceSetToAddModList/srs-ResourceSetToAddModListDCI-0-2中最多只能配置一个SRS resource set。

9b46d770380e43ecb941c361270bc2da.png

上面说了在UL codebook PUSCH 传输中,要根据DCI 确定SRI,TPMI 和rank后,才可以确定transmission precoder,下面就分别来看下相关内容。 

codebookSubset 的配置

2f7696ae3b9847a4906938ac3ab72fe3.png

UE支持上行多天线传输,但是不同的硬件设计,会出现上行多个天线发送端口满足相干传输或不满足相干传输的情况,因而需要考虑不同UE的天线相干能力,所以基站必须根据UE的相干能力,对码本进行相应调整。而UE会在UE capability中以Band为单位上报'fullyAndPartialAndNonCoherent', or 'partialAndNonCoherent' , or 'nonCoherent',如下是相关结构图。

095b151ce1324d22a70f451f6e336ecb.png

Full coherence: all ports can be transmitted coherently;

Partial coherence: port pairs can be transmitted coherently;

Non-coherence: no port pairs can be transmitted coherently,只能使用单天线端口传输。

当UE 上报partialAndNonCoherent'时,网络端之后就不应该配置 'fullyAndPartialAndNonCoherent';当 UE上报'nonCoherent' 时,网络端就不应配置 'fullyAndPartialAndNonCoherent'or'partialAndNonCoherent' ; 当RRC 层 SRS-ResourceSet中的norfSRS-Ports为two port 及usage 配置为codebook时,则 codebookSubset 不应该set to 'partialAndNonCoherent'

29c3062705e943e39113bb5177cffd44.png

SRS resource 的确定(SRI)

5c52b2df71bd4b77ba70a49b2b39af8d.png

当配置了多个SRS资源时,UE要通过SRI(SRS resource indicator)确定选用的SRS资源,然后根据TPMI 来确定传输data 所用layer的precoder ;如果只配置了一个SRS 资源,只通过TPMI 可以确定precoder即可。这段的描述是在说,在实网中网络侧可能会配置多个SRS 资源用于codebook(usage=codebook) 传输如下结构,通过srs-ResourceId区分。

32354e01feb746c9946be68ecf7cf430.png

4dbe69da77c24cc185a106d65f334ccf.png 7203912c014e453db0a0f12ba296c8ba.png

如果有配置多个SRS 资源,进行上行codebook传输时,UE需要根据上行DCI(0_1/0_2) 中的SRS resource indicator field 确定具体的SRS 资源,然后结合SRS资源根据TPMI 选取对应的预编码矩阵。而SRS resource indicator field的bit大小就是由usage配置层codebook的SRS资源的数量决定。假设网络侧配置了8个codebook SRS 资源(一般情况下只能配置2个),SRS resource indicator只需要3bits就可以表示,根据得到的value,按照srs-ResourceId即可找到对应的SRS 资源。

c7d4981379ff487dad19d31554a7f8e3.png

当RRC 参数txConfig配置为codebook时,网络端就应给UE配置至少一个SRS 资源,SRS 资源在时频域上要先于承载SRI 的PDCCH 。

99eaeda180764bc4b80890df1cf9ffd6.png

在实际配置中,除了RRC 层参数配置为ul-FullPowerTransmission=fullpowerMode2,其他情况可以配置为codebook based transmission 的SRS resources最多只能为2个;然后网络端在DCI 中通过SRI 指定用于预编码的那个SRS resource。 

TPMI 的确定

7d64985f04744abfa88ed27c01a62927.png

UE需要根据DCI field Precoding information and number of layers 确定TPMI 及layer数,更具体的需要根据pusch-config中的transformPrecoder,codebokkSybset,maxRank及ul-FullPowerTransmission的value,确定用的是38.212 Table 7.3.1.1.2-2~Table 7.3.1.1.2-5A中的哪个table。假设根据RRC层参数的配置最终确定要用的是Table 7.3.1.1.2-2,那根据Precoding information and number of layers 的value结合codebookSubset的配置,确定layer number和TPMI即可,例如codebookSubset=nonCoherent ,Precoding information and number of layer=3那TPMI=3,layer=1。

c1018d3a5f9c4a52a43fc07000069dcd.png

UL 预编码矩阵的确定

a173f022750e4f3ba990f7e66819bfa5.png

确定了SRS资源,TPMI和layer number后就要根据SRS resource 中的nrofSRS-Ports,选取precoder矩阵,这个内容主要在38.211 6.3.1.5 precoding中阐述。对于non-codebook传输,W为单位矩阵;对于codebook传输,当用单天线进行one layer传输时,预编码矩阵W =1;其他情况预编码矩阵W要根据TPMI确定。例如当port为 2ports进行 one layer 传输时,则要从Table 6.3.1.5.-1(对应 2 antenna ports)中根据DCI 0_1/0_2 field TPMI的value 选取预编码矩阵。

025834beb8cb4f949cd26a6ce0d1da96.png

当SRI确定的 SRS resource的port为 4 ports进行 one layer 传输且transform precoding enable时,则要从Table 6.3.1.5.-2(对应中根据DCI 0_1/0_2 field TPMI的value 选取预编码矩阵;

231aa6d8db934049a1d99917f718cfa2.png

当SRS port为 4 ports进行 one layer 传输且transform precoding disable时,则要从Table 6.3.1.5.-3(对应中根据DCI0_1/0_2 field TPMI的value 选取预编码矩阵,依次类推。

f69a501ee06749188209929b0e974940.png

8c40c1e10f184f84b40c0efad30771ff.png

UE得知上述信息后,再根据DCI field中的 Antenna ports确定DMRS port,之后就可以按照配置进行PUSCH传输。

下面就整体来看下配置流程。

a65fab7f1cfe4efab2accce81857fad4.png

step 1: UE 上报能力,供基站确定 UL precoder的范围

Full coherence: all ports can be transmitted coherently

Partial coherence: port pairs can be transmitted coherently

Non-coherence: no port pairs can be transmitted coherently

step 2: 配置SRS resource set,SRS resource set顾名思义就是一至多个SRS resource的集合,当SRS resource set的usage 为codebook时,最多被配置两个SRS resource。如果SRS resource set被配置两个SRS resource(除了RRC 层参数配置为ul-FullPowerTransmission=fullpowerMode2的场景),网络端会在DCI 中通过SRI 指定用于预编码的SRS resource 。

step 3: 上行传输SRS resource set ,供基站评估上行通道。

step 4 根据UE的SRS传输及UE上报的能力,基站要计算合适的precoder, rank。如果SRS resource set被配置为2个SRS resource,则基站还需要选择SRS resource,通过SRI 指定。

step 5: DCI 0_1/0_2 的下发,主要告知UE TPMI, RI and SRI (SRS Resource Indicator)信息。

step 6: UE根据DCI的内容进行PUSCH传输。

non-codebook based transmission

在存在上下行信道互异性的情况下,例如TDD场景,就可以使用non-codebook传输,一般流程是UE根据下行CSI-RS测量结果,计算得到下行预编码码字,根据上下行信道的互异性,用于上行SRS传输;基站根据收到的上行SRS,选择一个或多个SRS resource,通过SRI通知UE,SRI资源的个数就是上行传输的rank;UE根据基站指示,使用对应的预编码码字,进行PUSCH传输,下面看下协议中的相关描述。

77bf9222857b4c16862726e56dcf62df.png

DCI 0_0/0_1/0_2或者Configured Grant的PUSCH传输 都可以进non-codebook based 传输。当配置多个SRS 资源时,UE需要根据DCI 0_1/0_2中的SRI field 确定的SRS 资源确定precoder 及rank。

6e1ee862e76b4f4ea1f9f1e6e57afbb8.png

在配置的SRS resource set中:UE在相同符号同时传输的最大SRS resource和可配置的最大SRS 资源数  与UE 的能力相关;不同的SRS resource可以在相同的RB 上 同时进行传输。当SRS-ResourceSet usage 配置成nonCodebook时,则只能在srs-ResourceSetToAddModList或srs-ResourceSetToAddModListDCI-0-2中配置一个SRS resource set;non-codebook UL 传输可配置的最大SRS 资源数是4 个,这时候每个SRS 资源只能用1个SRS port,即配置4个SRS resource时,4个SRS reource需要用4个不同的port进行传输。

aedf8107e40a494b89c782a5afcd7dff.png

non codebook传输,UE要基于NZP CSI-RS 资源的测量计算SRS 传输所用的precoder,即根据TDD上下行信道的互异性,通过DL信道的情况反推UL信道,进而确定SRS precoder ,当RRC 层SRS-ResourceSet usage 配置成nonCodebook时,UE只能给SRS resource set配置一个NZP CSI-RS resouce。

bdfae89c5ebc4ca49132e6e4238a7e41.png

RRC层有配置aperiodic SRS resource set时,需要根据DCI 0_1/0_2/1_1/1_2中的SRS request field确定用于non-codebook传输的NZP-CSI-RS,即先确定采用的NZP-CSI-RS,再根据CSI-RS计算UL precoder,最后UE在进行SRS 传输。当aperiodic NZP-CSI-RS 资源的最后一个符号和aperiodic SRS 传输的第一个符号的gap小于42 个OFDM 符号时,UE 不应该update SRS precoding 信息。

ab6d244cb6f94f65804e9b3279e04477.png

d9af8a9327034354be72fba3de8bfdbe.png

如果aperiodic SRS与aperiodic NZP CSI-RS resource相关联,网络端会通过DCI field SRS reuqest指定对应的CSI-RS(DCI 不用于跨载波或跨BWP调度时)。

7a0cd1329e0841acacd6223746896a5b.png

如果配置的是periodic或semi-persistent SRS resource set,用于测量的NZP-CSI-RS-ResourceId 通过RRC层SRS-ResourceSet中的参数associatedCSI-RS指定,如下结构。

dd7bbc86baa049068f3727db59f42c6e.png

552786caa4cb45da8d0009b1ac116405.png

non-codebook传输,SRS resource spatialRelationInfo不能与SRS-ResourceSet 中的associatedCSI-RS同时配置;当至少配置了一个用于noncodebook传输的SRS resource时,网络端可以通过DCI 0_1进行调度(这句话有点多余)。

SRS resource indicator for non-codebook

2fee6d474cc44c5287c69133fb92338f.png

non-codebook 传输时DCI field SRS resource indicator的大小由srs-ResoucrceSetToAddModList中usage配置为nonCodeBook的SRS resource个数决定。

noncodebook场景的maxlayer即Lmax需要根据场景和UE能力决定 :UE支持PUSCH-ServingCellConfig中配置的maxMIMO-Layers 指定的layer传输,则Lmax=maxMIMO-Layers;否则就由UE支持的maxlayer数决定。举个例子假设UE支持4layer传输,但是RRC 层参数maxMIMO-Layers=2,那Lmax=2;UE支持1 layer传输,但是RRC 层参数maxMIMO-Layers=2,那Lmax=1,这里是假设,实际配置时,网络端会按UE能力配置参数。而在SUL 场景 max layer数只能为1。

e8b1b762070244e1993716f37e08b477.png

DCI field 中noncodebook 涉及的table 主要是38.212 table 7.3.1.1.2-28/29/30/31,主要是根据Lmax的取值确定采用的表格,如下。

e51015c3d7fc4761b0cc2510b67a81e3.png

举个例子,假设此时对应4个SRS resource,分别对应不同的SRS port,UE分别计算的precoder 如下,

8045027047e745b0b94e71fab32cc915.png

之后UE进行precoder SRS传输,基站根据UE的SRS 传输,确定rank及选用的SRS resource,之后通过上行DCI中的field SRI和Antenna port 告知UE具体的UL precoder 及layer数。

那此场景对应的Lmax=4,应该选用Table 7.3.1.1.2-31,Nsrs=4, 如果SRI value=4,则UE要根据port 0 和1 确定的percoder 进行 2 layer传输,具体使用的UL port由 Antenna port 指定的DMRS port决定,例如最后确定DMRS port为0,1;那DMRS port 0 和1 就按照SRS port0和1 指定的precoder进行传输。PUSCH DMRS 的相关确定规则在NR PUSCH(五) DMRS有详细介绍。

5d1bb99c55e747569cd9b1b97f68edb7.png

在进行根据SRI 确定DMRS port时,要进行一一映射,例如SRI value指定是 0,2,3,DMRS port为 0,1,2, 那DMRS port 0 对应SRI 0,DMRS port 1 对应SRI 2,DMRS port 2 对应SRI 3。

最后再看下non codebook的整体流程。

9b4b91a0808b411a9c593374a3d361fc.png

step 1: UE能力上报上报支持的max layer数等。

step 2: 配置SRS resource set,在non-codebook场景中每个SRS resource只能配置一个antenna port。当SRS resource set的usage为non-codebook based UL transmission时,UE最多被配置四个SRS resource(依UE能力)。如果SRS resource set被配置4个SRS resource,则4个SRS resource对应于不同的4个antenna port。在RRC层SRS resource set中会配置相关的CSI-RS,用来让UE根据DL信道反推UL信道的情况,进而计算出SRS precoder。

step 3: precoded SRS传输

step 4: 根据step 3,基站选择适合的SRS resource, 而rank就是挑选的SRS resource的个数,基站通过DCI通知UE UL传输的具体参数,包含SRI (SRS Resource Indicator),DMRS port。

step 5: UE根据DCI传输PUSCH。


http://chatgpt.dhexx.cn/article/labfxcVc.shtml

相关文章

码本

Type I 是指像原来LTE一样反馈基于码本的PMI等隐含信道信息的方式;Type II反馈部分显性信道信息的增强型反馈方式,直接反馈信道协方差矩阵等信息,具体可参加会议report的原文: – Type I feedback: Normal • Code…

戴老师论文阅读:Channel Feedback Based on AoD-AdaptiveSubspace Codebook in FDD MassiveMIMO Systems

Channel Feedback Based on AoD-Adaptive Subspace Codebook in FDD Massive MIMO Systems 2018.11 感觉与信道估计无关, feedback overhead path AoDs vary more slowly than the path gains. 第二章 MASSIVE MIMO SYSTEM MODEL 假设每个用户已得到下行链路信道矩…

5G NR Type II CSI Codebook简介

文章目录 5G NR Type II CSI Codebook简介简单概述: NR Type II CSI for rank 1 and 2Wideband中的Beam选取(Wideband Only)每个Beam的幅度和相位反馈幅度和相位调整的比特分配PMI Indices小结Type II Codebook小结参考 5G NR Type II CSI Codebook简介 5G NR Type II Codeboo…

CSI Report中关于codebook/PMI的理解(2)

笔者在微信公众号GiveMe5G定期发布学习文章(更多更及时),欢迎订阅和分享,文章下方有二维码。 有了上一篇文章的内容铺垫,本文将结合协议描述一些细节。目前现网的codeebook配置主要使用Type I Single-Panel,以此为例,我…

༺ཌ༈最好的电子书共享:https://github.com/EbookFoundation/free-programming-books༈ད༻

曾经自己也有心搞一个计算机图书的免费共享项目,结果发现现有的这个项目就非常好:github.com/EbookFoundation/free-programming-books 这是网上很多人共同维护的一个项目,有几万个star了。 内容非常全,质量非常高。 里面还推荐了…

认识5G(一):5G 单天线阵面Type I码本(Type I Single Panel codebook)生成过程

认识5G(一):5G 单天线阵面Type I码本(Type I Single Panel codebook)生成过程 文章目录 认识5G(一):5G 单天线阵面Type I码本(Type I Single Panel codebook)生成过程零. 关于5G码本的分类一.DFT码本的基础…

Multi-modal Alignment using Representation Codebook

Multi-modal Alignment using Representation Codebook 题目Multi-modal Alignment using Representation Codebook译题使用表示子空间的多模态对齐期刊/会议CVPR 摘要:对齐来自不同模态的信号是视觉语言表征学习(representation learning)…

5G NR CSI Report中关于codebook/PMI的理解(1)

笔者在微信公众号GiveMe5G定期发布学习文章(更多更及时),欢迎订阅和分享,文章下方有二维码。 本文主要讨论PDSCH codebook,介绍NR下行数据传输precoding的特点,以及Type I和Type II codebook是什么。 gNB是如何做下行Precoding的&…

【Stata】CGSS数据清理:Codebook速成法

对数据使用者来说,了解一个调查数据基本情况的常见途径就是查看该数据的codebook。 对数据所有者/提供方来说,制作一份详细的codebook是其数据管理工作中不可或缺的一环。 2016年上半年CGSS项目组把CGSS2003年到CGSS2013年期间的8年年度数据合并成一个…

CodeBook算法

年份论文题目作者论文内容2004Background modeling and subtraction by codebook constructionK. Kim, T. Chalidabhongse, D. Harwood, and L. Davis提出了CodeBook算法2005Real-time foreground–background segmentation using codebook modelK. Kim, T. Chalidabhongse, D.…

图像处理之前景检测(三)之码本(codebook)(主要为代码升级)

图像处理之前景检测(三)之码本(codebook) CodeBook算法的基本思想是得到每个像素的时间序列模型。这种模型能很好地处理时间起伏,缺点是需要消耗大量的内存。CodeBook算法为当前图像的每一个像素建立一个CodeBook(CB)结…

RIDCP: Revitalizing Real Image Dehazing via High-Quality Codebook Priors(CVPR2023)论文记录

通过高质量码本先验重塑真实图像去雾(CVPR2023) RIDCP: Revitalizing Real Image Dehazing via High-Quality Codebook Priors通过高质量码本先验重塑真实图像去雾(CVPR2023)摘要一、数据合成流程二、VQGAN 预训练:构建…

【AI人工智能绘画 CV】Towards Robust Blind Face Restoration with Codebook Lookup Transformer

Towards Robust Blind Face Restoration with Codebook Lookup Transformer (NeurIPS 2022) 使用 Codebook Lookup Transformer 实现稳健的盲脸修复 Blind face restoration is a highly ill-posed problem that often requires auxiliary guidance to 1) improve the mapping…

2021-11-10-Codebook理解

《Deep Visual-Semantic Quantization for Efficient Image Retrieval》中提到的codebook是什么意思? Specifically, each image embedding zn is quantized using a set of M codebooks C [C1, . . . , CM ], each codebook Cm contains K codewords Cm [Cm1, .…

《学习openCV》例程解析 ex_9_3(codeBook模型实现背景减除)

56帧时 63帧时 /** 比平均背景法性能更加良好的方法,codeBook模型实现背景减除 核心代码详细解析和实现 by zcube */ /************************************************************************/ /* A few more thoughts on codebook models In general, the codebook met…

“Requesting Java AST from selection“. ‘boolean com.ibm.icu.text.UTF16.isSurrogate(char)‘

记录一次问题。自从安装了spring tool(sts)插件后,在使用eclipse过程中总是弹出An internal error occurred during: "Requesting Java AST from selection". boolean com.ibm.icu.text.UTF16.isSurrogate(char)这种错误&#xff0…

详解Unicode与UTF-8、UTF-16、UTF-32.

计算机起源于美国,上个世纪,他们对英语字符与二进制位之间的关系做了统一规定,并制定了一套字符编码规则,这套编码规则被称为ASCII编码 ASCII 编码一共定义了128个字符的编码规则,用七位二进制表示 ( 0x00 - 0x7F ), …

解决eclipse boolean com.ibm.icu.text.UTF16.isSurrogate(char)

window > preferences > java > Editor > mark occurrences and desable : mark occurrences ...

字符集编码 Unicode UTF8 UTF16 UTF32 和BOM(Byte Order Mark)

BOM(Byte Order Mark) 在分析unicode之前,先把bom(byte order mark)说一下。 bom是unicode字符顺序的标识符号,一般以魔数(magic code)的形式出现在以Unicode字符编码的文件的开始的头部,作为该文件的编码标识。 来举个很简单的例子,在windows下新建一个文本文件,并另…

utf8与utf16转换

1.UTF8与UTF16编码转换 std::string ConvertFromUtf16ToUtf8(const std::wstring& wstr) {std::string convertedString;int requiredSize WideCharToMultiByte(CP_UTF8, 0, wstr.c_str(), -1, 0, 0, 0, 0);if(requiredSize > 0){std::vector<char> buffer(requ…