>
Home5G NRPHY — Physical LayerPhysical Channels
📶 PHY — Physical LayerBeginner

Physical Channels (PDSCH/PDCCH/PUSCH/PUCCH/PRACH) in 5G NR

The downlink and uplink physical channels and what each one carries.

📚 3GPP-basedTS 38.211TS 38.212

NR has six physical channels and nine or ten physical signals, and almost everything that makes the air interface hard to reason about comes from not keeping those two lists apart. A physical channel is defined by five choices: what it carries, how it is coded, how it is mapped to resource elements, how the receiver knows it is there, and what happens when it fails. Answer those five for a channel and you understand it; answer them for all six and you can hold the whole air interface in your head at once. This document does exactly that — the same five questions, asked in the same order, of PDSCH, PDCCH, PBCH, PUSCH, PUCCH and PRACH — and then puts the answers in one comparison table, with the coding chains in full, eight worked calculations, nine failure modes and a per-channel log checklist.

Contents
  1. 01Channels and Signals: the Distinction Everybody Blurs
  2. 02The Five Questions That Define a Physical Channel
  3. 03Where They All Sit: One Downlink Slot, One Uplink Slot
  4. 04PDSCH: What It Carries, and How It Is Coded
  5. 05PDSCH: Rate Matching, Scrambling and Modulation
  6. 06PDSCH: Resource Mapping and Frequency-Domain Allocation
  7. 07PDCCH: the Channel With No Feedback Loop
  8. 08PDCCH: Aggregation Levels and the Code Rates They Buy
  9. 09PBCH: the Channel Nobody Schedules
  10. 10PUSCH: the Same Machinery, Two Waveforms
  11. 11PUSCH: Precoding, Hopping, and What Else Rides On It
  12. 12PUCCH: Why There Have To Be Five Formats
  13. 13PUCCH Format 0: Saying Something Without Coding It
  14. 14PUCCH: Resource Sets and How the UE Picks One
  15. 15PRACH: the Channel With No Coding At All
  16. 16The Master Comparison
  17. 17The Shared Steps, and Why They Are Shared
  18. 18Parameter and Configuration Reference
  19. 19Failure Modes and What Each One Means
  20. 20Configuration Reference (ASN.1)
  21. 21Four More Worked Calculations
  22. 22Illustrative Message Traces
  23. 23Release Deltas: Rel-15 to Rel-18
  24. 24Reading Physical Channels in Logs: A Checklist
  25. 25Glossary
  26. 26References

1. Channels and Signals: the Distinction Everybody Blurs

The physical layer of NR transmits two kinds of thing, and they are not two flavours of the same thing. A physical channel carries information that originated above the physical layer — a transport block handed down by MAC, a scheduling decision made by the scheduler, a HARQ-ACK bit produced by the UE's HARQ entity. A physical signal carries nothing of the kind. It is a sequence both ends already know, transmitted so that the receiver can measure something: the channel, the timing, the phase, the cell identity.

The test is one sentence long. Can you point at a bit that came from a layer above the physical layer? If yes, it is a channel. If no, it is a signal. There is no third answer, and every apparent exception dissolves under the test. PSS carries the physical-layer cell identity — but that identity is not information from a higher layer, it is the identity of the sequence itself, which is why there are exactly three PSS sequences and no PSS encoder. CSI-RS looks like it carries channel state — it does not; the UE derives channel state by measuring it, and the derived quantity travels back on PUCCH, which is a channel.

Figure 1. The whole taxonomy on one page. The top two rows are joined by arrows because information crosses a layer boundary there; the signals row has no arrows into it at all, and that absence is the definition. Note that DMRS appears once in the signals row but exists separately for five different channels — see the companion 33 DMRS.
Physical channelsPhysical signals
DownlinkPDSCH, PDCCH, PBCHPSS, SSS, PDSCH DMRS, PDCCH DMRS, PBCH DMRS, PT-RS, CSI-RS, TRS (a CSI-RS configured for tracking)
UplinkPUSCH, PUCCH, PRACHPUSCH DMRS, PUCCH DMRS, uplink PT-RS, SRS
Carries information from above the PHY?Yes, by definitionNo, by definition
Has a transport channel above it?PDSCH (DL-SCH, PCH), PBCH (BCH), PUSCH (UL-SCH), PRACH (RACH). PDCCH and PUCCH do not — DCI and UCI are physical-layer control information with no transport channel.Not applicable
Channel-coded?Yes for five of the six — LDPC or Polar. PRACH is the exception.Never. A signal is a sequence, not a codeword.
Scrambled?Yes — with an identity derived from the RNTI and a configured scrambling ID (§17)The sequence is initialised from an identity, which looks similar and is not the same thing

Table 1. Channels and signals, side by side. The last row is the one that causes the most confusion in practice: a CSI-RS sequence is initialised from scramblingID, and a PDSCH is scrambled with dataScramblingIdentityPDSCH. Both use a Gold sequence and neither is the other.

💡
Key point

The confusion is not academic. "The DMRS failed" and "the PDSCH failed" produce completely different log evidence and lead to completely different fixes, and a bad DMRS configuration presents as a PDSCH coding problem — see §19. Getting the taxonomy right is the first step in nearly every physical-layer investigation, because it tells you which of the two things in front of you has a CRC and which one does not.

One boundary worth drawing before going further. The mapping above these channels — which logical channel feeds which transport channel, the LCID values, the full catalogue of DCI and UCI formats — belongs to the companion 06 Channel Mapping and is not repeated here. The two documents are complementary: 06 answers what feeds this, and this one answers what happens once it arrives.

2. The Five Questions That Define a Physical Channel

Every physical channel in NR is completely specified, for practical purposes, by the answers to five questions. This is not a mnemonic invented for this document — it is the structure of TS 38.211 and TS 38.212 read together. The specifications separate multiplexing and channel coding (38.212, questions 1 and 2) from physical channels and modulation (38.211, questions 3 and 4), and leave question 5 to be inferred, which is why question 5 is where the field problems live.

The questionWhere it is answeredWhy it matters at 2am
1What does it carry? Which transport channel, or which physical-layer control information, and how many bits of it.TS 38.212 cl. 6 and 7; TS 38.211 cl. 6.3 and 7.3It tells you what is lost when the channel fails, and therefore how bad the failure is. A lost PDSCH costs a retransmission; a lost PBCH costs the whole cell.
2How is it coded? Which code, which CRC, which rate matching, which modulation.TS 38.212 cl. 5 (the codes), cl. 6 and 7 (the per-channel chains)It tells you whether a decode failure is even detectable, what a retransmission can add, and the code rate — the number you actually need.
3How is it mapped to resource elements? Which symbols, which subcarriers, in which order, around what.TS 38.211 cl. 6.3 (uplink) and cl. 7.3, 7.4 (downlink)It tells you where to look in a grid dump, and it tells you what collides with what.
4How does the receiver know it is there? A grant, a blind search, a fixed position, or a configured occasion — and which reference signal it demodulates against.TS 38.213 cl. 9, 10; TS 38.214 cl. 5, 6; TS 38.211 cl. 6.4, 7.4The question that separates the channels most sharply: PDSCH is told about, PDCCH is hunted for, PBCH is simply where it always is.
5What happens when it fails? Who notices, what they do, and what the log looks like.Nowhere, completely. Assembled from the HARQ, RLM and RRC procedures.It is the only question a test engineer is ever actually asked, and it is the one 3GPP does not answer.

Table 2. The frame used for every channel in §4 to §15, in that order. The right-hand column is why the frame is worth adopting: each question maps onto a different kind of diagnostic evidence.

The frame also explains why the six channels are as different from each other as they are. They are not six variations on a theme. They are six different answers to question 4, and question 4 constrains everything else:

  • PDSCH and PUSCH are told about, by a DCI that arrived earlier. Because they are told about, they can be adapted freely — any size, any modulation, any code rate, anywhere in the bandwidth part.
  • PDCCH cannot be told about, because it is the thing that does the telling. It has to be found, so the UE tries a fixed set of candidates and lets the CRC arbitrate — and because the search set must stay small, PDCCH's own parameters must stay few.
  • PBCH, PUCCH and PRACH are not told about either, in three different ways: PBCH sits where the synchronisation raster puts it, PUCCH at a resource the UE derives from a set configured in advance, and PRACH on a configured occasion nobody expects. None of the three gets a grant, and none of the three gets meaningful rate adaptation.
💡
Key point

If you remember one structural fact from this document, make it this one: the amount of adaptation a channel gets is inversely proportional to how hard it is to find. PDSCH is trivially findable and infinitely adaptable. PBCH is findable from nothing and adaptable in no respect whatsoever. PDCCH sits in between and pays for it with a five-value aggregation ladder that is the only rate control it has.

4. PDSCH: What It Carries, and How It Is Coded

The Physical Downlink Shared Channel carries essentially all downlink traffic. Every web page, every video frame, every RRC message, every SIB, every paging record and every MAC control element travels on it. It is shared in the sense that the resource is allocated per slot rather than dedicated, which is where the name comes from.

4.1 Question 1: what it carries

Transport channelWhat rides on itRNTI usedNotes
DL-SCHAll dedicated user traffic (DTCH), all dedicated signalling (DCCH), and system information (BCCH beyond the MIB)C-RNTI, CS-RNTI, MCS-C-RNTI, TC-RNTI for Msg4, SI-RNTI for SIB1 and other SI, RA-RNTI or MsgB-RNTI for the RAROne or two transport blocks per slot per cell, two only above four spatial layers
PCHPaging messages, on the PCCH logical channelP-RNTISame physical channel, same processing chain; the only difference is which RNTI scrambles the scheduling DCI's CRC. See the companion 19 Paging.

Table 3. PDSCH carries exactly two transport channels. The distinction matters less than it looks: from the physical layer's point of view a paging PDSCH and a data PDSCH differ only in the addressing.

The transport block size is not signalled. It is derived by both ends from the allocation, the MCS, the layer count and the overhead assumptions, by the procedure in TS 38.214 cl. 5.1.3.2. This is one of the most consequential design decisions in NR: it saves the DCI bits an explicit size field would cost, and it means any disagreement between the two ends about DMRS overhead, xOverhead or the layer count produces a silent, total decode failure rather than a size mismatch anybody can see. §21.1 works it through, on the same geometry as the companion 05 HARQ.

4.2 Question 2: the coding chain, step by step

Figure 4. The chain, and it is the same chain for PUSCH. Read the box numbers as the order of operations in TS 38.212 clause 7.2 (downlink) or 6.2 (uplink) — the two clauses are near-identical text, which is itself the point.

Step 1: transport block CRC

A CRC is appended to the whole transport block before anything else happens TS 38.212 cl. 7.2.1. Its length depends on the payload:

Transport block size ACRCLengthGenerator polynomialWhy
A > 3824 bitsCRC24A24 bitsg_CRC24A(D), cl. 5.1Large blocks are segmented, so the transport-block CRC has to distinguish itself from the per-code-block CRC24B; and a 24-bit CRC gives an undetected-error probability around 2⁻²⁴ ≈ 6 × 10⁻⁸ per block, which at hundreds of blocks per second is an undetected error roughly once a fortnight.
A ≤ 3824 bitsCRC1616 bitsg_CRC16(D), cl. 5.1Small blocks are usually control signalling or a short MAC PDU, where 24 bits of CRC on a 300-bit payload would be 8 % pure overhead. 2⁻¹⁶ is a weaker guarantee, and RLC or PDCP sits above it.

Table 4. Transport-block CRC selection. The threshold is 3824, the same number that appears in the TBS quantisation procedure and in the base-graph selection rule — it is the boundary between "small" and "large" throughout the downlink chain.

Step 2: base graph selection

NR LDPC is not one code. It is two families of parity-check matrices, base graph 1 and base graph 2, each expandable by 51 lifting sizes. BG1 has 22 systematic columns and a mother code rate of about 1/3; BG2 has up to 10 and reaches about 1/5. The selection rule TS 38.212 cl. 7.2.2 uses the transport block size and the target code rate, and it is a rule, not a configuration — nothing in RRC chooses it:

Condition on A and RBase graphMax code block K_cbMother rateWhat it is for
A ≤ 292BG23840≈ 1/5Very short blocks. BG2's smaller graph is better conditioned at short lengths.
A ≤ 3824 and R ≤ 0.67BG23840≈ 1/5Small and not aggressively coded — the regime BG2 was designed for.
R ≤ 0.25 (any A)BG23840≈ 1/5Very low rate. BG1 cannot reach 1/5, so BG2 is the only option that does not need heavy repetition.
OtherwiseBG18448≈ 1/3Large blocks or high rates. BG1 has materially better performance above about R = 0.7.

Table 5. Base graph selection, identical for PDSCH cl. 7.2.2 and PUSCH cl. 6.2.2. Note that the rule depends on the target code rate from the MCS table, not on the effective rate after rate matching — so a heavily punctured retransmission still uses the base graph the first transmission chose.

Step 3: code block segmentation and the second CRC

If the transport block plus its CRC exceeds K_cb, it is split into C code blocks of equal size, and each code block gets its own 24-bit CRC24B cl. 5.2.2. When C = 1 no CRC24B is added, because the transport-block CRC already covers that single block. The per-block CRC is not there for the transport block's benefit — it is there so the receiver knows which code blocks failed, which is what makes code-block-group retransmission possible at all. See the companion 05 HARQ §10.

🧮
Worked calculation

Where the CRC bits go, counted. Take the §21 geometry: a 31 752-bit transport block at R = 0.6016, so BG1 with K_cb = 8448.

B = A + 24 = 31 752 + 24 = 31 776 bits after CRC24A

B > 8448, so C = ⌈31 776 / (8448 − 24)⌉ = ⌈31 776 / 8424⌉ = 4 code blocks

Total bits to encode = B + 24·C = 31 776 + 96 = 31 872 bits

K′ = 31 872 / 4 = 7968 bits per code block

Z_c = 384, the smallest lifting size with 22·Z_c ≥ 7968 → K = 8448, so 480 filler bits per code block

CRC overhead = 120 bits on 31 752, or 0.38 %. Filler overhead = 1920 bits of 33 792, or 5.7 % — fifteen times the CRC cost. The filler bits are punctured before transmission so they cost nothing on the air, but they do consume encoder and decoder cycles, which is why lifting size selection matters to a chip designer and to nobody else.

Step 4: LDPC encoding

Each code block is encoded by the lifted base graph, producing 66·Z_c bits for BG1 or 50·Z_c for BG2 cl. 5.3.2. The first K bits are systematic — the payload itself — and the remainder is parity. The encoder output is always the full mother codeword regardless of what the transmission needs, which is what makes the next step possible.

📘
Spec detail

The full mother codeword is also what makes incremental-redundancy HARQ possible, and it is worth seeing why. A first transmission at R = 0.6 reads about 55 % of the buffer. The other 45 % has already been computed and thrown away — so a retransmission does not need to re-encode anything, it just reads from a different offset. The companion 05 HARQ §5 covers the buffer and the redundancy versions in full; the only fact needed here is that rate matching is a read position, not a re-encoding.

5. PDSCH: Rate Matching, Scrambling and Modulation

5.1 Rate matching and the circular buffer

The encoder produced a fixed number of bits. The allocation can hold a different number. Rate matching reconciles the two TS 38.212 cl. 5.4.2 by treating the codeword as a circular buffer of N_cb bits, choosing a starting position k₀ from the redundancy version, and reading E bits — wrapping around if E exceeds what remains. If E is smaller than the buffer the codeword is punctured; if larger, bits are repeated. The four start positions — 0 %, 26 %, 50 % and 85 % of the buffer — and the reason schedulers cycle them in the order 0 → 2 → 3 → 1 rather than 0 → 1 → 2 → 3 belong to the companion 05 HARQ §5 TS 38.212 Table 5.4.2.1-2, as does the limited-buffer rate matching that compresses them.

After rate matching the bits are interleaved within each code block cl. 5.4.2.2 — written row-wise into a matrix with Q_m rows and read column-wise, so that the bits of one modulation symbol come from widely separated positions in the codeword. This matters more than it sounds: on a 256QAM symbol the eight bits have very different reliabilities, and without the interleaver a run of eight consecutive codeword bits would all land in the same symbol and share its fate. The code blocks are then concatenated into one bit stream cl. 5.5.

