参考:https://info-nrlte.com/tag/dynamic-harq-codebook/
HARQ is a stop and wait (SAW) protocol with multiple processes.
stop and wait (SAW):从进程发送数据包后,它将等待 ACK/NACK。当它等待处于活动状态的 ACK/NACK 时,同一进程无法完成其他工作,从而性能会下降。
解决方案—>采用多个进程并行工作,可以通过使其他进程同时在其他数据包工作来提高吞吐量。
HARQ的软合并
In hybrid- ARQ with soft combining, the erroneously received packet is stored in a buffer memory and later combined with the retransmission to obtain a single, combined packet that is more reliable than its constituents.
HARQ协议是NR中处理重传的主要方式。如果错误接收数据包,则请求重新传输。但是,尽管无法解码数据包,但接收的信号仍然包含信息,这些信息会因丢弃错误接收的数据包而丢失。这一缺点通过软合并的HARQ得到解决。在具有软合并的HARQ中,错误接收的数据包存储在缓冲存储器中,然后与重传相结合,以获得比其成分更可靠的单个组合并数据包。
合并方式有:Chase合并及增量冗余(NR采用的是增量冗余的方法)
Chase合并:
增量冗余:
增量冗余
Chase合并中原始传输和重传使用相同的打孔模式,而增量冗余中原始传输和重传使用不同的打孔模式。
在编码率高时,增量冗余的性能原高于Chase合并,因为信道编码增益远大于软合并增益。(?)
下行中的HARQ
DCI中包含UE使用哪一个HARQ进程的指示,另外,由于传输和重新传输是使用相同的框架安排的,因此UE需要知道传输是新传输,在这种情况下应刷新软缓冲区,还是重传,在这种情况下应执行软合并。设置NDI(New Data Indicator)以指示这将是新数据,并且在加载用户数据之前应刷新接收缓冲区。
收到下行链路调度分配后,UE 会检查NDI,以确定当前传输是否应与当前在相关 HARQ 进程的软缓冲区中接收的数据进行软合并,或者是否应清除软缓冲区。UE接收用户数据并开始计算单个传输块的校验和,如果使用码块组(CBG)进行传输,则计算包含的码块组中的校验位。完成计算后,UE遵循UL报告的时序,并发送指示ACK或NACK的HARQ报告。在NACK的情况下,gNB将开始安排数据的重新传输。
如果配置了每 CBG 重传,UE 需要知道哪些 CBG 被重传,以及是否应该刷新相应的缓冲区。为此,DCI 中存在两个附加字段。1)CBG传输指示器(CBG Transmit Indicator,CBGTI),这是一个位图,指示下行链路传输中是否存在某个CBG,2)CBGFI,它是单个bit,指示CBGTI指示的CBG是否应该被刷新或是否应该执行软合并。
解码操作的结果(解码成功时的ACK和解码失败时的NACK)作为上行链路控制信息的一部分反馈给gNB。如果配置了 CBG 重传,则会反馈每个 CBG 一个位的位图,而不是表示整个传输块的单个位。
用于下行链路调度分配的 DCI 格式 1-0 和 1-1 包含 HARQ 相关信息,如下所示:
- HARQ 进程号(Hybrid-ARQ process number,4 位),通知设备有关用于软合并的混合 ARQ 进程。
- 下行链路分配索引(Downlink assignment index,DAI、0、2 或 4 位),仅在动态混合 ARQ 码本的情况下存在。DCI 格式 1_1 支持 0、2 或 4 位,而 DCI 格式 1_0 使用 2 位。
- HARQ反馈定时(HARQ feedback timing,3位),提供有关何时应相对于PDSCH接收传输混合ARQ确认的信息。
- CBG 传输指示器(CBG transmission indicator,CBGTI、0、2、4、6 或 8 位),指示码块组。仅以 DCI 格式 1_1 存在,并且仅在配置了 CBG 重新传输时存在。
- CBG 刷新信息(CBG flush information,CBGFI,0_1 位),指示软缓冲区刷新。仅以 DCI 格式 1_1 存在,并且仅在配置了 CBG 重新传输时存在。
HARQ过程
HARQ过程指的是包括传输数据、接收ACK/NACK以及必要时执行重传的传输和接收过程。
冗余版本与HARQ
当传输发生时,原始数据位使用特定的前向纠错(FEC)方法进行编码(例如使用LDPC码)。然后对编码后的比特进行穿孔或速率匹配从而生成一组用于传输的传输比特。冗余版本决定了哪些比特被选择用于传输,不同的冗余版本生成的传输比特不同。5G NR PDSCH中不同冗余版本生成传输比特的方法见 PDSCH物理层处理过程(五):速率匹配(基于LDPC码)。每次传输时的传输冗余版本在DCI中指定(HARQ进程号也在DCI中指出),理论上每次传输都可以传输任何冗余版本,但通常冗余版本序列顺序为0->2->3->1。