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.
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
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 |
- (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).
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.
< 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
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]
|