5G/NR - HARQ ACK Codebook  

 

 

 

HARQ ACK Codebook

This is one of the complicated topics (at least to me) in 5G/NR Physical Layer Process (38.213) and what is described here would remain messy without clear big picture for a while until I myself get clear understanding on this process.

Codebook-based HARQ and non-codebook-based HARQ differ primarily in the way HARQ-ACK feedback is structured and transmitted.

  • In codebook-based HARQ, the feedback is organized into a predefined structure known as a "codebook," where the ACK/NACK information for multiple downlink transmissions is compactly represented. This method enables efficient feedback for scenarios where there are multiple PDSCH (Physical Downlink Shared Channel) receptions or code block group (CBG)-based retransmissions. It is particularly useful in systems with high traffic or large-scale data transmissions, as it reduces the overhead associated with transmitting individual ACK/NACK bits for each transmission. The feedback mechanism ensures compatibility with advanced 5G features like CBG-based retransmissions, where multiple code blocks in a transport block can be acknowledged or retransmitted selectively.
  • On the other hand,Non-codebook-based HARQ provides feedback in a simpler, more straightforward manner, with one bit of ACK/NACK typically transmitted per transport block or transmission. This approach is simpler and more intuitive but becomes less efficient when dealing with scenarios involving high traffic, multiple HARQ processes, or code block groups. It may result in higher signaling overhead compared to the compact representation of codebook-based feedback.

The key distinction lies in the organization and efficiency of the feedback process, with codebook-based HARQ being more sophisticated and optimized for complex transmission scenarios, while non-codebook-based HARQ remains simpler and more suited for straightforward transmission scenarios.

Overview of HARQ Mechanisms and Key Features in 5G Systems

Before we go into the details, I think the description from TR 38.912 - 8.2.2.2 HARQ would help you to get some big picture.

  • HARQ-ACK feedback with one bit per TB is supported.
  • Multiple DL HARQ Process per UE is supported and Single DL HARQ Process per UE is supported as well.
  • UE is required to indicate its capability of minimum HARQ processing time (The minimum HARQ processing time means the minimum time that is required from DL data reception to the corresponding HARQ-ACK transmission timing)
  • Asynchronous and adaptive DL HARQ is supported at least for eMBB and URLLC
  • From UE perspective, HARQ ACK/NACK feedback for multiple PDSCH in time can be transmitted in one UL data/control region.
  • Timing between PDSCH reception and corresponding ACK/NACK is specified in DCI (See PDSCH-to-HARQ_feedback timing indicator in DCI 1_0, DCI 1_1)   
  • CBG(Code Block Group)-based transmission with single/multi-bit HARQ-ACK feedback is supported
    • Only allow CBG based (re)-transmission for the same TB of a HARQ process
    • A CBG can include all CB of a TB regardless of the TBS(TB Size), meaning that a TB is made up of only one CBG. In this case, UE reports single HARQ ACK bit for the TB
    • a CBG is allowed to be made up of only one CB
    • CBG granularity is configurable by higher layer

Parameters

Codebook determination algorithm itself is defined in 38.213, but there are many parameters that controls the algorithm. Since they use a little bit different name for the same parameters between 38.213 and 38.331, I thought it would be helpful to make a mapping table for these parameters.

38.213 - 9.1

38.331

Values

CBG-DL (CBG = Code Block Group)

codeBlockGroupTransmission

On / Off

CBGs-per-TB-DL()

maxCodeBlockGroupsPerTransportBlock

2,4,6,8

HARQ-ACK-codebook

harq-ACK-Codebook

semiStatic, dynamic

C   Number of Codeblocks within a TB
  Number of CBG within a TB
 

harq-ACK-Spatial-Bundling

true
 

Number-MCS-HARQ-DL-DCI (?)

 
 

DL-data-DL-acknowledgement (?)

 

CBG transmission information (CBGTI)

  A field in DCI 1_1

Codebook Determination Steps

  • (a) Identify Relevant PDSCH Transmissions:
    • Based on the PDCCH scheduling information, determine the set of PDSCHs requiring feedback.
  • (b) Assign Feedback Entries:
    • For each PDSCH transmission:
      • Assign a specific feedback entry in the codebook.
      • Map the feedback bit to its corresponding slot, beam, or transport block.
  • (c) Aggregate Feedback:
    • Combine ACK/NACK for multiple transmissions into a single codebook structure.
    • Ensure that each entry is uniquely identified based on slot and beam indices.
  • (d) Transmit HARQ-ACK Codebook:
    • The determined codebook is transmitted via the Physical Uplink Control Channel (PUCCH) or Physical Uplink Shared Channel (PUSCH).

Determining the number of bits for HARQ ACK/NACK

In codebook based HARQ for NR, the process of determining the number of HARQ ACK/NACK bits is more flexible and versatile compared to LTE or Non-codebook based NR HARQ, where a simple rule—typically assigning one bit per transport block (TB)—is commonly used. For example, in LTE, if a 4x4 MIMO configuration is used, a single cell would handle two transport blocks (two codewords), resulting in 2 bits for HARQ feedback and in case of NR non-codebook based HARQ, if a 4x4 MIMO configuration is used, the cell would handle one transport blocks (one codewords), resulting in 1 bit for HARQ feedback

