5G/NR - Channel Coding  

 

 

 

CBG (Code Block Group)

A Code Block Group (CBG) is a concept in  5G NR, used to efficiently manage data transmission over PDSCH. When a Transport Block (TB) is processed, it is divided into smaller segments known as Code Blocks (CBs) to accommodate the limitations of the channel coding process.  A Code Block Group consists of a set of these Code Blocks grouped together for transmission. This grouping enables more efficient retransmissions in scenarios where errors occur during data reception. Instead of retransmitting the entire Transport Block when some errors are detected, the network can retransmit only the specific CBGs that contain the failed Code Blocks. This approach improves overall efficiency, reduces latency, and conserves bandwidth. The number and size of Code Block Groups are determined by higher-layer configurations, allowing the network to adapt based on the required reliability and throughput. CBG-based transmission is a key feature that enhances the robustness and flexibility of modern wireless communication systems.

As in LTE, in NR as well a huge TB (Transport Block) is split into multiple CBs (Code Block). However, there is a concept that is not in LTE. It is CBG. NR group a multipes of CBs into a CBG and NR can indicate ACK/NACK and retransmit the data in the unit of CBG. CBG is indicated in DCI (Format 0_1, Format 1_1)

Hierarchies in TB,CB and CBG

Simply put, Code Blocks(CB) are the basic units of segmentation for data encoding and Code Block Groups(CBG) are logical groupings of these blocks(CB).

Transport Block (TB)

A transport block is the basic unit of data exchanged between the higher layers and the physical layer in wireless communication systems, such as LTE and 5G. It represents the payload that is encoded, modulated, and transmitted over the air interface, typically mapped to the PDSCH for downlink or the PUSCH for uplink.

Code Block (CB)

A Code Block is a smaller unit of data derived from a Transport Block (TB). When a Transport Block is too large to be processed by the channel coding scheme, it is divided into smaller segments called Code Blocks. This segmentation ensures the data can be encoded, transmitted, and decoded efficiently. Each Code Block is individually appended with a Cyclic Redundancy Check (CRC) to detect errors in its transmission.

Code Block Group (CBG)

A Code Block Group is a collection of one or more Code Blocks. It is an additional layer of organization introduced to enhance retransmission efficiency. If a receiver fails to decode certain portions of a Transport Block, the system can retransmit only the affected Code Block Groups, rather than retransmitting the entire Transport Block. This selective retransmission saves resources like bandwidth and reduces latency.

Relationship Between CB and CBG

  • Grouping of Code Blocks: A Code Block Group is formed by grouping a specific number of Code Blocks. For example, if a Transport Block is divided into 12 Code Blocks and the configuration specifies 3 Code Block Groups, each CBG would contain 4 Code Blocks.
  • Configuration Dependency: The number of Code Blocks within a Code Block Group is determined by network configurations, particularly the parameter maxCodeBlockGroupsPerTransportBlock. These configurations define the granularity of retransmission.
  • Hierarchical Organization: The relationship between CBs and CBGs adds a hierarchical structure to data transmission. The TB is segmented into CBs, which are then grouped into CBGs, enabling efficient handling of retransmissions and reducing system overhead.

There are various types (cases) of hierarchies among TB,CB and CBG as illustrated below.

 

Typical structure of TB is illustrated as above. One TB is usually made up of multiple CBG and one CBG is usually made up of multiple CB. But there is possibility of seeing some extreme types as shown below.

In the example shown below, one TB is made up of only one CBG which is made up of multiple CBs.

In following example, you see one TB which is made up of multiple CBG and one CBG is made up of only one CB.

In rare case, you may see a TB made up of CBG as follows. In this case, one TB is made up of one CBG and the CBG is made up of only one CB.

Why CBG ?