5.2 Scrambling

The concatenated bit stream is scrambled with a Gold sequence TS 38.211 cl. 7.3.1.1 whose initialisation carries the addressing:

PDSCH scrambling sequence initialisation, TS 38.211 cl. 7.3.1.1
c_init = n_RNTI * 2^15  +  q * 2^14  +  n_ID          mod 2^31

  n_RNTI  the RNTI of the DCI that scheduled this PDSCH
  q       the codeword index, 0 or 1 (1 only above 4 layers)
  n_ID    dataScramblingIdentityPDSCH, 0..1023, if configured AND the
          RNTI is C-RNTI / MCS-C-RNTI / CS-RNTI AND the PDSCH was not
          scheduled by DCI format 1_0 in a common search space;
          otherwise n_ID = N_ID_cell

Listing 1. Three inputs, three purposes. n_RNTI makes the scrambling UE-specific, so a UE that mis-decodes another UE's DCI cannot accidentally descramble its PDSCH. q decorrelates the two codewords of a high-rank transmission. n_ID decorrelates neighbouring cells — and the condition on it is the reason initial-access PDSCH always uses the cell identity.

⚠️
Common pitfall

Read the n_ID condition again, because it is a genuine trap. dataScramblingIdentityPDSCH applies only to PDSCH scheduled with a UE-specific RNTI and not by a fallback DCI in a common search space. So the same UE in the same cell uses two different scrambling identities depending on which DCI scheduled the PDSCH: the configured one for its normal DCI 1_1 grants, and N_ID_cell for anything scheduled by DCI 1_0 from the common search space. An implementation that caches the identity per UE rather than deriving it per grant works perfectly until the first fallback grant, and then fails exactly one PDSCH in a way that looks random.

5.3 Modulation

The scrambled bits are mapped to modulation symbols TS 38.211 cl. 7.3.1.2, cl. 5.1. NR downlink supports five constellations, and the highest of them arrived in Rel-17:

ModulationQ_mBits per REHighest efficiency in an MCS tableIntroducedPractical use
QPSK221.3262 bits/RE (MCS 9, table 1)Rel-15Cell edge, all fallback and initial-access PDSCH, and every PDCCH and PBCH ever transmitted
16QAM442.5703 bits/RE (MCS 16, table 1)Rel-15The mid-cell workhorse
64QAM665.5547 bits/RE (MCS 28, table 1)Rel-15Good conditions; the top of the Rel-15 baseline table
256QAM887.4063 bits/RE (MCS 27, table 2)Rel-15Requires mcs-Table = qam256 and the matching UE capability; commonplace on FR1 macro cells
1024QAM10109.2578 bits/RE (table 4)Rel-17FR1 only, and realistically only in small cells or fixed-wireless installations with near-line-of-sight geometry

Table 6. Downlink modulation orders. The middle column is the ceiling; the fourth is what the tables actually reach, which is lower because no MCS entry uses code rate 1. Note that the efficiency ladder is roughly linear in modulation order while the SINR requirement grows about 6 dB per step — see the next figure.

Figure 5. The bargain each modulation order offers. The SINR figures are illustrative and follow the same 3 dB-per-bit/RE plus implementation-gap model the companion 34 Link Adaptation uses, so the two documents' numbers are consistent. The shape is the point: the efficiency axis is close to linear in Q_m and the cost axis is not.
💡
Key point

This figure also explains why PDCCH and PBCH are QPSK and only QPSK. Both would need a channel-quality feedback loop to use anything higher, and neither has one: PDCCH is the thing that carries the feedback loop's commands, and PBCH is transmitted before the UE exists as far as the gNB is concerned. Choosing a modulation order you cannot adapt means choosing the one that works at the worst SINR you intend to serve, and that is QPSK.

5.4 Layer mapping and precoding

The modulation symbols are distributed across up to eight spatial layers cl. 7.3.1.3, round-robin symbol by symbol, so layer quality differences average out across the codeword. One codeword feeds up to four layers; five to eight use two codewords, which is the only reason two transport blocks per PDSCH exist. Precoding cl. 7.3.1.4 then maps layers to antenna ports, and the downlink precoder is never signalled — the UE does not need it, because the DMRS is precoded with the same matrix. That single fact is what makes NR downlink MIMO transparent to the UE.

6. PDSCH: Resource Mapping and Frequency-Domain Allocation

6.1 Question 3: mapping to resource elements

Mapping is frequency-first, then time TS 38.211 cl. 7.3.1.6: fill the lowest allocated subcarrier of the lowest allocated PRB in the first allocated symbol, work upwards in frequency, then move to the next symbol. Skip every resource element that is already taken. The list of things that can take one is longer than people expect:

What is skippedConfigured byTypical costCounted in the TBS formula?
PDSCH DMRSDMRS-DownlinkConfig — type, additional positions, CDM groups without data12–48 RE per PRB over a 14-symbol allocationYes — as N_DMRS in N_RE′, and this is exact
PT-RSPTRS-DownlinkConfig, with density driven by the scheduled MCS and bandwidth1 RE per PRB per PT-RS symbol; FR2 only in practiceNo — absorbed into xOverhead if at all
CSI-RSNZP-CSI-RS-Resource and CSI-IM-Resource1–4 RE per PRB on the CSI-RS symbolsNo — this is what xOverhead is for
The SS/PBCH blockssb-PositionsInBurst and the SSB frequency position240 subcarriers × 4 symbols, wherever the raster puts itNo
rateMatchPatternToAddModListAn explicit bitmap of PRBs and symbols, per cell or per BWPWhatever the operator configured — commonly LTE CRS positions in a dynamic-spectrum-sharing deploymentNo
The CORESET the scheduling PDCCH was inControlResourceSet, when the PDSCH overlaps it in timeThe CORESET's full footprint in those symbolsNo

Table 7. Everything a PDSCH is mapped around. The right-hand column is the operationally important one: only DMRS is counted exactly. Everything else has to be accounted for through xOverhead, and if it is not, the effective code rate is higher than the MCS table says. §21 works that arithmetic.

⚠️
Common pitfall

xOverhead in PDSCH-ServingCellConfig takes the values xOh6, xOh12, xOh18 or absent (meaning zero), and it is a single per-cell number applied to every grant. It is not measured, it is not per-slot, and it is not adjusted when the CSI-RS occasion is actually in the slot. Setting it to zero in a cell with CSI-RS and PT-RS makes every transport block slightly too large for the resources that actually carry it, which raises the effective code rate by a few percent on every single transmission. The symptom is a BLER floor a little above target that no amount of outer-loop correction removes, because the outer loop compensates by lowering MCS while the overhead error scales with the allocation.

6.2 Frequency allocation type 0: the bitmap

Type 0 allocation TS 38.214 cl. 5.1.2.2.1 hands the scheduler a bitmap, one bit per resource block group. An RBG is 2, 4, 8 or 16 consecutive PRBs, selected by rbg-Size in PDSCH-Config together with the bandwidth part size:

BWP size (PRB)RBG size with rbg-Size = config1with rbg-Size = config2Bitmap width at config1
1 – 3624up to 18 bits
37 – 7248up to 18 bits
73 – 144816up to 18 bits
145 – 2751616up to 18 bits

Table 8. RBG size against BWP size TS 38.214 Table 5.1.2.2.1-1. The table is constructed so the bitmap never exceeds 18 bits — the granularity is sacrificed to keep the DCI small, which is why a 275-PRB BWP can only be allocated in 16-PRB lumps.

Type 0 is what makes frequency-selective scheduling possible, and it is the only allocation type that can express a non-contiguous allocation — which is why DFT-s-OFDM PUSCH cannot use it at all (§10).

6.3 Frequency allocation type 1: the RIV

Type 1 cl. 5.1.2.2.2 allocates a single contiguous run of PRBs and encodes it as one integer, the resource indication value. Two numbers — a start and a length — are packed into one field, and the packing is piecewise so that the field is exactly as wide as it needs to be:

Resource indication value, TS 38.214 cl. 5.1.2.2.2
Let N = the BWP size in PRB, L = the number of allocated PRB (1..N),
    S = the starting PRB (0..N-1),  with S + L <= N.

if (L - 1) <= floor(N / 2):
    RIV = N * (L - 1) + S
else:
    RIV = N * (N - L + 1) + (N - 1 - S)

Field width = ceil( log2( N * (N + 1) / 2 ) )  bits

Listing 2. The RIV encoding for allocation type 1. The second branch reverses the start index, which is what lets the two branches share a codespace without collision — exactly the same trick the SLIV encoding uses in the time domain, and for the same reason. See the companion 32 SLIV and Time Domain Allocation §3.

🧮
Worked calculation

RIV worked both ways, N = 106 (a 40 MHz FR1 BWP at 30 kHz).

Encode an allocation of L = 50 PRB starting at S = 20:

L − 1 = 49 ≤ ⌊106/2⌋ = 53, so the first branch applies

RIV = 106 × 49 + 20 = 5194 + 20 = 5214

Field width = ⌈log₂(106 × 107 / 2)⌉ = ⌈log₂ 5671⌉ = 13 bits

Decode RIV = 8000 in the same BWP:

⌊8000 / 106⌋ = 75, remainder 50. Try the first branch: L − 1 = 75, so L = 76, and 75 > 53 — the first branch does not apply.

Second branch: N − L + 1 = 75 → L = 106 − 75 + 1 = 32; N − 1 − S = 50 → S = 105 − 50 = 55.

Check: 32 − 1 = 31 ≤ 53? Yes — but the encoder would have used the first branch for L = 32. So RIV 8000 is not a legal codepoint for N = 106.

That last line is the useful one. The RIV space is sparse: 5671 legal values in a 13-bit field with 8192 codepoints, so 31 % of RIV values are invalid. A UE receiving one must treat the DCI as an error, and a gNB emitting one has a scheduler bug — which is exactly what a sprinkling of "invalid resource allocation" rejections in a UE-side log means.

6.4 Mapping type A and mapping type B in one paragraph

In the time domain, PDSCH is either mapping type A — the allocation starts at symbol 0, 1, 2 or 3 and the DMRS sits at a fixed symbol relative to the slot boundary — or mapping type B, where the allocation can start at almost any symbol and the DMRS sits at the first symbol of the allocation. Type A is slot-based scheduling; type B is the mini-slot mechanism behind low-latency scheduling. The start-and-length encoding, the valid combinations and the interaction with the TDD pattern belong to the companion 32 SLIV and Time Domain Allocation; the DMRS position that follows from the mapping type belongs to 33 DMRS.

7. PDCCH: the Channel With No Feedback Loop

The Physical Downlink Control Channel carries downlink control information and nothing else. No transport channel sits above it. DCI is created by the scheduler, which is part of the gNB's MAC, and handed straight to the physical layer — there is no logical channel, no RLC entity, no MAC PDU and no LCID. The companion 06 Channel Mapping catalogues the DCI formats and their fields; this section covers what happens to a DCI payload after the scheduler has assembled it.

7.1 Question 1: what it carries

DCI carriesPayload sizeWhy the size matters here
Downlink assignments — formats 1_0, 1_1, 1_2≈ 30–70 bits depending on format, BWP size and configurationPolar's performance and the achievable code rate both depend on the payload, and the set of distinct sizes the UE must try is capped at four (§8)
Uplink grants — formats 0_0, 0_1, 0_2≈ 30–70 bitsSame. Formats 0_x and 1_x are deliberately size-aligned where possible so they share a decode attempt.
Group-common information — slot format (2_0), pre-emption (2_1), TPC (2_2), SRS requests (2_3), cancellation (2_4)2–128 bitsAll in a common search space; one decode serves every UE monitoring it
Paging and system information scheduling — format 1_0 with P-RNTI or SI-RNTIas format 1_0The RNTI is the only difference; the coding chain is identical

Table 9. What rides on PDCCH. Every one of these goes through the same coding chain with the same code, the same CRC and the same modulation. Only the payload length and the RNTI differ.

📘
Spec detail

A DCI payload is padded with zeros to its format's size before encoding, and for the fallback formats 0_0 and 1_0 there is an extra alignment step: if format 0_0 would be shorter than format 1_0, it is zero-padded up; if longer, the frequency-allocation field is truncated. This is not cosmetic — it is what lets the UE decode both formats in one blind-decode attempt per candidate, halving the search cost. The companion 31 PDCCH Blind Decoding §9 owns the size-budget arithmetic.

7.2 Question 2: the coding chain, and the CRC that addresses

Figure 6. PDCCH and PBCH, the two Polar channels, drawn as parallel columns. Every row is the same operation on both sides; only the fourth differs, and that one difference — whether E is chosen per transmission or fixed forever — is the whole difference between a channel that can adapt and one that cannot.

Four things about this chain are worth stating carefully, because each of them is a place where PDCCH differs from everything else in the system.

The RNTI is scrambled into the CRC

A 24-bit CRC (CRC24C) is computed over the padded DCI payload, and then the last 16 bits of that CRC are XORed with the 16-bit RNTI TS 38.212 cl. 7.3.2. There is no addressee field anywhere in a DCI. The address is the CRC, and it is checked by the same operation that checks for errors:

RNTI masking of the DCI CRC, TS 38.212 cl. 7.3.2
Transmitter:  p'[8..23] = p[8..23]  XOR  rnti[0..15]
Receiver:     for each candidate decode, recompute the CRC over the
              decoded payload, XOR the UE's own RNTI into the last 16
              bits, and compare. A match means BOTH "no residual
              errors" AND "addressed to me".

Listing 3. One 24-bit check doing two jobs. The elegance is real and so is the cost: the two failure modes are indistinguishable. A CRC mismatch means either the DCI was corrupted or it was for somebody else, and the UE cannot tell which — which is precisely why a missed PDCCH is silent.

🔍
What you see in logs

This is the mechanism behind the most useful diagnostic trick in the whole of PDCCH debugging. If you have a grid dump and you suspect a PDCCH was transmitted but not received, you can test candidate RNTIs: decode the candidate, then try masking with each RNTI you know is active in the cell. Whichever one makes the CRC pass is the addressee. The companion 31 PDCCH Blind Decoding §12 covers the false-alarm rate that this same property creates — with 2⁻²⁴ per attempt and thousands of attempts per second, spurious passes are not hypothetical.

Polar, not LDPC

The payload plus its CRC — between about 36 and 164 bits — is encoded with a Polar code TS 38.212 cl. 5.3.1. Before encoding, the bits pass through an interleaver that distributes the CRC bits rather than leaving them trailing, which is what lets a successive-cancellation list decoder use the CRC as a selection criterion rather than only as a final check. §17.3 covers why Polar and not LDPC.

Rate matching to an integer number of CCEs

The Polar codeword is rate matched to exactly E bits, where E is set by the aggregation level and nothing else. One REG is one PRB in one OFDM symbol: 12 resource elements, of which 3 are PDCCH DMRS, leaving 9 for data. One CCE is 6 REGs: 54 data resource elements. QPSK gives 2 bits per RE, so:

PDCCH coded bit count against aggregation level
E  =  54 REs/CCE  x  2 bits/RE  x  AL  =  108 x AL bits

  AL  1  ->  108 coded bits    AL  8  ->   864 coded bits
  AL  2  ->  216 coded bits    AL 16  ->  1728 coded bits
  AL  4  ->  432 coded bits

Listing 4. The entire rate-control mechanism of PDCCH, in five values. There is nothing between AL 4 and AL 8, and nothing above AL 16 — so the granularity of PDCCH link adaptation is a factor of two, against the roughly 0.5 dB steps a PDSCH MCS table offers.

QPSK, always

PDCCH is modulated with QPSK and only QPSK TS 38.211 cl. 7.3.2.4. The reason is structural rather than conservative: there is no channel feedback loop for control. The CSI reporting framework produces CQI describing a hypothetical PDSCH, measured on CSI-RS, at a PDSCH-like code rate; nothing in it describes what a UE can decode in a CORESET, and there is no PDCCH-ACK for an outer loop to integrate. A gNB choosing 16QAM for PDCCH would be guessing, and the penalty for guessing wrong is not a retransmission — it is a UE that never learns it was scheduled. So the modulation is fixed at the one that works worst-case, and all the adaptation there is lives in the aggregation level.

