5G NR中的HARQ机制 CBG传输

  • NR和LTE一样都有两级重传机制:MAC层的HARQ机制RLC层的ARQ机制。丢失或出错数据的重传主要是由MAC层的HARQ机制处理,并由RLC的ARQ进行补充。MAC层的HARQ机制能够提供快速重传,RLC层的ARQ机制能够提供可靠的数据传输。
  • HARQ使用Stop-and-Wait进程,当一个HARQ在等待确认信息时,发送端可以使用另一个HARQ来继续发送数据。这些HARQ进程共同组成了一个HARQ实体,这个实体结合了停等协议,允许数据同时连续传输。
  • HARQ有下行HARQ和上行HARQ之分。下行HARQ针对下行数据传输,上行HARQ针对上行数据传输,两者相互独立,处理方式也不相同。

一、HARQ进程和调度

  1. NR R15每个上下行载波均支持最大16个HARQ进程,基站可以根据网络的部署情况,通过高层信令半静态配置UE支持的最大进程数。如果网络没有提供对应的配置参数,则下行缺省的HARQ进程数为8,上行每个载波支持的最大进程数始终为16。HARQ进程号在PDCCH中承载,固定为4比特

  2. 5G不支持跨小区的HARQ重传,如果初始传输在小区1,在传输后激活的小区变为小区2,则不会在小区2上重传。对于FDD,如果UE在发送HARQ-ACK之前发生了激活UL BWP的切换,则UE不会再相应的PUCCH资源发送HARQ-ACK信息。

  3. 为了降低终端实现的复杂度,NR R15仅支持顺序的HARQ调度,即先调度的数据的HARQ-ACK不会比后调度的HARQ-ACK先反馈,对于上下行都是如此。同时,对于同一个HARQ,如果先调度的HARQ-ACK没有反馈,则不会对同一个数据再进行一次调度。

二、 HARQ-ACK信息上报

  1. NR上下行均采用异步HARQ,HARQ-ACK信息既可以在PUCCH上承载,也可以在PDCCH上承载。NR R15仅支持UE在一个时隙仅有一个承载HARQ-ACK信息的PUCCH。对于上行数据发送,如果需要重传,基站不向UE发送ACK/NACK信息,而是直接调度UE进行数据重传。
  2. 如果UE检测到在时隙n接收PDSCH,或UE在时隙n检测到SPS(Semi-Persistent Scheduling,半持续调度)释放的DCI,UE在时隙(n+k)发送相应的HARQ-ACK信息。其中,k通过DCI中的PDSCH到HARQ的定时指示器来指示,如果DCI中没有该定时指示器,则通过高层参数DI-DataToUL-ACK来表示。
  3. 对于上下行采用不同的子载波间隔的场景,如果PDSCH子载波间隔大于等于PUCCH子载波间隔,则k=0对应于PDSCH重叠的时隙。如果PDSCH子载波间隔小于PUCCH子载波间隔,则对于PDSCH接收而言,k=0对应于PDSCH接收结束时对应的时隙,对于SPS PDSCH释放而言,k=0对应于PDCCH接收结束时对应的时隙。
  4. 对于DCI格式1_0,PDSCH到HARQ的定时指示器固定为3bit,取值为{1、2、3、4、5、6、7、8}。对于DCI格式1_1,PDSCH到HARQ的反馈可以是0bit、1bit、2bit、3bit,比特宽度由[log2(I)]来定义。其中,I由高层参数DI-DataToUL-ACK的行数来确定。
  5. 如果UE在PUCCH上传输HARQ-ACK信息,UE首先确定PUCCH资源集合,然后再确定一个PUCCH资源

三、UE上下行数据处理时延

1. 下行PDSCH处理时延

UE在接收到DCI格式1_0或者1_1中承载的下行调度信息后,会在对应时隙接收相应的PDSCH,并向基站发送反馈HARQ-ACK信息。UE 开始发送HARQ-ACK信息的时间要晚于在承载PDSCH的最后一个符号结束之后的时间。如果不满足这个要求,UE不会发送HARQ-ACK。

2. 上行PUSCH处理时延

UE发送上行PUSCH(包括DMRS)的最早发送时间晚于承载PUSCH的调度信息的PDCCH的最后一个符号结束后的时间。

四、HARQ-ACK码本

UE在一个HARQ反馈资源(PUSCH或PDSCH)上反馈的HARQ-ACK信息的整体称为HARQ-ACK码本。

具体码本产生的方式较为复杂,后期需要用到时再学习。