The use of Code Block Groups (CBGs) is driven by the need for more efficient and flexible data transmission. CBGs offer significant advantages in two key areas: efficiency in retransmissions and scalability.

  • Efficiency in Retransmissions: When a Transport Block (TB) is transmitted, it may be too large to process directly, so it is divided into smaller units called Code Blocks (CBs). These CBs are grouped into Code Block Groups (CBGs) for better management. If errors occur during transmission and only certain parts of the Transport Block fail to decode correctly, the system can isolate the issue to specific CBGs. Rather than retransmitting the entire Transport Block, which would consume unnecessary bandwidth, the system retransmits only the affected CBGs. This selective retransmission approach significantly reduces the amount of data sent over the air, conserving bandwidth and lowering latency. It also improves the overall efficiency of the retransmission process, as fewer resources are wasted on resending successfully decoded portions of the Transport Block.
  • Scalability: The flexibility of CBG configuration allows the network to adapt to varying requirements for reliability and throughput. By adjusting the number of Code Blocks included in a CBG, the system can strike a balance between fine-grained retransmission control and signaling overhead. For instance, a higher number of smaller CBGs provides more precise retransmission capabilities but increases the signaling overhead due to additional control information. Conversely, fewer, larger CBGs reduce signaling complexity but may lead to retransmissions of unnecessary data when errors occur. This scalability ensures that the network can optimize for different scenarios, such as enhancing reliability in poor channel conditions or maximizing throughput in favorable conditions.

By combining these features, CBGs play a critical role in improving the overall efficiency, reliability, and adaptability of modern wireless communication systems.

Potential Disadvantage of CBG

While Code Block Groups (CBGs) offer significant advantages, they also introduce certain disadvantages that can impact the performance and complexity of the wireless communication systems.

Followings are some of the potential (possible) disadvantage that can be caused by applying CBG.

  • Increased Signaling Overhead
    • CBG-based retransmissions require additional control signaling to indicate which CBGs need to be retransmitted. This signaling, such as the CBG Transmission Information (CBGTI) field in DCI, consumes additional resources in the control channel, potentially reducing the capacity available for other critical control information.
  • Higher Processing Complexity
    • Managing CBGs adds complexity to both the transmitter and receiver:
      • At the transmitter: It needs to encode, manage, and retransmit specific CBGs based on feedback.
      • At the receiver: It must handle selective decoding and processing of individual CBGs, track which ones were successfully received, and manage combining retransmitted CBGs with previously received ones. This requires more sophisticated hardware and software, potentially increasing power consumption and processing delays.
  • Inefficiency in Good Channel Conditions
    • In scenarios with high signal quality and minimal errors, the benefits of CBGs diminish. Retransmissions are rarely needed, but the additional signaling and processing overhead still exist, leading to unnecessary complexity without proportional gains in performance.
  • Suboptimal Performance in High-Latency Scenarios
    • The success of CBG-based retransmissions depends on timely feedback from the receiver to the transmitter. In high-latency environments, such as satellite or long-distance links, the delay in feedback may reduce the effectiveness of CBGs, as retransmissions might not occur in a timely manner.
  • Potential for Increased Energy Consumption
    • The selective retransmission of CBGs involves more frequent and detailed processing at the receiver, which may increase energy consumption for user equipment (UE). This is especially critical for battery-powered devices, where power efficiency is a major concern.

NOTE : Trade-Off Between Granularity and Overhead - To mitigate the potential disadvantage and maximize the benefit of CBG, we would need carefully consider the tradeoff between  Granularity and Overhead

    Configuring more CBGs for finer retransmission control increases the signaling overhead. Conversely, fewer CBGs reduce overhead but also decrease granularity, leading to retransmissions of unnecessary data. This trade-off can be challenging to optimize for dynamic network conditions.

Process of CBG based Transmission and Reception

In CBG-based transmission and reception, a Transport Block (TB) is divided into Code Block Groups (CBGs), each containing specific Code Blocks (CBs). This approach allows selective retransmission of CBGs instead of the entire TB when errors occur, optimizing resource usage and reducing latency. The configuration is managed through higher-layer parameters, and information about transmitted and retransmitted CBGs is conveyed via control fields in the DCI. This method improves efficiency and adaptability in modern wireless communication systems.