💡
Key point

The gNB is not completely blind: reported CQI says something about the channel, and DTX says a PDCCH was probably missed, and most schedulers use both — a CQI-driven aggregation level with a DTX-driven bump upwards. But neither is a measurement of PDCCH decodability, and the second only fires after the failure. The companion 34 Link Adaptation §11 covers what happens when DTX is fed into the PDSCH outer loop instead: a PDCCH problem converted into a link-adaptation problem, which is a common misdiagnosis.

7.3 Questions 3 and 4, deferred with a summary

PDCCH's mapping and discovery own documents of their own. The summary: coded bits go to the CCEs of one CORESET — a configured set of PRBs and 1 to 3 symbols — with the CCE-to-REG mapping either non-interleaved or interleaved for frequency diversity; and the UE finds its DCI by trying candidates derived from a hashing function over those CCEs, at each configured aggregation level, in each monitoring occasion of each search space. The companion 30 CORESET and Search Space owns the structure; 31 PDCCH Blind Decoding owns the candidate arithmetic, the budgets and the overbooking rules.

8. PDCCH: Aggregation Levels and the Code Rates They Buy

Since aggregation level is the only rate control PDCCH has, it is worth seeing exactly what it buys. Take a realistic DCI format 1_1 payload of 45 bits — a 100-PRB BWP, type 1 frequency allocation, one codeword, up to 4 layers — so K = 45 + 24 = 69 bits after CRC:

ALCCEsREGsData REsCoded bits ECode rate for K = 69Coding gain over AL 1What it is for
116541080.639A UE with an excellent channel, or a small DCI in a lightly loaded cell. Cheapest possible.
22121082160.3193.0 dBThe commonest choice in mid-cell conditions
44242164320.1606.0 dBCell edge, and the usual default for a UE whose channel is unknown
88484328640.0809.0 dBDeep cell edge, initial access, or after a DTX-driven escalation
16169686417280.04012.0 dBThe floor of coverage. Sixteen CCEs is a large fraction of a typical CORESET — often the whole of CORESET#0.

Table 10. What each aggregation level costs and buys, for a 45-bit DCI. The coding-gain column is the theoretical repetition gain (10·log₁₀ of the bit ratio) and is an upper bound: real Polar gain flattens at very low rates because the mother code is capped at N = 512 and everything below that rate is repetition.

🧮
Worked calculation

Two aggregation levels, worked properly. Same 45-bit DCI, K = 69.

AL 2. E = 216. Polar mother code size from TS 38.212 cl. 5.3.1: ⌈log₂ 216⌉ = 8, and the condition E ≤ (9/8)·2⁷ = 144 fails, so n₁ = 8; n₂ = ⌈log₂(K / R_min)⌉ = ⌈log₂(69 × 8)⌉ = ⌈log₂ 552⌉ = 10; n = max(min(8, 10, 9), 5) = 8, so N = 256.

E = 216 < N = 256 → the codeword is punctured by 40 bits.

Effective code rate = 69 / 216 = 0.319.

AL 8. E = 864. ⌈log₂ 864⌉ = 10, capped by n_max = 9, so N = 512.

E = 864 > N = 512 → the codeword is repeated: 352 of the 512 bits are sent twice.

Effective code rate = 69 / 864 = 0.080.

The important consequence. From AL 8 to AL 16 the bit count doubles again — E = 1728 against the same N = 512 mother code, so every bit is sent at least three times and 192 of them four times. That is pure repetition gain, about 3 dB, with no additional coding gain at all. AL 16 is worth roughly 3 dB over AL 8, not the 3 dB of coding gain the bit ratio suggests plus a coding bonus — the Polar code has run out of mother codeword to give.

That last point is easy to miss and it has a practical edge. Escalating from AL 8 to AL 16 doubles the CCE consumption — often consuming an entire CORESET for one UE — in exchange for about 3 dB. If a UE needs more than AL 8 there is usually a better answer available: PDCCH repetition across two linked candidates (Rel-17), a beam change, or accepting that the UE is out of coverage and letting radio link monitoring handle it. The companion 16 RLM and RLF owns that last path.

9. PBCH: the Channel Nobody Schedules

The Physical Broadcast Channel carries the BCH transport channel, and BCH carries exactly one thing: the MIB. Nothing else has ever ridden on it and nothing else ever will, because PBCH's size is fixed at 32 payload bits by the specification and there is no mechanism to change it. Every other system information message travels on PDSCH.

9.1 Questions 1 and 2: 32 bits, and what happens to them

StageBitsClauseDetail
MIB from RRC24TS 38.331 BCCH-BCH-Message23 bits of MIB plus the one-bit BCCH-BCH-MessageType choice. Contents — systemFrameNumber (6 of the 10 SFN bits), subCarrierSpacingCommon, ssb-SubcarrierOffset, dmrs-TypeA-Position, pdcch-ConfigSIB1, cellBarred, intraFreqReselection, spare — belong to the companion 18 MIB and SIB1 IEs.
PHY-generated additions+8TS 38.212 cl. 7.1.1The 4 least significant bits of the SFN, the half-frame bit, and either the 3 most significant bits of the SSB index (when L_max = 64) or one bit of ssb-SubcarrierOffset plus 2 spare bits. These bits exist only on the air — RRC never sees them.
Payload interleaving and first scrambling32cl. 7.1.1, 7.1.2Scrambled with a sequence initialised from N_ID_cell, with a sequence offset selected by two bits of the SFN — so identical MIB content produces four different payloads across a 40 ms window. The bits the UE can already infer from the SSB it just found are left unscrambled, because scrambling them with a sequence keyed on themselves would be circular.
CRC24C+24 = 56cl. 7.1.3A full 24-bit CRC on a 32-bit payload — 43 % overhead, and it is the correct choice, because a false MIB accept is catastrophic and there is no higher layer to catch it.
Polar encoding512cl. 7.1.4, cl. 5.3.1K = 56, N = 512, always. No adaptation, no format variants.
Rate matching864cl. 7.1.5E = 864, always. The codeword is repeated — 352 of the 512 bits are sent twice.
Second scrambling864TS 38.211 cl. 7.3.3.1Sequence initialised from N_ID_cell, offset selected by the 2 or 3 least significant bits of the SSB index. This is what makes each SSB in the burst distinguishable.
QPSK432 symbolsTS 38.211 cl. 7.3.3.2Mapped into the SSB's PBCH resource elements

Table 11. Every step, with the bit count carried through. The effective code rate is 56 / 864 = 0.065 — fifteen times more coded bits than information bits, which is the lowest rate anything in NR is ever transmitted at, and it is fixed.

💡
Key point

Notice that PBCH is scrambled twice, with two different keys, for two different reasons. The first scrambling is keyed on the SFN, so a UE that has combined several PBCH receptions across a 40 ms period gets a different descrambling for each and can therefore work out which 40 ms window it is in. The second is keyed on the SSB index, so a UE receiving PBCH from two different beams of the same cell can tell them apart — and, crucially, can combine repetitions of the same beam while rejecting the others. The two scramblings together are how a UE derives timing it was never explicitly told.

9.2 Question 3: mapping into the SSB

Figure 7. PBCH's resource elements, exactly TS 38.211 Table 7.4.3.1-1. Symbols 1 and 3 are all PBCH across the full 240 subcarriers; symbol 2 gives its centre 127 subcarriers to SSS and keeps 48 at each edge. Total 576 REs, of which every fourth is PBCH DMRS — 144 DMRS, 432 data, 864 QPSK bits. Note that symbol 0 contains no PBCH at all.

9.3 Question 4: how the receiver knows it is there — and does not

There is no grant, no search space, no monitoring occasion and no configuration. The UE finds PSS by correlating against three known sequences at every candidate position on the synchronisation raster; PSS gives it symbol timing and one third of the cell identity; SSS, at a fixed offset from PSS, gives the rest; and PBCH is then at a known position relative to PSS. The candidate SSB positions within a half-frame follow the SSB case (A to E) implied by the band and subcarrier spacing — the companion 02 Radio Frame Structure owns the raster, the cases and the burst-set structure.

PBCH demodulates against PBCH DMRS, which is one resource element in four with a frequency shift v = N_ID_cell mod 4 — so the DMRS position itself carries two bits of cell identity, and a UE that has SSS has everything it needs to generate the sequence. See the companion 33 DMRS §15.

9.4 What the absence of scheduling costs

Adaptation mechanismAvailable to PDSCHAvailable to PBCHConsequence
Modulation choice5 optionsNone — QPSKPBCH is transmitted at the modulation for the worst UE in the cell, always, including to the UE standing under the antenna
Code rate choice29 MCS indicesNone — 0.065, fixedThe 15× redundancy is paid for on every SSB in every burst, forever
Bandwidth choice1–275 PRBNone — 20 PRBPBCH cannot be widened for coverage; the only lever is beam gain
HARQUp to 16 processes with incremental redundancyNone whatsoeverA failed PBCH is simply failed. The UE waits for the next burst — 5, 10, 20, 40, 80 or 160 ms.
BeamformingPer-UE precodingPer-SSB beam sweepThis is PBCH's only adaptation: the burst sweeps beams, and a UE in one beam's coverage gets that beam's gain

Table 12. PBCH against PDSCH, adaptation mechanism by adaptation mechanism. The bottom row is the exception that makes the rest tolerable: an SSB burst is a beam sweep, and beam gain in FR2 is worth 15–25 dB, which is a great deal more than any coding choice would have been.

🧮
Worked calculation

The price of PBCH's rigidity is paid in overhead on every cell in the network, forever. An 8-beam FR1 burst at 20 ms periodicity occupies 8 × 4 = 32 symbols and 20 PRB every 20 ms. Against a 100-PRB carrier at 30 kHz — 40 slots of 14 symbols and 100 PRB in 20 ms — that is 32 × 20 / (560 × 100) = 1.14 % of the entire cell's resources, carrying 24 bits of RRC content per SSB. It is the least efficient transmission in the system by four orders of magnitude, and it is correct, because it is the transmission that makes every other transmission possible.

10. PUSCH: the Same Machinery, Two Waveforms

The Physical Uplink Shared Channel carries UL-SCH, and it may also carry UCI multiplexed alongside the transport block. Its coding chain is the downlink chain of §4 and §5 with the clause numbers changed — same CRC rule, same base graph rule, same segmentation, same LDPC, same circular buffer, same interleaver, same scrambling structure TS 38.212 cl. 6.2. The differences are all downstream of the encoder, and they exist for one reason: the transmitter is battery powered and its power amplifier is small.

10.1 The one structural difference: waveform

PUSCH can be transmitted as CP-OFDM, exactly like the downlink, or as DFT-s-OFDM, in which the modulation symbols are passed through a DFT of the allocation's width before the IFFT. The second is what LTE called SC-FDMA. Selection is by transformPrecoder in PUSCH-Config (enabled / disabled, absent meaning disabled), or by msg3-transformPrecoder in RACH-ConfigCommon for the Msg3 PUSCH that precedes any dedicated configuration.

CP-OFDMDFT-s-OFDM (transform precoding enabled)
What it isThe downlink waveform, used in reverseOne extra DFT across the allocated subcarriers before the IFFT, spreading each modulation symbol across the whole allocation
PAPR / cubic metricHigh — 8–9 dB PAPR typical for QPSK2–3 dB lower, and lower still with π/2-BPSK. That is 2–3 dB of transmit power the UE gets back at the point where it is power-limited.
Frequency allocationType 0 (bitmap) or type 1 (contiguous)Type 1 only. The DFT is over one contiguous block; a bitmap allocation is meaningless.
Frequency-selective scheduling within the allocationYesNo. Every modulation symbol is spread across every allocated subcarrier, so a deep notch in the allocation damages every symbol equally instead of a few of them.
Spatial layersUp to 4 (Rel-15/16), 4 with 8 Tx in Rel-18One layer only. No spatial multiplexing.
Modulation setQPSK, 16QAM, 64QAM, 256QAMπ/2-BPSK (if tp-pi2BPSK is configured), QPSK, 16QAM, 64QAM, 256QAM
DMRSType 1 or type 2, with the full CDM machineryType 1 only, and the sequences are low-PAPR sequences rather than the Gold-sequence-derived ones — see the companion 33 DMRS §14
When you want itAnywhere the UE has power headroom: mid-cell and cell-centre, and anywhere MIMO is worth havingThe cell edge, and any coverage-limited deployment. Also the default for Msg3 in many configurations.

Table 13. The waveform trade in full. Rows three, four and five are the price: DFT-s-OFDM buys 2–3 dB of link budget by giving up non-contiguous allocation, intra-allocation frequency selectivity and MIMO entirely.

💡
Key point

The trade only makes sense where it is offered. At the cell edge the UE is power-limited, so 2–3 dB of PAPR headroom converts directly into 2–3 dB of received SINR — and a UE at the edge has rank 1 anyway and is allocated a narrow contiguous block anyway, so the three things it gave up were things it did not have. At the cell centre the UE is not power-limited, the 2–3 dB is worth nothing, and the lost MIMO is worth a factor of two or four. transformPrecoder is therefore a coverage-versus-capacity switch, and it is semi-static — it cannot be changed per grant, only by reconfiguration or a BWP switch.

⚠️
Common pitfall

A cell configured with transformPrecoder = enabled on the only uplink BWP will show a uniform, unremarkable-looking uplink: healthy PUSCH BLER, sensible MCS distribution, decent edge coverage — and uplink peak throughput capped at roughly a quarter of what the hardware can do, because no UE anywhere in the cell will ever use more than one layer. The fingerprint is a maximum observed uplink layer count of exactly 1 across every UE in the cell, including UEs reporting excellent power headroom. Check transformPrecoder before concluding that the UEs do not support uplink MIMO.

11. PUSCH: Precoding, Hopping, and What Else Rides On It

11.1 Codebook and non-codebook transmission

With CP-OFDM and more than one antenna, the UE has to know which precoder to apply. NR offers two answers, selected by txConfig in PUSCH-Config:

codebooknonCodebook
Who chooses the precoderThe gNBThe UE, from a downlink measurement
What the DCI carriesAn SRI selecting an SRS resource (hence a beam), plus a TPMI selecting a precoder from the configured codebook, plus a rankAn SRI selecting one or more SRS resources; each selected resource is a precoder the UE already applied when it sent that SRS
SRS usage valuecodebook — one SRS resource per antenna portnonCodebook — up to 4 resources, each a candidate precoder
Codebook restrictioncodebookSubset: fullyAndPartialAndNonCoherent, partialAndNonCoherent or nonCoherent, bounded by the UE's coherence capabilityNone
Requires downlink/uplink reciprocityNoYes — the UE derives its precoder from associatedCSI-RS, which only works if the two directions are reciprocal, so in practice TDD only
Where it fitsFDD, and any TDD deployment where the gNB does not trust reciprocityTDD with a well-calibrated array; the usual choice for higher-order uplink MIMO

Table 14. txConfig decides who owns the uplink precoder. In both cases the evidence is SRS — the difference is which end draws the conclusion from it. Note that non-codebook mode makes the uplink precoder depend on a downlink measurement, which is why a stale associatedCSI-RS shows up as an uplink problem.

11.2 Frequency hopping

