5G NR的设计哲学与LTE截然不同——LTE仅定义了Format 1/1a/1b/2/2a/2b/3七种子格式,全部是长格式(1ms子帧边界传输)。NR面对的场景远比LTE复杂:
这五种格式不是随意定义的,而是沿两个维度交叉设计的结果:
graph TB
A[UCI载荷大小] --> B["≤2 bit"]
A --> C[">2 bit"]
B --> D{"符号数"}
C --> E{"符号数"}
D -->|"1-2符号"| F["Format 0<br/>序列选择/调制"]
D -->|"4-14符号"| G["Format 1<br/>OCC扩频+序列调制"]
E -->|"1-2符号"| H["Format 2<br/>OFDM DMRS+数据复用"]
E -->|"4-14符号"| I{"是否需要UE复用"}
I -->|"单UE"| J["Format 3<br/>OFDM 无扩频"]
I -->|"多UE"| K["Format 4<br/>Block-wise扩频"]
style F fill:#4CAF50,color:#fff
style G fill:#2196F3,color:#fff
style H fill:#FF9800,color:#fff
style J fill:#9C27B0,color:#fff
style K fill:#F44336,color:#fff
TS 38.213 Section 9.2.1给出了明确的格式选择判定规则:UE首先根据UCI比特数确定PUCCH资源集索引,然后在对应资源集中根据DCI的PUCCH Resource Indicator字段选择具体PUCCH资源,资源的格式由RRC配置隐含确定。
3GPP定义了最多4个PUCCH Resource Set,按UCI载荷大小分级:
| 资源集编号 | UCI载荷范围 | 最大资源数 | 典型格式 | 配置参数 |
|---|---|---|---|---|
| Set 0 | ≤2 bit | 32 | F0/F1 | 无maxPayloadSize |
| Set 1 | >2 bit 且 ≤N₁ | 32 | F2/F3/F4 | maxPayloadSize=N₁ |
| Set 2 | >N₁ 且 ≤N₂ | 32 | F2/F3 | maxPayloadSize=N₂ |
| Set 3 | >N₂ 且 ≤1706 | 32 | F2/F3 | maxPayloadSize=1706 |
关键设计意图:Set 0是"轻量通道",承载最关键的HARQ-ACK和SR反馈(1-2bit),gNB可以为大量UE配置不同的Format 0/1资源实现复用。Set 1-3是"大容量通道",当聚合载波数增多、码本变大时自动升级到更高阶资源集。
Set 0的UCI比特数上限固定为2,不需要maxPayloadSize参数(TS 38.331 PUCCH-Config IE定义)。Set 1-3通过maxPayloadSize显式声明各自承载的比特上限。
PUCCH的完整配置链路涉及三个层次的IE嵌套:
graph TD
A["BWP-Config<br/>(TS 38.331)"] --> B["PUCCH-Config<br/>per BWP"]
B --> C["resourceSetToAddModList<br/>最多4个PUCCH-ResourceSet"]
B --> D["resourceToAddModList<br/>最多128个PUCCH-Resource"]
B --> E["spatialRelationInfoToAddModList<br/>最多8个Spatial Relation"]
C --> F["PUCCH-ResourceSet"]
F --> G["resourceIdList<br/>引用PUCCH-Resource ID"]
F --> H["maxPayloadSize<br/>UCI比特上限"]
D --> I["PUCCH-Resource"]
I --> J["formatType: F0/F1/F2/F3/F4"]
I --> K["startingPRB / nrofPRBs"]
I --> L["startingSymbolIndex / nrofSymbols"]
I --> M["initialCyclicShift / timeDomainOCC"]
style C fill:#E3F2FD
style D fill:#FFF3E0
style E fill:#E8F5E9
一个典型的PUCCH-Resource配置示例(TS 38.331 ASN.1):
PUCCH-Resource ::= SEQUENCE {
pucch-ResourceId PUCCH-ResourceId,
startingPRB INTEGER (0..maxNrofPhysicalResourceBlocks-1),
secondHopPRB INTEGER (0..maxNrofPhysicalResourceBlocks-1) OPTIONAL,
format ENUMERATED {format0, format1, format2, format3, format4},
-- Format 0/1 specific
initialCyclicShift INTEGER (0..11) OPTIONAL, -- m0
nrofSymbols INTEGER (1..2) OPTIONAL, -- Format 0/2
startingSymbolIndex INTEGER (0..13) OPTIONAL,
-- Format 1 specific
timeDomainOCC INTEGER (0..6) OPTIONAL,
-- Format 2/3 specific
nrofPRBs INTEGER (1..16) OPTIONAL,
-- Format 4 specific
occ-Length ENUMERATED {n1,n2,n4} OPTIONAL,
occ-Index INTEGER (0..n4-1) OPTIONAL
}
gNB在调度PDSCH的DCI Format 1_0/1_1中通过PUCCH Resource Indicator (PRI) 字段动态指示UE使用哪个PUCCH资源。
PRI字段比特数 = ⌈log₂(N_PUCCH)⌉,其中N_PUCCH是当前激活资源集中的PUCCH资源数。
决策时序如下:
sequenceDiagram
participant gNB
participant UE
Note over UE: Step 1: 计算UCI总比特数<br/>O_ACK + O_SR + O_CSI
gNB->>UE: DCI 1_1 (含PRI=3, K1=4)
Note over UE: Step 2: 根据UCI比特数<br/>确定Resource Set索引
Note over UE: Step 3: 在对应Resource Set中<br/>PRI=3 → 第4个PUCCH Resource
Note over UE: Step 4: 查询PUCCH-Resource配置<br/>确定Format/PRB/Symbol
Note over UE: Step 5: 确定PUCCH发送时机<br/>slot n + K1
UE->>gNB: PUCCH (指定格式/资源)
运营商成本博弈点:PUCCH资源越多,PRI字段越宽,DCI开销越大。运营商需要在"PUCCH灵活性"和"DCI开销"之间取舍。实际部署中,Set 0通常配置8-16个资源(PRI=3-4bit),Set 1配置4-8个资源。
Format 0是NR独有的创新设计——不传任何数据符号,UCI信息完全通过序列选择编码。
| 参数 | 取值 |
|---|---|
| 符号数 | 1或2 |
| PRB数 | 1 |
| DMRS | 无 |
| UCI容量 | 1-2 bit |
| 序列长度 | 12(1PRB的子载波数) |
| 多UE复用 | 通过不同initialCyclicShift(最多12个) |
HARQ-ACK到序列循环移位的映射(TS 38.211 Table 9.2.3-3/4):
| HARQ-ACK比特 | 值 | m_cs(循环移位索引) |
|---|---|---|
| 1 bit | NACK | m₀ |
| 1 bit | ACK | m₀ + 6 |
| 2 bit | NACK/NACK | m₀ |
| 2 bit | ACK/NACK | m₀ + 3 |
| 2 bit | NACK/ACK | m₀ + 6 |
| 2 bit | ACK/ACK | m₀ + 9 |
SR复用机制:当HARQ-ACK和Positive SR同时发送时,Format 0通过选择不同的循环移位来区分: - Negative SR + HARQ-ACK:使用上表映射 - Positive SR + HARQ-ACK:循环移位索引额外偏移 Δ_shift = N_CS,其中N_CS由高层参数配置
Format 2是短PUCCH中唯一支持大UCI载荷的格式,采用OFDM结构,DMRS和数据在不同子载波上频分复用。
graph TB
subgraph "Format 2 时频结构(2符号示例)"
direction LR
subgraph "Symbol 0"
D1["DMRS: 每4个子载波插入1个DMRS<br/>Pattern: DMRS-Data-Data-Data"]
end
subgraph "Symbol 1"
D2["DMRS: 同样Pattern<br/>与Symbol 0频域交错"]
end
end
| 参数 | 取值范围 |
|---|---|
| 符号数 | 1或2 |
| PRB数 | 1-16 |
| DMRS | 频分复用,密度1/4 |
| UCI容量 | 最大约1400+ bit(取决于PRB数) |
| 调制方式 | QPSK(当UCI+CRC > 11bit时用PI/2 BPSK可选) |
| 多UE复用 | FDM(不同UE分配不同PRB) |
Format 2的PRB数由PUCCH-Resource中的nrofPRBs显式配置。gNB根据预期UCI比特数选择合适的PRB数。经验公式(近似):
O_UCI ≤ nrofPRBs × nrofSymbols × 3 × Rate_matching_ratio
其中Rate_matching_ratio通常取0.8-0.9(考虑DMRS开销和编码率限制)。
| 维度 | Format 0 | Format 1 | Format 2 | Format 3 | Format 4 |
|---|---|---|---|---|---|
| 符号数 | 1-2 | 4-14 | 1-2 | 4-14 | 4-14 |
| PRB数 | 1 | 1 | 1-16 | 1-16 | 1 |
| DMRS | 无 | TDM | FDM | TDM | TDM |
| UCI容量 | ≤2 bit | ≤2 bit | >2 bit | >2 bit | >2 bit |
| 波形 | DFT-s-OFDM | DFT-s-OFDM | CP-OFDM | CP-OFDM/DFT-s-OFDM | DFT-s-OFDM |
| UE复用 | CS(12个) | CS+OCC(84个) | FDM | 无 | Block-spreading(2/4个) |
| 覆盖 | 弱 | 强(长符号) | 弱 | 强(长符号+多PRB) | 中等 |
| 典型场景 | 单CC HARQ-ACK | 单CC远端UE | 多CC HARQ-ACK | 大码本 | 中等码本+复用 |
Format 1的84个UE复用:由12个initialCyclicShift × 7个timeDomainOCC = 84个正交资源。当符号数≥7时,OCC长度为7;符号数4-6时,OCC长度为符号数-3(DMRS占3个符号)。
当多种UCI在同一个PUCCH时机碰撞时,UE必须按TS 38.213 Section 9.2.5的规则进行复用或丢弃。
三大UCI类型及其优先级(从高到低):
flowchart TD
A["UCI碰撞检测<br/>同一slot有多种UCI"] --> B{"HARQ-ACK + SR?"}
B -->|Yes| C{"UCI总比特 ≤ 2?"}
C -->|Yes| D["Format 0/1: 序列选择编码<br/>Positive SR通过循环移位偏移表示"]
C -->|No| E["Format 2/3: 载荷拼接<br/>HARQ-ACK + 1bit SR指示"]
B -->|No| F{"HARQ-ACK + CSI?"}
F -->|Yes| G{"UCI总比特 ≤ PUCCH容量?"}
G -->|Yes| H["复用传输<br/>HARQ-ACK + CSI Part1 + CSI Part2"]
G -->|No| I["丢弃CSI<br/>仅发HARQ-ACK"]
F -->|No| J{"SR + CSI?"}
J -->|Yes| K{"有Positive SR?"}
K -->|Yes| L["仅发SR<br/>丢弃CSI"]
K -->|No| M["丢弃SR<br/>仅发CSI"]
J -->|No| N["各UCI独立发送"]
style D fill:#4CAF50,color:#fff
style H fill:#2196F3,color:#fff
style I fill:#FF9800,color:#fff
style L fill:#9C27B0,color:#fff
Format 0场景(UCI ≤ 2 bit): - HARQ-ACK通过循环移位编码 - Positive SR通过额外偏移N_CS个循环移位表示 - Negative SR不改变HARQ-ACK映射
Format 2/3场景(UCI > 2 bit): - SR用1bit表示(0=Negative,1=Positive) - HARQ-ACK和SR在编码前直接拼接:[HARQ-ACK bits] + [SR bit] - 总比特数 = O_ACK + O_SR
CSI报告在Rel-15/16/17中被分为Part 1和Part 2,这是一个精妙的设计:
| CSI部分 | 内容 | 特点 |
|---|---|---|
| Part 1 | RI(Rank Indicator)+ CQI + CRC | 固定载荷大小,gNB可直接解码 |
| Part 2 | PMI(Precoding Matrix Indicator) | 载荷大小取决于Part 1中的RI值 |
设计意图:Part 2的载荷大小依赖于Part 1的RI值。gNB先解码Part 1获得RI,然后才能确定Part 2的比特长度并解码Part 2。这种"两阶段解码"避免gNB盲检CSI载荷大小。
当UCI总比特超过PUCCH容量时,丢弃顺序: 1. 首先丢弃CSI Part 2 2. 如果仍然超载,丢弃CSI Part 1 3. HARQ-ACK永不丢弃
TS 38.213 Section 9.2.5.0引入了增强的优先级机制,支持URLLC和eMBB业务的UCI差异化处理:
| 碰撞场景 | 处理规则 | TS参考 |
|---|---|---|
| HP HARQ-ACK vs LP HARQ-ACK | HP HARQ-ACK优先,LP被丢弃 | 38.213 §9.2.5.0 |
| HP HARQ-ACK vs LP CSI | HP HARQ-ACK优先,LP CSI丢弃 | 38.213 §9.2.5 |
| LP HARQ-ACK vs HP CSI | 如果能复用则复用,否则LP HARQ-ACK丢弃 | 38.213 §9.2.5.0 |
| HP PUSCH vs LP PUCCH | 丢弃LP PUCCH上的UCI | 38.213 §9.2.5 |
HP=High Priority(URLLC),LP=Low Priority(eMBB)。这种机制确保URLLC的HARQ-ACK始终能及时反馈,不受eMBB业务干扰。
PUCCH的波束方向通过Spatial Relation信息确定(TS 38.213 Section 9.2.3):
graph TB
A["PUCCH Spatial Relation"] --> B["参考源选择"]
B --> C["SSB Index"]
B --> D["CSI-RS Index<br/>(NZP CSI-RS)"]
B --> E["SRS Index"]
A --> F["配置方式"]
F --> G["RRC静态配置<br/>spatialRelationInfo"]
F --> H["MAC CE动态激活<br/>PUCCH Spatial Relation<br/>Activation/Deactivation MAC CE"]
A --> I["激活路径"]
I --> J["最多8个候选<br/>通过MAC CE选择1个激活"]
style G fill:#E3F2FD
style H fill:#FFF3E0
MAC CE激活流程(TS 38.321 Section 6.1.3.29):
| 字段 | 大小 | 含义 |
|---|---|---|
| Serving Cell ID | 5 bit | 目标服务小区 |
| BWP ID | 2 bit | 目标BWP |
| PUCCH Resource ID | n bit | 目标PUCCH资源 |
| Spatial Relation Info ID | 3 bit | 从RRC配置的8个候选中激活哪一个 |
Rel-17多TRP增强:TS 38.321 Section 6.1.3.45定义了支持多TRP的PUCCH Spatial Relation Activation/Deactivation MAC CE,允许PUCCH重复(Repetition)时在不同TRP方向上轮转发送。
| 识别维度 | 抓包字段 | 判断方法 |
|---|---|---|
| PUCCH格式 | RRC Reconfiguration中的formatType | 直接读取PUCCH-Resource IE |
| 资源集 | PUCCH-ResourceSet ID | 根据maxPayloadSize推算承载范围 |
| UCI比特数 | DCI中的PRI + HARQ-ACK码本大小 | PRI索引映射到PUCCH-Resource |
| 波束方向 | MAC CE中激活的Spatial Relation ID | 关联到对应SSB/CSI-RS/SRS |
故障1:PUCCH Resource Set 0资源不足 - 现象:UE在多载波聚合时HARQ-ACK丢失 - 根因:UCI比特数超过Set 0的2bit上限,但Set 1未配置或PRI指向错误 - 定位:检查PUCCH-Config中resourceSetToAddModList是否包含Set 1
故障2:CSI被频繁丢弃 - 现象:gNB CSI报告缺失,下行调度MCS偏低 - 根因:HARQ-ACK码本过大,挤占了CSI的PUCCH容量 - 定位:检查PUCCH-Resource的nrofPRBs是否足够承载O_ACK + O_CSI
故障3:Format 0循环移位碰撞 - 现象:gNB解码HARQ-ACK出现大面积错误 - 根因:多个UE的initialCyclicShift配置冲突 - 定位:检查同小区UE的PUCCH-Resource配置,确保m₀ + Δ_mcs不重叠
Q1: Format 0和Format 1都承载≤2bit UCI,何时用哪个? A: 关键区别在于符号数和覆盖。Format 0用1-2符号(短PUCCH),适合时延敏感场景(URLLC);Format 1用4-14符号(长PUCCH),适合覆盖受限场景(小区边缘UE)。Format 1还支持更多UE复用(84 vs 12)。
Q2: PUCCH Resource Set 0为什么最多32个资源? A: 这是PRI字段开销和资源灵活性的折中。32个资源需要5bit PRI,与DCI Format 1_0的字段设计对齐。32个资源足以覆盖典型8x8 PRB网格中的Format 0/1跳频资源分配。
Q3: CSI Part 1/Part 2分离编码的核心价值是什么? A: Part 1固定大小,gNB可以无歧义解码获得RI;Part 2大小依赖RI值,gNB根据已解码的RI推算Part 2长度再解码。这避免了gNB盲检所有可能的PMI组合,大幅降低了解码复杂度。
Q4: UCI超过PUCCH容量时为什么先丢CSI Part 2而不是Part 1? A: 因为Part 1包含RI和CQI,这些是下行调度的关键输入。Part 2的PMI是"锦上添花"——即使没有PMI,gNB仍可根据CQI用开环MIMO调度。丢失RI会导致整个MIMO维度错乱,代价远大于丢失PMI。
Q5: 为什么Format 4最多只支持4个UE复用? A: Format 4使用Block-wise spreading(pre-DFT扩频),扩频因子只有2和4两种。扩频因子受限于单PRB内的子载波数(12个)和DMRS开销。更大的扩频因子会导致序列正交性恶化。
本文由「51学通信」技术团队出品。51学通信由通信行业18年老兵爱卫生(微信ID: gprshome201101)维护,聚焦5G/6G核心网、3GPP标准解读、通信前沿技术深度分析。 出版作品有《5G核心网原理与实践》《IMS原理与实践》等4本通信专业书籍。知识星球「51学通信」提供深度技术答疑和行业洞察。
[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。
