SIB消息注释

干通信几年,一直对SIB这个模模糊糊,今天借助一下大神博客总结一下。http://blog.csdn.net/m_052148/article/details/52832807,这是看过总结非常好的博客。

有几个问题先考虑下:1、回忆下MIB是干啥的?和SIB有啥关系,它们是怎么映射信道进行传输的?

                                        2、发送时刻怎么确定,周期是多少?

                                        3、各个SIB里面都携带什么内容?我们常用的是哪些SIB?SIB 和paging有啥关系?

通过查看MIB消息,我们可以看出,MIB中携带的消息确实非常少。必须要由SIB来广播小区信息。

eNB在发出MIB之后,会继续发送若干条不同类型的SIB(System Information Block),这些SIB为UE提供了小区驻留、重传、链路建立等等所需的若干参数

1.SIB的分类传输

LTE的SIB类型有很多种,对于R9版本的协议来说,SIB具体包括SIB1、SIB2、SIB3、SIB4、SIB5、SIB6、SIB7、SIB8、SIB9、SIB10、SIB11、SIB12、SIB13这13类。早期的SIB1也被称作SU-1,全称是Scheduling Unit-1,其他的SIB块被称为SU-n,MIB也被叫做SI-M,现在已经不这么叫了,如果有在其他资料中看到这种提法,也不要惊讶。不同的SIB携带不同的参数,具备不同的目的,具体如下:

SIB1:主要携带小区接入小区选择相关信息,以及LTE-TDD子帧配置其他SIB块的调度和窗口信息等。

SIB2:主要携带公共的无线资源配置相关信息,包括接入BAR信息、PRACH配置信息、上行频点信息、MBSFN配置等。

SIB3:携带同频、异频、跨制式小区重选相关的公共信息。

SIB4:携带用于同频小区重选的邻区信息

SIB5:携带用于异频小区重选的邻区信息

SIB6:携带用于跨制式(UTRA)小区重选的邻区信息

SIB7:携带用于跨制式(GERAN)小区重选的邻区信息

SIB8:携带用于跨制式(CDMA2000)小区重选的邻区信息

SIB9:携带HOME eNB(HNB)的相关信息。

SIB10/11:携带ETWS(Earthquake and Tsunami Warning System)的相关信息。当UE从寻呼消息中解码发现有ETWS消息存在时,就需要从SIB10/11中获取具体的ETWS内容。这些告警信息是在paging中通知。

SIB12:携带CMAS(Commercial Mobile Alerting System)的相关信息。当UE从寻呼消息中解码发现有CMAS消息存在时,就需要从SIB12中获取具体的CMAS内容。

SIB13:携带MBMS(Multimedia Broadcast Multicast Service)的相关信息。

所有SIB中最重要的当属SIB1,因为SIB1除携带了UE接入小区等所需的参数之外,还携带了其他SIB类型的调度信息。如果UE解码不到SIB1,也就无法解码其他类型的SIB。基于此,协议规定eNB通过两种不同的方式广播SIB:第一种是通过SystemInformationBlockType1消息周期广播SIB1,第二种是通过多个SI(SystemInformation)消息周期广播除SIB1之外的其它SIB,如图1所示。


(图1)

需要说明的是,除了SIB1之外的其他SIB块,如SIB2、SIB3等等,一个SIB块只能放在同一条SI消息中传输,不能分割映射到两条不同的SI消息中多个SIB块也可以封装到同一条SI消息中一起发送,但前提是这几个SIB块的周期必须相同。(各个SIB周期怎么决定?)这个地方要注意,以后SI特指除SIB1之外的SIB消息。

不同于MIB在PBCH中的发送,所有SIB均需要使用SI-RNTI加扰,在CCE公共空间中通过PDSCH信道传输。

2.SIB的周期发送

SystemInformationBlockType1消息(下文简称SIB1消息)的周期固定等于80ms,且只在5号子帧中传输。之所以选择5号子帧,是因为无论哪种LTE-TDD配置,5号子帧都是下行子帧,不需要区分上下行子帧配置。

类似于MIB的发送机制,SIB1消息在80ms内也是重复发送4次。若系统帧号SFN满足条件(SFN mod 8 = 0),则认为该系统帧的5号子帧是第一次发送本周期的SIB1块,然后在同个周期内其它系统帧号满足条件(SFN mod 2 = 0)的5号子帧上重复发送SIB1块,如图2所示。


(图2 SIB周期)


不同SI消息的周期既可以相同也可以不同,图3所示的就是一种可能的情况。在这个图中,SIB2在SI-2消息中发送,周期是160ms;SIB3和SIB4的周期都是320ms,被封装在SI-3消息中一起下发。


(图3 不同SI的周期示例)


每个SI消息的发送时机都被限制在一个独立的窗口之内,这个窗口也被叫做SI窗口,如图4所示。每个SI消息对应着一个SI窗口,这些不同的SI窗口并不会重叠,在某个SI窗口内,只有这个SI窗口对应的SI消息才会被传输,其他的SI消息不会发送。所有SI消息的窗口长度都是相等的,值可以在SIB1中配置。在一个SI窗口内,该窗口对应的SI消息可以发送多次,且可以在任意子帧中发送,当然这些子帧不包括MBSFN子帧、TDD上行子帧和被SIB1占用的发送子帧。

从图4中可以看到,相邻两个SI窗口之间的距离就是该SI的周期长度,每个SI的周期长度也是在SIB1中配置的。在一个SI窗口内,SI消息可以在多个子帧中连续发送,也可以跳过某个子帧不发送。


(图4 SI窗口示意)