PUSCH may hop in frequency, either inter-slot (each slot's allocation sits at a different offset) or intra-slot (the allocation splits in two halves at different offsets within one slot). frequencyHopping in PUSCH-Config selects the mode and frequencyHoppingOffsetLists gives one, two or four candidate offsets, of which the DCI selects one. The second hop starts at (RB_start + RB_offset) mod N_BWP.

Hopping is a diversity mechanism, and it is worth being clear about what it does and does not do. It does not improve the average SINR. What it does is guarantee that a UE with a narrow allocation and no channel knowledge is not parked in a fade for the whole transmission — which matters enormously for the one PUSCH nobody has any channel knowledge about, Msg3, and for repetition-based coverage enhancement where the whole point is to accumulate energy across independent channel realisations. On a wide allocation it is close to pointless, because the allocation already spans several coherence bandwidths.

11.3 UCI multiplexed onto PUSCH, and the beta offsets

If a UE has UCI to send in a slot where it also has a PUSCH, it normally does not send both — it multiplexes the UCI into the PUSCH TS 38.213 cl. 9.2.5. HARQ-ACK of one or two bits punctures the PUSCH: it overwrites resource elements the transport block was going to use, and the transport block is not told. Anything larger is rate-matched around: the UCI's resource elements are excluded from the PUSCH mapping, and the transport block's rate matching accounts for them.

How many resource elements the UCI takes is decided by the beta offsets, and the mechanism is worth understanding because it is the one place where a configuration value directly trades control reliability against data throughput:

Resource determination for UCI multiplexed on PUSCH
For HARQ-ACK on PUSCH (TS 38.212 cl. 6.3.2.4.1.1), the number of
coded modulation symbols Q'_ACK is

                 (O_ACK + L_ACK) * beta_offset^HARQ-ACK * sum(M_sc)
  Q'_ACK = min( ceil( --------------------------------------------- ),
                            R * Q_m * sum(M_sc,all)
                 ceil( alpha * sum(M_sc,all) ) )

  O_ACK        HARQ-ACK payload bits
  L_ACK        its CRC (0, 6 or 11 bits by payload size)
  beta_offset  from betaOffsetACK-Index1/2/3 in UCI-OnPUSCH
  R, Q_m       the PUSCH's own code rate and modulation order
  alpha        scaling, one of 0.5, 0.65, 0.8, 1.0 -- a hard ceiling
               on the fraction of the PUSCH the UCI may consume

Listing 5. Read the numerator: the UCI's resource cost scales with the PUSCH's own code rate and modulation order. A UCI carried on a 256QAM PUSCH at R = 0.8 gets fewer resource elements than the same UCI on a QPSK PUSCH at R = 0.2, because the beta offset expresses a target relative to the data — the intent being that UCI is always some fixed factor more reliable than the transport block it rides with.

Field in UCI-OnPUSCHWhat it scalesIndex rangeWhat happens if it is too small
betaOffsetACK-Index1HARQ-ACK of up to 2 bits0 … 31The ACK is carried on too few REs and the gNB mis-decodes it. A mis-decoded ACK is worse than a missing one: it can be read as an ACK for a block that failed, which loses the block permanently and hands it to RLC.
betaOffsetACK-Index2 / -Index3HARQ-ACK of 3–11 bits, and of more than 11 bits0 … 31As above. -Index2 covers the range a carrier-aggregation codebook usually lands in.
betaOffsetCSI-Part1-Index1/2CSI part 10 … 31The CSI report is mis-decoded, and the inner link-adaptation loop runs on a corrupt CQI
betaOffsetCSI-Part2-Index1/2CSI part 20 … 31Part 2 is the omittable part. If the resources do not stretch, the UE drops part 2 progressively TS 38.212 cl. 6.3.2.1.2 — legally, silently, and the gNB gets a subband report with subbands missing.
scaling (α)A ceiling on the whole UCI allocationf0p5, f0p65, f0p8, f1With α = 0.5 the UCI can never take more than half the PUSCH, no matter what the beta offsets say. This is the protection against a large UCI starving the transport block entirely.

Table 15. UCI-OnPUSCH field by field. The betaOffsets choice can be semiStatic (one set) or dynamic (four sets, with a 2-bit DCI field selecting one) — the dynamic form lets a scheduler raise UCI reliability for the grants where it matters.

⚠️
Common pitfall

The CSI part 2 omission rule in the fifth row is one of the most confusing behaviours in the uplink, because nothing fails. The UE computes how many resource elements the full report needs, finds it exceeds what the beta offset and α allow, and drops part 2 subband information one priority level at a time until it fits. The PUSCH decodes, the CRC passes, the part 1 report is perfect, and the subband CQI the scheduler was relying on for frequency-selective scheduling is simply not there. Look for CSI reports whose part 2 content varies with the PUSCH allocation size rather than with anything about the radio channel.

11.4 What else PUSCH carries

Two more things ride on PUSCH and are easy to forget. Msg3 is a PUSCH, scheduled by the RAR's uplink grant, with no CSI, no SRS, no outer loop and often a different waveform from every other PUSCH in the cell — the companion 03 Random Access owns it. And MsgA PUSCH, the Rel-16 two-step payload, is transmitted on a configured occasion with no grant at all: the only ungranted PUSCH in the system. The MAC control elements inside a normal transport block belong to the companion 10 BSR, PHR and SR.

12. PUCCH: Why There Have To Be Five Formats

The Physical Uplink Control Channel carries uplink control information and nothing else: HARQ-ACK, scheduling requests, and CSI reports. Like PDCCH it has no transport channel above it. Unlike every other physical channel, it has five mutually incompatible formats, and the reason is a two-dimensional problem that no single design covers.

Dimension one is payload. A HARQ-ACK for a single PDSCH is one bit. A Type-1 HARQ-ACK codebook across eight carriers with code-block-group feedback can exceed a hundred. A Type II CSI report with subband information can exceed four hundred. That is a range of nearly three orders of magnitude.

Dimension two is coverage. The UE sending that one bit might be under the antenna with 20 dB of power headroom, or at the cell edge transmitting at maximum power into a 130 dB path loss. A design that reaches the edge must spend many symbols accumulating energy; a design that serves the cell centre should spend as few as possible so the resource can be reused.

No one structure spans both. So NR has five, and each is the answer to one corner of the space:

Figure 8. The five formats drawn to the same slot. The two short formats sit at the end of the slot because that is where an ACK for this slot's PDSCH can go; the three long formats start earlier because they need the symbols. Note that format 1 spends half its symbols on DMRS and format 0 spends none — the difference between demodulating a payload and merely detecting which sequence arrived (§13).
Format 0Format 1Format 2Format 3Format 4
Symbols1 or 24 to 141 or 24 to 144 to 14
PRBs111 to 161, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15 or 161
Payload (UCI bits)1 or 21 or 2more than 2more than 2, up to a few hundredmore than 2, moderate
Waveformsequence onlyCP-OFDMCP-OFDMDFT-s-OFDMDFT-s-OFDM
Codingnone — sequence selectionBPSK or QPSK, then spreading, no channel codeReed–Muller (≤ 11 bits) or Polar (> 11)Reed–Muller or PolarReed–Muller or Polar
DMRSnonealternate symbols — half the formatsubcarriers 1, 4, 7, 10 of every PRB — a quarter of the REs2 or 4 dedicated symbols2 or 4 dedicated symbols
Multiplexing capacity per PRBup to 6 UEs (12 cyclic shifts, 2 or 3 per UE)up to 84 (12 cyclic shifts × 7 time-domain OCC at 14 symbols)112 or 4, by occ-Length
Frequency hoppingintra-slotintra-slot or inter-slotintra-slotintra-slot or inter-slotintra-slot or inter-slot
Use caseOne ACK or an SR, cell centre, cheapest possibleOne or two ACKs at the cell edge, with many UEs sharing the PRBA CSI report or a multi-carrier ACK codebook, cell centreA large CSI report or a large ACK codebook at the edgeA moderate payload at the edge where PRBs are scarce and UEs are many

Table 16. The five formats, compared on every axis that matters. Read the multiplexing capacity row against the payload row and the design becomes obvious: capacity and payload are in direct opposition, and the formats are five points on that curve. Format 1 gets 84 UEs into one PRB by giving each of them two bits; format 3 gives one UE several hundred bits by giving it the whole resource.

13. PUCCH Format 0: Saying Something Without Coding It

Format 0 deserves its own section because it works in a way nothing else in NR does. There is no channel code, no CRC, no modulation of a payload, and no DMRS. The UE transmits a cyclic shift of a known base sequence, and the information is which shift it chose.

The base sequence is a length-12 low-PAPR sequence occupying the 12 subcarriers of one PRB. Applying a cyclic shift in the frequency domain is a phase ramp; twelve shifts are available and they are mutually orthogonal. The UE's starting shift comes from initialCyclicShift in its PUCCH resource, and it adds an offset determined by the payload TS 38.213 cl. 9.2.3:

PayloadShift offset added to initialCyclicShiftMeaning
1 bit0 for NACK, 6 for ACKTwo shifts, maximally separated in the twelve-shift space
2 bits0, 3, 9, 6 for (0,0), (0,1), (1,1), (1,0)Four shifts, evenly spaced — and note the Gray ordering, so a one-shift detection error costs one bit, not two
Positive SR only0The presence of the sequence is the scheduling request; absence is 'no request'
SR multiplexed with a 1-bit ACK0 or 3, then 1 or 4 …The combined table in TS 38.213 cl. 9.2.5.1 assigns a shift to each (ACK, SR) combination

Table 17. Format 0's payload encoding, in its entirety. The Gray ordering in the second row is the only error-protection measure the format has, and it is a good one: the commonest detection error is off-by-one in shift, and Gray ordering makes that a single-bit error.

The receiver does not demodulate. It correlates the received PRB against each of the candidate shifted sequences and takes the largest peak. That is why format 0 needs no DMRS: the sequence is its own reference signal. A matched filter does not need to know the channel phase, only that the sequence arrived.

💡
Key point

This is genuinely unlike anything else in the system and it is worth sitting with. Every other physical channel takes bits, protects them with a code, modulates them onto a carrier and asks the receiver to recover them. Format 0 takes a choice from a small set and encodes it as an identity, in exactly the way PRACH encodes a preamble index and PSS encodes a cell identity third. The result is a control channel with no coding gain, no CRC, no soft information and no way to detect an error — and it works, because with only two or four hypotheses and a matched filter over twelve subcarriers, the detection problem is easy enough that none of that machinery is needed.

Format 0 (sequence selection)Format 2 (coded, 2 bits of payload)
Resources1 PRB, 1–2 symbols1 PRB, 1–2 symbols (but format 2 is not permitted below 3 bits)
Receiver operationCorrelate against 2 or 4 hypotheses, pick the peakEstimate the channel from DMRS, equalise, demodulate, decode, check the CRC
Soft information availableThe correlation peak ratio, which is a usable confidence metricLLRs and a CRC
Error detectionNone. A wrong peak is indistinguishable from a right one.The CRC, for payloads above 11 bits
Failure modeA silently wrong ACK/NACK — the worst failure in the HARQ system, because an ACK for a failed block loses it permanentlyA detected decode failure, which the gNB can treat as DTX

Table 18. Format 0 against the coded alternative. The bottom row is the cost of the trick: format 0 cannot tell you it got it wrong. This is why many schedulers set the format 0 detection threshold conservatively and treat a marginal peak as DTX rather than as a NACK.

14. PUCCH: Resource Sets and How the UE Picks One

Nobody grants a PUCCH. The UE is configured in advance with up to four PUCCH resource sets, decides which set applies from the size of the UCI payload it has to send, and then picks a resource within that set from a field in the DCI. The whole mechanism is in TS 38.213 cl. 9.2.1 and it runs in this order:

  1. Count the UCI bits. O_UCI is the total payload — HARQ-ACK bits from the codebook, plus a scheduling request bit if one is pending, plus CSI if it is due in this slot — before any CRC.
  2. Choose the resource set. Set 0 if O_UCI ≤ 2. Otherwise the first set whose maxPayloadSize is at least O_UCI. Set 0 may hold up to 32 resources; sets 1, 2 and 3 hold up to 8 each.
  3. Choose the resource within the set. For sets 1–3, and for set 0 with 8 or fewer resources, the 3-bit PUCCH resource indicator in the scheduling DCI selects it directly. For set 0 with more than 8 resources, the PRI is combined with the CCE index of the PDCCH that scheduled the PDSCH in a formula that spreads UEs across the resources — so the PUCCH position depends on where the grant was found.
  4. Apply the resource's own configuration. Format, starting PRB, starting symbol, number of symbols, initialCyclicShift or timeDomainOCC or occ-Index, and whether intra-slot hopping applies.
  5. Before dedicated configuration exists, use pucch-ResourceCommon from ServingCellConfigCommon instead — a 4-bit index into 16 predefined configurations of formats 0 and 1, which is what carries the HARQ-ACK for Msg4 during random access.
ObjectFieldRangeWhat it decides
PUCCH-ConfigresourceSetToAddModList1 to 4 setsThe payload-size ladder. Fewer sets means coarser matching of format to payload.
PUCCH-ResourceSetpucch-ResourceSetId0 … 3Set 0 is reserved for payloads of 1–2 bits by rule, not by configuration
PUCCH-ResourceSetmaxPayloadSize4 … 256The upper payload bound for this set. Absent on the last set, which is then the catch-all.
PUCCH-ResourceSetresourceListup to 32 (set 0) or 8Which resources the PRI can select. More than 8 in set 0 triggers the CCE-index formula.
PUCCH-Resourceformat CHOICEformat0 … format4The format and its per-format parameters — symbol count, start symbol, PRB count, cyclic shift or OCC
PUCCH-FormatConfigmaxCodeRatezeroDot08zeroDot80The highest code rate the UE may use for formats 2, 3 and 4 — which is what turns a PRB count into a payload capacity (§21)
PUCCH-FormatConfignrofSlotsn1, n2, n4, n8PUCCH repetition across slots, for coverage
PUCCH-FormatConfigsimultaneousHARQ-ACK-CSItrue / absentWhether an ACK and a CSI report may share one format 2/3/4 resource, or whether the CSI is dropped

Table 19. PUCCH-Config and its children. maxCodeRate is the field most often left at a vendor default and most often worth checking: it directly bounds how much UCI a given PRB count can carry, and a low value on a set with few PRBs silently forces the UE up to the next set or into dropping CSI.

🔍
What you see in logs

The CCE-index dependency in step 3 is a real source of confusion when reading logs. With more than 8 resources in set 0, the PUCCH a UE uses for its HARQ-ACK depends on which CCE its PDCCH landed in, which depends on the blind-decode hashing function, which depends on the slot number and the RNTI. So the same UE ACKing the same PDSCH in two different slots legitimately uses two different PUCCH resources. If you are looking for a UE's ACK at a fixed PRB and not finding it, this is usually why. The companion 31 PDCCH Blind Decoding §3 has the candidate-to-CCE mapping you need to predict it.

⚠️
Common pitfall

A PUCCH-ResourceSet list whose maxPayloadSize values do not cover the largest codebook the UE can produce is a configuration that works for months and then fails on the day a second carrier is activated. The UE computes O_UCI, finds no set that accepts it, and the behaviour from there depends on the priority rules — usually CSI is dropped and the HARQ-ACK survives, but with a Type-1 codebook across many carriers the HARQ-ACK alone can exceed the largest set. Compute the worst-case codebook size for the configured carrier set and check it against the last set's maxPayloadSize — see the companions 05 HARQ §9 and 29 Carrier Aggregation.

15. PRACH: the Channel With No Coding At All

The Physical Random Access Channel is included here for one reason: without it the comparison in §16 has a hole in it. The procedure — preamble groups, RA-RNTI derivation, the four-step and two-step variants, preambleTransMax, the backoff, ra-ResponseWindow, the contention resolution — belongs entirely to the companion 03 Random Access, and is not repeated. What belongs here is the encoding and mapping, because PRACH is the one physical channel that does neither in the usual sense.

The five questionsPRACH's answer
What does it carry?A preamble index, 0 to 63, and nothing else. There is no transport block, no payload and no field structure. Even the index is not transmitted as a number — it selects which sequence is sent. (Two-step RACH adds a MsgA PUSCH alongside, but that is a PUSCH, not part of PRACH.)
How is it coded?It is not. No CRC, no channel code, no rate matching, no scrambling, no modulation of a payload. The transmitted signal is a cyclic shift of a Zadoff–Chu sequence of length 839 (long formats) or 139 (short formats), derived from a root sequence chosen by prach-RootSequenceIndex TS 38.211 cl. 6.3.3.1.
How is it mapped to resource elements?Onto a configured occasion whose time and frequency position comes from prach-ConfigurationIndex, msg1-FrequencyStart and msg1-FDM — at its own subcarrier spacing (1.25 or 5 kHz for long formats, 15 to 120 kHz for short ones), which is the only place in NR where a channel uses a numerology unrelated to the carrier's.
How does the receiver know it is there?It does not. The gNB correlates every configured occasion against all 64 candidate sequences, continuously, whether or not any UE is expected. PRACH detection is the only always-on receive operation in the gNB.
What happens when it fails?Nothing observable at the gNB — an undetected preamble is silence. The UE detects the failure by ra-ResponseWindow expiring, ramps its power by powerRampingStep and retries, up to preambleTransMax.