五、基于编码块组的传输

  • 在NR系统中,数据传输速率达到Gbit/s的数量级,每个传输块都会很大。在LTE系统中基于Turbo编码,支持的最大码块(CB,Code Block)为6144bit,大于6144bit的TB被分为多个CB。假设峰值速率达到20Gbit/s,当一个时隙=0.5ms时,这个时隙内需要传输的数据包大小约为10Mbit,这个包是很大的,若将这个包分为2个TB(目前LTE支持最大两个TB),则一个TB块的大小约为5Mbit。

  • 如果仍然基于一个TB块进行1bit 的ACK/NAK反馈,一旦这个TB译码出错,便会造成整个TB重传。由于该TB很大, 重传整个TB的资源利用率比较低。由于TB在编码前,会被划分为很多的编码块(CB)。对于5Mbit的TB,按照LTE的Turbo编码,可以分为大约818个传输块。可能有些CB译码正确,有些译码错误,重传整个TB是不明智的。

  • 由于一个TB被分为多个CB,终端译码时可以知道每个CB是否正确。因此一种方式就是对每个CB进行ACK/NAK反馈,这样如果某个TB译码失败,终端只需对传输错误的CB进行重传,不用重传整个TB。基于CB的反馈看起来减少了重传的冗余信息,可以提高资源利用率,但是需要反馈很多的上行ACK/NAK,这样会导致上行信令的开销非常大,同样也会造成资源的浪费,因为反馈很多ACK是没有意义的。

  • 在NR中引入了一种基于TB反馈和基于CB反馈的折中方案:将TB中的多个CB分组,分组后的CB称为CBG(Code Block Group)。针对每一个CBG反馈对应的ACK/NAK,并且基于CBG进行重传。

  • 为保证后向兼容,CBG传输是可配置的,只有配置了基于CBG传输的用户才可以基于CBG进行重传

    1. 编码块组个数

    • 设计基于CBG的反馈和重传是对于基于TB的一种优化方案,目的是为了提高资源的利用率。但是如果CBG的个数过多 ,资源开销还是比较大。除此之外,基站的发送控制信息也需要重传,在重传的DCI中需要指出那些CBG被重传,如果CBG个数过大,DCI的开销也会较大。并且,TB大小不同,这样DCI的比特数可变,那么用户需要盲检测多种DCI比特数,造成电力资源的浪费。
    • 一个TB中最大的CBG个数是固定的,也就是基站会给用户发送一个配置信息,指示CBG的最大个数,该最大个数可以记为N。目前标准38.331规定了CBG的最大个数的候选值为2、4、6、8。

    2. 编码块组划分

    用户可以根据下面的公式确定TB中的CBG个数M。
    M=min(N,C) M = min(N,C)
    其中,N为高层信令配置的最大CBG个数,C是TB中CB的数目。首先确定M和C的大小关系,如果M等于C,那么一个CBG就包含1个CB。如果M不等于C,则需要根据下面的过程来确实CBG里CB的个数。
    在这里插入图片描述

3. 下行控制命令

  • 基站在重传过程中,需要指示用户是对哪些CBG进行了重传,以方便用户进行CBG接收以及合并译码。并且,是否需要重传是针对每个用户的特定行为,因此CBG重传的DCI是在用户特定的DCI中
  • 如果用户配置了CBG传输,则用户接收的DCI中,会包含一个CBG传输指示域,即iCBG Transmission Information,简称CBGTI。
  • 用户的DCI中,还会携带新数据指示域(NDI,New Data Indicator),指示当前是新传还是重传,NDI指示新传和重传时用户会有不同的理解。
    • 如果NDI指示新传,则用户会认为所有的CBG都是新传;
    • 如果NDI指示重传,则用户会用下面的处理过程。
      • 根据CBGTI的指示,确定哪些CBG被传输,其中比特为0表示对应的CBG没有传输,比特为1表示传输了。
      • 如果DCI中还存在缓存清理指示值,即CBG Flushing out Information,简称CBGFI。这个指示值如果为0,表示之前收到的CBG同样被污染了,需要清空缓存;如果为1,指示重传的CBG可以和之前收到的样本合并。
      • 重传的CBG中包含的CB和初传的CBG中包含的CB是完全一样的。

4. HARQ-ACK反馈

  • 对于基于CBG传输的反馈信息,如果用户配置了CBG传输方式,则用户会针对每一个CBG都生成一个比特的ACK/NAK反馈信息。如果配置了2个CW,则第二传输块的反馈信息会在第一传输块之后。
  • 如果用户正确译码一个CBG中的所有CB,则该CBG反馈ACK;如果一个CBG中至少有一个CB译码错误,则反馈NAK。
    输块的反馈信息会在第一传输块之后。
  • 如果用户正确译码一个CBG中的所有CB,则该CBG反馈ACK;如果一个CBG中至少有一个CB译码错误,则反馈NAK。
  • 针对TB重传,用户会针对初传正确的那些CBG反馈ACK。如果用户正确译码了整个CBG,但是该TB的译码错误,则所有CBG对应的反馈信息比特都是NAK。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章