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 operationNR PDSCH(六) DL data operation是有关实网中HARQ相关的流程,感兴趣可以看下。

以上是关于NR HARQ概述的主要内容,如果未能解决你的问题,请参考以下文章

NR HARQ semi-static HARQ-ACK codebook

NR HARQ dynamic codebook

5G/NR 波束管理

[深入研究4G/5G/6G专题-27]: 5G NR开机流程4.5 - RRC连接应答消息MSG4PUCCH上行控制信道首次调度UCI与HARQ应答

5G学习总结:NR的物理层过程

5G学习总结:NR的物理层过程