Table 20. PRACH through the five-question frame. Every answer is the degenerate case, and that is exactly why it belongs in the comparison: it establishes the floor of what a physical channel can be and still be called one.

💡
Key point

The reason PRACH has no coding is the same reason PUCCH format 0 has none, taken to its limit. Coding requires the receiver to know where and when the codeword is, to within a fraction of a symbol. A UE performing initial access knows the downlink timing but has no timing advance at all, so its transmission arrives with an unknown delay of up to twice the propagation time — hundreds of microseconds in a large cell. A Zadoff–Chu sequence with a long cyclic prefix and a guard period tolerates that, because a correlation peak at an unknown position is still a correlation peak, and its position is the measurement the gNB wants — it is how the timing advance in the RAR is produced. See the companion 04 Timing Advance.

16. The Master Comparison

This is the section to come back to. Everything above, condensed to one row per channel. It is split into three tables rather than one because thirteen columns do not fit on a page anybody can read — but the row order is identical in all three, so they read as one table three screens wide.

16.1 Identity: what it is and who it is for

ChannelDirectionWhat it carriesTransport channel aboveAddressed by
PDSCHDownlinkUser data, RRC signalling, system information beyond the MIB, paging records, MAC control elementsDL-SCH, PCHThe RNTI of the scheduling DCI: C-RNTI, CS-RNTI, MCS-C-RNTI, TC-RNTI, SI-RNTI, RA-RNTI, P-RNTI
PDCCHDownlinkDCI only — scheduling assignments, grants, slot format, TPC, pre-emption, cancellationNoneThe RNTI, XORed into the last 16 bits of the CRC. There is no addressee field.
PBCHDownlinkThe MIB (24 bits) plus 8 PHY-generated bitsBCHNobody. It is a cell-wide broadcast; the only identity in it is N_ID_cell in the scrambling.
PUSCHUplinkUser data, RRC signalling, MAC control elements, and UCI when multiplexedUL-SCHThe RNTI of the granting DCI: C-RNTI, CS-RNTI, MCS-C-RNTI, TC-RNTI, SP-CSI-RNTI for a semi-persistent CSI report
PUCCHUplinkUCI only — HARQ-ACK, scheduling request, CSINoneImplicitly, by the resource the UE was configured with. Formats 2/3/4 scramble with C-RNTI; formats 0/1 identify the UE by cyclic shift and OCC.
PRACHUplinkA preamble index, 0–63RACHNobody yet — that is the point. The occasion and preamble index together produce the RA-RNTI the response is addressed to.

Table 21. Identity. The two None entries in the transport-channel column are the structural fact worth memorising: PDCCH and PUCCH are the two channels whose contents were created by the physical layer's own control plane and never passed through MAC as a transport block.

16.2 Coding: how the bits are protected

ChannelCodeCRCModulation setScrambling identityDMRS
PDSCHLDPC, BG1 or BG2 by size and rateCRC24A (A > 3824) or CRC16, plus CRC24B per code block when C > 1QPSK, 16QAM, 64QAM, 256QAM, 1024QAM (Rel-17)dataScramblingIdentityPDSCH (0–1023), or N_ID_cell for fallback and common-search-space grantsConfigurable: type 1 or 2, 1–4 additional positions, scramblingID0/1
PDCCHPolar, N = 32 to 512CRC24C, RNTI-maskedQPSK onlypdcch-DMRS-ScramblingID (0–65535) or N_ID_cellFixed: 3 REs per REG, subcarriers 1, 5, 9, same scrambling ID
PBCHPolar, K = 56, N = 512, fixedCRC24CQPSK onlyN_ID_cell only — twice, once keyed on the SFN and once on the SSB indexFixed: 1 RE in 4, shift v = N_ID_cell mod 4
PUSCHLDPC, BG1 or BG2 — identical rule to PDSCHCRC24A or CRC16, plus CRC24B per code blockπ/2-BPSK (DFT-s-OFDM only), QPSK, 16QAM, 64QAM, 256QAM. No 1024QAM.dataScramblingIdentityPUSCH (0–1023) or N_ID_cellType 1 or 2 with CP-OFDM; type 1 with low-PAPR sequences under transform precoding
PUCCHFormats 0/1: none. Formats 2/3/4: Reed–Muller (≤ 11 bits) or Polar (> 11).None below 12 bits; 6-bit CRC for 12–19 bits; 11-bit CRC aboveFormats 0/1: sequence and BPSK/QPSK spreading. Formats 2/3/4: QPSK, or π/2-BPSK on 3/4.dataScramblingIdentityPUSCH or N_ID_cell — PUCCH borrows PUSCH's identityFormat 0: none. Format 1: alternate symbols. Format 2: subcarriers 1, 4, 7, 10. Formats 3/4: 2 or 4 symbols.
PRACHNoneNoneNone — a Zadoff–Chu sequence is transmitted, not a constellationprach-RootSequenceIndex selects the root; there is no scramblingNone — the preamble is its own reference signal

Table 22. Coding. Read the CRC column top to bottom and the design philosophy is visible: 24 bits where an undetected error is unrecoverable, 16 where a higher layer will catch it, 6 or 11 where the payload is tiny, and none at all where there is no payload to check.

16.3 Behaviour: footprint, protection, and how it fails

ChannelTime-frequency footprintHARQ?Link-adapted?Characteristic failure signature
PDSCH1–14 symbols × 1–275 PRB, anywhere in the DL BWP, contiguous or a resource-block-group bitmapYes — up to 16 processes, incremental redundancy, 4 RVsFully — 29 MCS indices, 1–8 layers, two closed loopsA NACK. Distinguishing a coding failure from a DMRS failure from a wrong-RV failure is §19.1.
PDCCH1–3 symbols × AL × 6 PRB, inside one CORESET, contiguous or interleaved REG bundlesNo. The grant may be reissued; that is not HARQ.Barely — 5 aggregation levels, 3 dB apart, on a proxy inputSilence. No DCI decoded, therefore no PDSCH received, therefore no HARQ-ACK sent. The gNB sees DTX and cannot tell why.
PBCH3 of the SSB's 4 symbols × 20 PRB, at a position fixed by the synchronisation rasterNoNot at allThe UE cannot use the cell. It may still measure and report it — SSS gives RSRP without PBCH — so the cell appears healthy in measurement reports and is never selected or handed over to.
PUSCH1–14 symbols × 1–275 PRB in the UL BWP; contiguous only under transform precodingYes — same process count, no explicit feedback channel; the grant's NDI is the feedbackFully, on the gNB's own SRS and DMRS measurementsA CRC failure at the gNB with three indistinguishable causes: the UE never got the grant, the UE got it and could not transmit (LBT, power), or the UE transmitted and it did not decode.
PUCCH1–14 symbols × 1–16 PRB, normally at a band edge; position derived from a configured setNoOnly through nrofSlots repetition and the format choiceA format mismatch produces a decode of the wrong hypothesis. Beta-offset starvation on PUSCH-multiplexed UCI silently drops CSI part 2.
PRACH1–12 preamble repetitions on a configured occasion, 6 PRB (short formats) at its own subcarrier spacingNoPower ramping only, which is not link adaptationSilence at the gNB. The UE times out on ra-ResponseWindow, ramps power and retries.

Table 23. Behaviour. The two right-hand columns are the payoff of the whole document: the amount of adaptation a channel gets and the clarity of its failure signature move together, and both are set by how the receiver finds it (§2).

💡
Key point

Three patterns in these tables are worth naming, because once you see them the whole air interface becomes easier to reason about.

One: the two channels with no transport channel above them are the two with no HARQ. DCI and UCI are the control plane of the physical layer; they cannot be retransmitted because the thing that would schedule the retransmission is what failed.

Two: modulation richness tracks feedback availability exactly. PDSCH has five constellations and two feedback loops. PDCCH and PBCH have one constellation and no loop. PUSCH has four and one loop, on the gNB's own measurements.

Three: every silent failure is on a channel whose CRC the transmitter never sees. A PDSCH failure is announced by a NACK; a PDCCH failure, a PRACH failure and a format 0 misdetection are announced by nothing.

17. The Shared Steps, and Why They Are Shared

Five of the six channels run through three of the same steps, and the reasons are not the obvious ones.

17.1 The CRC does two jobs, and the second one is addressing

Every coded physical channel appends a CRC, and in every case its first job is error detection. In two cases it has a second job:

On PDSCH and PUSCH that is all it does — the addressing lives in the scrambling and in the DCI's RNTI. On PDCCH the CRC is also the address, so a pass means "correct and mine" and a fail means "corrupt or somebody else's". On PBCH it is also the hypothesis test: the UE does not know the SSB index or the SFN when it starts, so it descrambles one hypothesis at a time and the CRC is what confirms which one was right (§22.3). And on PUCCH there is no CRC at all below 12 bits, which means the commonest UCI payloads in the system have no error detection whatsoever.

17.2 Scrambling randomises interference, and only that

Scrambling adds no coding gain, no error detection and no security. Its purpose is to make the interference a neighbouring cell presents look like noise rather than like structure. Two effects follow, and both matter operationally. First, two cells transmitting the same bits on the same resources with different scrambling identities do not produce a coherent, correlated interference pattern that a receiver might lock onto. Second — and this is the effect a test engineer sees — a receiver descrambling with the wrong identity gets uniformly random bits, so the CRC fails with certainty rather than with high probability. A scrambling identity mismatch is a 100 % failure, not a degradation, and that binary quality is the fastest way to recognise it (§19.6).

17.3 Two codes, and where the boundary is

NR uses LDPC for transport blocks and Polar for control. This was one of the most argued decisions in Rel-15 and the outcome has three justifications, of which only one is about error-rate performance.

Figure 9. The performance half of the argument. The curve shapes are representative of published finite-blocklength results and the values are illustrative, not measurements. What is solid is the ordering: Polar is materially better below about a thousand bits and LDPC is materially better above it, and the two shaded bands show that NR's control payloads and NR's transport blocks sit cleanly on opposite sides of that crossover.
ArgumentFavoursDetail
Short-block error performancePolarAt 12 to 200 information bits — the DCI and small-UCI range — a Polar code with successive-cancellation list decoding sits closer to the finite-blocklength bound than any LDPC code with a usable graph. LDPC needs a few hundred variable nodes before its iterative decoder has anything to iterate on.
Long-block error performanceLDPCAbove a few thousand bits LDPC is at least as good and its performance keeps improving with length, while Polar's list decoder would need an impractically long list to keep pace.
Decoder throughputLDPC, decisivelyAn LDPC decoder is massively parallel — every check node in a layer updates at once — and reaches tens of gigabits per second in silicon. Successive-cancellation decoding is inherently sequential: bit i's decision depends on bits 0…i−1. At 20 Gbit/s peak downlink this is not a preference, it is the only option.
Rate flexibility for HARQLDPC, decisivelyRate matching from a circular buffer with four redundancy versions needs a rate-compatible code whose parity can be read incrementally. LDPC's mother codeword provides exactly that. Polar has no natural incremental-redundancy structure, which is fine for a channel with no HARQ — and PDCCH and PBCH have none.

Table 24. Why two codes. Note that the two decisive arguments are both implementation arguments rather than error-rate arguments. The performance crossover made the split defensible; decoder throughput and HARQ rate compatibility made it necessary.

📘
Spec detail

There is a third code in NR that gets forgotten: Reed–Muller, used for UCI payloads of 3 to 11 bits TS 38.212 cl. 5.3.3, plus simple repetition for 1 bit and a small block code for 2. Polar is not used below 12 bits because at those lengths the CRC would dominate the payload and a block code with an exhaustive maximum-likelihood decoder — 2¹¹ = 2048 hypotheses, trivial in hardware — is simply better. So NR actually has five coding regimes: repetition, small block codes, Reed–Muller, Polar and LDPC, in ascending block length.

18. Parameter and Configuration Reference

The fields that determine what each physical channel is, as opposed to when it is scheduled. Timing fields — k0, k1, k2, the TDRA tables — belong to the companions 32 SLIV and 05 HARQ; CORESET and search-space fields belong to 30 CORESET and Search Space.

FieldObjectRangeTypicalWhat it decides
dataScramblingIdentityPDSCHPDSCH-Config0 … 1023the PCI, or a planned valueThe PDSCH scrambling identity for UE-specific grants. A mismatch is a 100 % decode failure (§19.6).
mcs-TablePDSCH-Configqam256 / qam64LowSE / absentqam256 on FR1Which MCS table the 5-bit DCI field indexes
resourceAllocationPDSCH-ConfigresourceAllocationType0 / Type1 / dynamicSwitchType1Bitmap, RIV, or a 1-bit DCI field choosing between them
xOverheadPDSCH-ServingCellConfigxOh6 / xOh12 / xOh18 / absentxOh6 where CSI-RS is denseThe N_oh term in the TBS formula. Zero in a cell with real overhead inflates every effective code rate (§6.1).
rateMatchPatternToAddModListServingCellConfig or PDSCH-Configup to 4 patternsabsent, or LTE CRS under DSSResource elements PDSCH must skip regardless of anything else
transformPrecoderPUSCH-Configenabled / absentabsent on macro FR1CP-OFDM or DFT-s-OFDM — the single most consequential uplink field (§10)
txConfigPUSCH-Configcodebook / nonCodebookcodebook on FDDWho computes the uplink precoder (§11.1)
maxRankPUSCH-Config1 … 41 or 2The uplink layer ceiling. Forced to 1 under transform precoding.
dataScramblingIdentityPUSCHPUSCH-Config0 … 1023the PCIPUSCH scrambling, and PUCCH format 2/3/4 scrambling
betaOffsets / scalingUCI-OnPUSCHsemiStatic or dynamic; α ∈ {0.5, 0.65, 0.8, 1}semiStatic, α = 1How many resource elements multiplexed UCI takes (§11.3)
resourceSetToAddModListPUCCH-Config1 … 4 sets3 or 4 setsThe payload-size ladder that picks a format (§14)
maxCodeRatePUCCH-FormatConfigzeroDot08zeroDot80zeroDot25The PUCCH format 2/3/4 code-rate ceiling, hence the payload a given PRB count can carry (§21.4)
pucch-ResourceCommonPUCCH-ConfigCommon0 … 150 … 3The pre-dedicated PUCCH configuration used for the Msg4 HARQ-ACK
prach-RootSequenceIndexRACH-ConfigCommon0 … 837 (L = 839) or 0 … 137 (L = 139)planned per cellWhich Zadoff–Chu root the 64 preambles are cyclic shifts of
msg3-transformPrecoderRACH-ConfigCommonenabled / absentenabled in coverage-limited cellsThe Msg3 waveform, decided before any dedicated configuration exists

Table 25. The configuration surface that defines the physical channels. Four fields on this table cause a total failure when mismatched rather than a degradation: the two scrambling identities, transformPrecoder, and the DMRS configuration.

19. Failure Modes and What Each One Means

