Why HARQ exists
Without HARQ, a corrupted packet would require a full round trip to the application layer (TCP/IP retransmission) — potentially hundreds of milliseconds. HARQ operates at the MAC layer with a turnaround of 4–8 ms, orders of magnitude faster.
5G NR uses HARQ with Incremental Redundancy (IR): the transport block is encoded at a very low rate, producing far more coded bits than can be sent in one transmission. Each retransmission sends a different selection of these coded bits using a different Redundancy Version (RV). The receiver combines all received versions to improve decoding — this is called soft combining.
HARQ timing — the round trip
After the UE receives PDSCH in slot n, it must send an ACK or NACK on PUCCH. The DCI field PDSCH-to-HARQ timing (k1) tells the UE how many slots to wait. For our example k1=2: ACK/NACK sent 2 slots after PDSCH.
Redundancy versions and soft combining
The LDPC-encoded bits are arranged in a circular buffer. Each transmission starts reading from a different offset, selected by the RV. The standard transmission order is RV0 → RV2 → RV3 → RV1, cycling until either ACK is received or max retransmissions reached.
// Slot n: gNB sends PDSCH with HARQ process 3, RV=0, NDI=1 UE receives, CRC check → FAIL (BLER ~10% at MCS 20) UE stores soft bits in HARQ buffer[3] UE sends: NACK on PUCCH, k1=2 slots after → slot n+2 // Slot n+4: gNB retransmits same TB, HARQ process 3, RV=2, NDI=1 (same) // (NDI unchanged → UE knows this is retransmission) UE receives RV2 → soft combines with stored RV0 bits Combined LLR values: each bit's reliability improves CRC check → PASS (combining gain ≈ 3 dB effective SNR boost) UE sends: ACK on PUCCH → slot n+6 // If still failing after 4 retransmissions: → RLC layer requests retransmission (RLC-AM ARQ) → Upper layer eventually times out → TCP retransmit
HARQ process pipelining
With 16 HARQ processes, the gNB can have 16 transport blocks in flight simultaneously — each in a different stage (first transmission, awaiting ACK, retransmitting). This keeps the channel fully utilised even when individual TBs are waiting for ACK feedback.
ACK/NACK — PUCCH formats
The HARQ feedback is sent on the PUCCH (Physical Uplink Control Channel). For a single HARQ bit (one codeword), PUCCH Format 0 is used — it's a 2-symbol sequence that the gNB detects by correlating against known sequences. No bits are modulated — the presence and position of the sequence encodes the ACK (1) or NACK (0).