5G NR的上行功率控制远不止"调高或调低功率"这么简单。TS 38.213 Section 7.1.1定义的PUSCH功率控制公式,涉及开环(Open-Loop)参数集索引 j、闭环(Closed-Loop)TPC累积状态索引 l、路损参考信号索引 qd、SRI到功控参数映射、DCI承载的TPC命令等多个维度的交织决策。一个UE在同一次PUSCH传输中,需要同时确定使用哪组P₀/α参数、哪个路损估计、哪个TPC累积状态——这些选择完全由RRC配置、DCI字段和传输场景共同驱动。
本文基于TS 38.213 V18.8.0 Section 7.1、TS 38.331 PUSCH-PowerControl IE、TS 38.212 DCI Format 0_1/0_2/2_2,深度拆解PUSCH功控的双环架构和TPC命令博弈。
TS 38.213 Section 7.1.1定义的PUSCH发射功率计算公式:
P_PUSCH(b,f,c)(i,j,qd,l) = min{P_CMAX,f,c(i),
P_O_PUSCH(b,f,c)(j) + 10·log10(2^μ·M_RB(b,f,c)^PUSCH(i))
+ α(b,f,c)(j)·PL(b,f,c)(qd) + ΔTF,b,f,c(i) + f(b,f,c)(i,l)} [dBm]
这六个参数各司其职,构成了一个多层博弈系统:
flowchart TB
subgraph 开环OL["开环功率控制 (Open Loop)"]
P0["P_O_PUSCH(j)<br/>目标接收功率"]
ALPHA["α(j)<br/>路损补偿因子"]
PL["PL(qd)<br/>下行路损估计"]
M["M_RB<br/>带宽修正"]
DTF["ΔTF<br/>MCS功率偏移"]
end
subgraph 闭环CL["闭环功率控制 (Closed Loop)"]
F["f(i,l)<br/>TPC累积修正"]
end
subgraph 上限["功率上限"]
PCMAX["P_CMAX<br/>UE最大发射功率"]
end
P0 --> FORMULA["min(P_CMAX, OL + CL)"]
ALPHA --> FORMULA
PL --> FORMULA
M --> FORMULA
DTF --> FORMULA
F --> FORMULA
PCMAX --> FORMULA
FORMULA --> TX["PUSCH发射功率"]
设计意图:开环部分让UE自主估算"应该用多大功率才能被gNB正确接收",闭环部分让gNB精细微调"实际应该再增减多少"。两者结合实现了快速自适应与精确控制的平衡。
TS 38.213 Section 7.1.1定义了开环参数集索引j的取值规则:
| j值 | 适用场景 | P₀来源 | α来源 |
|---|---|---|---|
| j=0 | Msg3 PUSCH(RAR授权)、Configured Grant Type 1 | p0-PUSCH-AlphaSetId指向的第一组或默认值(P₀=0, α=1) | 同左 |
| j=1 | 动态授权PUSCH(DCI 0_0/0_1/0_2调度)、Configured Grant Type 2 | SRI-PUSCH-PowerControl映射的p0-AlphaSetId | 同左 |
gNB通过RRC IE PUSCH-PowerControl 配置最多30组开环参数:
PUSCH-PowerControl ::= SEQUENCE {
p0-PUSCH-AlphaSetList SEQUENCE(SIZE(1..30)) OF P0-PUSCH-AlphaSet
p0-NominalWithoutGrant INTEGER (-202..24) dBm -- CG Type 1的标称功率
p0-NominalWithGrant INTEGER (-202..24) dBm -- 动态授权的标称功率
...
}
P0-PUSCH-AlphaSet ::= SEQUENCE {
p0 INTEGER (-16..15) dB -- UE特定偏移
alpha ENUMERATED {alpha0, alpha04, alpha05, alpha06,
alpha07, alpha08, alpha09, alpha1}
}
P_O_PUSCH(j)的组成:
P_O_PUSCH(j) = P_O_NOMINAL_PUSCH(j) + P_O_UE_PUSCH(j)
其中P_O_NOMINAL通过SIB广播或RRC专用信令提供,P_O_UE通过上述p0字段配置。
这是NR引入的关键创新——通过SRI(Sounding Reference Indicator)实现快速的开环参数切换:
sequenceDiagram
participant gNB
participant UE
Note over gNB,UE: RRC配置阶段
gNB->>UE: PUSCH-PowerControl<br/>含p0-AlphaSetList(30组)
gNB->>UE: SRI-PUSCH-PowerControl<br/>SRI值→p0-AlphaSetId映射
Note over gNB,UE: 调度阶段
gNB->>UE: DCI Format 0_1<br/>SRI field = 01
UE->>UE: 查表: SRI=01 → Set#3<br/>获取P₀=-60dBm, α=0.8
UE->>UE: 计算开环功率<br/>P_OL = P₀ + α·PL + 10log(M)
UE->>UE: 应用闭环修正<br/>P_PUSCH = min(P_CMAX, P_OL + f(i,l))
UE->>gNB: PUSCH传输
设计意图:不同SRI指向不同的SRS资源,对应不同的上行波束/空间滤波器。每个波束可能经历不同的路损特性,因此需要独立的开环参数组。SRI映射机制使得一次DCI调度就能完成波束切换+功控参数切换,避免了额外的MAC CE信令开销。
α的取值范围:{0, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0}
| α值 | 策略 | 小区中心UE | 小区边缘UE | 小区间干扰 |
|---|---|---|---|---|
| 1.0 | 全补偿 | 功率低 | 功率高(路损全补) | 高(边缘UE发射功率大) |
| 0.7-0.9 | 部分补偿 | 功率低 | 功率中(部分补偿) | 中等 |
| 0.4-0.6 | 弱补偿 | 功率低 | 功率较低 | 低 |
| 0 | 不补偿 | 所有UE使用相同基准功率 | 严重不足 | 最低 |
博弈分析:
UE通过下行参考信号估计路损:
PL = referenceSignalPower - higherLayerFilteredRSRP
路损参考信号索引qd由RRC参数pathlossReferenceLinking和PUSCH-PathlossReferenceRS-r16配置,可关联到:
| 参考信号类型 | 配置方式 | 适用场景 |
|---|---|---|
| SSB(SS/PBCH Block) | SIB或RRC提供ss-PBCH-BlockPower | 初始接入、默认路损参考 |
| CSI-RS | RRC配置CSI-RS Resource的powerControlOffsetSS | 连接态精细路损跟踪 |
NR支持最多4个PUSCH路损参考信号(TS 38.331 maxNrofPUSCH-PathlossReferenceRS = 4),通过MAC CE动态切换激活的参考信号。
抓包识别:在RRC Reconfiguration中搜索pusch-PathlossReferenceRSId字段,每个ID关联一个SSB或CSI-RS资源索引。
闭环功控分量f(i,l)有两种运行模式,由RRC参数tpc-Accumulation决定:
累积模式(Accumulated,默认):
f(i,l) = f(i-1,l) + δ_PUSCH(i - K_PUSCH)
每次TPC命令叠加在上一次累积值之上,实现渐进式调整。
绝对模式(Absolute):
f(i,l) = δ_PUSCH(i - K_PUSCH)
每次TPC命令直接替换当前值,实现一步到位调整。
| TPC命令(2bit) | 累积模式 δ [dB] | 绝对模式 δ [dB] | 典型用途 |
|---|---|---|---|
| 00 | -1 | -4 | 大幅降功率 |
| 01 | 0 | -1 | 维持/小幅降 |
| 10 | +1 | +1 | 小幅升功率 |
| 11 | +3 | +4 | 大幅升功率 |
博弈分析:
flowchart LR
subgraph TPC承载方式
D1["DCI Format 0_0/0_1/0_2<br/>UL调度中的TPC字段<br/>UE专用"]
D2["DCI Format 2_2<br/>TPC-PUSCH-RNTI<br/>组公共"]
D3["DCI Format 2_2<br/>TPC-PUCCH-RNTI<br/>组公共"]
end
D1 --> |"C-RNTI加扰<br/>2-bit TPC"| UE1["单个UE<br/>调度伴随TPC"]
D2 --> |"TPC-PUSCH-RNTI加扰<br/>Block结构"| UE2["一组UE<br/>PUSCH功控"]
D3 --> |"TPC-PUCCH-RNTI加扰<br/>Block结构"| UE3["一组UE<br/>PUCCH功控"]
DCI Format 2_2的结构(TS 38.212 Section 7.3.1.7):
| Block#1 | Block#2 | ... | Block#N |
| ServingCellId(5bit) | BWPId(2bit) | TPC(2bit) | ServCellId | BWPId | TPC | ... | ... | ... |
每个Block包含:Serving Cell ID(5bit)、UL BWP ID(2bit,仅当配置了closedLoopIndex时存在)、TPC命令(2bit)。一个DCI 2_2可同时携带多个UE的TPC命令,每个UE通过RRC参数tpc-Index知道自己对应第几个Block。
设计意图:DCI 2_2组公共TPC的引入,是为了解决免授权传输(Configured Grant)场景下UE没有UL调度DCI的问题。此时gNB无法通过DCI 0_1伴随发送TPC,只能通过DCI 2_2统一发送。这保证了CG-SDT、SPS PUSCH等半持续传输也能享受闭环功控。
NR支持为PUSCH配置两个独立的闭环功控状态(TS 38.213 Section 7.1.1),由RRC参数twoPUSCH-PC-AdjustmentStates激活:
| 状态索引l | 触发方式 | 应用场景 |
|---|---|---|
| l=0 | DCI中SRI field或closedLoopIndex指向 | 主TRP/主波束 |
| l=1 | DCI中closedLoopIndex=1 | 辅TRP/辅波束 |
当配置了双闭环状态时,DCI Format 0_1/0_2中会出现1bit的Closed loop indicator字段,指示本次TPC命令应更新哪个累积状态:
sequenceDiagram
participant TRP1 as TRP1(主)
participant gNB as gNB(CU)
participant TRP2 as TRP2(辅)
participant UE
Note over UE: 两个独立TPC累积状态
Note over UE: f(i,l=0) → TRP1方向
Note over UE: f(i,l=1) → TRP2方向
gNB->>UE: DCI 0_1调度PUSCH
Note over gNB,UE: SRI=0 → p0-AlphaSet#1<br/>closedLoopIndex=0
UE->>UE: 使用f(i,l=0)累积值<br/>TRP1方向功控
UE->>TRP1: PUSCH(朝TRP1波束)
UE->>TRP2: PUSCH(朝TRP1波束,TRP2也收到)
Note over TRP1: 测量SINR偏低
TRP1->>gNB: L1测量报告
gNB->>UE: DCI 0_1<br/>closedLoopIndex=0<br/>TPC=11(+3dB)
UE->>UE: f(i,0) += 3dB
Note over TRP2: 测量SINR偏高
TRP2->>gNB: L1测量报告
gNB->>UE: DCI 0_1<br/>closedLoopIndex=1<br/>TPC=00(-1dB)
UE->>UE: f(i,1) += (-1)dB
设计意图:Multi-TRP场景中,UE面向不同TRP的波束经历不同信道,需要独立的闭环功控。如果只有一个TPC累积状态,gNB对TRP1方向说"增功率"会同时影响TRP2方向的干扰水平。双闭环状态解耦了两个方向的功控,使Multi-TRP功率管理更加灵活。
TPC命令不是即时生效的。从DCI发送到TPC命令作用于PUSCH传输,存在K_PUSCH个时隙的延迟:
f(i,l)取决于i - K_PUSCH时刻收到的TPC命令
K_PUSCH的值与UE处理能力、子载波间隔μ、DCI-to-PUSCH时序有关。典型值在μ=1(30kHz SCS)时为2-3个时隙。这意味着gNB在计算TPC命令时必须预测未来K_PUSCH个时隙后的信道状况——这是一个隐含的博弈。
sequenceDiagram
participant gNB
participant UE
rect rgb(230,240,255)
Note over gNB,UE: 阶段一:RRC配置
gNB->>UE: RRC Reconfiguration
Note right of UE: PUSCH-PowerControl:<br/>• p0-AlphaSetList[{p0=-60dB,α=0.8},{p0=-70dB,α=1.0}]<br/>• p0-NominalWithGrant=-78dBm<br/>• twoPUSCH-PC-AdjustmentStates=true
gNB->>UE: RRC Reconfiguration
Note right of UE: SRI-PUSCH-PowerControl:<br/>• SRI=0 → SetId=0, PL-RS-id=0, CL-l=0<br/>• SRI=1 → SetId=1, PL-RS-id=1, CL-l=1
gNB->>UE: MAC CE激活PUSCH Pathloss RS#0
end
rect rgb(255,240,230)
Note over gNB,UE: 阶段二:路损估计
UE->>UE: 测量SSB#0的RSRP<br/>PL = ss-PBCH-BlockPower - RSRP<br/>假设PL=120dB
end
rect rgb(230,255,230)
Note over gNB,UE: 阶段三:DCI调度+TPC
gNB->>UE: DCI Format 0_1<br/>SRI=0, TPC=10(+1dB)<br/>closedLoopIndex=0
UE->>UE: 查表SRI=0:<br/>j方向: Set#0 (P₀=-60dB, α=0.8)<br/>qd方向: PL-RS#0 (PL=120dB)<br/>l方向: CL状态#0
UE->>UE: 计算功率:<br/>P_OL=-78+(-60)+0.8×120+10log(50RB)<br/> =-78-60+96+17=-25dBm<br/>f(i,0)=0+1=1dB<br/>P_PUSCH=min(23,-25+1)=-24dBm
UE->>gNB: PUSCH @ -24dBm
end
rect rgb(255,230,255)
Note over gNB,UE: 阶段四:闭环微调
gNB->>UE: DCI Format 2_2<br/>TPC-PUSCH-RNTI加扰<br/>Block#0: TPC=11(+3dB)
UE->>UE: f(i+1,0)=1+3=4dB<br/>下次PUSCH功率增加3dB
end
P_O_PUSCH(j)的完整分解:
P_O_PUSCH(j) = P_O_NOMINAL_PUSCH + P_O_UE_PUSCH(j)
| 分量 | 配置方式 | 取值范围 | 说明 |
|---|---|---|---|
| P_O_NOMINAL_PUSCH | SIB1中p0-NominalWithGrant | -202~+24 dBm | 小区级基准接收功率目标 |
| P_O_UE_PUSCH | p0-AlphaSet中的p0 | -16~+15 dB | UE特定偏移 |
P_O_NOMINAL代表了gNB期望的"理想接收功率",P_O_UE则针对每个UE的硬件差异、天线增益等进行补偿。
ΔTF根据MCS索引和传输块大小计算,反映高阶调制对SNR需求的提升:
当 Ks=1.25时: ΔTF = 10·log10((2^1.25·R·MCS_factor) - 1)
当 Ks=0时: ΔTF = 0(禁用MCS偏移)
其中Ks由deltaMCS参数控制。R为码率。高MCS(如256QAM)需要更高SNR,ΔTF为正值使UE增加功率;低MCS(如QPSK低码率)允许降低功率。
| 抓包点 | 识别方法 | 关键字段 |
|---|---|---|
| RRC Reconfiguration | 搜索PUSCH-PowerControl IE | p0-AlphaSetList, tpc-Accumulation |
| DCI Format 0_1 | 在PDCCH中按C-RNTI过滤 | TPC field(2bit), SRI field, closedLoopIndex |
| DCI Format 2_2 | 按TPC-PUSCH-RNTI过滤 | Block结构中的TPC command |
| MAC CE | 功控相关MAC CE | TCI States Activation, Pathloss RS Update |
| 故障现象 | 可能原因 | 排错思路 |
|---|---|---|
| PUSCH SINR持续偏低 | P₀配置过低或α偏小 | 检查RRC中p0-AlphaSet值,对比路损估计是否合理 |
| UE发射功率频繁撞顶(P_CMAX) | 开环参数过高或路损估计不准 | 检查referenceSignalPower配置,验证SSB RSRP测量 |
| 边缘UE吞吐量骤降 | α=1导致邻区干扰加剧 | 尝试降低α至0.7-0.8,启用部分路损补偿 |
| CG PUSCH功率漂移 | 未配置DCI 2_2组TPC | 确认TPC-PUSCH-RNTI配置和tpc-Index |
| Multi-TRP功率振荡 | 两个闭环状态TPC冲突 | 检查closedLoopIndex映射,确认两个TRP的TPC是否协调 |
| ## 10. 与LTE PUSCH功控的对比 |
| 特性 | LTE (TS 36.213) | NR (TS 38.213) |
|---|---|---|
| 开环参数集数量 | 1组(P₀_UE_PUSCH + α) | 最多30组(p0-AlphaSetList) |
| 闭环状态数量 | 1个 | 2个(l=0/1) |
| SRI映射 | 不支持 | 支持SRI→(P₀,α,PL-RS,CL)映射 |
| 波束级路损 | 不支持(CRS路损) | 支持(SSB/CSI-RS多路损参考) |
| 组TPC | DCI Format 3/3A | DCI Format 2_2 |
| BWP级功控 | 不支持 | 支持per-BWP独立参数 |
| Multi-TRP | 不支持 | 通过双闭环状态支持 |
stateDiagram-v2
[*] --> 初始化: RRC配置完成
初始化 --> 开环计算: 收到UL调度或CG触发
state 开环计算 {
[* --> 确定j值: Msg3→j=0<br/>动态/CG→j=1
确定j值 --> 选择P0AlphaSet: 通过SRI映射或默认
选择P0AlphaSet --> 估计路损: 使用PL-RS(qd)
估计路损 --> 计算开环功率: P₀+α·PL+10log(M)+ΔTF
}
开环计算 --> 闭环修正: 加载f(i,l)
state 闭环修正 {
[* --> 检查TPC模式: accumulated或absolute
检查TPC模式 --> 累积: f(i)=f(i-1)+δ
检查TPC模式 --> 绝对: f(i)=δ
累积 --> 应用闭环值
绝对 --> 应用闭环值
}
闭环修正 --> 功率上限: min(P_CMAX, ...)
功率上限 --> PUSCH发射: 最终功率确定
PUSCH发射 --> gNB测量: gNB测量SINR
gNB测量 --> TPC命令: 生成TPC命令
TPC命令 --> 闭环修正: 更新f(i,l)
Rel-18对PUSCH功控的增强(TS 38.213 V18.x):
Rel-19正在讨论的方向: - AI/ML辅助的功控参数预测 - 高频段(FR2-2, 52.6-71GHz)的功控增强 - NTN(Non-Terrestrial Network)场景的大RTT补偿
Q1: 累积模式和绝对模式如何选择? A: 累积模式是默认模式,适合信道变化较慢的场景(低速移动、稳定信道)。绝对模式适合需要快速功率纠正的场景(高速移动、信道突变)。实际部署中,大部分厂商默认使用累积模式,绝对模式在高速场景下可能更优。
Q2: 为什么Msg3使用j=0而非j=1? A: Msg3在随机接入阶段发送,此时UE尚未获得完整的RRC配置(包括p0-AlphaSetList)。j=0使用默认参数或初始BWP中有限的配置,确保UE在没有精细参数的情况下也能合理设置功率。一旦进入连接态并获得完整配置,后续PUSCH使用j=1享受精细参数控制。
Q3: DCI 2_2组TPC的Block编号如何对应到具体UE?
A: gNB通过RRC参数PUSCH-TPC-CommandConfig中的tpc-Index字段告知UE它在DCI 2_2 payload中对应的Block位置。UE收到DCI 2_2后,只解析自己索引对应的Block中的TPC命令。
Q4: α=0时PUSCH功控如何工作? A: α=0意味着完全不补偿路损,开环部分仅提供P₀+10log(M)+ΔTF。此时路损大的UE(边缘)和路损小的UE(中心)的开环功率几乎相同,全靠闭环TPC命令来区分。这种方式实际上把功控权完全交给了gNB的闭环控制。
Q5: 双闭环状态在单TRP场景下有用吗? A: 有用。即使只有一个TRP,双闭环状态也可以分别对应不同的SRI(不同上行波束),实现per-beam的独立功控。当UE在不同波束间切换时,不需要重置TPC累积值,直接使用对应波束的独立累积状态。
本文由「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 等场景全覆盖。