#FailureWho detects itWhat happensLog signature and how to tell it apart
1PDSCH decode failure — coding. The transport block was scheduled above what the channel supported.The UE, by CRCNACK on PUCCH or multiplexed in PUSCH; the gNB retransmits with the next RV; up to pdsch-AggregationFactor or the scheduler's retry limit, then RLC ARQCRC fail with a plausible LLR distribution and a high scheduled MCS. The distinguishing evidence: the retransmission succeeds. Rate correlates with MCS and with reported CQI. This is normal at the target BLER — roughly one block in ten.
2PDSCH decode failure — DMRS. Wrong DMRS type, wrong additional positions, wrong CDM groups, or a scramblingID mismatch.The UE, by CRC — and it looks identical to #1NACK, retransmission, another NACK, RLC recovery, eventually radio link failureFails at every MCS, including MCS 0, and the PDCCH that scheduled it decoded perfectly. The MCS-independence is the tell: a coding failure gets better as MCS drops and a DMRS failure does not. See the companion 33 DMRS §20.
3PDSCH decode failure — wrong RV or wrong N_DMRS at one end. The two ends disagree about the transport block size or the buffer read position.The UE, by CRCNACK, and the retransmission does not help because the soft bits being combined do not correspond to the same codeword positionsRetransmissions that never converge: RV 0, 2, 3, 1 all fail on the same block, and the failure rate is independent of SINR. Compare the gNB's computed TBS against the UE's for the same grant — if they differ, the cause is xOverhead, the DMRS symbol count or the layer count, not the radio.
4PDCCH miss. The UE did not decode the DCI.Nobody, directly. The gNB infers it from DTX.No PDSCH is received, so no HARQ-ACK is sent. The gNB sees no feedback in the expected PUCCH occasion.Silence in a slot where the scheduler expected feedback. Look for scheduled PDSCH with no corresponding ACK or NACK. Cross-check against the aggregation level used and against CCE utilisation — a cell running out of CCEs drops candidates before it drops UEs. Companion 31 PDCCH Blind Decoding §10.
5PBCH decode failure. The UE cannot recover the MIB.The UE, by CRC — once per descrambling hypothesisThe UE cannot find SIB1, cannot read pdcch-ConfigSIB1, and therefore cannot use the cell at allThe most misleading signature in this table: the cell measures fine. RSRP and RSRQ come from SSS, which needs no PBCH, so the cell appears in measurement reports at a healthy level and is never selected, reselected or handed over to. Look for a cell with good reported RSRP and zero RACH attempts.
6Scrambling identity mismatch on any coded channel. dataScramblingIdentityPDSCH, dataScramblingIdentityPUSCH or pdcch-DMRS-ScramblingID differs between the two ends.The receiving end, by CRCEvery affected transmission fails. Nothing recovers, because a retransmission is scrambled the same wrong way.100 % failure, not a degradation — that binary quality is the diagnosis. A PDSCH identity mismatch shows as every PDSCH failing while every PDCCH decodes; a PDCCH identity mismatch shows as the UE finding nothing at all in that CORESET while another CORESET works.
7PUSCH failure with three indistinguishable causes. The gNB's CRC failed on a PUSCH it granted.The gNB, by CRCThe gNB schedules a retransmission by leaving the NDI untoggled — and if the UE never received the original grant, the UE reads that retransmission grant as a new transmissionSeparate the three by looking for received energy and a DMRS correlation peak on the granted resource. Energy plus a DMRS peak plus a CRC fail is a genuine decode failure. No energy at all means the grant was never acted on — a PDCCH problem, or an LBT failure on shared spectrum. Feeding the second case into the uplink outer loop corrupts it; see companion 34 Link Adaptation §14.
8PUCCH format mismatch. The gNB decodes a different format, or a different resource, from the one the UE transmitted.Neither end cleanly — for formats 0 and 1 there is no CRC to failThe gNB reads noise as a NACK, an ACK, or nothing. A false ACK loses the transport block permanently.Look for HARQ-ACK statistics that do not add up: ACK plus NACK plus DTX counts that do not equal the scheduled PDSCH count. Also check the resource-set ladder — a payload that just crossed a maxPayloadSize boundary moves the UE to a different format, and if only one end recomputed O_UCI the two ends now disagree (§14).
9UCI dropped through beta-offset starvation. Multiplexed CSI part 2 did not fit in the resources the beta offsets and α allowed.Nobody. This is specified behaviour, not a failure.The UE legally omits part 2 subband information, one priority level at a time, until it fits. The PUSCH decodes and the CRC passes.CSI part 2 content that varies with the PUSCH allocation size rather than with the radio channel. Subband CQI present on large grants and absent on small ones, with no radio explanation. Check betaOffsetCSI-Part2-* and scaling (§11.3).

Table 26. Nine failure modes across the six channels. Rows 1, 2 and 3 all present as "PDSCH CRC failure" in a counter and are three completely different faults; the fifth column exists to separate them. Rows 4, 5, 7 and 8 are the silent ones — none of them produces an error message anywhere.

🔍
What you see in logs

The single most useful discriminator in this table, and the first thing to check on any PDSCH decode problem: does the failure rate depend on the scheduled MCS? If it does, it is a link-adaptation or coverage question and belongs to the companion 34 Link Adaptation. If it does not — if MCS 0 fails at the same rate as MCS 20 — then the transport block is not the problem and you are looking at a reference signal, a scrambling identity or a transport-block-size disagreement. That one question splits the space in half and takes about a minute.

20. Configuration Reference (ASN.1)

Abridged from TS 38.331. ... marks omitted fields and extension markers; every field shown is real and its type is as specified.

PDSCH-Config ::= SEQUENCE {
    dataScramblingIdentityPDSCH   INTEGER (0..1023)                OPTIONAL,
    dmrs-DownlinkForPDSCH-MappingTypeA
                                  SetupRelease { DMRS-DownlinkConfig } OPTIONAL,
    dmrs-DownlinkForPDSCH-MappingTypeB
                                  SetupRelease { DMRS-DownlinkConfig } OPTIONAL,
    tci-StatesToAddModList        SEQUENCE (SIZE (1..maxNrofTCI-States))
                                      OF TCI-State                 OPTIONAL,
    vrb-ToPRB-Interleaver         ENUMERATED {n2, n4}              OPTIONAL,
    resourceAllocation            ENUMERATED { resourceAllocationType0,
                                               resourceAllocationType1,
                                               dynamicSwitch },
    pdsch-TimeDomainAllocationList
                                  SetupRelease { PDSCH-TimeDomainResource
                                      AllocationList }             OPTIONAL,
    pdsch-AggregationFactor       ENUMERATED {n2, n4, n8}          OPTIONAL,
    rateMatchPatternToAddModList  SEQUENCE (SIZE (1..maxNrofRateMatchPatterns))
                                      OF RateMatchPattern          OPTIONAL,
    rbg-Size                      ENUMERATED {config1, config2},
    mcs-Table                     ENUMERATED {qam256, qam64LowSE}   OPTIONAL,
    maxNrofCodeWordsScheduledByDCI
                                  ENUMERATED {n1, n2}              OPTIONAL,
    prb-BundlingType              CHOICE {
        staticBundling                SEQUENCE { ... },
        dynamicBundling               SEQUENCE { ... } },
    ...
}

Listing 6. PDSCH-Config, abridged. dataScramblingIdentityPDSCH and rbg-Size are the two fields on this structure whose mismatch produces a total rather than partial failure. Note vrb-ToPRB-Interleaver, quietly present: virtual-to-physical resource-block interleaving is an extra mapping stage between the allocation and the physical PRBs, applied only to type 1 allocations.

PUSCH-Config ::= SEQUENCE {
    dataScramblingIdentityPUSCH   INTEGER (0..1023)                OPTIONAL,
    txConfig                      ENUMERATED {codebook, nonCodebook} OPTIONAL,
    dmrs-UplinkForPUSCH-MappingTypeA
                                  SetupRelease { DMRS-UplinkConfig } OPTIONAL,
    dmrs-UplinkForPUSCH-MappingTypeB
                                  SetupRelease { DMRS-UplinkConfig } OPTIONAL,
    pusch-PowerControl            PUSCH-PowerControl               OPTIONAL,
    frequencyHopping              ENUMERATED {intraSlot, interSlot}  OPTIONAL,
    frequencyHoppingOffsetLists   SEQUENCE (SIZE (1..4))
                                      OF INTEGER (1..274)          OPTIONAL,
    resourceAllocation            ENUMERATED { resourceAllocationType0,
                                               resourceAllocationType1,
                                               dynamicSwitch },
    pusch-AggregationFactor       ENUMERATED {n2, n4, n8}          OPTIONAL,
    mcs-Table                     ENUMERATED {qam256, qam64LowSE}   OPTIONAL,
    mcs-TableTransformPrecoder    ENUMERATED {qam256, qam64LowSE}   OPTIONAL,
    transformPrecoder             ENUMERATED {enabled, disabled}    OPTIONAL,
    codebookSubset                ENUMERATED { fullyAndPartialAndNonCoherent,
                                               partialAndNonCoherent,
                                               nonCoherent }        OPTIONAL,
    maxRank                       INTEGER (1..4)                   OPTIONAL,
    rbg-Size                      ENUMERATED {config2}             OPTIONAL,
    uci-OnPUSCH                   SetupRelease { UCI-OnPUSCH }     OPTIONAL,
    tp-pi2BPSK                    ENUMERATED {enabled}             OPTIONAL,
    ...
}

UCI-OnPUSCH ::= SEQUENCE {
    betaOffsets                   CHOICE {
        dynamic                       SEQUENCE (SIZE (4)) OF BetaOffsets,
        semiStatic                    BetaOffsets }                OPTIONAL,
    scaling                       ENUMERATED {f0p5, f0p65, f0p8, f1}
}

Listing 7. PUSCH-Config and UCI-OnPUSCH, abridged. Read the four fields transformPrecoder, mcs-TableTransformPrecoder, tp-pi2BPSK and maxRank together: they are the DFT-s-OFDM cluster, and a configuration that enables transform precoding without revisiting the other three is almost certainly not what was intended.

PUCCH-Config ::= SEQUENCE {
    resourceSetToAddModList       SEQUENCE (SIZE (1..maxNrofPUCCH-ResourceSets))
                                      OF PUCCH-ResourceSet         OPTIONAL,
    resourceToAddModList          SEQUENCE (SIZE (1..maxNrofPUCCH-Resources))
                                      OF PUCCH-Resource            OPTIONAL,
    format1, format2, format3, format4
                                  SetupRelease { PUCCH-FormatConfig } OPTIONAL,
    schedulingRequestResourceToAddModList  SEQUENCE OF ...          OPTIONAL,
    dl-DataToUL-ACK               SEQUENCE (SIZE (1..8))
                                      OF INTEGER (0..15)           OPTIONAL,
    ...
}

PUCCH-ResourceSet ::= SEQUENCE {
    pucch-ResourceSetId           INTEGER (0..maxNrofPUCCH-ResourceSets-1),
    resourceList                  SEQUENCE (SIZE (1..32))
                                      OF PUCCH-ResourceId,
    maxPayloadSize                INTEGER (4..256)                 OPTIONAL
}

PUCCH-Resource ::= SEQUENCE {
    pucch-ResourceId              PUCCH-ResourceId,
    startingPRB                   PRB-Id,
    intraSlotFrequencyHopping     ENUMERATED {enabled}             OPTIONAL,
    secondHopPRB                  PRB-Id                           OPTIONAL,
    format                        CHOICE {
        format0                       PUCCH-format0,
        format1                       PUCCH-format1,
        format2                       PUCCH-format2,
        format3                       PUCCH-format3,
        format4                       PUCCH-format4 }
}

PUCCH-format0 ::= SEQUENCE {
    initialCyclicShift            INTEGER (0..11),
    nrofSymbols                   INTEGER (1..2),
    startingSymbolIndex           INTEGER (0..13)
}

PUCCH-FormatConfig ::= SEQUENCE {
    interslotFrequencyHopping     ENUMERATED {enabled}             OPTIONAL,
    additionalDMRS                ENUMERATED {true}                OPTIONAL,
    maxCodeRate                   PUCCH-MaxCodeRate                OPTIONAL,
    nrofSlots                     ENUMERATED {n2, n4, n8}          OPTIONAL,
    pi2BPSK                       ENUMERATED {enabled}             OPTIONAL,
    simultaneousHARQ-ACK-CSI      ENUMERATED {true}                OPTIONAL
}

Listing 8. PUCCH-Config and its children, abridged. PUCCH-format0 is shown in full because it is the whole of a format-0 resource: a cyclic shift, a symbol count and a start symbol. Three integers, and no code, no CRC and no DMRS anywhere in the definition.

PDCCH-Config ::= SEQUENCE {
    controlResourceSetToAddModList
                                  SEQUENCE (SIZE (1..3)) OF ControlResourceSet
                                                                   OPTIONAL,
    searchSpacesToAddModList      SEQUENCE (SIZE (1..10)) OF SearchSpace
                                                                   OPTIONAL,
    downlinkPreemption            SetupRelease { DownlinkPreemption } OPTIONAL,
    tpc-PUSCH, tpc-PUCCH, tpc-SRS SetupRelease { ... }              OPTIONAL,
    ...
}

ControlResourceSet ::= SEQUENCE {
    controlResourceSetId          ControlResourceSetId,
    frequencyDomainResources      BIT STRING (SIZE (45)),
    duration                      INTEGER (1..maxCoReSetDuration),
    cce-REG-MappingType           CHOICE {
        interleaved                   SEQUENCE { ... },
        nonInterleaved                NULL },
    precoderGranularity           ENUMERATED { sameAsREG-bundle,
                                               allContiguousRBs },
    pdcch-DMRS-ScramblingID       INTEGER (0..65535)               OPTIONAL,
    ...
}

Listing 9. PDCCH-Config and ControlResourceSet, abridged to the fields this document depends on. pdcch-DMRS-ScramblingID is the one to note: it initialises both the PDCCH DMRS sequence and the PDCCH data scrambling, so a single wrong value breaks the channel twice. The rest of this structure belongs to the companion 30 CORESET and Search Space.

21. Four More Worked Calculations

21.1 A PDSCH transport block, resource elements to bits

🧮
Worked calculation

Given: 30 kHz SCS, 100 PRB, 1 layer, MCS 15 from MCS table 1 (Q_m = 4, R = 616/1024 = 0.6016), 12 OFDM symbols of PDSCH, one front-loaded DMRS symbol with two CDM groups without data (N_DMRS = 12 RE/PRB), xOverhead absent so N_oh = 0. This is the same geometry the companion 05 HARQ §6.3 uses, and the answer is the same number.

N_RE′ = 12 × 12 − 12 − 0 = 132 RE per PRB

N_RE = min(156, 132) × 100 = 13 200 RE

N_info = 13 200 × 0.6016 × 4 × 1 = 31 764 bits

N_info > 3824, so n = ⌊log₂(31 764 − 24)⌋ − 5 = 14 − 5 = 9, 2⁹ = 512

N_info′ = max(3840, 512 × round(31 740 / 512)) = 512 × 62 = 31 744

R = 0.6016 > 1/4 and N_info′ > 8424, so

C = ⌈(31 744 + 24) / 8424⌉ = ⌈3.77⌉ = 4 code blocks

TBS = 8 × 4 × ⌈31 768 / 32⌉ − 24 = 32 × 993 − 24 = 31 752 bits = 3969 bytes

Check the effective rate. Coded bits available = 13 200 × 4 = 52 800. Payload plus all CRCs = 31 752 + 24 + 4 × 24 = 31 872. Effective rate = 31 872 / 52 800 = 0.604 against a target of 0.602 — 0.3 % over, which is the quantisation cost of forcing TBS to a byte boundary that divides evenly by 8·C.

Rate. One such block per 0.5 ms slot on one layer is 63.5 Mbit/s.

21.2 The overhead deduction that turns raw REs into usable ones

The raw resource-element count is never the usable count, and the gap is larger than people expect. Same allocation as §21.1 — 12 symbols, 100 PRB, MCS 15 — with only the overhead assumptions varied:

DMRS and overhead assumptionN_DMRSN_ohN_RE′N_RETBSLoss against the raw count
The raw grid, no deduction at all (not a legal configuration — PDSCH always has DMRS)0014414 40034 816 bits
Type 1, 1 symbol, one CDM group without data6013813 80032 776 bits5.9 %
Type 1, 1 symbol, two CDM groups without data (§21.1)12013213 20031 752 bits8.8 %
As above plus xOverhead = xOh612612612 60030 216 bits13.2 %
Type 1, dmrs-AdditionalPosition = pos1 (2 DMRS symbols), two CDM groups24012012 00028 680 bits17.6 %
As above plus xOverhead = xOh624611411 40027 656 bits20.6 %

