协议学习之Paging
paging可以理解有三种,寻呼、系统消息更新以及重大灾害报警(SIB6、SIB7、SIB8),通过DCI 字段short messages indicator和short messages指示控制
PF和PO的计算
T: DRX cycle of the UE.
N: number of total paging frames in T
Ns: number of paging occasions for a PF
PF_offset: offset used for PF determination
UE_ID:
If the UE operates in eDRX as specified in clause 7.4:
- 5G-S-TMSI mod 4096
else:
- 5G-S-TMSI mod 1024
paging使用DRX,一是可以降低UE的功耗,idle态的UE只会在paging的cycle中醒来监听PDCCH,二是降低了BS的处理量,主打的就是一个节能减排
- T,默认取值是defaultPaingCylce,当配置eDRX的时候,会使用eDRX的参数,此处不考虑此种情况;
- N,取自nAndPagingFrameOffset,例如halfT表示T/2,加入T=64,则N为32,表示一个T中有一半的sfn是paging frames
- PF_offset,取自nAndPagingFrameOffset,例如(0…1)中取1,表示每个1个sfn有一个PF
- NS,表示PF中有多少个PO,枚举值0-2表示4 2 1
- SFN,表示PF所在的帧,通过上面formular可以计算得到
- i_s,表示PO的索引值,通过查表可知PO落在哪个symbol
PDCCH监听时刻(occassion)
-
pagingSearchSpace=0,Ns只能是1或2
-
pagingSearchSpace不为0,UE监听的PO与SSB个数相关
分两个参数讨论,一是监听的起始位置pdcch_s,另一个连续监听的个数pdcch_num
//pdcch_s if (firstPDCCH-MonitoringOccasionOfPO) { pdcch_s = vec_value(i_s); //配了起始位置,则查表得到起始位置 } else { pdcch_s = i_s*S*X; //没有配,则计算得到,S表示SSB的个数,X表示nrofPDCCH-MonitoringOccasionPerSSB-InPO } //pdcch_num X = 1; if (nrofPDCCH-MonitoringOccasionPerSSB-InPO) X = nrofPDCCH-MonitoringOccasionPerSSB-InPO; pdcch_num = S*X
一个PO会包含SX个pdcch monitoring occasions,那如果firstPDCCH-MonitoringOccasionOfPO与pdcch searchspace中monitoringSymbolsWithinSlot配置不重叠会如何呢???
coresetzero 13,查表RB 48个,两个symbol,firstPDCCH-MonitoringOccasionOfPO没有配置,S=8,X=1,ns=1,
所以i_s=0,第一个PO的监听起始位置在symbol 0,连续监听S*X=8个pdcch monitoring occasion,coreset0占了两个symbol,
所以只监听2个symbol就可以
设UEID = 63324,N = T/16 = 16, pf_offset=1
则 (SFN + 1)%256 = 256/16*(63324%16)=192, 则PF SFN = 191,447,704…
i_s=0,表示选择第一个PO
总结,T中包含着N个PF,PF中有ns个PO,PO中有S*X个PMO要监听,具体监听哪几个符号与监听起始符号、监听的coreset符号数相关
Short messages
这种paging没有pdsch,只发送pdcch通知UE
系统信息更新
第一个bit置1表示系统消息更新,指示除了SIB 6 7 8之外的sib消息有更新
地震灾害 SIB 6 7 8
bool MacDataCenter::initServingCellConfigCommon()
pdcch_config.paging_config.default_paging_cycle = (mac_config_.asn1_sib1.opt_serving_cell_config_common_sib.present == false) ? 32: 32<<(mac_config_.asn1_sib1.opt_serving_cell_config_common_sib.value.downlink_config_common.pcch_config.default_paging_cycle); //min paging cycle
struct PagingConfigMac_t
{
uint16_t default_paging_cycle = 32; //Enum
uint8_t num_pf;
uint8_t offset_pf;
std::vector<uint16_t> offset_po;
uint8_t num_po;
uint16_t first_pdcch_monitoring_occasion_of_po;
};