一种基于MSA协议的双向通信系统及其实现方法与流程

文档序号:12829293阅读:215来源:国知局
一种基于MSA协议的双向通信系统及其实现方法与流程

本发明涉及光通信技术领域,具体涉及一种基于msa协议的双向通信系统及其实现方法。



背景技术:

随着通信技术的蓬勃发展,光通信所占比重越来越大,msa协议作为光通信领域的一种标准协议构架得到越来越广泛的使用。鉴于msa协议所定义的实际使用场景,一般多用硬件双口ram来实现各模块间的数据交互、告警上报等功能,传统的通用通信接口,如i2c、spi、uart、ethernet、pcie等难以直接用于实现模块间的数据交互,或是与msa协议规范不符,或是对硬件有特殊需求。目前传统的方式是通过msa协议的自定义位定义状态寄存器,模块间自定通信协议,通过自定通信协议查询状态寄存器的方式来实现通信,完成数据的交互。但此种方式经常是不同模块定义不同的交互协议,难以通用,大大增加了调试、维护难度与开发周期;且通过自定通信协议来实现通信,数据交互效率低下。



技术实现要素:

针对现有技术中存在的缺陷,本发明的目的在于提供一种基于msa协议的双向通信系统及其实现方法,通用于不同设备,且数据交互效率高。

为达到以上目的,本发明采取的技术方案是:一种基于msa协议的双向通信系统,其用于连接上层设备和下层设备,所述双向通信系统包括双口ram、上层端环形缓存区管理部件和下层端环形缓存区管理部件,其中:

所述双口ram包括上行环形缓存区和下行环形缓存区;上行环形缓存区用于缓存下层设备通过下层端环形缓存区管理部件写入的数据包并供上层端环形缓存区管理设备读取数据;下行环形缓存区用于缓存上层设备通过上层端环形缓存区管理部件写入的数据包并供下层端环形缓存区管理设备读取数据;

所述上层端环形缓存区管理部件连接所述上行环形缓存区和下行环形缓存区,并提供供所述上层设备读、写数据的通用接口;所述上层端环形缓存区管理部件包括第一写入模块和第一读取模块,所述第一写入模块用于接收上层设备写入的数据包并将数据包写入下行环形缓存区,所述第一读取模块用于读取上行环形缓存区的可读数据;

所述下层端环形缓存区管理部件连接所述上行环形缓存区和下行环形缓存区,并提供供所述下层设备读、写数据的通用接口;所述下层端环形缓存区管理部件包括第二写入模块和第二读取模块,所述第二写入模块用于接收下层设备写入的数据包并将数据包写入上行环形缓存区,所述第二读取模块用于读取下行环形缓存区的可读数据。

在上述技术方案的基础上,所述上层端环形缓存区管理部件还包括第一初始化模块,所述第一初始化模块用于初始化下行环形缓存区可供所述第一写入模块写入数据的物理地址空间和所述上行环形缓存区可供第一读取模块读取数据的物理地址空间;所述下层端环形缓存区管理部件还包括第二初始化模块,第二初始化模块用于初始化上行环形缓存区可供所述第二写入模块写入数据的物理地址空间和所述下行环形缓存区可供第二读取模块读取数据的物理地址空间。

在上述技术方案的基础上,所述双口ram包括midio接口,所述上层端环形缓存区管理部件通过midio接口连接所述上行环形缓存区。

在上述技术方案的基础上,所述双口ram包括ahb总线接口,所述上层端环形缓存区管理部件通过ahb总线接口连接所述下行环形缓存区。

在上述技术方案的基础上,所述第一写入模块和所述第二写入模块均包括一级写指针和二级写指针,二级写指针的值与所述第一写入模块写入下行环形缓存区的数据或所述第二写入模块写入上行环形缓存区的数据同步,一级写指针的值在二级写指针的值全部同步完毕后再更新至与二级写指针一致;仅一级写指针的值可被第一或第二读取部件同步读取。

在上述技术方案的基础上,所述第一读取模块和所述第二读取模块均包括一级读指针和二级读指针,二级读指针的值与所述第一读取模块读取上行环形缓存区的数据或所述第二读取模块读取下行环形缓存区的数据同步,一级读指针的值在二级读指针的值全部同步完毕后再更新至与二级读指针一致;仅一级读指针的值可被第一、第二写入部件同步写入。