Table 27. Overhead against transport block size, everything else held constant. A fifth of the transport block can vanish into configuration choices that have nothing to do with the radio channel. The two levers are independent: DMRS density is a Doppler decision (companion 33 DMRS §11) and xOverhead is a bookkeeping decision, and both land in the same formula.

🧮
Worked calculation

Why the min(156, N_RE′) cap matters, and when it bites. The cap in step two exists so that TBS does not grow without limit as the assumptions change. With 12 symbols it can never bind — the ceiling is 144. With a full 14-symbol allocation and light DMRS it can: 14 × 12 − 6 = 162 RE per PRB, capped to 156, so 6 RE per PRB per PRB are computed and then discarded. At 100 PRB that is 600 REs, or about 1440 bits at MCS 15, thrown away by the formula. A scheduler that reduces DMRS overhead on a 14-symbol allocation expecting a proportional TBS increase gets nothing back once the cap binds, and in a log this looks like TBS refusing to move while the configuration changes.

21.3 PUCCH format 3 payload capacity

🧮
Worked calculation

Given: a format 3 resource of 6 PRB over 10 symbols, of which 2 are DMRS (the TS 38.211 Table 6.4.1.3.3-1 pattern for a 10-symbol format 3 without hopping puts DMRS at relative indices 1 and 6). QPSK, maxCodeRate = zeroDot25.

UCI-bearing symbols = 10 − 2 = 8

Resource elements = 8 × 6 PRB × 12 subcarriers = 576 RE

Coded bits at Q_m = 2 = 576 × 2 = 1152 bits

Budget at r = 0.25 → (O_UCI + L) ≤ 1152 × 0.25 = 288 bits

L = 11 for any payload of 20 bits or more, so O_UCI ≤ 277 bits

Now vary the three levers.

maxCodeRate = zeroDot08 → 92 bits → O_UCI ≤ 81

maxCodeRate = zeroDot80 → 921 bits → O_UCI ≤ 910

π/2-BPSK instead of QPSK (Q_m = 1) at r = 0.25 → 144 bits → O_UCI ≤ 133

additionalDMRS configured (4 DMRS symbols) at r = 0.25 → 6 UCI symbols → 432 RE → 864 coded bits → 216 bits → O_UCI ≤ 205

1 PRB instead of 6, r = 0.25, QPSK → 48 bits → O_UCI ≤ 37

The point. The same format 3 resource spans 37 to 910 usable UCI bits depending on four configuration fields, none of which appears in any DCI. When a UE and a gNB disagree about how much UCI fits, this is the arithmetic they are disagreeing about — and the UE's answer is the one that matters, because the UE decides what to drop.

21.4 How many resource elements a multiplexed HARQ-ACK takes

🧮
Worked calculation

Given: a PUSCH of 20 PRB over 12 symbols with one DMRS symbol, MCS 13 from MCS table 1 (Q_m = 4, R = 490/1024 = 0.4785), single layer. A 16-bit HARQ-ACK codebook is multiplexed onto it. betaOffsetACK-Index2 selects a value that TS 38.213 Table 9.3-1 maps to β = 10.000, and scaling α = 1.

First, the PUSCH's own transport block.

N_RE′ = 11 × 12 = 132 RE/PRB; N_RE = 132 × 20 = 2640 RE

N_info = 2640 × 0.4785 × 4 = 5053 bits → n = 7, N_info′ = 128 × 39 = 4992 → C = 1, TBS = 4992 bits

Σ K_r = TBS + CRC24A = 4992 + 24 = 5016 bits

Then the UCI TS 38.212 cl. 6.3.2.4.1.1. O_ACK = 16, and L_ACK = 6 because the payload is in the 12–19 bit band:

Q′_ACK = min( ⌈(16 + 6) × 10.000 × 2640 / 5016⌉ , ⌈1.0 × 2640⌉ )

= min( ⌈220 × 0.5263⌉ , 2640 ) = min(116, 2640) = 116 modulation symbols

116 symbols at Q_m = 4 is 464 coded bits for 22 information bits — an effective UCI code rate of 0.047, twenty times more redundant than the transport block it is riding inside. That is exactly the intent: the beta offset expresses how much more reliable than the data the control has to be.

Cost to the PUSCH: 116 of 2640 REs = 4.4 %, which the transport block absorbs because a 16-bit ACK is rate-matched around rather than puncturing.

Now make the beta offset extreme. β = 126.000 gives ⌈22 × 126 × 2640 / 5016⌉ = 1459 symbols — 55 % of the PUSCH for 22 bits of ACK. With α = 1 that is allowed. With scaling = f0p5 the second term becomes ⌈0.5 × 2640⌉ = 1320 and the α cap binds. That is what α is for: it is the only thing standing between a mis-set beta offset and a transport block with almost no room left.

22. Illustrative Message Traces

🔍
ABOUT THESE TRACES

Illustrative trace. Field names and encodings follow 3GPP; the values are constructed for this document and are not a capture from any deployed or lab network.

One scenario throughout: a UE with C-RNTI = 0x4C21 in a cell with physCellId = 231, a 100-PRB downlink BWP at 30 kHz, dataScramblingIdentityPDSCH = 231, MCS table 1. The geometry is the one used in §21.1, so the numbers agree.

22.1 A PDCCH decode, from candidate to DCI

PDCCH: eleven candidates, one CRC pass, one DCI
12:41:07.512  PHY/PDCCH  slot=407.6  ---- blind decode summary ----
  CORESET id .................. 2      duration=2 sym, 24 PRB, interleaved
  SearchSpace id .............. 3      type=ue-Specific, AL {2,4,8}
  candidates tried ............ 11     AL2:6  AL4:3  AL8:2
  DCI sizes tried ............. 2      41 bits (0_1) / 43 bits (1_1)

12:41:07.512  PHY/PDCCH  slot=407.6  ---- CRC PASS on candidate 4 ----
  aggregationLevel ............ 4      -> 4 CCE, 24 REG, 432 coded bits
  first CCE ................... 12     from the AL4 hash for nRNTI=0x4C21
  polar N ..................... 512    K = 43 + 24 = 67, E = 432
  effective code rate ......... 0.155  67 / 432
  crc24c (recomputed) ......... 0x3A81
  crc24c (received, unmasked) . 0x3A81 -- XOR of last 16 bits with 0x4C21
  addressee ................... C-RNTI 0x4C21   -- the CRC IS the address

12:41:07.512  PHY/PDCCH  slot=407.6  ---- DCI format 1_1 decoded ----
  identifierForDCIFormats ..... 1      -- 1 = downlink assignment
  frequencyDomainAssignment ... 0x1466 -- RIV 5222, type 1, 13 bits
     decoded .................. RB_start = 28, L_RBs = 50
  timeDomainAssignment ........ 2      -- TDRA row 2: S=2, L=12, typeA
  modulationCodingScheme ...... 15     -- Q_m = 4, R = 616/1024
  newDataIndicator ............ 1      -- toggled: new transmission
  redundancyVersion ........... 0
  harqProcessNumber ........... 5
  antennaPortsIndication ...... 2      -- 1 layer, 2 CDM groups w/o data
  pdsch-toHARQ_feedbackTiming . 1      -- K1 = 2 slots
  pucchResourceIndicator ...... 3

Listing 10. Read the second block first: the CRC pass is simultaneously the error check and the addressing decision, and there is no addressee field in the third block anywhere. The eleven candidates are the whole cost of that design.

22.2 The PDSCH the DCI scheduled, and its derived parameters

PDSCH: from a 13-bit RIV to 1985 bytes
12:41:07.512  PHY/PDSCH  slot=407.6  ---- grant applied ----
  PRB allocation .............. 28..77  (50 PRB, contiguous, type 1)
  symbols ..................... 2..13   (S=2, L=12, mapping type A)
  layers / codewords .......... 1 / 1
  DMRS ........................ type 1, l = 2 and l = 11, 2 CDM groups
                                w/o data -> N_DMRS = 12 RE/PRB/symbol
  xOverhead ................... absent -> N_oh = 0

  ---- transport block size derivation (TS 38.214 cl. 5.1.3.2) ----
  N_RE' per PRB ............... 12 x 12 - 12 - 0 = 132
  N_RE ........................ min(156,132) x 50 = 6600
  N_info ...................... 6600 x 0.6016 x 4 x 1 = 15882
  n ........................... floor(log2(15858)) - 5 = 13 - 5 = 8
  N_info' ..................... 256 x round(15858/256) = 256 x 62 = 15872
  code blocks C ............... ceil(15896 / 8424) = 2
  TBS ......................... 8 x 2 x ceil(15896/16) - 24 = 15880 bits
                                = 1985 bytes
  base graph .................. BG1;  Z_c = 384, 496 filler bits/block
  scrambling c_init ........... (0x4C21 << 15) + (0 << 14) + 231
                                = 0x26108 0E7   -- n_ID = 231 (configured)
  coded bits available ........ 6600 x 4 = 26400
  effective code rate ......... (15880 + 24 + 48) / 26400 = 0.604

12:41:07.513  PHY/PDSCH  slot=407.6  decode OK, CRC24A pass, 2/2 CBs OK
12:41:08.013  PHY/PUCCH  slot=407.8  HARQ-ACK: ACK, harqProcess=5, K1=2

Listing 11. Every number below the first block is derived — none of it was signalled. That is the design, and it is why a disagreement about xOverhead or the DMRS symbol count produces a total decode failure with no error message anywhere (§19.3).

22.3 A PBCH and MIB decode from cold

PBCH: no grant, no search space, four descrambling hypotheses
12:40:59.104  PHY/SYNC   ---- initial cell search, 3450.00 MHz ----
  PSS correlation peak ........ N_ID_2 = 0, peak/noise = 14.2 dB
  SSS correlation peak ........ N_ID_1 = 77
  physCellId .................. 3 x 77 + 0 = 231

12:40:59.106  PHY/PBCH   ---- descrambling hypotheses ----
  DMRS shift v ................ 231 mod 4 = 3  -- confirms N_ID_cell
  DMRS correlation ............ best over 8 SSB-index hypotheses
  i_SSB (from 2nd scrambling) . 2
  SFN 2nd/3rd LSB hypothesis .. tried 0,1,2,3 -> CRC pass on 1

12:40:59.107  PHY/PBCH   ---- decode ----
  E = 864 bits (432 QPSK symbols); polar N = 512, K = 56; rate 0.065
  crc24c ...................... PASS
  PHY-generated bits .......... sfn[3:0] = 0110, halfFrame = 0,
                                ssb-SubcarrierOffset MSB = 0

12:40:59.107  RRC/BCCH-BCH  ---- MIB ----
  systemFrameNumber ........... 0b100101 -- 6 MSB; full SFN = 598
  subCarrierSpacingCommon ..... scs30or60
  ssb-SubcarrierOffset ........ 0
  dmrs-TypeA-Position ......... pos2
  pdcch-ConfigSIB1 ............ controlResourceSetZero=6,
                                searchSpaceZero=0
  cellBarred .................. notBarred
  intraFreqReselection ........ allowed

Listing 12. The middle block is the interesting one: the UE does not know the SSB index or the SFN when it starts, so it tries hypotheses and lets the CRC arbitrate. Note that dmrs-TypeA-Position arrives here, in the MIB, because the UE needs it to demodulate the very first PDSCH it will ever receive.

22.4 A PUSCH grant with UCI multiplexed onto it

PUSCH: a transport block and a 16-bit HARQ-ACK codebook, together
12:41:11.208  PHY/PDCCH  slot=411.2  DCI format 0_1, CRC pass, 0x4C21
  frequencyDomainAssignment ... RIV 2138 -> RB_start = 12, L_RBs = 20
  timeDomainAssignment ........ 3        -> S = 0, L = 12, mapping typeA
  frequencyHoppingFlag ........ 0
  modulationCodingScheme ...... 13       -- Q_m = 4, R = 490/1024
  newDataIndicator ............ 1
  srsResourceIndicator ........ 1        -- SRI selects SRS resource 1
  precodingInfoAndNrOfLayers .. 0        -- TPMI 0, 1 layer
  betaOffsetIndicator ......... 2        -- dynamic: selects set 2 of 4
  dai ......................... 3        -- 16 HARQ-ACK bits expected

12:41:11.212  PHY/PUSCH  slot=411.2  ---- transmission built ----
  transformPrecoder ........... disabled -- CP-OFDM
  N_RE' per PRB ............... 11 x 12 = 132   (1 DMRS symbol)
  N_RE ........................ 132 x 20 = 2640
  TBS ......................... 4992 bits;  sum K_r = 5016
  base graph .................. BG1

  ---- UCI multiplexing (TS 38.212 cl. 6.3.2.4.1.1) ----
  O_ACK ....................... 16 bits
  L_ACK ....................... 6 bits   -- 12..19 bit payload band
  betaOffsetACK (set 2) ....... 10.000
  scaling alpha ............... 1.0
  Q'_ACK ...................... min(ceil(22 x 10 x 2640 / 5016), 2640)
                                = min(116, 2640) = 116 symbols
  UCI coded bits .............. 116 x 4 = 464   -> UCI rate 0.047
  handling .................... rate-matched around (>2 bits)
  REs left for the TB ......... 2640 - 116 = 2524  (4.4 % taken)

12:41:11.712  PHY/PUSCH  slot=411.2  gNB: CRC24A PASS, UCI decoded,
                                     16/16 ACK bits recovered

Listing 13. The UCI takes 4.4 % of the resource for 22 of the 5016 bits in flight — a redundancy twenty times the transport block's. That ratio is entirely set by betaOffsetACK and it is the only reliability control the multiplexed UCI has (§11.3, §21.4).

22.5 A PUCCH resource selection, step by step

PUCCH: from one HARQ-ACK bit to a shift and an OCC index
12:41:07.513  PHY/PUCCH  slot=407.8  ---- resource selection ----
  HARQ-ACK bits (Type-1 codebook, 1 cell, 1 slot) .... 1
  SR pending .. no      CSI due .. no      O_UCI ..... 1

  O_UCI <= 2  ->  resource set 0
  set 0 resourceList size ............................ 4  (<= 8)
  -> PRI from DCI selects directly (no CCE-index formula)
  pucchResourceIndicator (from the 1_1) .............. 3

  ---- resource 3 configuration ----
  format1, startingPRB 0, secondHopPRB 99, intra-slot hopping enabled
  startingSymbolIndex 0, nrofSymbols 14
  initialCyclicShift 4, timeDomainOCC 1

  ---- what goes on the air ----
  UCI symbols ........ 7  (odd)           DMRS symbols ....... 7 (even)
  modulation ......... BPSK (1 bit)       coding ............. none
  multiplexed with ... up to 83 other UEs on the same PRB
  ACK/NACK ........... ACK -> BPSK +1, spread by shift 4 and OCC 1

Listing 14. initialCyclicShift and timeDomainOCC together are what make this UE's ACK distinguishable from 83 others in the same PRB. Note also that resourceList has only four entries, so the CCE-index formula does not apply — with more than eight it would, and the PUCCH position would move with the PDCCH's CCE (§14).

22.6 A failure: the same PDSCH with a scrambling identity mismatch

A scrambling identity mismatch: 100 % failure at 21 dB SNR
12:52:44.001  PHY/PDCCH  slot=891.4  DCI 1_1, CRC pass, 0x4C21, MCS 15
12:52:44.002  PHY/PDSCH  slot=891.4  descramble c_init from n_ID = 0
                                     -- UE has no dataScramblingIdentity
                                        PDSCH, so it used N_ID_cell... 0?
12:52:44.003  PHY/PDSCH  slot=891.4  CRC24A FAIL   CB 0 FAIL  CB 1 FAIL
  post-equaliser SNR .............. 21.4 dB   -- excellent
  DMRS correlation ................ 0.97      -- excellent
  LLR magnitude distribution ...... normal, mean |LLR| = 4.8
  bit error rate before decode .... 0.4998    -- indistinguishable
                                                from a fair coin