Below are the main cases for determining HARQ bit lengths, as summarized from 38.213 - 9.1, with intuitive explanations added for clarity.

< Case 1 >

Since no explicit scheduling information is provided via the PDCCH, only a single acknowledgment bit is required for the received data. This is the simplest scenario, ensuring minimal overhead for HARQ feedback.

    Condition :

          PDSCH is received without corresponding PDCCH or

          PDCCH indcating a SPS PDSCH release

     

    Number of HARQ Bit : 1 bit

 

< Case 2 >

In this case, feedback is straightforward, with one bit representing the acknowledgment for each transport block. This aligns with the simpler LTE-style feedback mechanism, where each TB gets its own HARQ bit.

    Condition :

        PDSCH-CodeblockGroupTransmission = Not Configured  AND

        PDSCH with DCI 1_1

     

    Number of HARQ Bit : 1 bit per TB (Transport Block)

 

< Case 3 >

This case handles semi-persistent scheduling (SPS), where periodic transmissions may not require dynamic scheduling information. HARQ feedback is limited to the specific SPS transmission to optimize feedback overhead.

    Condition :

        PDSCH with DCI 1_0 or

        SPS PDSCH or

        SPS PDSCH release

     

    Number of HARQ Bits : HARQ Ack only for the PDSCH or only for the SPS

 

< Case 4 >

This setup provides granularity by allowing feedback for individual code block groups within a TB. For example, if a TB consists of five CBGs, five HARQ bits are used. This granularity enhances the ability to retransmit specific portions of a TB, improving efficiency for error correction and retransmission.

    Condition :

         PDSCH-CodeblockGroupTransmission = Configured

     

    Number of HARQ Bits : 1 bit per CBG(Codeblock Group).

        In this case, Usually 1 TB carries multiple CBG, so multiple bits are allocated for one TB.

 

< Case 5 >

This approach uses a predefined, semi-static configuration for HARQ feedback, which reduces dynamic signaling overhead. It’s particularly useful in scenarios with predictable traffic patterns.

    Condition :

         HARQ-ACK-codebook=semi-static

     

    Number of HARQ Bits : Determined by Type 1 HARQ-ACK codebook determination algorithm

 

< Case 6 >

A dynamic codebook allows for more flexibility in varying traffic conditions or when multiple PDSCH transmissions need to be acknowledged within the same slot. This case is highly adaptable, supporting advanced NR features like multiple HARQ feedback within a single uplink resource.

    Condition :

         HARQ-ACK-codebook=dynamic

     

    Number of HARQ Bits : Determined by Type 2 HARQ-ACK codebook determination algorithm

Codebook Determination Type / Algorithm

There are a few different types of Codebook determination algorithm called Type 1, Type 2 and Type 3. Each of these types are again divided into two cases depending on whether the HARQ ACK is reported in PUCCH or PUSCH. Which types of algorithm to use is determined by a couple of RRC parameters. The Codebook determination algorithm type and the RRC parameters determining the type can be summarized as follows :

Codebook Determination Type

Condition

CBG-based HARQ-ACK codebook determination

codeBlockGroupTransmission = ON

Type-1 HARQ-ACK codebook determination

HARQ-ACK-codebook=semi-static

 

Type-1 HARQ-ACK codebook in PUCCH

 
 

Type-1 HARQ-ACK codebook in PUSCH

 

Type-2 HARQ-ACK codebook determination

HARQ-ACK-codebook = dynamic

 

Type-2 HARQ-ACK codebook in PUCCH

codeBlockGroupTransmission = OFF or omit

 

Type-2 HARQ-ACK codebook in PUSCH

 

Followings are short descriptions on each type of the codebook.

  • Type-1 HARQ-ACK Codebook : This type is used for simple cases where feedback is tied to a single or small number of slots. Each entry in the codebook corresponds to a transport block (TB) or PDSCH transmission, with feedback directly linked to specific downlink assignments.
    • Purpose: Used for scenarios where downlink assignments and feedback are associated with a single or limited number of slots.
    • Determination:
      • Feedback is tied to the Downlink Assignment Indications (DAIs) and associated with a specific PDCCH configuration.
      • Each entry in the codebook corresponds to a particular transport block (TB) or PDSCH transmission.
  • Type-2 HARQ-ACK Codebook : This type handles more complex situations, such as feedback across multiple slots. It’s used in cross-slot scheduling and combines feedback for several PDSCH transmissions managed by different scheduling occasions. This codebook is more flexible and designed for dynamic operations.
    • Purpose: Handles scenarios with complex scheduling or multi-slot/multi-beam operations.
    • Determination:
      • Aggregates HARQ-ACK feedback across multiple slots.
      • Typically used in Cross-Slot Scheduling or multi-slot feedback modes.
      • The structure of the codebook is more flexible and accounts for multiple PDSCH transmissions scheduled by different PDCCH occasions.
  • Type-3 HARQ-ACK Codebook : This type is designed for scenarios involving multiple beams, such as in massive MIMO systems. It provides feedback for different beams or TCI states, making it suitable for advanced spatial multiplexing and beam-aware communication.
    • Purpose: Tailored for beam-specific feedback, particularly in massive MIMO systems.
    • Determination:
      • Provides feedback across multiple beams or Transmission Configuration Indicator (TCI) states.
      • It is beam-aware and supports configurations for advanced spatial multiplexing.

Reference

[1]