本发明还公开了一种基于msa协议的双向通信系统的实现方法,包括以下步骤:

s101,下层端环形缓存区管理部件接收下层设备发送来的数据包;

s102,下层端环形缓存区管理部件的第二写入模块将接收的数据包写入上行环形缓存区;

s103,上层端环形缓存区管理部件的第一读取模块将可读数据从上行环形缓存区中读出。

在上述技术方案的基础上,步骤s102包括:

步骤s1021,下层端环形缓存区管理部件的第二写入模块调用二级写指针检测上行环形缓存区状态,判断是否可以写入,若是,进入步骤s1022,若否,进入步骤s1025;

步骤s1022,第二写入模块调用二级写指针判断实际可写入的数据长度;

步骤s1023,第二写入模块调用ahb总线接口将数据写入上行环形缓存区,并同步更新二级写指针的值;

步骤s1024,第二写入模块更新一级写指针的值,使之与二级写指针的值相等,结束;

步骤s1025,进入等待状态,等待超时时,返回实际写入数据的长度为0。

在上述技术方案的基础上,步骤s103包括:

步骤s1031,上层端环形缓存区管理部件的第一读取模块调用二级读指针检测上行环形缓存区状态,判断是否可以读取,若是,进入步骤s1032,若否,进入步骤s1035;

步骤s1032,第一读取模块调用二级读指针判断实际可写入的数据长度;

步骤s1033,第一读取模块调用midio接口将数据从上行环形缓存区中读出,并同步更新二级读指针的值;

步骤s1034,第一读取模块更新一级读指针的值,使之与二级读指针的值相等,结束;

步骤s1035,进入等待状态,等待超时时,返回实际读取数据的长度为0。

在上述技术方案的基础上,还包括以下步骤:s201,上层端环形缓存区管理部件接收上层设备发送来的数据包;

s202,上层端环形缓存区管理部件的第一写入模块将接收的数据包写入下行环形缓存区;

s203,下层端环形缓存区管理部件的第二读取模块将可读数据从下行环形缓存区中读出。

与现有技术相比,本发明的优点在于:

本发明在双口ram中采用上行环形缓存区和下行环形缓存区,并分别在上层设备端设置上层端环形缓存区管理部件和在下层设备端设置下层端环形缓存区管理部件,通过上层端环形缓存区管理部件或下层端环形缓存区管理部件向上行环形缓存区或下行环形缓存区读写数据,从而实现通过上行环形缓存区和下行环形缓存区实现上层设备和下层设备之间的数据交互,上层端环形缓存区管理部件或下层端环形缓存区管理部件均设有供外部设备读、写的通用接口,从而通用于各种设备,且便于开发人员维护;同时,数据交互时无须通过自定通信协议查询状态寄存器,简化数据交互流程,数据交互效率高。

附图说明

图1为本发明实施例中基于msa协议的双向通信系统的结构示意图;

图2为本发明实施例中基于msa协议的双向通信系统的实现方法的步骤s101-s103的流程示意图;

图3为本发明实施例中基于msa协议的双向通信系统的实现方法的步骤s201-s203的流程示意图。

具体实施方式

以下结合附图及实施例对本发明作进一步详细说明。

参见图1所示,本发明实施例提供一种基于msa协议的双向通信系统,其用于连接上层设备和下层设备,双向通信系统包括双口ram、上层端环形缓存区管理部件和下层端环形缓存区管理部件,其中:

双口ram包括上行环形缓存区和下行环形缓存区;上行环形缓存区用于缓存下层设备通过下层端环形缓存区管理部件写入的数据包并供上层端环形缓存区管理设备读取数据;下行环形缓存区用于缓存上层设备通过上层端环形缓存区管理部件写入的数据包并供下层端环形缓存区管理设备读取数据;

上层端环形缓存区管理部件连接上行环形缓存区和下行环形缓存区,并提供供上层设备读、写数据的通用接口;此处通用接口即指上层设备在上层端环形缓存区管理部件中读、写数据时的调用的通用接口函数。上层端环形缓存区管理部件包括第一写入模块和第一读取模块,第一写入模块用于接收上层设备写入的数据包并将数据包写入下行环形缓存区,第一读取模块用于读取上行环形缓存区的可读数据;