12:52:44.503  PHY/PUCCH  slot=891.6  HARQ-ACK: NACK, harqProcess=5
12:52:44.504  PHY/PDSCH  slot=891.8  retransmission RV=2, CRC24A FAIL
12:52:44.505  PHY/PDSCH  slot=892.2  retransmission RV=3, CRC24A FAIL
12:52:44.506  PHY/PDSCH  slot=892.6  retransmission RV=1, CRC24A FAIL
12:52:44.507  MAC/HARQ   process 5 exhausted, 4/4 attempts failed
12:52:44.510  RLC/AM     retransmission requested, SN 4412

  ---- counters over the next 10 seconds ----
  PDCCH decodes ............ 1842 / 1842   100.0 %   -- perfect
  PDSCH CRC pass ........... 0    / 1842     0.0 %   -- total
  mean reported CQI ........ 13                       -- excellent
  mean scheduled MCS ....... 3.1                      -- collapsing

Listing 15. Everything a coverage problem would show is absent: the SNR is excellent, the DMRS correlates perfectly, the LLRs look healthy. The two tells are the pre-decode bit error rate of exactly one half — the signature of descrambling with the wrong sequence — and 100.0 % against 0.0 % in the counters. A radio problem is never a round number. Note the last line: the link-adaptation outer loop is dutifully driving MCS to the floor in response to a fault that has nothing to do with the channel (companion 34 Link Adaptation §11.2).

23. Release Deltas: Rel-15 to Rel-18

ReleaseChangeChannels affectedWhy it matters
Rel-15The six physical channels as specified: PDSCH and PUSCH on LDPC, PDCCH and PBCH on Polar, PUCCH formats 0 to 4, PRACH long and short formats. Downlink to 256QAM, uplink to 256QAM.AllThe baseline. Everything since has been an addition at the edges rather than a change to the core chains.
Rel-16Two-step random access: MsgA adds a PUSCH transmitted on a configured occasion with no grant at all.PUSCH, PRACHThe only ungranted PUSCH in the system, and the first time a PRACH preamble is associated with a payload
Rel-16NR-U: interlaced frequency mapping for PUCCH and PUSCH, so a transmission occupies 10 or 20 evenly spread PRBs to satisfy occupied-bandwidth regulation.PUSCH, PUCCHA genuinely new mapping mode. An interlaced PUCCH does not look like any of the footprints in §12.
Rel-16DCI formats 0_2 and 1_2 with configurable field widths, and the Type-3 HARQ-ACK codebook.PDCCH, PUCCHCompact DCI for URLLC. Adds a fifth possible DCI size, which pressures the blind-decode size budget — companion 31.
Rel-16PUSCH repetition type B with nominal and actual repetitions, and the uplink cancellation indication (DCI 2_4).PUSCH, PDCCHThe first mechanism by which a PUSCH already granted can be pre-empted; see companion 32 SLIV §15.
Rel-171024QAM for PDSCH, FR1 only, with MCS table 4 and CQI table 4.PDSCHRaises the ceiling from 7.41 to 9.26 bits/RE, at a cost of roughly 6 dB — realistically usable only in small cells and fixed wireless
Rel-17PDCCH repetition: two linked candidates in different CORESETs carrying the same DCI, softly combined.PDCCHThe first time PDCCH gains anything resembling diversity. It is not HARQ — the two transmissions are simultaneous, not sequential.
Rel-17Coverage enhancement: PUSCH transport-block processing over multiple slots (TBoMS), DMRS bundling across repetitions, and PUCCH repetition improvements.PUSCH, PUCCHAttacks the uplink link budget at the waveform and reference-signal level rather than through coding
Rel-17RedCap and NTN: reduced-capability UEs with a separate initial BWP and PRACH configuration; non-terrestrial operation with very long round trips and optionally disabled HARQ feedback.PRACH, PDSCH, PUSCHDisabled HARQ feedback removes the only unambiguous error signal the downlink has — companion 05 HARQ §12
Rel-188 transmit antennas in the uplink, with up to 4 layers and extended SRS and codebook support.PUSCHThe largest uplink capacity change since Rel-15, and it applies only to CP-OFDM — transform precoding remains single-layer
Rel-18LP-WUS — a low-power wake-up signal, a genuinely new physical signal added to the taxonomy in §1.None of the six channelsThe first addition to the signals list since Rel-15, and a good test of the §1 rule: it carries no higher-layer information, so it is a signal
Rel-18Network energy saving, including SSB and PDCCH transmission adaptation; study items on subband full duplex.PBCH, PDCCHThe first mechanisms that let a cell reduce PBCH and PDCCH transmission — touching the one channel that had never been adaptable in any respect

Table 28. Release deltas. The pattern is worth noticing: the coding chains have not changed at all since Rel-15. Every delta on this table is a new modulation order, a new mapping mode, a new repetition mechanism or a new payload — never a new code, a new CRC or a new scrambling structure. The §4 to §11 chains are stable ground.

24. Reading Physical Channels in Logs: A Checklist

Ordered by how much each step narrows the problem per minute spent. Steps 1 to 3 are direction-agnostic; the rest are per channel.

  1. Establish which channel failed, not which counter incremented. "PDSCH BLER" is a counter; the fault may be in the DMRS, the scrambling identity, the transport-block-size derivation or the channel. Before anything else, write down which of the six channels you believe is broken and what evidence says so.
  2. Check whether the failure rate depends on the scheduled MCS. This is the single highest-yield question in the whole area. If it does, it is coverage or link adaptation — hand it to the companion 34 Link Adaptation. If MCS 0 fails as often as MCS 20, the transport block is not the problem, and you are looking at a reference signal, a scrambling identity or a size disagreement (§19).
  3. Look for round numbers. A radio problem is statistical: 8 %, 34 %, 61 %. A configuration problem is binary: 0.0 % or 100.0 %. Any counter sitting at exactly zero or exactly everything is a mismatch, not a channel.
  4. PDSCH: reconcile the two ends' transport block sizes for one grant. Take a single DCI, work the TBS derivation through by hand from the allocation, the MCS, the layer count, N_DMRS and xOverhead, and compare against what each end logged. §21.1 and §21.2 are the worked template. A mismatch here explains retransmissions that never converge.
  5. PDSCH: check the scrambling identity path, not just its value. Confirm dataScramblingIdentityPDSCH matches at both ends, and confirm that both ends apply the N_ID_cell fallback for DCI 1_0 grants from a common search space. The second half of that check is the one that gets skipped (§5.2).
  6. PDCCH: look for absences, not errors. Count scheduled PDSCH against received HARQ-ACK and NACK. The gap is missed PDCCH. Then look at the aggregation levels being used and at CCE utilisation in the CORESET — a cell that has run out of CCEs drops candidates silently, and the companion 31 PDCCH Blind Decoding §10 has the overbooking rules.
  7. PBCH: check the cells nobody ever selects. A PBCH failure is invisible in every radio counter because SSS gives RSRP without PBCH. Look for a cell reported at healthy RSRP in measurement reports with zero RACH attempts against it. Then check cellBarred, the pdcch-ConfigSIB1 value and whether SIB1 is actually being transmitted where the MIB says.
  8. PUSCH: separate the three failure causes before anything else. For each failed PUSCH look for received energy and a DMRS correlation peak on the granted resource. No energy means the grant was never acted on: a PDCCH problem, or LBT on shared spectrum. Only cases with energy and a DMRS peak are genuine decode failures, and only those should be reasoned about as radio (§19.7).
  9. PUCCH: make the HARQ-ACK arithmetic balance. Scheduled PDSCH count should equal ACK plus NACK plus DTX. If it does not, the two ends disagree about the codebook, the resource, or the format — and the commonest cause is a payload that crossed a maxPayloadSize boundary and moved the UE to a different resource set (§14).
  10. PUCCH: check whether CSI part 2 content tracks the PUSCH allocation size. Subband information present on large grants and missing on small ones, with no radio explanation, is beta-offset starvation and is specified behaviour rather than a fault (§11.3, §19.9).
  11. Only then look at the radio. If the sizes reconcile, the identities match, the reference signals correlate, the resource sets cover the payloads and the waveform is what you intended, then a failing channel is a genuinely poor channel — and the problem is coverage, interference or beam selection. Hand it to the companions 20 Measurements and Events and 16 RLM and RLF.

25. Glossary

TermExpansionMeaning in this document
BG1 / BG2LDPC Base Graph 1 / 2The two families of parity-check matrices used for all transport blocks. Selected by a rule on size and target rate, never configured TS 38.212 cl. 7.2.2.
CCEControl Channel Element6 REGs = 72 REs, of which 54 carry data. The unit of PDCCH allocation, and the unit the aggregation level counts.
DCIDownlink Control InformationThe payload PDCCH carries. Created by the scheduler, with no transport channel and no MAC involvement.
DFT-s-OFDMDFT-spread OFDMThe optional PUSCH waveform, selected by transformPrecoder. Lower PAPR, at the cost of contiguity, intra-allocation frequency selectivity and MIMO.
EThe number of coded bits a channel's rate matching produces for one transmission. 108 × AL for PDCCH; 864 always for PBCH; whatever the allocation holds for PDSCH and PUSCH.
N_RE′ / N_REResource elements per PRB after deducting DMRS and overhead, and the total across the allocation. The two quantities the TBS procedure starts from TS 38.214 cl. 5.1.3.2.
Physical channelA transmission carrying information that originated above the physical layer. Six of them: PDSCH, PDCCH, PBCH, PUSCH, PUCCH, PRACH.
Physical signalA known sequence transmitted so the receiver can measure something. Carries no higher-layer information, has no CRC and cannot fail to decode because there is no decode step.
Polar codeThe code used for DCI, for PBCH and for UCI payloads above 11 bits. Strong at short block lengths; sequentially decoded, which is why it is not used for data.
REGResource Element GroupOne PRB in one OFDM symbol: 12 REs, of which 3 are PDCCH DMRS and 9 carry data.
Reed–MullerThe block code used for UCI payloads of 3 to 11 bits, decoded exhaustively. The forgotten fourth code in NR (§17.3).
RIVResource Indication ValueThe single integer encoding a contiguous frequency allocation's start and length. Piecewise, and its codespace is 31 % invalid at N = 106 (§6.3).
Sequence selectionConveying information by which of several known sequences is transmitted rather than by coded bits. Used by PUCCH format 0, PRACH, PSS and SSS.
TBSTransport Block SizeDerived, never signalled, from the allocation, the MCS, the layer count and the overhead assumptions. A disagreement about any input is a silent total failure.
Transform precodingThe DFT stage that turns CP-OFDM PUSCH into DFT-s-OFDM PUSCH. Semi-static, and the single most consequential uplink configuration field.
UCIUplink Control InformationHARQ-ACK, scheduling requests and CSI reports. Carried on PUCCH, or multiplexed onto PUSCH. No transport channel above it.
β_offsetBeta offsetThe factor scaling how many resource elements multiplexed UCI takes on a PUSCH, expressed relative to the PUSCH's own code rate and modulation order (§11.3).

26. References

  • 3GPP TS 38.211Physical channels and modulation. The primary reference here. Clause 6.3 for the uplink channels: 6.3.1 PUSCH, 6.3.2 PUCCH with a subclause per format, 6.3.3 PRACH and its Zadoff–Chu sequence generation. Clause 7.3 for the downlink: 7.3.1 PDSCH, 7.3.2 PDCCH including CCE-to-REG mapping and the QPSK requirement, 7.3.3 PBCH scrambling and mapping. Clause 7.4 for the SS/PBCH block, with Table 7.4.3.1-1 giving the exact resource-element map used in §9.2. Clause 5.1 for the modulation mappings.
  • 3GPP TS 38.212Multiplexing and channel coding. Clause 5 for the codes: 5.1 CRC polynomials, 5.2.2 code block segmentation, 5.3.1 Polar, 5.3.2 LDPC, 5.3.3 the small block codes and Reed–Muller, 5.4.1 and 5.4.2 rate matching with Table 5.4.2.1-2 for the redundancy-version start positions. Clause 6 for the uplink chains: 6.2 UL-SCH, 6.3 UCI, with 6.3.2.4 the resource determination for UCI on PUSCH. Clause 7 for the downlink: 7.1 the broadcast channel step by step, 7.2.1 and 7.2.2 the DL-SCH CRC and base graph selection, 7.3.2 the RNTI-masked DCI CRC.
  • 3GPP TS 38.213Physical layer procedures for control. Clause 9 for UCI reporting: 9.1 the HARQ-ACK codebooks, 9.2.1 PUCCH resource selection including the CCE-index formula, 9.2.3 the format 0 and 1 payload-to-sequence mapping, 9.2.5 the UCI multiplexing rules, and Table 9.3-1 for the beta offset values. Clause 8 for the random-access physical-layer procedure and 7 for uplink power control.
  • 3GPP TS 38.214Physical layer procedures for data. Clause 5.1.2.2 for the PDSCH frequency-domain allocation types, with Table 5.1.2.2.1-1 the RBG sizes and 5.1.2.2.2 the RIV encoding. Clause 5.1.3 for the MCS tables and 5.1.3.2 for the transport block size procedure used throughout §21. Clauses 6.1.2 and 6.1.4 for the PUSCH equivalents.
  • 3GPP TS 38.331RRC protocol specification. PDSCH-Config, PDSCH-ServingCellConfig, PUSCH-Config, UCI-OnPUSCH, PUCCH-Config and its children, PDCCH-Config, ControlResourceSet, RACH-ConfigCommon, RateMatchPattern, DMRS-DownlinkConfig and DMRS-UplinkConfig.
  • 3GPP TS 38.306UE radio access capabilities. Where pdsch-256QAM-FR1, the 1024QAM capabilities, the PUCCH format capabilities and the transform-precoding capabilities live — the constraints that decide whether a configuration is legal for a given UE.
📘
Spec detail

On the numbers in this document. Every bit width, CRC length, resource-element count, clause reference and field range is from the specification and can be checked. Three categories of number are not: the SINR figures in §5.3 and its figure, which come from the illustrative link model shared with the companion 34 Link Adaptation and are marked as illustrative wherever they appear; the curve shapes in the Polar-versus-LDPC figure, which are representative of published finite-blocklength results rather than measurements; and the "typical" column of §18, which reflects common practice rather than any requirement. Everything in the traces of §22 is constructed from the encoding rules — internally consistent, and not a capture from any network.

Companion documents in this set

  • 02 Radio Frame Structure — the resource grid every footprint in this document is drawn on, the SSB structure and burst set that PBCH lives in, and the numerology that turns symbol counts into microseconds.
  • 03 Random Access — PRACH in full: the preamble groups, the occasions, the four-step and two-step procedures, and the Msg3 PUSCH that is the one PUSCH nobody has any channel knowledge about (§15).
  • 05 HARQ — the circular buffer, the four redundancy versions, code block groups, the soft buffer, and the transport block size procedure this document reuses unchanged so the two agree (§4, §5.1, §21.1).
  • 06 Channel Mapping — the logical, transport and physical channel mapping in both directions, the LCID and eLCID tables, the RNTI catalogue and the full DCI and UCI format lists. This document's counterpart: 06 answers what feeds this channel, and this one answers what happens once it arrives (§1).
  • 30 CORESET and Search Space — where PDCCH candidates live: the 45-bit frequency bitmap, the CCE-to-REG mapping, CORESET#0 and the search space types (§7.3).
  • 31 PDCCH Blind Decoding — how the UE finds a DCI: the hashing function, the candidate arithmetic, the per-slot budgets, the DCI size budget, overbooking, and the false-alarm rate the RNTI-masked CRC creates (§7.2, §8).
  • 32 SLIV and Time Domain Allocation — the start-and-length encoding, mapping types A and B, k0 and k2, slot aggregation and the two PUSCH repetition types (§6.4).
  • 33 DMRS — every reference signal in the system: the two configuration types, CDM groups, additional positions, the channel-specific patterns for PDCCH, PBCH and PUCCH, PT-RS, and the low-PAPR sequences that transform precoding requires (§1, §6.1, §10.1).
  • 34 Link Adaptation — the two loops that choose the MCS this document's chains then execute, the CQI and MCS tables, and what happens when a reference-signal or scrambling fault is fed into the outer loop as if it were a coverage problem (§5.3, §19).