LTE/NR中,采用了OFDM正交频分复用方式,也就是在频域上使用多个子载波,这些子载波互相正交;在时域上采用帧结构的方式,用不同的帧结构去区分不同的用户,不同的资源,信道等等。
所以我们常常把时间作为横轴,频率作为纵轴去描述一些信息,而这两个域组成了我门资源共享空间的一个面(plane),这个面叫时频平面,在一个小区内的所有用户,所有的信道都使用一个时频平面。
除了时域和频域两个维度之外,还有一个空间上的维度(spatial),也就是多天线,有多个天线端口,每个端口都形成了一个时频平面。例如我们有两根天线,有两个天线端口输出,也就会形成2个时频平面,这也就是MIMO(多输入多输出)。
既然这个时频平面是给所有的用户,所有的业务共享的,那么问题来了,每个用户在这个平面上占据哪一部分,在一个调度周期(LTE是以子帧为基本的调度周期1ms,NR是以时隙或者符号为调度周期)内可能有很多个用户。
将子帧放大,如下图,频域上最小的资源分配单位是RB。如果有多个用户在统一资源传输,那么不同用户使用哪些RB分配资源,每个用户自己都不知道自己放在哪儿?
所以在LTE/5G中采用 调度 的方式来分配资源。调度的资源就只下图绿色的部分,在normal CP下,LTE中,1个子帧有14个符号,在每个下行时隙前面1-3,4个符号就会空出来,作为PDCCH,这个PDCCH就作为控制资源来控制PDSCH资源分配。
那PDSCH如何让PDCCH来进行分配呢,首先为了接收某个特定用户专用的PDSCH的业务信道,例如DTCH,DCCH,CCCH信道这些最终都会被映射到PDSCH上,被映射到PDSCH上,则需要通过PDCCH来进行调度。
但是PDCCH是给谁(UE1,UE2,UE3,,,)调度的呢,每个用户调度不一样,所以需要找到整个PDCCH资源中的某些资源是分配给某个特定用户的。
比如说上图绿色的部分,如何确定PDSCH资源是分配给哪个用户的,就需要去检测PDCCH,而检测PDCCH就通过RNTI。
RNTI就是在无线资源中,能够唯一区分用户的标识。
也就是说,一个用户如果要去接收PDCCH的话,必须要有一个RNTI。RNTI有不同类型,每种RNTI用法不一样,对应的PDCCH的格式不同。所以,RNTI是用户已知的,用RNTI去检测PDCCH的过程,就叫盲检。
盲检(blind detection):用RNTI去检测PDCCH,来获得某个用户自己的调度信息的过程。
要去解PDSCH中用户的数据或者信令,必须先解调PDCCH,要解调PDCCH的话,需要先有一个RNTI,那RNTI是怎么来的呢?
已知用户在正常的业务阶段有C-RNTI,这个C-RNTI是比较正式的RNTI,后续有业务过程使用到的RNTI都是C-RNTI,但是这个用户是怎么知道C-RNTI的呢?C-RNTI是怎样获得的呢?
实际上C-RNTI是在RRC信令(L3信令/DCCH)中获得的,但是这有个问题,RRC信令在逻辑信道部分,属于DCCH,也就是用户需要去解L3信令,而L3信令本身又是映射到DL-SCH,再映射到PDSCH上,如果L3信令映射到PDSCH上,必然也需要PDCCH去调度,需要RNTI去检测,这就成了一个死循环,那么如何破除此死循环呢?
这就要提到之前的随机接入了,之前只是介绍了一下随机接入的过程,这篇文章主要来看一下RNTI在里面是怎么进行的。
Msg 1
首先看Msg1,也就是手机向基站发的第一条命令,说是随机,其实并不是完全随机,通过上一次也了解到,手机是从基站在系统消息中下发的可用资源当中去随机选择时域频域资源,preamble码这些资源之后,再把这些资源发送给基站。
基站如果能够捕获到的话,就能识别这个用户的时频资源,preamble码这些信息,然后在Msg2中回复这个用户,Msg2其实也是属于PDSCH。
那么其实在初始的时候,就遇到了PDSCH,也就需要PDCCH来盲检,也就需要RNTI,那在初始化的时候就遇到这个死循环,怎么破除呢?
实际情况是,在初始的时候,用户的身份还没有确定,我们就给系统设定了一个范围比较窄的RNTI,就是RA-RNTI,RA-RNTI并不是系统分配的,而是通过计算得来的。
基站根据用户随机选择的preamble的时频域资源计算出RA-RNRI,发送给用户,用户就可以用RA-RNTI去盲检PDCCH,获得PDSCH,从而获得RAR(Msg2)这条命令。
Msg 2
RAR消息是通过PDSCH传输的,但是它实际上是属于CCCH的,是公共的控制消息,不是信道专用的消息,而CCCH是映射到PDSCH上的。
Msg 3
接着进行第三步,Msg3,手机向基站上报,Msg3上报消息是通过PUSCH传输的,和PDSCH一样,PUSCH也需要通过PDCCH调度。
那么问题来了,Msg3上报的时候,虽然是通过PUSCH传输,但是放在哪里,放在PUSCH的什么位置是不知道的。虽然我们有RA-RNTI,但是每个RNTI有自己专门的用法,不能随便乱用,RA-RNTI是专门用在Msg2中,Msg3也就不能用了,所以Msg3需要有一个PDCCH,但是这时候RNTI又不能用,PDCCH也就没法办用RNTI去检测,这怎么办呢?
这时候Msg3就是一个非常特殊的情况,它并不是通过PDCCH来获得调度消息,而是直接通过Msg2来获得。
Msg2中的ULGrant消息,这个消息也可以理解为DCI format,对于Msg3来说,就是DCI format0_0。
通过Msg2直接给的方式,也就不需要PDCCH调度,不需要RNTI,所以Msg3本身是没有PDCCH消息,也没有RNTI。
Msg 4
接下来Msg4消息,Msg4是基站向手机发送的一个竞争解决的消息。同样Msg4也是属于CCCH,同样映射到PDSCH,那么也就需要PDCCH调度,需要RNTI盲检,所以不断地会遇到这种问题。
那么系统设计这种调度的机制都是一样的,但是在不同的情况也有不一样的地方,而且也比较复杂。这可能跟LTE/5G本身网络的资源分配或形成的方式有关。
那到了Msg4的时候,也需要用RNTI来进行盲检,但是这个时候我们发现,我们还没有给用户分配一个专门的RNTI,我们说专门的RNTI就指的是C-RNTI,C-RNTI就是用户专用的一个RNTI,但是在Msg4的时候还没有C-RNTI,C-RNTI是要等上下行同步都完成,随机接入过程完成之后,用户和基站建立连接之后,才会有C-RNTI。
所以这时候用什么RNTI呢?那我们看在Msg2中,除了有RA-RNTI之外,还包含有一个TC-RNTI,这个RNTI就是为了Msg4调度的RNTI。
所以在Msg4之前,是有一个PDCCH,这个PDCCH中,就用TC-RNTI盲检,解PDCCH,来定位PDSCH。手机收到Msg4消息之后,认为竞争已经解决了,认为自己已经和基站建立的一对一的连接,这时候也就会把TC-RNTI自动的转变为C-RNTI,这个C-RNTI也就是之后进行业务传输,盲检等等用到的RNTI,一个用户也就对应一个RNTI。也就解决了死循环的问题。
未完待续~
欢迎关注公众号【Rabbit学习兔】,留言看到会第一时间回复~