Primary Cell and Secondary Cells
The PCell (Primary Cell) is the anchor — it carries SRB1/SRB2, handles RACH, and provides the security context. The UE always maintains connection to the PCell. RRC connection management happens only on the PCell.
SCells (Secondary Cells) are additional carriers added to boost throughput. They carry DRBs (data bearers) but not SRBs. The UE can have up to 31 SCells configured (in 3GPP Rel-16+), though devices typically support 2–5.
Intra-band vs inter-band CA
| Type | Description | Example | Notes |
|---|---|---|---|
| Intra-band contiguous | Same band, adjacent channels | n78: 100+100 MHz | One RF chain, easiest |
| Intra-band non-contiguous | Same band, non-adjacent | n78: 3.4+3.7 GHz | Gap between carriers |
| Inter-band | Different bands | n78 (3.5G) + n28 (700M) | Two RF chains, more complex |
| FR1+FR2 | Sub-6G + mmWave | n78 + n258 (26 GHz) | Very high peak rates |
SCell activation — MAC CE
SCells are configured by RRC but start in deactivated state to save power. The gNB activates them using a Scell Activation/Deactivation MAC CE when traffic demand increases.
// Scell Activation/Deactivation MAC CE (1 byte per octet): Octet 1: [C7][C6][C5][C4][C3][C2][C1][C0] // Bit C_i = 1 → activate SCell with index i // Bit C_i = 0 → deactivate SCell with index i // Example: activate SCell index 1 (n28 carrier): MAC CE = 0b00000010 → SCell 1 activated, others unchanged // Activation timing: MAC CE received in slot n UE applies SCell activation: slot n + 8 ms // UE must perform SCell sync, CSI-RS measurement within this time // Power saving: gNB deactivates SCells during idle periods // sCellDeactivationTimer: if no PDSCH/PUSCH for 80 ms → auto-deactivate
Cross-carrier scheduling
By default, each cell schedules its own PDSCH (self-scheduling). With cross-carrier scheduling, the PCell's PDCCH can schedule PDSCH on an SCell. This is useful when the SCell has no PDCCH configured (reducing overhead) or when the PCell has better control channel coverage.
The DCI field Carrier Indicator (CIF) identifies which component carrier the DCI is scheduling. CIF = 0 means the same carrier; CIF = 1..7 selects a different SCell.
MAC layer with CA — one MAC, multiple CCs
With CA, there is still only one MAC entity per UE. The MAC scheduler operates across all active component carriers and fills each with transport blocks independently. HARQ processes are per-carrier. BSR and scheduling requests are handled by the PCell.
// PCell (n78, 100 MHz, 30 kHz SCS, TDD 76% DL duty): DL throughput ≈ 44 Mbps // SCell (n28, 30 MHz, 15 kHz SCS, FDD): Active RBs = 79 (30 MHz at 15 kHz SCS) MCS 20, 256-QAM → similar spectral efficiency DL slots/s = 1000 (FDD, always on) TBS per slot ≈ 8,500 bits SCell DL ≈ 8.5 Mbps // CA total: Total DL = 44 + 8.5 ≈ 52 Mbps // With 5 carriers (n78 + 4×n78 @ 100 MHz each): Peak DL ≈ 44 × 5 = 220 Mbps (theoretical peak, single UE)