NR HARQ概述
Posted modem协议笔记
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NR HARQ概述相关的知识,希望对你有一定的参考价值。
HARQ是MAC层的快速重传机制,5G部分HARQ相关内容分布在38.331,38.321,38.213,38.214,38.212,38.211等spec中,这篇仅仅针对NR HARQ 进行简单的概括梳理。
NR中上下行HARQ均为异步HARQ;NR中每个HARQ反馈信息可以针对一个上/下行 TB块,也可以针对code Block Group码块组,即当一个TB块分为多个CBG码块组传输时,每个HARQ反馈bit信息对应一个CBG码块组。
在没有上下行空分复用时,一次调度传输一个TB块,一个HARQ进程对应一个TB块,在开启上下行空分复用时,一次调度传输多个TB块(最多2个),一个HARQ进程对应1或者2个TB块。
RRC层,PDSCH 通过PDSCH-ServingCellConfig 中的IE nrofHARQ-ProcessesForPDSCH 配置HARQ进程的数量,UE最多支持16个(每个服务小区),在不配置的情况下,默认为8个。当有配置codeBlockGroupTranmission时,意味着要进行基于CBG的传输,此时通过maxCodeBlockGroupsPerTransportBlock指示每个TB支持的CBG 数量。PUSCH没有参数配置支持的HARQ 个数,但是根据38.214 6.1 章节,UL默认支持16个HARQ(每个服务小区), 其他内容同样有codeBlockGroupTranmission,指示UE是否要进行基于CBG进行传输,maxCodeBlockGroupsPerTransportBlock指示每个TB支持的CBG 数量。
如上MAC层的结构示意图,HARQ会从Downlink Shared Channel(s) (DL-SCH) 或者Uplink Shared Channel(s)(UL-SCH)接收data。
下图是DL L2 HARQ 单CC 和CA场景的示意图
NR HARQ 下行
HARQ进程的处理总体流程在38321中描述,主要包括:对接收到的TB块进行新传块,还是重传块的判定;对于新传块进行解码;如果是NACK的重传块,软信息合并解码;解码没成功时,写入HARQ的缓冲区;解码成功时, MAC PDU发送给上层,指示物理层发送ACK 信息,解码失败时,指示物理层发送NACK 信息 等操作。
先看下新传和重传是如何判定的,这个对应实际看懂log也很关键。
HARQ 进程根据DCI 中的New data indicator(NDI)指示来判定接收的TB块是新传块还是重传块:
1 相同HARQ id ,相比于前一个TB,新的TB NDI 反转
2 broadcast 过程,RRC 根据SI 调度indicated 这是第一次接收的 TB
3 之前没有这个TB 的NDI,是第一次收到这个TB 的传输
则认为这是个新传 ,否则认为是重传。
HARQ Entity
在进行上下行传输时,在MAC层,每个小区有一个HARQ 实体,上下行独立。每个HARQ实体包含多个并行的HARQ进程。每个HARQ进程都有对应的HARQ id,HARQ 实体会将从DL-SCH上收到的HARQ 信息和相关的TB传递给HARQ进程。在没有上下行空分复用时,一次调度传输一个TB块,一个HARQ进程对应一个TB块,在开启上下行空分复用时,一次调度传输多个TB块(最多2个),一个HARQ进程对应1或者2个TB块。
如开头所述PDSCH 通过PDSCH-ServingCellConfig 中的IE nrofHARQ-ProcessesForPDSCH 配置HARQ进程的数量,UE最多支持16个(每个服务小区),在不配置的情况下,默认为8个。 对于系统消息 会有专用的广播HARQ 进程处理。
UE收到下行调度时(即有需要接收的TB块),UE MAC层的HARQ实体,把接收的TB块分配给对应的HARQ进程来处理;
在下行PDSCH信道配置了重复发送时,即pdsch-AggregationFactor>1时重复发送的PDSCH也称为一个Bundle,HARQ实体使用一个HARQ进程处理Bundle;一个bundle对应pdsch-AggregationFactor次HARQ 重传。
HARQ process
如果是新传块,直接对接收数据解码;如果是重传块,并且是以前解码失败的(NACK 块的重传),HARQ进程指示物理层和以前HARQ 缓冲区的数据合并解码。通常情况下,基站下发重传块的RV版本不同,UE合并解码会有IR(冗余增量)增益。
如果是重传块,之前并没有解码过的(例如UE漏检了下行调度的DCI),接收数据放入HARQ 缓冲区直接解码;第一次解码成功的块,MAC PDU 发送上层。如果是之前就解码成功的块(例如下行重复发送多次时,已经解码成功),不需要再发送上层。
HARQ 进程根据解码结果,指示物理层发送ACK或者NACK 指示,以下情况下,不发送ACK 或NACK:
1 下行接收到TB是关联Temp C-RNTI(例如MSG4),当时竞争冲突解决没有成功;
2 下行接收到TB是关联MSGB-RNTI,随机接入过程还没有成功;
3 广播HARQ进程;
4 上行TA 定时器停止或超时,即UE出于上行失步状态时。
其他情况下,HARQ进程需要指示物理层发送ACK 或者NACK信息。
MAC entity对C-RNTI下行调度的NDI进行判定时,不考虑Temp C-RNTI下行调度的NDI状态。
一般基站调度的重传TB和初传TB的大小是相同的,如果UE收到的重传块和初传块TB块大小不同时,处理方式由UE的实现自行决定。
UL L2 HARQ 单CC 和CA场景的示意图
HARQ Entity
上行数据传输时,每个服务小区(包括SUL的情况)对应一个HARQ实体;上行每个HARQ进程仅支持一个TB块,每个小区最多支持16HARQ 进程。上行方向是UE发送PUSCH(UL-SCH)后,根据下一个DCI 0-0或0_1/0_2调度中的NDI 字段判定下一个是新传还是重传(相同的HARQ进程ID);
对于RAR中的UL Grant调度的资源和MSGA过程,也有HARQ进程,其HARQ进程ID固定为0。
上行HARQ实体和进程的处理逻辑,总体上和下行相似,但有一些细节有差别,例如MSG3的处理,波束失败恢复后的调度,UE没有获取到可发送的MAC PDU等内容。具体可以看38321中的5.4.2.1和5.4.2.2章节。
上行PUSCH也可以配置重复发送,REPETITION_NUMBER的确定方式分别在NR PUSCH (一)和NR PUSCH (二)中有介绍。当REPETITION_NUMBER>1时,bundle内的传输包括第一次传输和 REPETITION_NUMBER-1次重传。在上行动态调度或configured uplink grant情况下,同一个HARQ进程关联重复发送的bundle,并在bundle内,无需HARQ反馈时,直接重复发送。
RV规定也在NR PUSCH(一)和NR PUSCH (二)中有介绍,不再赘述。
NR PUCCH(四) UL data operation和NR PDSCH(六) DL data operation是有关实网中HARQ相关的流程,感兴趣可以看下。
以上是关于NR HARQ概述的主要内容,如果未能解决你的问题,请参考以下文章
NR HARQ semi-static HARQ-ACK codebook
[深入研究4G/5G/6G专题-27]: 5G NR开机流程4.5 - RRC连接应答消息MSG4PUCCH上行控制信道首次调度UCI与HARQ应答