随机接入进程.docx
《随机接入进程.docx》由会员分享,可在线阅读,更多相关《随机接入进程.docx(22页珍藏版)》请在冰豆网上搜索。
随机接入进程
随机接入进程
当UE需要接入到网络的时候,需要从随机接入信道上发RRC建立请求消息给RNC,这就涉及到随机接入进程。
在R5版本以前它包括PRACH接入进程和CPCH接入进程,但CPCH属于偏房出身,所以一直没有归入到R99必须支持的功能。
最后到R6版本就干脆从25214协议中给删除了。
其实在3GPP协议的演进过程中,各个厂家都试图把自己的专利技术变成3GPP标准。
很像古代皇子们夺王位的斗争,残酷、激烈而又充满智慧。
很多技术像短命的皇帝一样,屁股还没有坐热就又被新朝代给取代了。
所以希望《3G演义》能像一个照相机一样,记录下在这个时代里演进的一些技术。
随即接入进程从协议分层的角度,主要分为两个子层:
物理层和MAC层。
从理解的角度看,由于大部分在UE实现,这两部分结合非常紧密,属于骨和肉的关系。
把它们割裂开是不利于理解协议和实现流程的。
所以本文干脆把这两层合到一起讲。
随机接入的整个流程如图1。
UE如果要发起随机接入,必须先从RRC层获取随机接入的各种参数。
这些信息可以从广播的SIB5中获取,如
。
这些参数包括哪些呢?
1、前导扰码的序号(0~15)
2、消息部分的长度(10ms还是20ms)
3、AICH_Transmission_Timing参数(0或1)
4、每个接入业务类型(ASC)的可用签名序列和RACH子信道组
5、前导发射功率攀升步长powerRampStep
6、前导初始发射功率constantValue
7、前导重传最大次数preambleRetransMax
primaryCPICH-TX-Power33,
constantValue-21,
prach-PowerOffset
{
powerRampStep2,
preambleRetransMax20
},
8、随机接入消息中最后发送的前导功率和控制部分功率之间的偏移量Pp-m=Pmessage-control–Ppreamble
9、传输格式集,包括随机接入消息控制和数据部分的功率偏移。
10、RACH传输的参数:
RACH前导最大循环次数、拥塞时回退时间指数的上下限等。
rach-TransmissionParameters
{
mmax6,
nb01Min3,
nb01Max40
}
图1RACHtransmissioncontrolprocedure(UEside,informative)
接着获取本次随机接入的ASC(接入服务类型)。
UE在CELL_Idle和CELL_FACH状态下,对ASC的选择是不太一样的。
在CELL_Idle状态下,UE是靠USIM卡本身的AC(接入类型)来选择ASC的。
什么是接入类型?
从网络的角度,每个UE的接入可以分成不同等级的。
一般用户的接入类型是普通优先级,AC从0~9。
对于一些级别高的用户,如政府机构和一些紧急服务单位(消防、救护等)的用户,可以把接入类型设置为高优先级,AC从10~15。
AC的值在烧卡的时候写入,目前默认都是0,如图3。
也可以通过读USIM卡的数据获取,在Gemplus卡它位于0x6F78,如图2。
图2SIM卡中关于接入等级(AC)的位置
图3USIM卡分配的接入等级
UE通过小区广播的SIB5中AC到ASC映射表获取自己的ASC。
在25331协议中,对不同的AC到ASC的映射有如表1的规定。
AC
0-9
10
11
12
13
14
15
ASC
1stIE
2ndIE
3rdIE
4thIE
5thIE
6thIE
7thIE
表1AC到ASC的映射表
ASC分为8个等级(0~7),其中ASC0的优先级最高,ASC7的优先级最低。
目前配置是所有的AC对应ASC都是0,不区分优先级,相当于没打开这个功能。
如图4。
该值是在PRACH的属性中配置。
SIB5中有这样的字段:
ac-To-ASC-MappingTable
{0,0,0,0,0,0,0}
图4PRACH信道的参数配置
在CELL_FACH态中,逻辑信道是有优先级的(在RB建立或重配的时候分配,如:
mac-LogicalChannelPriority5),简称LogicalchannelPriority(MLP)。
MAC层利用MLP来决定后续RACH上数据块传输使用的ASC。
前面用AC算出来的ASC称为NumASC,那么在所有传输数据块具有一样的MLP的情况,ASC=min(NumASC,MLP);如果MLP不一样,ASC = min(NumASC,MinMLP)。
那么ASC小的用户又如何出优越性呢?
一句话,MAC层的持久度(persistencevalue)检查算法通过让ASC大的用户降低接入频率从而把接入机会让给ASC小的高优先级用户。
对于每个ASC对应一个持久度Pi,可以根据表2得出不同ASC的Pi的计算公式。
其中si是在SIB5中下发的ASC持久比例因子。
一共有6个,s2到s7,像图4中,只下发了一个因子,s2=0.9。
不广播的时候持久比例因子默认为1。
persistenceScalingFactorList
{
psf0-9
},
ASC#i
0
1
2
3
4
5
6
7
Pi
1
P(N)
s2P(N)
s3P(N)
s4P(N)
s5P(N)
s6P(N)
s7P(N)
表2ASC对应的持久度
P(N)的计算公式:
P(N)=2(N1)。
N是动态持久级初始值(如图4),在SIB7中有,目前配置1。
这个值是可以动态变化,系统可以根据拥塞情况进行优先级排队。
PhyCHinformationelements
PRACHslistedinsysteminformationblocktype5
MP
1to
TheorderofthePRACHsisthesameasinsysteminformationblocktype5or5bis.
>Dynamicpersistencelevel
MP
Dynamicpersistencelevel10.3.6.35
表3SIB7中对N值的定义
所以对于ASC0,它的持久度最高,P0=1,其次是ASC1,
。
通过合理配置ASC持久比例因子
,可以使得低ASC的用户有比较高的持久度
。
每次物理层PRACH在发前导码前,MAC层要进行一次持久度
的检查。
UE算出本地的持久度
,然后在0~1之间取一个随机数R。
如果
,那么持久度检查通不过,必须再等待10ms后再进行一次持久度检查,一直到通过才能让物理层发PRACH前导。
如果系统拥塞的情况下,可以通过增大SIB7中的N值,降低低优先级用户的持久度
,在MAC层上增大它们随机接入的难度,从而把接入机会让给高优先级的用户。
在通过持久度检查后,就该轮到物理层进行PRACH接入了。
它接入的原理如图5,首先发一个4096码片的前导来确定是否被允许接入,然后才发10ms或20ms的消息帧。
图5随机接入传输数据的结构
如果NodeB允许接入,那么在对应的AICH上会有AI的确认指示。
这两个物理信道的定时关系如图6。
前导和AI的间隔是固定,否则UE是无法确认AI是否属于自己。
这个值由AICH_Transmission_Timing来决定(目前配置0)。
AICH_Transmission_Timing
p-p,min
p-a
p-m
0
15360chips(3accessslots)
7680chips
15360chips(3accessslots)
1
20480chips(4accessslots)
12800chip
20480chips(4accessslots)
表4AICH_Transmission_Timing定义的定时关系
AICH_Transmission_Timing=1是用在小区半径很大(比如40km)的情况,这个时候空口传输延时很大,所以需要加大前导和AI的间隔。
图6TimingrelationbetweenPRACHandAICHasseenattheUE
对于PRACH,每20ms有15次接入的机会,如图7。
物理层首先要解决的第一个问题是:
选在哪个接入时隙发起前导?
图7PRACH接入时隙和AICH的定时关系(p-a=7680chips)
如果都选在时隙0,那么显然会造成冲突,结果是谁也接入不了。
在逻辑上,RACH分成了12个子信道。
在图4的PRACH有效子信道号中配置,如果12个子信道全部有效的话,该值应该是4095。
目前配置240,所以是第4、5、6、7子信道有效。
availableSubChannelNumbers{subCh7,subCh6,subCh5,subCh4}(12比特长度,1表示该子信道有效)。
但每个ASC从有效RACH子信道选出自己可用的一部分子信道。
在图4的ASC分配的子信道中有定义。
对于AICH_Transmission_Timing=0,把ASC的assignedSubChannelNumber值按照b2b1b0b2b1b0b2b1b0b2b1b0(忽略b3)排列得到掩码,然后和availableSubChannelNumbers的值进行AND操作,得出本ASC可用子信道号。
我们目前配置assignedSubChannelNumber都是全1,所以availableSubChannelNumbers中所有的有效子信道都可用,也就是对每个ASC,4、5、6、7子信道都可用。
对于AICH_Transmission_Timing=0,要按照b3b2b1b0b3b2b1b0b3b2b1b0进行AND操作。
prach-Partitioningfdd:
{
{
accessServiceClass-FDDASC0
{
availableSignatureStartIndex0,
availableSignatureEndIndex15,
assignedSubChannelNumber{b3,b2,b1,b0}
}
},
{
accessServiceClass-FDDASC1
{
availableSignatureStartIndex0,
availableSignatureEndIndex15,
assignedSubChannelNumber{b3,b2,b1,b0}
}
},
{
accessServiceClass-FDDASC2
{
availableSignatureStartIndex0,
availableSignatureEndIndex15,
assignedSubChannelNumber{b3,b2,b1,b0}
}
}
},
UE根据自己的ASC按上述操作得到可用RACH子信道组。
根据SFN从表5中找出可用的接入时隙,然后随机选择一个进行随机接入。
SFNmodulo8ofcorrespondingP-CCPCHframe
Sub-channelnumber
0
1
2
3
4
5
6
7
8
9
10
11
0
0
1
2
3
4
5
6
7
1
12
13
14
8
9
10
11
2
0
1
2
3
4
5
6
7
3
9
10
11
12
13
14
8
4
6
7
0
1
2
3
4
5
5
8
9
10
11
12
13
14
6
3
4
5
6
7
0
1
2
7
8
9
10
11
12
13
14
表5RACH子信道的有效上行链路接入时隙
4096个码片的前导码里面是由16比特的签名序列重复256次得到。
系统一共有16个可用的签名序列。
不同的签名序列如表6。
Preamble
signature
Valueofn
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
P0(n)
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
P1(n)
1
-1
1
-1
1
-1
1
-1
1
-1
1
-1
1
-1
1
-1
P2(n)
1
1
-1
-1
1
1
-1
-1
1
1
-1
-1
1
1
-1
-1
P3(n)
1
-1
-1
1
1
-1
-1
1
1
-1
-1
1
1
-1
-1
1
P4(n)
1
1
1
1
-1
-1
-1
-1
1
1
1
1
-1
-1
-1
-1
P5(n)
1
-1
1
-1
-1
1
-1
1
1
-1
1
-1
-1
1
-1
1
P6(n)
1
1
-1
-1
-1
-1
1
1
1
1
-1
-1
-1
-1
1
1
P7(n)
1
-1
-1
1
-1
1
1
-1
1
-1
-1
1
-1
1
1
-1
P8(n)
1
1
1
1
1
1
1
1
-1
-1
-1
-1
-1
-1
-1
-1
P9(n)
1
-1
1
-1
1
-1
1
-1
-1
1
-1
1
-1
1
-1
1
P10(n)
1
1
-1
-1
1
1
-1
-1
-1
-1
1
1
-1
-1
1
1
P11(n)
1
-1
-1
1
1
-1
-1
1
-1
1
1
-1
-1
1
1
-1
P12(n)
1
1
1
1
-1
-1
-1
-1
-1
-1
-1
-1
1
1
1
1
P13(n)
1
-1
1
-1
-1
1
-1
1
-1
1
-1
1
1
-1
1
-1
P14(n)
1
1
-1
-1
-1
-1
1
1
-1
-1
1
1
1
1
-1
-1
P15(n)
1
-1
-1
1
-1
1
1
-1
-1
1
1
-1
1
-1
-1
1
表6前导签名序列
在SIB5的PRACH信息中,有可用的签名序列,目前是全部使用。
availableSignatures{signature15,signature14,signature13,signature12,signature11,signature10,signature9,signature8,signature7,signature6,signature5,signature4,signature3,signature2,signature1,signature0}。
每个ASC使用全部的签名序列。
所以UE值需要在签名序列中随机选择一个生成对应的前导码发走即可。
在发送前导码的时候,需要发送多大的功率呢?
第一次发前导的时候,并不能估计信道质量,所以只能开环功控。
UE首先要根据初始功率(constantValue)算出PRACH的初始发射功率,目前导频是33dBm,而初始功率是-21dB,所以PRACH的初始发射功率应该是12dBm,也就是16mw。
还有UE的发射功率不能超过它本身的最大功率,也就是说开环功率调整的发射功率必须在UE的最大发射功率和最小发射功率之间,超过这个范围按照边界值处理。
最小发射功率是-50dBm,最大发射功率根据UE的功率类型设定,如表7。
OperatingBand
PowerClass1
PowerClass2
PowerClass3
PowerClass4
Power
(dBm)
Tol
(dB)
Power
(dBm)
Tol
(dB)
Power
(dBm)
Tol
(dB)
Power
(dBm)
Tol
(dB)
BandI
+33
+1/-3
+27
+1/-3
+24
+1/-3
+21
+2/-2
BandII
-
-
-
-
+24
+1/-3
+21
+2/-2
BandIII
-
-
-
-
+24
+1/-3
+21
+2/-2
BandIV
-
-
-
-
+24
+1/-3
+21
+2/-2
BandV
-
-
-
-
+24
+1/-3
+21
+2/-2
BandVI
-
-
-
-
+24
+1/-3
+21
+2/-2
表7UEPowerClasses
发完前导后,UE就监测NodeB在对应的AICH信道时隙上的接入指示。
有三种结果:
收到允许接入指示、收到拒绝接入指示、没有响应。
收到AICH的确认应答,这是皆大欢喜的事情。
UE根据AICH_Transmission_Timing的定时参数,在严格的时间点上发送接入消息。
那么能发多大的消息呢?
rach-TransportFormatSetcommonTransChTFS:
{
ttitti20:
传输时间间隔为20ms
{
{
rlc-Sizefdd:
{
octetModeRLC-SizeInfoType2sizeType1:
15
对于RLC的大小,协议规定
OctetModeRLC-SizeInfoType2:
:
=CHOICE{
--Actualsize=(sizeType1*8)+48
sizeType1INTEGER(0..31),
--Actualsize=(sizeType2*16)+312
sizeType2INTEGER(0..63),
--Actualsize=(sizeType3*64)+1384
sizeType3INTEGER(0..56)
所以上面是15*8+48=168比特
},
numberOfTbSizeList
{
one:
NULL每个TTI最多只传1个168比特的传输块。
},
logicalChannelListconfigured:
NULL
},
{
rlc-Sizefdd:
{
octetModeRLC-SizeInfoType2sizeType2:
3
RLC大小是3*16+312=360比特
},
numberOfTbSizeList
{
one:
NULL每个TTI最多只传1个360比特的传输块。
},
logicalChannelListconfigured:
NULL
}
},
semistaticTF-Information
{
channelCodingTypeconvolutional:
half,1/2卷积编码
rateMatchingAttribute160,
crc-Sizecrc16
}
},
目前配置是1×168和1×360两个格式。
UE可以根据需要传输的数据量来选择合适的传输格式。
不同的格式它的βc和βd是可以不一样的,由高层进行配置。
rach-TFCSnormalTFCI-Signalling:
complete:
{
ctfcSizectfc2Bit:
{
{
ctfc20,
powerOffsetInformation
{
gainFactorInformationsignalledGainFactors:
{
modeSpecificInfofdd:
{
gainFactorBetaC11
},
gainFactorBetaD15
},
powerOffsetPp-m-1
}
},
{
ctfc21,
powerOffsetInformation
{
gainFactorInformationsignalledGainFactors:
{
modeSpecificInfofdd:
{
gainFactorBetaC11
},
gainFactorBetaD15
},
powerOffsetPp-m2
}
}
}
},
βc是无线帧中控制部分的增益因子(和DPCCH的βc一样),βd是无线帧中数据部分的增益因子(和DPDCH的βd一样),如图8。
控制部分和数据部分的相对功率通过这两个值可以确定,但它们的绝对功率到底发多少?
这由powerOffsetPp-m字段来决定。
它表示控制部分的传输功率必相邻前导(也就是最后一个前导)的功率高Pp-m[dB]。
从上面的配置看,当我们要发送1×360比较大的数据块时,需要配置更高的功率。
它比发1×168数据块的时候大3dB。
图8Structureoftherandom-accessmessagepartradioframe
如果收到拒绝接入指示,那么物理层向MAC层上报NackonAICHreceived状态,在10ms后,算出一个随机回退时间并等待,最后把控制权交回给MAC层,如图1。
也就是说本次的物理层随机接入结束了。
UE是如何算回退时间的呢?
大家在某一个时隙同时接入导致冲突后,如果回退时间又一致的话,将会出现再次冲突的恶果。
所以采用随机算法来回避。
回退定时器TBO1是这样定义的:
在0NBO1minNBO1NBO1max中间取随机的整数值NBO1,定时器的长度就是NBO1×10ms。
比如目前配置NBO1min=3,NBO1max=40(25331协议规定这两个值的范围是0~50),所以平均回退时间T=(3+40)/2=21.5ms。
rach-TransmissionParameters
{