Following is a summary on the process of CBG based transmission and CBG based reception based on 38.214 - 5.1.7

Process of Transmission

In CBG-based transmission, a Transport Block (TB) is divided into multiple Code Block Groups (CBGs), each containing specific Code Blocks (CBs). The configuration for CBG-based operation is indicated by the higher-layer parameter PDSCH-CodeBlockGroupTransmission.

For transmission, the CBG Transmission Information (CBGTI) field in the DCI format specifies which CBGs are included in a transmission. In initial transmissions, all CBGs are assumed to be present. In retransmissions, the CBGTI indicates which CBGs need to be retransmitted, optimizing resource usage by avoiding unnecessary retransmission of successfully decoded CBGs. The CBG Flushing Information (CBGFI) field, if present, indicates whether retransmitted CBGs should be combined with previously received ones or treated independently

Process of Reception

In CBG-based reception, the UE uses the CBG Transmission Information (CBGTI) field in the DCI to determine which Code Block Groups (CBGs) are transmitted or retransmitted. For initial transmissions, all CBGs are assumed to be present, while retransmissions are specified in the CBGTI field. The optional CBG Flushing Information (CBGFI) field indicates whether retransmitted CBGs should be combined with previously received data or treated as new. Each retransmitted CBG contains the same Code Blocks as in the initial transmission, enabling efficient recovery of lost data.

  • CBG Transmission Information (CBGTI):
    • The CBGTI field in DCI format 1_1 indicates which CBGs are transmitted. Each bit corresponds to a CBG, where '1' indicates transmission, and '0' indicates omission.
    • For dual codewords, the CBGTI is divided into two sets, each corresponding to one TB.
  • Initial Transmissions:
    • For new TBs, the UE assumes all CBGs are transmitted.
  • Retransmissions:
    • The CBGTI field specifies the CBGs being retransmitted.
    • If present, the CBG Flushing Information (CBGFI) field indicates whether previously received CBGs should be combined with retransmissions (CBGFI=1) or discarded due to corruption (CBGFI=0).
  • CBG Composition:
    • A retransmitted CBG contains the same code blocks as the initial transmission.

RRC Parameters

PDSCH-ServingCellConfig ::= SEQUENCE {

   codeBlockGroupTransmission        SetupRelease { PDSCH-CodeBlockGroupTransmission } OPTIONAL,

   xOverhead                         ENUMERATED { xOh6, xOh12, xOh18 } OPTIONAL, -- Need S

   nrofHARQ-ProcessesForPDSCH        ENUMERATED {n2, n4, n6, n10, n12, n16} OPTIONAL, -- Need S

   pucch-Cell                        ServCellIndex OPTIONAL , -- Cond

   SCellAddOnly

   ...

}

 

PDSCH-CodeBlockGroupTransmission ::= SEQUENCE {

    maxCodeBlockGroupsPerTransportBlock        ENUMERATED {n2, n4, n6, n8},

    codeBlockGroupFlushIndicator               BOOLEAN,

    ...

}

codeBlockGroupTransmission:

  • This field specifies whether the UE is configured for CBG-based transmissions.
  • If set up, it points to a PDSCH-CodeBlockGroupTransmission structure, which further defines the parameters for CBG-based transmission.

maxCodeBlockGroupsPerTransportBlock:

  • Specifies the maximum number of CBGs per Transport Block (TB). Possible values are:
    • n2 (2 CBGs)
    • n4 (4 CBGs)
    • n6 (6 CBGs)
    • n8 (8 CBGs)
  • This parameter determines the granularity of retransmissions. A higher number of CBGs allows finer control but increases signaling overhead.

codeBlockGroupFlushIndicator:

  • A boolean field (TRUE or FALSE) that indicates whether previously received instances of a CBG should be discarded or combined with retransmissions.
    • If set to TRUE, earlier instances of the same CBG are invalidated and replaced by the retransmission.
    • If set to FALSE, the UE combines the retransmitted CBG with previously received instances to improve decoding.

Reference