从上面可以看出,每个SI的窗口长度,周期都是在SIB1中定义的,且各个窗口都是相等,不能重叠,若是周期一样,可以放在一起传输。然后在窗口内就可以发送该SI,只要不与其他一些冲突就可以。(若是周期一样,放在一起传输,那样不是窗口重叠了吗?????)

3.SIB1中的SI调度和窗口参数

SIB1携带了所有SI消息的调度和窗口参数,通过这些参数可以计算出每条SI消息的周期和发送时刻,如图5中的黄色区域所示。


(图5 SIB1中关于SI周期和窗口的参数)

图5中的相关参数说明如下:

SchedulingInfoList:指示结构体SchedulingInfo数组的长度。SI消息序列中必须至少包含SIB2,且SIB2需要放在数组SchedulingInfo中的第一个位置,所以SchedulingInfoList参数的取值范围是1到maxSI-message。虽然目前SI消息的总个数只有13个,考虑到后续的扩展,maxSI-message仍然被固定设置为32

SchedulingInfo:指示每个SI消息的调度信息,包括周期si-Periodicity和承载的SIB类型SIB-Type。si-Periodicity的单位是无线帧号,比如rf8表示该SI的周期是8个系统帧即80ms。SIB-Type并不需要显式的包含SIB2类型,因为SIB2默认放在SchedulingInfo数组的第一个位置。如下面的图6所示,数组SchedulingInfo的第一个元素只填写了周期rf16,而没有填写sibType,因为此时默认是传输SIB2块。

si-WindowLength:所有SI消息的窗口长度,单位是ms,ms20表示SI的窗口长度是20ms。

图6是一种可能的SIB1配置。在这个配置中,eNB将会发送两个SI,分别是:第一个SI只携带SIB2,周期是160ms,窗口长度是20ms;第二个SI只携带SIB3,周期是320ms,窗口长度同样是20ms。


(图6)


4.怎么接收SI消息

由于MIB和SIB1都有固定的周期和发送时刻,UE只需要在指定的时刻去解码即可(清楚在什么时候),而对于SI消息来说,它并没有固定的周期和发送时刻,所以接收的过程相对MIB和SIB而言,要复杂一些。

UE从SIB1中解码得到的是后续每个SI的周期长度、SI类型和窗口长度,并没有每个SI窗口的开始位置,如上文的图4所示,所以我们首先需要明确每个SI窗口的起始位置。计算每个SI窗口的起始位置的过程如下:

(1)确定n值。n是该SI消息在SIB1->SchedulingInfoList中出现的序号,从1开始记数,SIB2固定等于n=1。
(2)确定x值x = (n – 1) * w,w是SI的窗口长度si-WindowLength。
(3)确定窗口起始位置起始子帧a = x mod 10,所在的系统帧号SFN需满足SFN mod T = FLOOR ( x / 10),其中T是该SI消息的周期si-Periodicity。
比如图6所示的例子,对于携带SIB2的第一个SI消息SI1,n=1,x=0,a=0,T=rf16,x/10=0,所以SI1的窗口起始位置在(0,0)、(16,0)、(32,0)等。
而携带SIB3的第二个SI消息SI2,n=2,x=20,a=0,T=rf32,x/10=2,所以SI2的窗口起始位置在(2,0)、(34,0)、(66,0)等。

当得到了SI窗口的起始帧号和子帧号之后,UE从窗口起始位置开始使用SI-RNTI盲检测,直到收到SI消息,否则直到窗口结束。正如前文图4所描述的,UE不会在窗口内的所有子帧都去尝试解码SI消息,对于TDD上行子帧SIB1发送时刻的子帧MBSFN子帧都不会去尝试解码SI消息。如果UE在该窗口中没有解码到SI消息,那么在下个周期的SI窗口中会继续去解码该SI消息。

至此,在时域上,UE就可以明确无误的知道所有SIB块的解码时刻了。至于频域,因为SIB都是走的PDSCH信道,只要解码到DCI信息,就可以去指定的RB位置获取相应的数据。


看的很明白了,但是还有两个疑问:

1若是周期相同,两个SI可以封装一起传输,就按照图6,若是还有SIB3和SIB4,周期也是rf32,这样它们的窗口起始位置分别是(4,0)和(6,0)等。窗口起始位置都不一样,怎么放在一起传输?

第一个问题是我理解错啦,一个SI不是对应一个SIBn,可以对应多个。若是都对应一个,确实各个SIB不能封装在一起传输是吧?第二个问题还是存在。


2、也按照图6继续,若是一直有SIB,等到SIB9的时候,它的其实位置应该是(16,0)这就会与前面SIB2的窗口重叠,并且后面的SIB都不能在传,窗口都已经排满啦?这样冲突怎么解决


下面深刻理解SI含义:

每个SI消息包含了一个或多个除SIB1外的拥有相同调度需求的SIB(这些SIB有相同的传输周期)。一个SI消息包含哪些SIB是通过schedulingInfoList指定的。每个SIB只能包含在一个SI消息中,且SIB2总是放在schedulingInfoList指定的SI列表的第一个SI消息项中,所以schedulingInfoList中并不指定SIB2所在的SI。

 每个SI消息只在一个SI窗口(SI-windows)中传输:1)一个SI消息跟一个SI窗口相关联,该SI窗口内只能发这个SI消息且可以重复发送多次(发多少次,在哪些子帧上发送等,取决于eNodeB的实现),但不能发送其它SI消息;2)SI窗口之间是紧挨着的,既不重叠,也不会有空隙;3)所有SI消息的SI窗口长度都相同;4)不同SI消息的周期是相互独立的。

起始帧号和起始子帧号都能知道。

把周期相同的SIBN合到一个SI中,这个是ENB的行为?怎么确定合不合?合几个?


猜你喜欢

转载自blog.csdn.net/zhangingong/article/details/77737473