下层端环形缓存区管理部件连接上行环形缓存区和下行环形缓存区,并提供供下层设备读、写数据的通用接口;此处通用接口即指下层设备在下层端环形缓存区管理部件中读、写数据时的调用的通用接口函数。下层端环形缓存区管理部件包括第二写入模块和第二读取模块,第二写入模块用于接收下层设备写入的数据包并将数据包写入上行环形缓存区,第二读取模块用于读取下行环形缓存区的可读数据。

上层端环形缓存区管理部件还包括第一初始化模块,第一初始化模块用于初始化下行环形缓存区可供第一写入模块写入数据的物理地址空间和上行环形缓存区可供第一读取模块读取数据的物理地址空间;下层端环形缓存区管理部件还包括第二初始化模块,第二初始化模块用于初始化上行环形缓存区可供第二写入模块写入数据的物理地址空间和下行环形缓存区可供第二读取模块读取数据的物理地址空间。

双口ram包括midio接口,上层端环形缓存区管理部件通过midio接口连接上行环形缓存区。双口ram包括ahb总线接口,上层端环形缓存区管理部件通过ahb总线接口连接下行环形缓存区。

第一写入模块和第二写入模块均包括一级写指针和二级写指针,二级写指针的值与第一写入模块写入下行环形缓存区的数据或第二写入模块写入上行环形缓存区的数据同步,一级写指针的值在二级写指针的值全部同步完毕后再更新至与二级写指针一致;仅一级写指针的值可被第一或第二读取部件同步读取。

第一读取模块和第二读取模块均包括一级读指针和二级读指针,二级读指针的值与第一读取模块读取上行环形缓存区的数据或第二读取模块读取下行环形缓存区的数据同步,一级读指针的值在二级读指针的值全部同步完毕后再更新至与二级读指针一致;仅一级读指针的值可被第一、第二写入部件同步写入。

本发明在上层端环形缓存区管理部件和在下层设备端设置下层端环形缓存区管理部件中均采用两级指针,一级读指针的值在二级读指针的值全部同步完毕后再更新至与二级读指针一致;一级写指针的值在二级写指针的值全部同步完毕后再更新至与二级写指针一致,仅一级写指针的值可被第一或第二读取部件同步读取,仅一级读指针的值可被第一、第二写入部件同步写入;从而实现第一、第二写入部件写入数据的同时,第一、第二读取部件可同步读取数据,即读写可同步进行,提升数据交互效率。

参见图2所示,本发明还公开了一种基于msa协议的双向通信系统的实现方法,包括以下步骤:

s101,下层端环形缓存区管理部件接收下层设备发送来的数据包;

s102,下层端环形缓存区管理部件的第二写入模块将接收的数据包写入上行环形缓存区;

s103,上层端环形缓存区管理部件的第一读取模块将可读数据从上行环形缓存区中读出。

步骤s102包括:

步骤s1021,下层端环形缓存区管理部件的第二写入模块调用二级写指针检测上行环形缓存区状态,判断是否可以写入,若是,进入步骤s1022,若否,进入步骤s1025;

步骤s1022,第二写入模块调用二级写指针判断实际可写入的数据长度;

步骤s1023,第二写入模块调用ahb总线接口将数据写入上行环形缓存区,并同步更新二级写指针的值;

步骤s1024,第二写入模块更新一级写指针的值,使之与二级写指针的值相等,结束;

步骤s1025,进入等待状态,等待超时时,返回实际写入数据的长度为0。

步骤s103包括:

步骤s1031,上层端环形缓存区管理部件的第一读取模块调用二级读指针检测上行环形缓存区状态,判断是否可以读取,若是,进入步骤s1032,若否,进入步骤s1035;

步骤s1032,第一读取模块调用二级读指针判断实际可写入的数据长度;

步骤s1033,第一读取模块调用midio接口将数据从上行环形缓存区中读出,并同步更新二级读指针的值;

步骤s1034,第一读取模块更新一级读指针的值,使之与二级读指针的值相等,结束;

步骤s1035,进入等待状态,等待超时时,返回实际读取数据的长度为0。

参见图3所示,基于msa协议的双向通信系统的实现方法还包括以下步骤:

s201,上层端环形缓存区管理部件接收上层设备发送来的数据包;

s202,上层端环形缓存区管理部件的第一写入模块将接收的数据包写入下行环形缓存区;

s203,下层端环形缓存区管理部件的第二读取模块将可读数据从下行环形缓存区中读出。

本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1