发明内容
考虑到上述问题而做出本发明,为此,本发明的主要目的在于提供一种射频单元ID获取方案,以在光纤连接下区别信息的传输路径和方向并确认路径合法性。
根据本发明的实施例,提供了一种射频单元ID获取方法,该方法可用于包括基带单元和与基带单元分离的多个射频单元的架构。
根据本发明实施例的射频单元ID获取方法包括:启动多个射频单元,并且多个射频单元广播各自的射频单元ID获取请求;其中,
与基带单元连接的第一射频单元直接向基带单元广播射频单元ID获取请求,并且第一射频单元获取来自基带单元的与其对应的射频单元ID;
第一射频单元之外的其它射频单元经由与其连接并且获得了射频单元ID的射频单元向基带单元广播射频单元ID获取请求。
其中,在启动多个射频单元之前,基带单元配置拓扑结构,其中,配置的拓扑结构中包含由连接的射频单元组成的至少一条链路。
此时,由多个射频单元广播的射频单元ID获取请求携带该请求的相关信息,其中,由第一射频单元广播的射频单元ID获取请求的相关信息中包括第一射频单元的端口号,由其它射频单元广播的射频单元ID获取请求中包含始发射频单元的端口号、经由的射频单元的射频单元ID、以及经由的射频单元的端口号。
并且,基带单元将多个射频单元广播的射频单元ID获取请求中的相关信息与配置的拓扑结构进行比较,在比较的结果为匹配的情况下对该射频单元ID获取请求的始发射频单元分配射频单元ID。其中,基带单元进行比较的操作具体为:将相关信息中的端口号与配置的拓扑结构中相应链路的相应位置处的端口号进行比较,在两者相同的情况下判断为匹配。
在这种情况下,在基带单元确定分配射频单元ID的情况下,基带单元根据相关信息生成响应消息,并通过响应消息将分配的ID通知给多个射频单元。
其中,基带单元根据相关信息设置响应消息最终到达的始发射频单元。其中,可以在预定间隔广播射频单元ID获取请求以及发送响应消息。并且,预定间隔的长度为64个复帧。
另外,在该方法中,在启动多个射频单元时,多个射频单元处于只能广播消息不能转发消息的初始状态,在获得射频单元ID后,进入能够广播消息和转发消息的正常状态。
通过本发明的上述技术方案,能够在射频单元之间的光纤连接上区别信息的传输路径和方向,并确认路径合法性,从而有效实现了链路的建立。
具体实施方式
根据本发明实施例的RRU ID获取方法可用于包括基带单元(BBU)和与BBU分离的多个RRU的架构。如图1所示,该方法包括:
步骤S102,启动多个RRU,并且多个RRU广播各自的RRU ID获取请求;
步骤S104,与BBU连接的第一RRU(例如,图2中的RRU 0)直接向BBU广播RRU ID获取请求,并且第一RRU获取来自BBU的与其对应的RRU ID;因为没有获得ID的其它RRU无法转发该请求,所以第一RRU广播的RRU ID获取请求只能到达BBU;
步骤S106,第一RRU之外的其它RRU经由与其连接并且获得了RRU ID的RRU向BBU广播RRU ID获取请求。
其中,在启动多个RRU之前,BBU配置拓扑结构,其中,配置的拓扑结构中包含由连接的RRU组成的至少一条链路。
此时,由多个RRU广播的RRU ID获取请求携带该请求的相关信息,其中,由第一RRU广播的RRU ID获取请求的相关信息中包括第一RRU的端口号,由其它RRU广播的RRU ID获取请求中包含始发RRU的端口号、经由的RRU的RRU ID、以及经由的RRU的端口号。
并且,BBU将多个RRU广播的RRU ID获取请求中的相关信息与配置的拓扑结构进行比较,在比较的结果为匹配的情况下对该RRU ID获取请求的始发RRU分配RRU ID。其中,BBU进行比较的操作具体为:将相关信息中的端口号与配置的拓扑结构中相应链路的相应位置处的端口号进行比较,在两者相同的情况下判断为匹配。
在这种情况下,在BBU确定分配RRU ID的情况下,BBU根据相关信息生成响应消息,并通过响应消息将分配的ID通知给多个RRU。
其中,BBU根据相关信息设置响应消息最终到达的始发RRU。其中,可以在预定间隔广播RRU ID获取请求以及发送响应消息。并且,预定间隔的长度为64个复帧。
另外,在该方法中,在启动多个RRU时,多个RRU处于只能广播消息不能转发消息的初始状态,在获得RRU ID后,进入能够广播消息和转发消息的正常状态。
下面将以图2为例详细描述根据本发明的方法。
在图2中,假设实线表示有物理连接并且有配置过的连接,虚线表示仅有物理连接而没有配置连接,并且,假设图中的RRU在四个方向上的光端口号可分别定义为:上=0,左=1,下=2,右=3,RRU_ID假定为图中的RRU编号。
将根据本实施例的RRU ID获取方法用于该系统中时,具体可以包括以下处理:
(1)RRU启动后为初始状态,RRU_ID为0xff,FPGA不转发任何端口消息;
(2)初始态RRU定时(例如,可以是2s)向所有已知端口广播ID获取请求包,对应包的字段内容为:CC_WORD=1;ID_Index=0;在ID_WORD0中,RRU_ID号为0xff,表示请求获取RRU_ID;InP=0xf,表示发起者;OutP=发送包的端口号,即,0、1、2、3;
(3)RRU初始状态不处理ID请求包,直接丢弃;
第一级RRU(RRU 0)发送RRU ID获取请求包到达BBU,该请求包的格式可如表1所示。
CC_WORD |
ID_Index |
ID_WORD0 |
1 |
0 |
RRU_ID0 |
InP|OutP |
0xff |
0xf0 |
表1
(4)BBU响应请求,返回的包格式如表2所示。
CC_WORD |
ID_Index |
ID_WORD0 |
1 |
0 |
RRU_ID0 |
InP|OutP |
|
|
0x00 |
0xf0 |
表2
其中,CC_WORD=1,ID_Index=0不变,ID_WORD0内容为:ID号=0,Inp|OutP与请求包相同,InP=0xf,OutP=0;
(5)RRU 0收到响应包后判断ID_Index=0,表示是自己的,RRU_ID非0xff表示有效ID,此包为响应包;记录ID号和上级端口号(OutP),状态切换为正常态(区别于初始态),开始建立上层链路;
(6)RRU 1发送的ID请求包到达正常态的RRU 0,RRU 0判断RRU_ID为0xff,表示这是个请求包需要转发,RRU 0在包中加上自己的ID信息,并向上级转发,由RRU 0转发的请求包的具体为格式如表3所示。
CC_WORD |
ID_Index |
ID_WORD0 |
ID_WORD1 |
1 |
1 |
RRU_ID0 |
InP|OutP |
RRU_ID1 |
InP|OutP |
0xff |
0xf0 |
0x00 |
0x10 |
表3
其中,需要将ID_Index+1,在ID_Index指示的位置ID_WORD1填本站的RRU_ID和接收端口发送端口号;
(7)当BBU收到这个请求包,比较包中携带的发送链路与配置的拓扑结构,如果两者匹配则回ID响应包(即,上述的响应消息),即,分配ID;不匹配则不响应;响应包只将ID_WORD0位置的请求ID号0xff改为分配好的ID号,具体格式可如表4所示。
CC_WORD |
ID_Index |
ID_WORD0 |
ID_WORD1 |
1 |
1 |
RRU_ID0 |
InP|OutP |
RRU_ID1 |
InP|OutP |
0x01 |
0xf0 |
0x00 |
0x10 |
表4
(8)RRU 0收到响应包(ID_WORD0位置的ID非0xff就是响应包),判断ID_Index非0,表示不是给自己的包,从ID_Index位置获取InP号,ID_Index-1,向InP端口转发此包;具体格式为:
CC_WORD |
ID_Index |
ID_WORD0 |
1 |
0 |
RRU_ID0 |
InP|OutP |
0x01 |
0xf0 |
表5
RRU 1收到该响应包时ID_Index=0,确认此包为自己所有,获得ID号,上级端口号,状态切换为正常态;
(9)依此类推,各级RRU依次获取ID;图2中最深一级的RRU 6的请求包到达BBU时为如下格式:
CC_WORD |
ID_Index |
ID_WORD0 |
ID_WORD1 |
1 |
3 |
RRU_ID0 |
InP|OutP |
RRU_ID1 |
InP|OutP |
0xff |
0xf0 |
0x03 |
0x20 |
ID_WORD2 |
ID_WORD3 |
RRU_ID2 |
Inp|OutP |
RRU_ID3 |
Inp|OutP |
0x01 |
0x10 |
0x00 |
0x10 |
表6
BBU可以从此包中获得传输路径和相关端口号,和配置对比后回送响应包,格式为:
CC_WORD |
ID_Index |
ID_WORD0 |
ID_WORD1 |
RRU_ID0 |
InP|OutP |
RRU_ID1 |
InP|OutP |
1 |
3 |
0x06 |
0xf0 |
0x03 |
0x20 |
ID_WORD2 |
ID_WORD3 |
RRU_ID2 |
InP|OutP |
RRU_ID3 |
InP|OutP |
0x01 |
0x10 |
0x00 |
0x10 |
表7
此响应包经RRU层层转发后到达RRU 6的格式为:
CC_WORD |
ID_Index |
ID_WORD0 |
1 |
0 |
RRU_ID0 |
InP|OutP |
|
|
0x06 |
0xf0 |
表8
RRU 6获取ID和上级端口号。
(10)从图2中可以看出,RRU 6可以通过两条路径到达BBU,即,RRU 6->RRU 3->RRU 1->RRU 0->BBU链路被确认,而RRU6->RRU 4->RRU 1->RRU 0->BBU路径不会得到响应;RRU 4也有通过RRU 1或RRU 5的两条请求路径,同样,只有通过RRU 1的路径被确认;由于RRU 4->RRU 5的路径不被认可,因此RRU 6没有通过RRU 4->RRU 5->BBU的路径存在。
(11)经过逐级申请,图中的各RRU将获得与配置一致的RRU_ID,通过此ID发起上层建链,通过slow C&M通道进行通讯,完成IQ交换配置和C&M存储转发配置;
(12)上层链路断链2min后自动重启,重新开始ID请求流程。
本发明针对多个RRU共用一个BBU光口的方案,BBU通过中断方式获取RRU上报的控制字(CC_WORD、ID_Index、ID_WORD[0...11]),而后BBU根据配置确定BBU和RRU链路的合法性,最后由BBU为RRU分配射频单元ID,至此,物理层链路建立。
如上,BBU和RRU之间使用光纤接口,其上承载通用公共射频接口(CPRI)协议。图3示出了CPRI协议的基本数据包(BF)的结构。如图3所示,其中包含16bit的控制字(Control Word)。CPRI协议以256个BF为一个基本信令单元,可称为复帧(HF)。
在根据本发明的方法中,数据发送(广播)的原则是间隔式的重复进行。优选地,考虑到CPU的处理能力,4ms左右的时间比较合适,因此规定发送数据时,不论RRU还是BBU都连续发送64个复帧的相同数据,然后停止发送64HF;在RRU方,上述空闲的64HF被用来转发别的RRU的数据,在BBU方则发送空数据。
对于CPU给现场可编程门阵列(FPGA)发送的数据(BBU/RRU),都是通过板级支持包(BSP)的接口进行转发。为了保证CPU的发送不被底层实现干扰,可以在BSP中定义一个缓存区,并由FPGA提供乒乓BUFF给BSP以保证读写互斥。具体流程如图4至图7所示。
如图4所示,将发送数据写入板级支持包的具体处理过程如下:
首先将数据(例如,上层软件)写入记录;
之后,调用BSP接口;
在缓冲区满的情况下返回上层错误;否则进行写入。
如图5所示,将发送数据写入现场可编程门阵列的一个处理实例的过程如下:
首先,在BSP接收到数据时,读取FPGA开关,并判断是否可写;
如果为可写,则闭锁数据区,写入数据;否则设置定时器,并记录失败。
如图6示出了将发送数据写入现场可编程门阵列的另一处理实例,其过程与图3中所示的处理类似。可选地,增设失败计数门限值,例如,为3,在失败次数达到3次后,返回上层错误。
如图7所示,将发送数据写入通用公共射频接口的处理过程如下:
首先,FPGA对HF进行计数,并计算“模64”;
再判断“模64”为零,并且判断数据区有内容的情况下,判断数据区是否被锁定,并在数据区未闭锁的情况下,写入数据,闭锁数据区,之后返回;否则直接返回。
在数据接收时,以64个HF为一个检测点,读到有效数据后(CC_WORD=1),将整个数据区搬移到定义好的内存中,然后发送一个中断通知BSP取数据;数据区为HF中18至22,81至85,144至148,207至211位置的20个WORD16,为节省FPGA的开销,这20个WORD空间可以直接使用CPU的内存空间,但要保证上次中断后数据在64HF时间内被取走;检测到一次有效数据后,隔64个HF再进行下一次检测。
图8示出了具体的接收流程。如图8所示,具体可以包括以下处理:
首先,FPGA对HF进行计数,当计数到64时进入下一步;
FPGA检测HF中的CC_WORD是否为零,为零即为无效,返回,否则通过中断通知BSP;
BSP响应中断,调用CPU提供的回调函数读取数据;
CPU处理数据。
综上所述,借助于本发明的技术方案,能够在射频单元之间的光纤连接上区别信息的传输路径和方向,并确认路径合法性,从而有效实现了链路的建立。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。