CN107025203B - 第一板卡、第二板卡及一种设备 - Google Patents
第一板卡、第二板卡及一种设备 Download PDFInfo
- Publication number
- CN107025203B CN107025203B CN201710210819.4A CN201710210819A CN107025203B CN 107025203 B CN107025203 B CN 107025203B CN 201710210819 A CN201710210819 A CN 201710210819A CN 107025203 B CN107025203 B CN 107025203B
- Authority
- CN
- China
- Prior art keywords
- access
- register
- data
- main
- response data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17306—Intercommunication techniques
Abstract
本发明实施例提供了一种第一板卡、第二板卡及一种设备,第一板卡包括CPU和与所述CPU连接的至少一个主控制器,主控制器包括一组寄存器、主处理模块、主发送模块和主接收模块;CPU发起访问操作,将访问操作对应的命令数据写入目标寄存器;主处理模块将目标寄存器中的命令数据发送至主发送模块;主发送模块根据命令数据,构造请求数据帧;发送请求数据帧给第二板卡;主接收模块接收第二板卡发送的响应数据帧;解析第二板卡发送的响应数据帧,获得响应数据;发送响应数据给主处理模块;主处理模块根据响应数据确定访问操作结果;通知CPU访问操作结束。应用本发明实施例能够简化第一板卡的硬件配置,以减少设备成本和降低故障风险。
Description
技术领域
本发明涉及计算机技术领域,特别是涉及第一板卡、第二板卡及一种设备。
背景技术
在通信设备中,为了实现板卡之间的信息交互,多块板卡可以通过插卡结构连接起来。通常将包括CPU模块的板卡称为第一板卡,将通过插卡结构连接第一板卡的板卡称为第二板卡。第一板卡和第二板卡之间存在数据通道和控制通道,数据通道用于传输数据,控制通道用于第一板卡对第二板卡的设置和管理。
目前,控制通道较为广泛的实现方式包括PCI总线、Local Bus总线和PCIe总线。当第一板卡与第二板卡之间采用PCI总线作为控制总线时,如图1所示,图1为第一板卡和第二板卡之间控制通道的一种示意图。
从图1可知,第一板卡连接了三个第二板卡;第一板卡中包括一个CPU模块,三个桥片(桥片1、桥片2、桥片3)和三个模拟开关(模拟开关1、模拟开关2和模拟开关3);每个第二板卡包括一个桥片、一个可编程逻辑器件、以及光模块、传感器等多个功能器件。在第一板卡设备中,桥片用于连接CPU模块和PCI总线接口,模拟开关用于隔离第二板卡,以实现第二板卡的热插拔;在第二板卡中,桥片用于连接可编程逻辑器和PCI总线接口。
可见,第一板卡每连接一个第二板卡,均需要配置一个桥片和一个模拟开关。在第一板卡连接多个第二板卡的场景下,需要在第一板卡上配置大量的桥片和模拟开关,使得第一板卡的硬件配置非常复杂;这样不仅增加了设备成本,而且提升了故障风险。
发明内容
本发明实施例的目的在于提供第一板卡、第二板卡及一种设备,能够简化板卡的硬件配置,以减少设备成本和降低故障风险。具体技术方案如下:
本发明实施例提供了一种第一板卡,包括CPU和与所述CPU连接的至少一个主控制器,所述主控制器包括一组寄存器、主处理模块、主发送模块和主接收模块;其中:所述CPU,用于发起访问操作,将所述访问操作对应的命令数据写入目标寄存器;所述访问操作的对象为选定的位于第二板卡上的功能器件;所述主处理模块,用于将所述目标寄存器中的命令数据发送至所述主发送模块;所述主发送模块,用于根据所述命令数据,构造请求数据帧;发送所述请求数据帧给所述第二板卡;所述主接收模块,用于接收所述第二板卡发送的响应数据帧;解析所述第二板卡发送的响应数据帧,获得响应数据;发送所述响应数据给所述主处理模块;所述主处理模块,还用于根据所述响应数据确定访问操作结果;通知所述CPU所述访问操作结束。
本发明实施例又提供了一种第二板卡,包括从控制器和至少一个功能器件,以及与所述功能器件对应的接口控制器,所述从控制器包括:从处理模块、从接收模块和从发送模块;其中:所述从接收模块,用于接收第一板卡发送的访问操作的请求数据帧;解析所述请求数据帧,获取命令数据;发送所述命令数据给所述从处理模块;所述从处理模块,用于根据所述命令数据,生成操作指令,并确定作为所述访问操作对象的目标功能器件;将所述操作指令发送给所述接口控制器;所述接口控制器,用于根据所述操作指令,对目标功能器件进行访问操作;将所述访问操作的访问结果发送至所述从处理模块;所述从处理模块,还用于根据所述访问结果确定响应数据;将所述响应数据发送给所述从发送模块;所述从发送模块,用于根据所述响应数据构造响应数据帧;发送所述响应数据帧给所述第一板卡。
本发明实施例还提供了一种设备,包括权利要求1-7任一项所述的第一板卡,以及至少一个权利要求8-12任一项所述的第二板卡;所述第一板卡和所述第二板卡通过串行总线进行数据传输。
本发明实施例提供的第一板卡、第二板卡和一种设备,所述第一板卡包括CPU和与CPU连接的至少一个主控制器,控制器包括一组寄存器、主处理模块、主发送模块和主接收模块;其中,CPU用于发起访问操作,将访问操作对应的命令数据写入目标寄存器,访问操作的对象为选择的位于第二板卡上的功能器件;主处理模块通过读取目标寄存器,获取命令数据,根据命令数据构成请求数据帧;主发送模块发送请求数据帧给第二板卡;主接收模块接收来自第二板卡的响应数据帧;主处理模块通过解析响应数据帧,获取访问操作的结果,并通知CPU访问操作结果。
可见,在本发明实施例中,第一板卡的硬件配置非常简单,仅需配置CPU和主控制器就能够实现对第二板卡的控制,不仅可以减少设备成本和降低故障风险,还能够节约空间,有利于设备的集成化。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为第一板卡和第二板卡之间控制通道的一种示意图;
图2为本发明实施例中第一板卡的一种结构图;
图3为本发明实施例中第一板卡的又一种结构图;
图4为本发明实施例中第一板卡中CPU发起读操作的流程图;
图5为本发明实施例中第一板卡中CPU发起写操作的流程图;
图6为本发明实施例中主控制器执行访问操作的流程图;
图7为本发明实施例中第一板卡和第二板卡的一种结构图;
图8为本发明实施例中从控制器执行访问操作的流程图;
图9为本发明实施例中同步串行总线的第一随路时钟信号的时序示意图;
图10为本发明实施例中同步串行总线的第二随路时钟信号的时序示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例公开了一种第一板卡,所述第一板卡包括CPU和与所述CPU连接的至少一个主控制器,所述主控制器包括一组寄存器、主处理模块、主发送模块和主接收模块;参见图2,图2为本发明实施例中第一板卡的一种结构图。
在图2中,第一板卡201包括CPU202和三个主控制器,分别为主控制器1 203、主控制器2 204和主控制器3 205,为了方便理解,以主控制器1 203为例进行详细说明;主控制器1 203包括一组寄存器206、主处理模块207、主发送模块208和主接收模块209。
需要说明的是,通常情况下,一个第一板卡可以连接多个第二板卡,且主控制器对应一个第二板卡,可以理解的,第一板卡可以包括多个主控制器,主控制器的数量与第二板卡的数量相同。本发明对第一板卡中主控制器的数量不加以限制。为了方便说明,在本发明实施例中,一个第一板卡包括三个主控制器为,且以主控制器1 203为例进行详细说明,主控制器2 204和主控制器3 205中的结构均与主控制器1 203的结构相同。
在实际应用中,主控制器1 203可以由第一可编程逻辑器件210来实现,主控制器2204可以由第二可编程逻辑器件来实现,主控制器3 205可以由第三可编程逻辑器件来实现;当然,主控制器1 203、主控制器2 204和主控制器3 205也可以均由第一可编程逻辑器件210来实现;本发明对主控制器与可编程逻辑器件的对应关系不加以限制。为了方便理解,本实施例以主控制器1203、主控制器2 204和主控制器3 205均由第一可编程逻辑器件210来实现为例进行说明。
还需要说明的是,CPU202可以通过Local bus总线分别与主控制器1 203、主控制器2 204和主控制器3 205进行通信,也就是说,CPU可以通过Local bus总线与可编程逻辑器件相连,当然,也可以有其他连接方式,具体的连接方式可以参考现有技术,在此不再赘述。
基于图2,下面对第一板卡1 201中各模块间的交互过程进行说明:
所述CPU202,用于发起访问操作,将所述访问操作对应的命令数据写入目标寄存器206;所述访问操作的对象为选定的位于第二板卡上的功能器件;
所述主处理模块207,用于将所述目标寄存器206中的命令数据发送至所述主发送模块208;
所述主发送模块208,用于根据所述命令数据,构造请求数据帧,以及发送所述请求数据帧给所述第二板卡;
所述主接收模块209,用于接收并解析所述第二板卡发送的响应数据帧;解析所述第二板卡发送的响应数据帧,获得响应数据;发送所述响应数据给所述主处理模块207;
所述主处理模块207,还用于根据所述响应数据确定访问操作结果;以及通知所述CPU202所述访问操作结束。
为了方便理解,在本发明实施例,将访问操作的对象为选定的位于第二板卡上的功能器件称为目标功能器件,将目标功能器件所在的第二板卡称为目标第二板卡,将第一板卡中控制目标第二板卡的主控制器称为目标主控制器。
具体的,首先,第一板卡201中的CPU202发起访问操作,并将针对目标功能器件的访问操作对应的命令数据写入目标寄存器206;随后,主控制器1 203中的主处理模块207将目标寄存器206中的命令数据发送至主发送模块208;主发送模块208根据命令数据构成请求数据帧,并将请求数据帧发送给目标第二板卡;当目标第二板卡返回响应数据帧时,第一板卡中的主接收模块209接收并解析来自目标第二板卡的响应数据帧,以及将从解析后的响应数据帧中获取的响应数据发送至主处理模块207;最后,主处理模块207从响应数据中获取访问操作结果,并通知CPU202针对目标功能器件的访问操作结束。
可见,本发明实施例中的第一板卡的硬件配置非常简单,仅配置CPU及设置主控制器,就能够实现对第二板卡的控制,而无需针对每个第二板卡均配置一个桥片和一个模拟开关;不仅减少设备成本和降低故障风险,而且节约空间,有利于设备的集成化。
在本发明的一种优选实施例中,参见图3,图3为本发明实施例中第一板卡的又一种结构图;
在图3中,第一板卡201中的主控制器1 203还包括第一时钟源模块301,一组寄存器206包括地址位宽设置寄存器302、数据位宽设置寄存器303、访问命令寄存器304、访问地址寄存器305、访问读数据寄存器306、访问使能寄存器307和访问写数据寄存器308;其中,第一时钟源模块301用于产生的随路时钟信号,访问读数据寄存器306包括访问读数据寄存器0和访问读数据寄存器1,访问地址寄存器305包括访问地址寄存器0和访问地址寄存器1,访问写数据寄存器308包括访问写数据寄存器包括0和访问写数据寄存器包括1;此外,主控制器1 203还包括第一超时定时器309。
下面基于图3,针对第一板卡201中CPU202发起访问操作,主控制器1 203根据访问操作生成请求数据帧并发送至第二板卡,以及根据来自第二板卡的响应数据帧获取访问操作结果的具体过程进行详细说明:
第一步:CPU202发起访问操作,根据访问操作针对的目标功能器件的位宽信息,设置寄存器206中的第一寄存器;
在本步骤中,首先,CPU202发起访问操作,并根据访问操作对应的命令数据,确定目标功能器件的类型,进而根据目标功能器件的类型确定目标功能器件的位宽信息;然后,CPU202根据目标功能器件的位宽信息,配置寄存器206中的地址位宽设置寄存器302,当访问操作为写操作时,还需要配置数据位宽设置寄存器303。
其中,访问操作包括读操作和写操作;位宽信息包括地址位宽和数据位宽,地址位宽用于表示目标功能器件的地址的位宽,通常为8bit或者16bit;数据位宽用于表示待写入数据的位宽和读出数据的位宽,通常也为8bit或者16bit;比如,当目标功能器件为光模块时,可以确定地址位宽和数据位宽均为8bit。
需要说明的是,位宽信息也可以是预先设置好的,本发明对目标功能器件的位宽信息的确定方式不加以限制。
可以理解的,当访问操作为读操作时,第一寄存器包括地址位宽设置寄存器302;当访问操作为写操作时,第一寄存器包括地址位宽设置寄存器302和数据位宽设置寄存器303。
在实际应用中,CPU202可以通过Local bus总线连接目标主控制器1 203,进而对目标寄存器206进行配置。
下面针对访问操作分别为写指令和读指令的情况进行详细说明:
在CPU202发起读操作的情况下,当目标功能器件所需的地址位宽为8bit时,可以将地址位宽设置寄存器302中、与目标功能器件对应的比特位设置为0;当目标功能器件所需的地址位宽为16bit时,可以将地址位宽设置寄存器302中、与目标功能器件对应的比特位设置为1;
在CPU202发起写操作的情况下,当目标功能器件所需的地址位宽信息为8bit时,可以将地址位宽设置寄存器302中、与目标功能器件对应的比特位设置为0;当目标功能器件所需的地址位宽为16bit时,可以将地址位宽设置寄存器302中、与目标功能器件对应的比特位设置为1;除此以外,还需要设置数据位宽设置寄存器303,当目标功能器件所需的数据位宽信息为8bit时,可以将数据位宽设置寄存器303中、与目标功能器件对应的比特位设置为0;当目标功能器件所需的数据位宽为16bit时,可以将数据位宽设置寄存器303中、与目标功能器件对应的比特位设置为1。
这样,第一板卡的CPU可以结合实际使用情况,根据不同目标功能器件的类型,灵活设置位宽信息,以满足各种类型的目标功能器件的访问需求,保证访问操作能够正常执行。
第二步,CPU202根据访问使能寄存器307中的EN,设置寄存器206中的第二寄存器;
优选的,所述CPU,还用于在查询到所述访问使能寄存器307的启动位EN指示为空闲时,发起所述访问操作;还用于将所述访问操作对应的命令数据写入目标寄存器206后,将所述访问使能寄存器307的EN置为启动访问操作。
优选的,所述CPU,还用于若所述访问操作为写操作,则将所述目标功能器件的地址位宽信息写入所述地址位宽设置寄存器,将写操作的写标识写入所述访问命令寄存器,将所述目标功能器件的地址写入所述访问地址寄存器;
所述CPU,还用于若所述访问操作为写操作,将所述目标功能器件的地址位宽信息写入所述地址位宽设置寄存器,将所述目标功能器件的数据位宽信息写入所述数据位宽设置寄存器,将读操作的写标识写入所述访问命令寄存器,将所述目标功能器件的地址写入所述访问地址寄存器,将待写入数据写入所述访问写数据寄存器。
本步骤中,CPU202在设置第二寄存器之前,首先需要判断访问使能寄存器307中的EN是否为0;当EN为0时,指示第一板卡201中的主控制器1 203当前处于空闲状态,没有执行访问操作,那么,CPU202可以对寄存器206执行进一步配置,以触发主控制器1 203能够根据寄存器206中的命令数据生成请求数据帧,进而发起针对目标功能器件的访问操作;当EN=1时,指示第一板卡201中的主控制器1 203当前正在执行访问操作,不处于空闲状态,那么,CPU202等待主控制器1 203完成当前的访问操作,并将EN重新置0后,才能发起针对目标功能器件的访问操作。
具体的,CPU202在通过读取访问使能寄存器307中的EN,确定EN为0后,对寄存器206中的第二寄存器进行设置:
当CPU202发起访问操作为读操作时,将访问命令寄存器304中的读/写(Read/Write,R/W)标志位设置为1,说明访问操作为读操作;以及根据读操作对应命令数据中目标功能器件的片选,设置访问命令寄存器304中的片选标志位;以及当地址位宽设置寄存器302中、目标功能器件对应的比特位为0时,将读操作对应命令数据中、目标功能器件的地址写入访问地址寄存器0;当地址位宽设置寄存器302中、目标功能器件对应的比特位为1时,将读操作对应命令数据中、目标功能器件的地址的低八位写入访问地址寄存器0,将目标功能器件的地址的高八位写入访问地址寄存器1;
当CPU202发起访问操作为写操作时,可以将访问命令寄存器304中的R/W标志位设置为0,说明访问操作为写操作;以及根据写操作对应命令数据中目标功能器件的片选,设置访问命令寄存器304中的片选标志位;以及当地址位宽设置寄存器302中、目标功能器件对应的比特位为0时,将写操作对应命令数据中、目标功能器件的地址写入访问地址寄存器0;当地址位宽设置寄存器302中、目标功能器件对应的比特位为1时,将写操作对应命令数据中、目标功能器件的地址的低八位写入访问地址寄存器0,将目标功能器件的地址的高八位写入访问地址寄存器1;除了设置访问地址寄存器305,还需要设置访问写数据寄存器308:当数据位宽设置寄存器303中、目标功能器件对应的比特位为0时,将写操作对应命令数据中的待写入数据写入访问写数据寄存器0;当目标数据位宽设置寄存器303中、目标功能器件对应的比特位为1时,将写操作对应命令数据中的待写入数据的低八位写入访问写数据寄存器0,将待写入数据的高八位写入访问写数据寄存器1。
需要说明的是,片选能够在目标第二板卡中唯一标识一个目标功能器件。
可以理解的,当访问操作为读操作时,第二寄存器包括访问命令寄存器304和访问地址寄存器305;当访问操作为写操作时,第一寄存器包括访问命令寄存器304、访问地址寄存器305和访问写数据寄存器308。
为了方便说明,将第一寄存器和第二寄存器统称为目标寄存器,在本发明的一种可选实施例中:
若所述访问操作为读操作,所述目标寄存器包括:地址位宽设置寄存器302、访问命令寄存器304和访问地址寄存器305,访问地址寄存器305包括访问地址寄存器0和访问地址寄存器1;
若所述访问操作为写操作,所述目标寄存器包括:地址位宽设置寄存器302、数据位宽设置寄存器303、访问命令寄存器304、访问地址寄存器305和访问写数据寄存器308;访问地址寄存器305包括访问地址寄存器0和访问地址寄存器1,以及访问写数据寄存器308包括访问写数据寄存器0和访问写数据寄存器1。
这样,CPU202完成了对寄存器206的配置;此时,CPU将访问使能寄存器307中的EN置为1,即指示为启动访问操作,以触发主控制器1 203能够根据寄存器206中的命令数据生成请求数据帧,进而发起针对目标功能器件的访问操作。
第三步,主控制器1 203中的主处理模块207将目标寄存器206中的命令数据发送至主发送模块208,获取访问操作对应的命令数据;
优选的,所述主处理模块207,还用于在查询到所述访问使能寄存器307的EN指示为启动访问操作时,将所述目标寄存器206中存储的所述命令数据发送给所述主发送模块208。
在本步骤中,主处理模块207在读取访问使能寄存器307,确定EN为1,即指示为启动访问操作时,将目标寄存器206中的命令数据发送至主发送模块208;同时,主处理模块207还将一个发送请求信号发送给主发送模块208,使能主主发送模块208;也可以在将命令数据发送给主发送模块208之后,将发送请求信号发送给主发送模块208,使能主发送模块208;但不能在将命令数据发送给主发送模块208之前,将发送请求信号发送给主发送模块208,使能主发送模块208。这里,发送请求信号可以用于使能主发送模块208。
在实际应用中,可以预先设置当访问操作分别为读操作和写操作时,待发送至主发送模块208所需的命令数据所在的寄存器;避免主处理模块207需要遍历所有寄存器才能获取命令数据,提高工作效率。
具体的,当访问操作为读操作时,主处理模块207在读取访问使能寄存器307,确定EN为1时,将地址位宽设置寄存器302、访问命令寄存器304、访问地址寄存器305中的命令数据发送至主发送模块208;当访问操作为写操作时,主处理模块207在读取访问使能寄存器307,确定EN为1时,将地址位宽设置寄存器302、数据位宽设置寄存器303、访问命令寄存器304、访问地址寄存器305和访问写数据寄存器308中的命令数据发送至主发送模块208。
第四步,主控制器1 203中的主发送模块208根据命令数据构造请求数据帧;
可选的,所述主发送模块208,还用于按照预设帧格式,根据所述命令数据构造请求数据帧;所述预设帧格式为:帧开始的间隔符和帧结束的间隔符为010。
在本步骤中,主发送模块208根据目标寄存器206中的命令数据,生成与访问操作对应的、串行总线所对应格式的请求数据帧;其中,串行总线所对应格式是自定义的,随着实际应用场景的变更,可以进行适应性修改。
为了提高第一板卡201接收的响应数据帧的可靠性和第二板卡1 701接收到的请求数据帧的可靠性,可以预先设置一个帧格式,该帧格式为:帧开始和帧结束的间隔符为010;这样,第一板卡201可以按照预设帧格式根据命令数据构造请求数据帧,第二板卡也可以按照预设帧格式构造响应数据帧;
需要说明的是,请求数据帧和响应数据帧的帧开始和帧结束的间隔符中包括了0-1的跳变和1-0的跳变,第二板卡按照该预设帧格式对接收的请求数据帧进行校验,有效地提高了第二板卡接收到请求数据帧的可靠性;第一板卡201按照该预设帧格式对接收的响应数据帧进行校验,确定有效的响应数据帧,有效地提高了第一板卡201接收到响应的可靠性。
另外,为了进一步提高接收的可靠性,可以规定请求数据帧和响应数据帧中的具体内容,将与请求数据帧包括的内容匹配的响应数据帧确定为预期响应数据帧。访问操作不同,请求数据帧和响应数据帧不完全相同,具体可以参考后文中表1至表4所示的请求数据帧和响应数据帧的格式。
具体地,当访问操作为读操作时,由主发送模块208根据目标寄存器206中的命令数据,生成串行总线所对应格式的读请求数据帧,如表1所示。
表1
由表1可知,读请求数据帧中包括位于首尾的两个帧间隔、目标功能器件的片选、读标识、目标功能器件的地址;其中,帧间隔可以用于校验数据帧。具体地,包括片选和读标识的Command字段可以从访问命令寄存器304中读取到,包括目标功能器件的地址的add字段可以从访问地址寄存器0 305和访问地址寄存器1 309中读取到。
当访问操作为写操作时,由主发送模块208根据目标寄存器206中的命令数据,生成串行总线所对应格式的写请求数据帧,如表2所示。
表2
由表2可知,写请求数据帧中包括位于首尾的两个帧间隔、目标功能器件的片选、读标识、目标功能器件的地址和待写入数据;其中,帧间隔可以用于校验数据帧。具体地,包括片选和读标识的Command字段可以从访问命令寄存器304中读取到,包括目标功能器件的地址的add字段可以从访问地址寄存器0 305和访问地址寄存器1 309中读取到;包括待写入数据的data字段可以从访问写数据寄存器0 306和访问写数据寄存器1 310中读取到。
这样,主发送模块208能够根据目标寄存器206中的命令数据,生成与访问操作对应的请求数据帧。
第五步,主发送模块208发送请求数据帧给第二板卡;
可选的,所述主处理模块207,还用于在确定所述主发送模块208发送所述请求数据帧完毕后,使能所述主接收模块209,并启动所述第一超时定时器309;当所述第一超时定时器309超时溢出时,去使能所述主接收模块209。
在本步骤中,首先,主发送模块208将请求数据帧发送至第二板卡,同时,启动第一超时定时器309;
同时,主发送模块208在发送请求数据帧结束后,向主处理模块207发送一个发送响应信号,通知主处理模块207请求数据帧发送完毕;接下来,主处理模块207确定主发送模块208发送请求数据帧完毕后,向主接收模块209发送一个接收请求信号,使能主接收模块209,打开接收通道,等待接收第二板卡反馈的响应数据帧,并通知主接收模块209等待接收的响应数据帧的类型;其中,接收请求信号用于使能主接收模块209,响应数据帧的类型包括读操作的响应数据帧和写操作的响应数据帧。
实际应用中,若第一超时定时器309溢出后,主接收模块209仍未接收到来自第二板卡的响应数据帧,则主处理模块207去使能主接收模块209,使主接收模块209停止接收响应数据帧,确定错误原因为超时,由主处理模块207置访问命令寄存器304中的indicator设置为1,并且根据错误原因,置错误类型指示标志位为超时。
需要说明的是,在表1和表2中,(Most Significant Bit,MSB)是最高有效位,(Least Significant Bit,LSB)是最低有效位;主发送模块在发送请求数据帧时,可以按照从最高有效位到最低有效位的顺序发送请求数据帧,先发送位于MSB的数据,最后发送位于LSB的数据。
这样,主控制器1 203能够根据来自CPU202、针对目标功能器件的访问操作,生成请求数据帧,并向目标功能器件所在的目标第二板卡发送请求数据帧,以使目标第二板卡依据请求数据帧,对目标功能器件进行访问操作。
第六步,主接收模块209接收第二板卡发送的响应数据帧,解析响应数据帧获取响应数据,将响应数据发送至主处理模块207;
可选的,所述主接收模块209,还用于在接收到所述响应数据帧、且确定所述响应数据帧有效时,解析所述有效的响应数据帧,获得有效的响应数据。
在本步骤中,主接收模块209在第一超时定时器309未溢出的情况下,接收来自目标第二板卡发送的响应数据帧,并判断响应数据帧是否有效,若响应数据帧有效,则从解析后的响应数据帧中获取响应数据发送至主处理模块207。
针对主接收模块209确定接收到的响应数据帧是否有效,需要进一步说明的是:
首先,主接收模块209确定接收到的响应数据帧是否为干扰信息,如果是,则执行就丢弃;
接下来,主接收模块209对响应数据帧进行帧开始和帧结束的帧间隔校验;
由于在第五步中,主处理模块207已经通知主接收模块209等待接收的响应数据帧的类型,那么,主接收模块209就可以确定等待接收的是读操作的响应数据帧还是写操作的响应数据帧,进而根据预设帧格式,确定需要接收的响应数据帧的长度,进而确定响应数据帧中帧开始和帧结束的间隔符的位置;这样,主接收模块209就可以根据确定的帧开始和帧结束的间隔符的位置,对接收的响应数据帧进行帧开始和帧结束的帧间隔校验,确定接收的响应数据帧是否为有效的响应数据帧;
若主接收模块209对响应数据帧的校验成功,则确定响应数据帧有效,主接收模块209将有效的响应数据帧解析,获取到有效的响应数据,并将响应数据发送至主处理模块207;
若主接收模块209对响应数据帧的校验失败,则确定响应数据帧无效,错误原因为帧间隔域(010)错误;由主接收模块209将错误原因发送至主处理模块207,由主处理模块207置访问命令寄存器304中的indicator位标志位为1,指示本次针对目标功能器件的访问操作失败,并且根据错误原因,置错误类型指示标志位为帧间隔域(010)错误;随后,将无效的响应数据帧丢弃。
需要说明的是,根据帧间隔校验数据帧的具体过程可以参考现有技术,在此不再赘述。
第七步,主处理模块207从响应数据中获取访问操作结果,并通知CPU202访问操作结束。
可选的,所述主处理模块,还用于在所述访问操作结果指示为成功时,将所述访问命令寄存器的indicator置为访问操作成功;
所述主处理模块207,还用于在确认所述第一超时定时器309溢出、或确定所述主接收模块209接收到无效的响应数据帧、或对所述有效的响应数据校验未通过、或所述访问操作结果指示为失败时,将所述访问命令寄存器304的indicator置为访问操作失败,以及将所述访问命令寄存器的错误类型置为相应的值。
可选的,所述主处理模块207,还用于在所述访问操作结果指示为成功、且所述访问操作为读操作时,将所述有效的响应数据中的读出数据写入所述访问读数据寄存器306。
可选的,所述主处理模块207,还用于在根据所述响应数据确定访问操作结果后,将所述访问使能寄存器307的EN置为空闲,并通知所述CPU202所述访问操作结束。
在本步骤中,当主处理模块207确定接收到来自主接收模块209的响应数据,且确定响应数据帧符合预期时,可以从响应数据中获取针对目标功能器件的访问操作结果,将访问操作结果保存在寄存器206中,并将访问操作结果反馈给CPU202。
在实际应用中,访问操作结果中包括读/写标识和状态标志;
当访问操作结果中的读/写标识为读标识时,访问操作结果中还包括读出数据;若状态标志为成功,则主处理模块207将访问命令寄存器304中的indicator设置为0,且置访问命令寄存器304的错误类型指示为无错误,说明本次针对目标功能器件的读操作成功;以及将读出数据写入访问读数据寄存器306;若状态标志为失败,则主处理模块207将访问命令寄存器304中的indicator设置为1,且置访问命令寄存器304的错误类型指示为存取指示域指示失败,说明本次针对目标功能器件的读操作失败,具体错误原因可以查看目标第二板卡的相关调试寄存器;
具体地,当数据位宽设置寄存器303中、与目标功能器件对应的比特位为0时,将读出数据写入访问读数据寄存器0;当数据位宽设置寄存器303中、目标功能器件对应的比特位为1时,将读出数据的低八位写入访问读数据寄存器0,将读出数据的高八位写入访问读数据寄存器1。
当访问操作结果中的读/写标识为写标识时,若状态标志为成功,则将访问命令寄存器304中的indicator设置为0,且置访问命令寄存器304的错误类型指示为无错误,说明本次针对目标功能器件的写操作成功;若状态标志为失败,则主处理模块207将访问命令寄存器304中的indicator设置为1,且置访问命令寄存器304的错误类型指示为存取指示域指示失败,说明本次针对目标功能器件的写操作失败;具体错误原因可以查看目标第二板卡的相关调试寄存器。
此外,由于第二板卡和第一板卡201之间是通过串行总线连接的,存在出现各种故障的风险,因此,除了主接收模块209判断接收到的响应数据帧是否为有效帧以外,主处理模块207还需要对响应数据进行校验,判断响应数据是否符合预期标准:
在实际应用中,主处理模块207需要对接收到的有效的响应数据进行校验,判断接收到的响应数据中的Command字段是否与第五步中主发送模块208发送的请求数据帧中包括的Command字段是否匹配;如果是,则校验通过,响应信息是否符合预期标准;如果否,则校验未通过;例如,若请求数据帧中Command字段中的读标识为1,片选为001,那么,对应的响应数据中Command字段中的读标识也为1,片选也为001。
当校验未通过时,错误类型具体可以包括R/W域错误和CS域错误;当主处理模块207确定响应数据帧存在以上错误时,置访问命令寄存器304中的indicator设置为1,并且根据错误原因,置错误类型指示标志位。
其中,R/W域错误和CS域错误是指主处理模块207将解析后的响应数据帧和期望收到的响应数据帧的特定域的值进行对比,若解析后的响应数据帧和期望收到的响应数据帧的特定域的值不相同,则校验失败,确定接收到的响应数据帧为错误帧,进而根据错误域来确定具体的错误类型。
可以理解的,除存取指示域指示失败以外,其他四种错误原因均是由目标第二板卡向第一板卡201传输数据的过程中出现故障导致的。因此,在实际应用中,将访问命令寄存器304中的indicator设置为失败的场景,不止对应访问操作结果中的状态标志为失败的情况,更多的是在目标第二板卡与第一板卡201之间通过串行总线的数据传输中出现故障的情况。
这样,在后期的维护中,就能够根据错误类型指示标志位,打印出错误日志,以帮助维修工程师排查出错原因。
接下来,主处理模块207在处理完响应数据帧或者第一超时定时器309溢出,并根据错误原因置访问命令寄存器304之后,可以将访问使能寄存器307中的EN置为0;这样,主处理模块207就可以通知CPU202本次针对目标功能器件的访问控制已经完成,当前处于空闲状态,可以接收新的访问操作;或者主处理模块207不通知CPU202,而是由CPU202通过查询访问使能寄存器307中的EN,来判断主处理模块207是否处于空闲状态。
最后,CPU202在确定主处理模块207完成本次针对目标功能器件的访问控制时,从寄存器206中获取访问操作结果。
需要说明的是,CPU202可以根据访问命令寄存器304的indicatorr标志位确定本次针对目标功能器件的访问操作是否成功;若成功,则访问操作为读操作时,从访问读数据寄存器306中获取读出数据;若失败,则根据错误类型指示标志位获取导致访问操作失败的错误原因。
至此,第一板卡完成了针对目标第二板卡中目标功能器件的访问操作。
此外,针对第一板卡中的CPU202需要进一步说明:CPU202可以发起针对目标第二板卡中目标功能器件的访问操作,使主控制器1 203根据访问操作向目标第二板卡下发请求数据帧并获取访问操作结果;其中,CPU202发起的访问操作包括读操作和写操作,对应的,使主控制器1 203根据访问操作生成的、针对目标第二板卡的请求数据帧也包括读请求数据帧和写请求数据帧,最终,CPU202得到的访问操作结果也包括读操作结果和写操作结果。
具体的,可以对访问操作为读操作和写操作这两种情况分别进行说明:
当CPU202发起的访问操作为读操作时,主控制器1 203根据读操作向目标第二板卡下发读请求数据帧并获取读操作结果的过程如图4所示;图4为本发明实施例中第一板卡中CPU发起读操作的流程图:
步骤401,CPU发起针对目标功能器件的读操作,根据所述读操作,设置地址位宽设置寄存器;
步骤402,CPU判断访问使能寄存器中的EN是否为0;若为是,则执行步骤403,若为否,则重复执行步骤402;
需要说明的是,当访问使能寄存器307中的EN为1时,说明此时主控制器1 203有待执行的访问操作,不处于空闲状态;当访问使能寄存器307中的EN为0时,说明此时主控制器1 203没有待执行的访问操作,处于空闲状态。
步骤403,CPU根据读操作,设置访问命令寄存器和访问地址寄存器;
本步骤中,主控制器可以在已设置地址位宽设置寄存器302的基础上,完成对访问命令寄存器304和访问地址寄存器305的设置,具体地,访问地址寄存器305包括访问地址寄存器0和访问地址寄存器1,其中,只有当目标功能器件的地址存在高八位时,才需要将目标功能器件的地址的高八位写入访问地址寄存器1。
步骤404,CPU将所述访问使能寄存器中的EN设置为1;
在本步骤中,CPU202可以通过将访问使能寄存器307中的EN设置为1,来触发主控制器1 203对目标功能器件执行读操作。
步骤405,CPU判断访问使能寄存器中的EN是否为0;若为是,则执行步骤406,若为否,则重复执行步骤405;
在本步骤中,当CPU202确定访问使能寄存器307中的EN为0时,可以确定主控制器1203已经完成对目标功能器件的读操作。
步骤406,CPU判断访问命令寄存器中的Indicator是否为0;若为是,则执行步骤407,若为否,则执行步骤408;
在本步骤中,CPU202通过确定访问命令寄存器304中Indicator的取值,来确定本次针对目标功能器件的读操作是否成功;当CPU202确定访问命令寄存器304中的Indicator为0时,说明本次针对目标功能器件的读操作成功;当CPU202确定访问命令寄存器304中的Indicator为1时,说明本次针对目标功能器件的读操作失败。
步骤407,CPU从访问读数据寄存器中获取读出数据;
在本步骤中,当本次针对目标功能器件的读操作成功时,CPU202可以从访问读数据寄存器306中获取读出数据。
步骤408,CPU从访问命令寄存器中获取错误原因。
在本步骤中,当本次针对目标功能器件的读操作失败时,CPU202可以从访问命令寄存器304中获取错误原因。
这样,CPU202就能够发起的读操作,并触发主控制器1 203生成读请求数据帧,对目标功能器件执行读操作,获取读操作结果。
当CPU202发起的访问操作为写操作时,主控制器1 203根据写操作向目标第二板卡下发写请求数据帧并获取写操作结果的过程如图5所示;图5为本发明实施例中第一板卡中CPU发起写操作的流程图:
步骤501,CPU发起针对目标功能器件的写操作,根据所述写操作,设置地址位宽设置寄存器和数据位宽设置寄存器;
步骤502,CPU判断访问使能寄存器中的EN是否为0;若为是,则执行步骤503,若为否,则重复执行步骤502;
步骤503,CPU根据读操作,设置访问命令寄存器、访问地址寄存器和访问写数据寄存器;
本步骤中,主控制器1 203可以在已设置地址位宽设置寄存器302和数据位宽设置寄存器303的基础上,完成对访问命令寄存器304、访问地址寄存器305和访问写数据寄存器308的设置,具体地,访问地址寄存器305包括访问地址寄存器0和访问地址寄存器1,访问写数据寄存器308包括访问写数据寄存器0和访问写数据寄存器1;其中,只有当目标功能器件的地址存在高八位时,才需要将目标功能器件的地址的高八位写入访问地址寄存器1,以及只有当待写入数据存在高八位时,才需要将待写入数据的高八位写入访问写数据寄存器1。
步骤504,CPU将所述访问使能寄存器中的EN设置为1;
在本步骤中,CPU202可以通过将访问使能寄存器307中的EN设置为1,来触发主控制器1 203对目标功能器件执行读操作。
步骤505,CPU判断访问使能寄存器中的EN是否为0;若为是,则执行步骤506,若为否,则重复执行步骤505;
在本步骤中,当CPU202确定访问使能寄存器307中的EN为0时,可以确定主控制器1203已经完成对目标功能器件的写操作。
步骤506,CPU判断访问命令寄存器中的Indicator是否为0;若为是,则执行写操作的流程结束,若为否,则执行步骤507;
在本步骤中,CPU202通过确定访问命令寄存器304中Indicator的取值,来确定本次针对目标功能器件的写操作是否成功;当CPU确定访问命令寄存器304中的Indicator为0时,说明本次针对目标功能器件的写操作成功;当CPU确定访问命令寄存器304中的Indicator为1时,说明本次针对目标功能器件的写操作失败。
步骤507,CPU从访问命令寄存器中获取错误原因。
在本步骤中,当本次针对目标功能器件的写操作失败时,CPU202可以从访问命令寄存器304中获取错误原因。
这样,CPU202就能够发起的写操作,并触发主控制器1 203生成写请求数据帧,对目标功能器件执行写操作,获取写操作结果。
接下来,针对第一板卡201中的主控制器1 203,也需要进行进一步的说明:主控制器1 203可以根据CPU202发起的访问操作,对目标第二板卡下发请求数据帧,并向CPU202反馈访问操作结果;主控制器1 203包括主处理模块207、主发送模块208和主接收模块209。
如图6所示,图6为本发明实施例中主控制器执行访问操作的流程图。下面结合图3所示的第一板卡的结构说明该流程,包括:
步骤601,主处理模块判断访问使能寄存器的EN是否为1;若为是,则执行步骤602;若为否,则重复执行步骤601;
需要说明的是,CPU202发起访问操作时,需要将相应的命令数据写入到一个或多个寄存器206中。访问操作类型包括读操作和写操作,针对这两种访问操作,CPU202需要配置的寄存器不完全相同,为了描述方便,这里可以将CPU202针对任意一种访问操作配置的寄存器称为目标寄存器206。
具体的,针对读操作,CPU202配置的目标寄存器206可以包括:地址位宽设置寄存器302、访问命令寄存器304和访问地址寄存器305;
针对写操作,CPU配置的目标寄存器可以包括:地址位宽设置寄存器302、数据位宽设置寄存器303、访问命令寄存器304、访问地址寄存器305和访问写数据寄存器308。
CPU202在完成目标寄存器206的设置之后,将访问使能寄存器307的EN更新为1,以触发主控制器1 203执行针对目标功能器件的访问操作。
在本步骤中,主处理模块207根据访问使能寄存器307中的EN,判断是否需要执行访问操作;当访问使能寄存器307的EN为0时,说明当前没有待执行的访问操作,主处理模块207处于空闲状态并继续等待;当访问使能寄存器307中的EN为1时,说明有待执行的访问操作。
步骤602,主处理模块将目标寄存器中的命令数据发送至主发送模块;
具体的,当访问操作为读操作时,目标寄存器中的命令数据包括:地址位宽设置寄存器302中的地址位宽信息、访问命令寄存器304中的读标识和访问地址寄存器305中的目标功能器件的地址;
当访问操作为写操作时,目标寄存器中的命令数据包括:地址位宽设置寄存器302中的地址位宽信息、数据位宽设置寄存器303中的数据位宽信息、访问命令寄存器304中的写标识、访问地址寄存器305中的目标功能器件的地址和访问写数据寄存器308中待写入数据。
步骤603,主发送模块将命令数据按照预定的帧格式封装成请求数据帧发送至目标第二板卡;
步骤604,主处理模块使能主接收模块,并启动第一超时定时器,主接收模块等待接收目标第二板卡反馈的响应数据帧;
步骤605,主接收模块判断是否接收到响应数据帧;若为是,则执行步骤606,若为否,则执行步骤610;
步骤606,主接收模块判断接收到的响应数据帧是否有效;若为是,则执行步骤607,若为否,则执行步骤611;
具体的,当主接收模块209对响应数据帧进行帧间隔域(010)错误校验,若校验失败,则响应数据帧为无效,错误原因为帧间隔域(010)错误,主接收模块209将错误原因发送至主处理模块207,由主处理模块207根据错误原因置访问命令寄存器304中的相应值。
步骤607,主接收模块解析响应数据帧得到响应数据,并将响应数据发送至主处理模块,由主处理模块对响应数据进行校验;若校验通过,则执行步骤608,若校验未通过,则执行步骤611;
在本步骤中,主处理模块207可以对响应数据进行R/W域错误以及CS域错误校验;
具体的,主处理模块207还可以判断响应数据中的读/写标识和片选是否与步骤602中发送的请求数据帧中的读/写标识和片选相匹配;若为是,则校验通过,若为否,则校验未通过。
步骤608,主处理模块根据响应数据获取访问操作结果,当响应数据中的Indicator0状态标志为1时,指示访问操作结果为成功,执行步骤609;当响应数据中的Indicator0状态标志为0时,指示访问操作结果指示为失败,执行步骤611;
步骤609,主处理模块配置对应的寄存器,执行步骤612;
具体的,当访问操作成功时,主处理模块207将访问命令寄存器304中的indicator置为0;当访问操作为读操作时,主处理模块207还可以将访问操作结果中的读出数据写入访问读数据寄存器306。
步骤610,当步骤605中主接收模块确定没有接收到响应数据帧时,通知主处理模块,由主处理模块判断第一超时定时器309是否溢出;若为是,则执行步骤611;若为否,则返回执行步骤605,继续等待接收响应数据帧;
步骤611,主处理模块根据错误原因,配置访问命令寄存器,执行步骤612;
由上述步骤可知,这里的错误原因有以下几种:
一是步骤606中主接收模块209判断响应数据帧无效;一是步骤607中主处理模块207对响应数据的校验未通过;一是步骤608中主处理模块207从解析得到的访问操作结果指示为失败;一是步骤610中主处理模块207判断第一超时定时器309已经溢出时还未接收到第二板卡返回的响应数据帧。
在本步骤中,主处理模块207将访问命令寄存器中304的indicator置为1,说明本次针对目标功能器件的访问操作失败,并根据错误原因,将访问命令寄存器304中的错误类型指示标志位配置为对应的值。
步骤612,主处理模块将访问使能寄存器中的EN设置为0。
承接步骤609或步骤611,由于访问操作已完成,所以主处理模块207将访问使能寄存器307中的EN置为0,指示访问操作结束,并通知CPU202。后续,CPU202再次发起访问操作时,可将所述EN置为1。主处理模块207可以实时查询访问使能寄存器307中的EN,当所述EN被重新置为1时,说明有待执行的访问操作。
可见,在本发明实施例中,第一板卡中的CPU202只需要通过主控制器1203即可实现对目标第二板卡的访问操作,无需关注访问操作过程中硬件协议转换等复杂的处理过程,减轻了CPU202的负担,使得第一板卡201对第二板卡的访问操作过程简单高效;并且,可以根据实际情况,灵活配置访问操作所需的信息,比如可以修改请求数据帧对应的格式,可以根据目标功能器件的类型配置位宽信息;以及,由于第一板卡201中的各主控制器相互独立,使得各主控制器对第二板卡的访问操作互不影响,提高了设备的可靠性;此外,在维护过程中,可以通过错误日志获取到导致访问操作失败的错误类型信息,便于维修工程师定位出错点。
本发明又公开了一种第二板卡,参见图7,图7为本发明实施例中第一板卡和第二板卡的一种结构图;
在图7中,第一板卡201连接第二板卡1 701、第二板卡2 702和第二板卡3 703;第一板卡201中的主控制器1 203对应第二板卡1 701,主控制器2 204的对应第二板卡2 702,主控制器3 205的对应第二板卡3 703;为了方便理解,以第二板卡1 701作为目标第二板卡为例进行详细说明;
目标第二板卡701包括从控制器704、至少一个功能器件705,以及与所述功能器件705对应的接口控制器706,从控制器704包括:从处理模块707、从接收模块708、从发送模块709和第二时钟源模块717;所述从处理模块707包括从处理子模块710、以及与所述接口控制器706数量相同的接口适配子模块711,且每个接口适配子模块711与各接口控制器706分别连接;每个接口控制器706与功能器件705分别连接;所述从控制器704还包括:第二超时定时器718;其中,第二时钟源717用于产生的随路时钟信号。
在具体实施时,所述从控制器704可以由第二可编程逻辑器件712实现;第一板卡201与目标第二板卡701之间的四根物理连线分别是串行接口数据线A713和串行接口数据线B714,以及时钟线C715和时钟线D716。
基于图7,下面对第二板卡1 701中各模块间的交互过程进行说明:
所述从接收模块708,用于接收第一板卡201发送的访问操作的请求数据帧;解析所述请求数据帧,获取命令数据;发送所述命令数据给所述从处理模块707;
所述从处理模块707,用于根据所述命令数据,生成操作指令,并确定作为所述访问操作对象的目标功能器件705;将所述操作指令发送给所述接口控制器706;
所述接口控制器706,用于根据所述操作指令,对目标功能器件705进行访问操作;将所述访问操作的访问结果发送至所述从处理模块707;
所述从处理模块707,还用于根据所述访问结果确定响应数据;将所述响应数据发送给所述从发送模块709;
所述从发送模块709,用于根据所述响应数据构造响应数据帧;发送所述响应数据帧给所述第一板卡201。
需要说明的是,接口控制器706具体可以是多个不同类型的接口控制器,比如两线式串行(Inter-Integrated Circuit,I2C)接口控制器、数据控制器/管理数据输入输出(Management Data Clock,MDC)/(Management Data Input/Output,MDIO)接口控制器、串行外设接口(Serial Peripheral Interface,SPI)控制器和局部总线(Local Bus)接口控制器。
还需要说明的是,接口适配子模块711具体可以是多个不同类型的接口适配子模块,比如I2C接口适配子模块、MDC/MDIO接口适配子模块、SPI接口适配子模块和Local Bus接口适配子模块,接口适配子模块711的类型与接口控制器706的类型相对应;
还需要说明的是,功能器件705具体可以是多个不同类型的功能器件,比如光模块器件、PHY器件、传感器件等其他器件,其中,光模块器件对应I2C接口类型、PHY器件对应MDC/MDIO接口类型、传感器件对应SPI接口类型、其他器件可能对应Local Bus接口类型。
下面基于图7,针对目标第二板卡701根据来自第一板卡201的请求数据帧,对目标功能器件705执行访问操作,并向第一板卡201反馈操作结果的具体过程进行详细说明:
第一步:从控制器704中的从接收模块708接收第一板卡201发送的访问操作的请求数据帧;解析所述请求数据帧,获取命令数据;发送所述命令数据给所述从处理模块707;
优选的,所述从接收模块708,还用于在接收到所述请求数据帧、且确定所述请求数据帧有效时,解析所述有效的请求数据帧,获取有效的命令数据。
需要说明的是,目标第二板卡701的从接收模块708在目标第二板卡701复位结束后,就处于等待接收数据的状态。
在本步骤中,首先,从接收模块708判断接收到的请求数据帧是否为干扰信息,如果是,丢弃干扰信息;
接下来,从接收模块708判断请求数据帧是否有效,具体的,从接收模块708根据请求数据帧中的读/写标识,确定请求数据帧的预期长度;根据预期长度,对请求数据帧进行帧间隔校验;当校验成功时,说明请求数据帧有效,解析请求数据帧,得到命令数据,将命令数据发送至从处理模块707;当校验失败时,说明请求数据帧无效,丢弃无效帧。
第二步:从处理模块707根据所述命令数据,生成操作指令,并确定作为所述访问操作对象的目标功能器件705;将所述操作指令发送给所述接口控制器706;
优选的,所述从处理子模块710,用于根据所述命令数据生成操作指令,并确定作为所述访问操作对象的目标功能器件705,并将所述操作指令发送至所述目标功能器件705对应的接口适配子模块711,并启动所述第二超时定时器;
所述接口适配子模块711,用于将所述操作指令发送至与所述目标功能器件705连接的接口控制器706。
本步骤中,首先,从处理模块707中的从处理子模块710从命令数据中获取读/写标识、目标功能器件705的片选和目标功能器件的地址,当读/写标识为写标识时,还可以获取待写入数据;
接下来,从处理子模块710根据目标功能器件705的片选,确定目标功能器件705的类型;根据目标功能器件705的类型,确定访问目标功能器件705对应的接口适配子模块711;进而将读/写标识、目标功能器件705的片选和目标功能器件的地址发送至接口适配子模块711;
需要说明的是,当读/写标识为写标识时,还可以将待写入数据发送至接口适配子模块711,此外,在接口适配子模块711仅对应一个功能器件705的情况下,无需将目标功能器件705的片选发送至接口适配子模块711;
然后,接口适配子模块711根据读/写标识、目标功能器件705的片选和目标功能器件的地址,生成操作指令,并将操作指令发送至接口控制器706,以触发接口控制器706访问目标功能器件705;并且,从处理模块707还需要触发接口控制器706模拟目标总线类型的标准时序,以使接口控制器706执行针对目标功能器件705的控制操作;
最后,接口控制器706根据操作指令对目标功能器件705进行访问操作。
还需要说明的是,由于接口控制器706访问功能器件705存在异常超时的可能,因此,从处理模块707将操作指令发送至接口控制器706的同时,可以启动访问功能器件705的第二超时定时器718,防止出现由于故障导致接口控制器706对功能器件705访问时间过长,从而造成目标第二板卡701的资源挂死。
第三步,所述接口控制器706根据所述操作指令,对目标功能器件705进行访问操作;将所述访问操作的访问结果发送至所述从处理模块707;
优选的,所述接口适配子模块711,还用于接收所述目标功能器件705连接的接口控制器706发送所述访问操作的访问结果,发送所述访问操作的访问结果给所述从处理子模块710。
在本步骤中,接口控制器706根据操作指令,对目标功能器件705进行访问操作并得到访问结果,将访问结果发送给从处理子模块710中的接口适配子模块711,接口适配子模块711再将访问结果发送给从处理模块707中的从处理子模块710;其中,访问结果可以包括访问操作是否成功;当操作指令为读指令时,访问操作还可以包括读出数据。
第四步:所述从处理模块707根据所述访问结果确定响应数据;将所述响应数据发送给所述从发送模块709;
优选的,所述从处理模块707,还用于在所述访问结果指示为成功时,确定所述响应数据中的访问状态为访问操作成功;
所述从处理模块707,还用于在确认所述第二超时定时器718溢出、或者所述访问结果指示为失败时,确定所述响应数据中的访问状态为访问操作失败。
优选的,所述从处理子模块710,还用于根据所述访问结果确定响应数据;将所述响应数据发送给所述从发送模块709。
在本步骤中,首先,从处理模块707中的从处理子模块710从访问结果中确定响应数据,当访问结果指示为成功时,确定响应数据中的访问状态为访问操作成功,当访问结果指示为失败时,确定响应数据中的访问状态为访问操作失败;最后,从处理子模块710将响应数据发送给从发送模块709。
此外,从处理子模块710将响应数据发送至从发送模块709之后,从处理子模块710使能从发送模块709处于等待接收请求数据帧的状态,当然,从处理子模块710也可以在向从发送模块709发送访问结果的同时使能从发送模块709。
需要说明的是,当第二超时定时器718溢出,且从处理模块707还未接收到来自接口控制器706的访问结果时,确定响应数据中的访问状态为访问操作失败。
还需要说明的是,由于目标功能器件的地址为目标功能器件的内部地址,因此,需要先确定目标功能器件705,进而根据已确定的目标功能器件705和目标功能器件的地址,确定控制指令对应的读/写地址;这样,当控制指令为读指令时,接口控制器711就能够对目标功能器件705的读地址执行读操作;当控制指令为写指令时,接口控制器711就能够将待写入数据写入目标功能器件705的写地址。
第五步:所述从发送模块709根据所述响应数据构造响应数据帧;发送所述响应数据帧给所述第一板卡201。
优选的,所述从发送模块709,还用于按照预设帧格式,根据所述响应数据构造响应数据帧;所述预设帧格式为:帧开始的间隔符和帧结束的间隔符为010。
在本步骤中,从发送模块709根据响应数据,按照串行总线所对应格式,生成响应数据帧,并将响应数据帧发送至第一板卡201;同时,告知从处理模块707响应数据帧已发送,使得从处理模块707使能从接收模块708,使从接收模块708处于待接收请求数据帧的状态。
其中,从发送模块709生成的响应数据帧如表3和表4所示;当访问操作为读操作时,生成的读响应数据帧如表3所示:
表3
在表3中,读响应数据帧包括位于首尾的两个帧间隔、目标功能器件的片选、读标识、状态标志Indicator0、读出数据data;其中,帧间隔可以用于校验数据帧。具体地,读响应数据帧中的Command字段可以与读数据请求帧中的Command字段相同;indicator0字段可以根据响应数据中的访问状态来确定,当访问状态为成功时,置indicator0字段为0,说明接口控制器对目标功能器件的读操作成功,当访问状态为失败时,置indicator0字段置为1,说明接口控制器对目标功能器件的读操作失败;data字段也可以从响应数据中读取。
当访问操作为写操作时,生成的写响应数据帧如表4所示:
表4
在表4中,写响应数据帧包括位于首尾的两个帧间隔、目标功能器件的片选、读写标识和状态标志Indicator0;其中,帧间隔可以用于校验数据帧。具体地,写响应数据帧中的Command字段可以与写数据请求帧中的Command字段相同;indicator0字段可以根据响应数据中的访问状态来确定,当访问状态为成功时,置indicator0字段为0,说明接口控制器对目标功能器件的读操作成功,当访问状态为失败时,置indicator0字段置为1,说明接口控制器对目标功能器件的读操作失败。
与表1和表2同理,在表3和表4中,(Most Significant Bit,MSB)是最高有效位,(Least Significant Bit,LSB)是最低有效位;从发送模块709在发送响应数据帧时,可以按照从最高有效位到最低有效位的顺序发送请求数据帧,先发送位于MSB的数据,最后发送位于LSB的数据。
需要说明的是,如果接口控制器706访问目标功能器件705对应的第二超时定时器718已经溢出,而接口控制器706还没有完成对目标功能器件705的访问操作,则从处理模块707可以直接终止接口控制器706对目标功能器件705的访问操作,同时将响应数据帧中的Indicator0状态标志置为1。
这样,目标第二板卡701就能够根据来自第一板卡201的、针对目标功能器件705的控制指令,对目标功能器件705进行访问操作,并得到访问操作结果。
相应地,针对目标第二板卡701中的从控制器704,需要进行进一步的说明:从控制器704可以根据来自第一板卡201的请求数据帧,对目标功能器件705进行访问操作,并向第一板卡201反馈访问操作结果:
如图8所示,图8为本发明实施例中从控制器执行访问操作的流程图:
步骤801,从控制器中的从接收模块判断接收到的请求数据帧是否有效;若为是,则执行步骤802,若为否,则直接丢弃;
步骤802,从接收模块通过解析请求数据帧获取命令数据,并将命令数据帧发送至从处理模块;
步骤803,从处理模块根据命令数据,获取目标功能器件的类型,进而确定目标功能器件对应的接口控制器;
具体的,根据命令数据中的目标功能器件705的片选,确定目标功能器件705的类型,进而根据目标功能器件705的类型确定目标功能器件705对应的接口控制器706。
步骤804,从处理模块通过接口控制器,对目标功能器件执行访问操作,以及启动第二超时定时器;
步骤805,从处理模块判断是否接收到来自接口控制器发送的访问结果;若为否,则执行步骤806,若为是,则执行步骤807;
步骤806,从处理模块判断第二超时定时器是否溢出;若为是,则执行步骤809;若为否,则返回执行步骤805;
步骤807,从处理模块根据访问结果,生成响应数据,将响应数据发送至从发送模块;当响应数据中的访问状态为成功时,执行步骤808,当响应数据中的访问状态为失败时,执行步骤809;
步骤808,从发送模块根据响应数据生成响应数据帧,响应数据帧中的状态标志指示为成功;执行步骤810;
其中,响应数据帧信息中的Indicator0状态标志指示了接口控制器706针对目标功能器件705的访问操作是否成功;当Indicator0状态标志为0时,接口控制器706针对目标功能器件705的访问成功。
步骤809,从发送模块根据响应数据生成响应数据帧,响应数据帧中的状态标志指示为失败;执行步骤810;
由上述步骤可知,这里的错误原因有以下几种:
一是步骤806中从处理模块707判断第二超时定时器718已经溢出;一是步骤807中从处理模块707判断接口控制器706对目标功能器件705的访问结果为失败。
步骤810,从发送模块将响应数据帧发送至第一板卡。
其中,响应数据帧中包括读/写标识、状态标志,其中,状态标志能够指示接口控制器706对目标功能器件705的访问结果是否成功;当读/写标识为读标识时,响应数据帧中还包括读出数据。
在本步骤中,从控制器704完成了对目标功能器件705的访问操作,并向第一板卡201反馈了响应数据帧;接下来,从控制器704处于空闲状态,等待接收来自第一板卡201的新的访问操作。
可见,在本发明实施例中,第二板卡中不需要配置桥片,就能够根据来自第一板卡的控制指令,对目标功能器件执行访问操作,并将访问操作结果返回给第一板卡,配合第一板卡实现对目标功能器件进行控制;这样,简化了第二板卡的硬件配置,降低了设备成本和故障风险。
本发明实施方式实施例另公开了一种设备,所述设备包括第一板卡和第二板卡,一个第一板卡对应至少一个第二板卡,所述第一板卡和所述第二板卡通过串行总线进行数据传输,参见图7。
需要说明的是,本发明对设备中第一板卡和第二板卡的数量不加以限制。
所述第一板卡201中的所述CPU202,用于发起访问操作,将所述访问操作对应的命令数据写入目标寄存器206;所述访问操作的对象为选定的位于第二板卡上的功能器件;
所述第一板卡201中的所述主处理模块207,用于将所述目标寄存器206中的命令数据发送至所述主发送模块208;
所述第一板卡201中的所述主发送模块208,用于根据所述命令数据,构造请求数据帧,以及发送所述请求数据帧给所述第二板卡701;
所述第二板卡701中的所述从接收模块708,用于接收第一板卡201发送的访问操作的请求数据帧;解析所述请求数据帧,获取命令数据;发送所述命令数据给所述从处理模块707;
所述第二板卡701中的所述接口控制器706,用于根据所述操作指令,对目标功能器件705进行访问操作;将所述访问操作的访问结果发送至所述从处理模块707;
所述第二板卡701中的所述从处理模块707,还用于根据所述访问结果确定响应数据;将所述响应数据发送给所述从发送模块709;
所述第二板卡701中的所述从处理模块707,所述从发送模块709,用于根据所述响应数据构造响应数据帧;发送所述响应数据帧给所述第一板卡201;
所述第二板卡701中的所述从发送模块709,用于根据所述访问结果构造响应数据帧,并将所述响应数据帧发送给所述第一板卡201;
所述第一板卡201中的所述主接收模块209,用于接收并解析所述第二板卡发送的响应数据帧;解析所述第二板卡发送的响应数据帧,获得响应数据;发送所述响应数据给所述主处理模块207;
所述第一板卡201中的所述主处理模块207,还用于根据所述响应数据确定访问操作结果;以及通知所述CPU202所述访问操作结束。
其中,第一板卡201中的主控制器1 203通过串行总线与第二板卡1 701进行数据交互。
在实际应用中,第一板卡201和第二板卡1 701之间的物理连线可以包括串行接口数据线。在对传输带宽要求较低的场景下,串行接口数据线可以为一根;在对传输带宽要求较高的场景下,串行接口数据线可以为至少两根,当然也可以通过设置更多的串行接口数据线来提高传输带宽。
在对第一板卡201和第二板卡1 701之间传输带宽要求较高的场景下,第一板卡201和第二板卡1 701之间可以使用同步数据传输,这样,第一板卡201和第二板卡1 701之间的物理连线还可以包括时钟线。具体可以通过在第一板卡201和第二板卡中1 701分别增加时钟源模块、以及在物理连线中增加时钟线,来实现第一板卡201与第二板卡1 701之间的同步传输。
在图7中,第一板卡201与第二板卡1 701之间的四根物理连线分别可以是串行接口数据线A713和串行接口数据线B714,串行接口数据线A713承载第一板卡向第二板卡发送的数据信号TX_data,串行接口数据线B714承载第一板卡接收来自第二板卡的数据信号RX_data;以及时钟线C715和时钟线D716,时钟线C715承载第一板卡向第二板卡发送的时钟源信号TX_clk,时钟线D716承载第一板卡接收来自第二板卡的时钟源信号RX_clk。
具体地,第一板卡201与第二板卡1 701之间的同步串口信息表可以如表6所示。
串行接口信号 | 类型 | 功能描述 |
TX_clk | Out | 串行接口时钟发送 |
TX_data | Out | 串行接口数据发送 |
RX_clk | IN | 串行接口时钟接收 |
RX_data | IN | 串行接口数据接收 |
表6
在表6中,类型一列为相对于第一板卡201的信号传输方向,类型为OUT的信号方向为从第一板卡201到第二板卡1 701,类型为In的信号方向为从第二板卡1 701到第一板卡201。其中,串行接口信号TX_clk的类型为OUT,是从第一板卡201的串行接口发送的时钟源信号;串行接口信号TX_data的类型为OUT,是从第一板卡201的串行接口发送的数据信号;串行接口信号RX_clk的类型为IN,是从第一板卡201的串行接口接收到的时钟源信号;串行接口信号RX_data的类型为IN,是从第一板卡201的串行接口接收到的数据信号。
具体地,第一板卡201上的第一时钟源模块301和第二板卡1 701上的第二时钟源717均可以产生的随路时钟信号;当第一板卡201和第二板卡1 701之间可以使用同步传输的方式进行通信时,第一板卡201上的主发送模块208可以根据由第一时钟源模块301产生的第一随路时钟信号TX_clk的下降沿向目标第二板卡701发送信息TX_data,第一板卡201上的主接收模块209也可以根据由第二时钟源模块717产生的第二随路时钟信号RX_clk的上升沿接收来自目标第二板卡701发送信息RX_data;目标第二板卡701上的从发送模块709可以根据由第二时钟源模块717产生的第二随路时钟信号RX_clk的下降沿向第一板卡201发送信息RX_data,目标第二板卡701上的从接收模块708也可以根据由第一时钟源模块301产生的第一随路时钟信号TX_clk的上升沿接收来自第一板卡201的信息TX_data。
需要说明的是,第一时钟源模块301产生的第一随路时钟信号TX_clk和第二时钟源模块717产生的第二随路时钟信号RX_clk是不同步的。
如图9和图10所示:图9为本发明实施例中同步串行总线的第一随路时钟信号的时序示意图,在图9中,TX_clk标识的折线为第一时钟源模块301产生的第一随路时钟信号,TX_data标识的折线为第一板卡201的串行接口发送的数据信号;
图10为本发明实施例中同步串行总线的第二随路时钟信号的时序示意图,在图10中,RX_clk标识的折线为第二时钟源模块717产生的第二随路时钟信号,RX_data标识的折线为第二板卡701的串行接口发送的数据信号。
另外,在对第一板卡201和第二板卡701之间传输带宽要求较低,或者设备空间较为紧张的场景下,第一板卡201和第二板卡701之间可以使用异步数据传输,以省略第一板卡201和第二板卡701之间的时钟线。如果对传输带宽要求高,除了增加数据线的个数,还可以通过提高串行总线频率或者采用差分信号的方式,以满足较高的带宽需求。
可见,本发明实施例可以根据实际应用场景对传输带宽要求的不同需要,配置第一板卡201和第二板卡701之间的物理连线,在满足应用场景需求的前提下,可以节约资源和节省设备空间,降低设备成本,有利于设备集成化。
下面列举出第一板卡201中寄存器206的具体形式,如表5所示:
表5
从表5可知,寄存器206可以包括访问使能寄存器307;访问命令寄存器304;访问地址寄存器305,访问地址寄存器305包括访问地址寄存器0和访问地址寄存器1;访问写数据寄存器308,访问写数据寄存器308包括访问写数据寄存器0和访问写数据寄存器1;访问读数据寄存器306,访问读数据寄存器306包括访问读数据寄存器0和访问读数据寄存器1;地址位宽设置寄存器302;数据位宽设置寄存器303。
其中,访问使能寄存器307的偏移地址为00H;可读可写;缺省值为0;长度为8bit,包括位于Bit[0]的EN以及位于Bit[7:1]的保留字段;当向Bit[0]写1时,主控制器1 203会发起读/写操作,当操作完成后自动将该Bit[0]清除;
访问命令寄存器304的偏移地址为01H;可读可写;缺省值为0;长度为8bit,包括位于Bit[0]的R/W标志位、位于Bit[3:1]的片选、位于Bit[4]的indicator和位于Bit[7:5]的错误类型指示;R/W标志位用于标识控制指令为读指令还是写指令,片选用于确定唯一的目标功能器件705,indicator用于标识前一次操作结果是成功还是失败,错误类型指示用于在操作结果为失败时标识错误类型;
访问地址寄存器0的偏移地址为02H;可读可写;缺省值为0;长度为8bit,包括位于Bit[7:0]的目标功能器件的地址,用于保存控制指令对应的、目标功能器件内寄存器的目标功能器件的地址;
访问写数据寄存器0的偏移地址为03H;可读可写;缺省值为0;长度为8bit,包括位于Bit[7:0]的待写入数据,用于保存当控制指令为写指令时,待写入目标功能器件的地址的数据;
访问读数据寄存器0的偏移地址为04H;可读;缺省值为0;长度为8bit,包括位于Bit[7:0]的读出数据,用于保存当控制指令为读指令时,从目标功能器件的地址读出的数据;
地址位宽设置寄存器302的偏移地址为05H;可读可写;缺省值为0;长度为8bit,包括位于Bit[0]的第二板卡逻辑地址位宽、位于Bit[1]的功能器件1的地址位宽、…、位于Bit[7]的功能器件7的地址位宽;当地址位宽的bit为0时,对应的功能器件的地址位宽为8bit,当地址位宽的bit为1时,对应的功能器件的地址位宽为16bit;
数据位宽设置寄存器303的偏移地址为06H;可读可写;缺省值为0;长度为8bit,包括位于Bit[0]的第二板卡的逻辑数据位宽、位于Bit[1]的功能器件1的数据位宽、…、位于Bit[7]的功能器件7的数据位宽;当数据位宽的bit为0时,对应的功能器件的数据位宽为8bit,当地址位宽的bit为1时,对应的功能器件的数据位宽为16bit;
访问地址寄存器1的偏移地址为07H;可读可写;缺省值为0;长度为8bit,包括位于Bit[7:0]的目标功能器件的地址的高8bit,用于保存当目标功能器件705的地址位宽为16bit时,目标功能器件的地址的高八位;
访问写数据寄存器1的偏移地址为08H;可读可写;缺省值为0;长度为8bit,包括位于Bit[7:0]的待写入数据的高8bit,用于保存当目标功能器件705的数据位宽为16bit时,待写入数据的高八位;
访问读数据寄存器1的偏移地址为09H;可读可写;缺省值为0;长度为8bit,包括位于Bit[7:0]的读出数据的高8bit,用于保存当目标功能器件705的数据位宽为16bit时,读出数据的高八位。
此外,还可以根据实际应用场景,修改第一板卡201中主控制器1 203和第二板卡701中从控制器704的设计;比如,在从控制器704中配置SPI、I2C、MDIO、Local Bus等器件接口的控制寄存器706;具体地,可以由第一板卡207上的CPU202通过串行总线控制目标第二板卡701中的接口控制寄存器706,对目标功能器件705进行控制,这样,第一板卡201可以通过两步走的方式控制第二板卡701中的功能器件705,虽然增加了CPU202控制的复杂度,降低了控制效率,但也能实现第一板卡201控制功能器件705的效果。
下面通过由第一板卡控制目标第二板卡中的小型可插拔(SMALL FORMPLUGGABLE,SFP)光模块的实例说明本发明实施例中设备的工作流程:
1、第一板卡中的CPU读取访问使能寄存器中的EN,当EN为0时,表示主控制器处于空闲状态,CPU发起针对SFP光模块的读操作;
2、CPU设置访问命令寄存器中的R/W位为1,表示读操作;配置BIT[3:1]片选为001,表示目标功能器件为SFP光模块;配置访问地址寄存器为02H,表示要访问SFP光模块的地址为02H;由于SFP光模块对应的地址和数据均为8bit宽,设置地址位宽设置寄存器和数据位宽设置寄存器中BIT[1]均为0;
3、CPU置访问使能寄存器中的EN为1,触发第一板卡中的主控制器启动针对SFP光模块的读操作;接下来,CPU可以等待中断或查询EN是否为0,当EN为0时,表示主控制器针对SFP光模块的读操作结束;
4、第一板卡中的主控制器发现使能寄存器中的EN为1,从访问命令寄存器、访问地址寄存器、地址位宽设置寄存器和数据位宽设置寄存器中获取命令数据,将命令数据发送至主发送模块,此外,主处理模块使能主发送模块,将生成的读请求数据帧发给第二板卡,并通知主接收模块等待接收的响应数据帧的类型,以便接收响应请求帧后进行校验;
5、主发送模块根据命令数据,按照表6的格式,构造读请求数据帧,并将读请求数据帧发送至目标第二板卡;
表6
6、从接收模块接收到读请求数据帧,确定为有效之后,从解析后的读请求数据帧中获取命令数据,将命令数据发送至从处理模块;需要说明的是,目标第二板卡启动后,从接收模块处于等待接收读请求数据帧的状态;
7、从处理模块根据命令数据,确定目标功能器件为SFP光模块,而SFP光模块需要使用I2C控制器访问;
8、从处理模块将命令数据中SFP光模块的地址、片选提供给I2C的控制器,并触发I2C控制器产生I2C的读操作时序,同时,启动第二超时定时器,避免对I2C异常访问超时导致资源挂死;
9、I2C控制器针对SFP光模块的读操作结束后,告知从处理模块读操作结束,并将访问结果发送至从处理模块;同时,如果第一超时定时器溢出,则从处理模块直接终止对SFP光模块的读操作;
10、从处理模块接收到I2C控制器反馈的访问结果,当读操作成功时,设置访问状态为成功,获取读出数据01H;当第二超时定时器溢出或读操作失败时,设置访问状态为失败;
11、从处理模块将访问结果发给从发送模块,并使能从发送模块将生成的读响应数据帧发送至第一板卡;
12、从处理模块根据访问结果,构造读响应数据帧,如表7所示,并将所述读响应数据帧发送至第一板卡;
表7
13、第一板卡的主接收模块接收到来自目标第二板卡的读响应数据帧,主接收模块确定读响应数据帧有效,并解析读响应数据帧,获取响应数据,将响应数据发送至主处理模块;
14、主处理模块校验响应数据,确定响应数据否是为期望的响应数据;若校验失败,则置访问命令寄存器中的indicator位为失败,若校验成功,则将读出数据保存到访问读数据寄存器;
15、主处理模块将访问使能寄存器中的EN清0,产生中断,通知CPU针对SFP光模块的读操作已经完成,也可由CPU查询EN是否为0来判断针对SFP光模块的读操作是否完成;当针对SFP光模块的读操作完成时,CPU可以发起新的访问操作。
应用上述实施例实现了第一板卡对第二板卡中目标功能器件的访问操作,且第一板卡的硬件配置非常简单,需配置有CPU和主控制器,不仅可以减少设备成本和降低故障风险,还能够节约空间,有利于设备的集成化。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (13)
1.一种第一板卡,其特征在于,包括CPU和与所述CPU连接的至少一个主控制器,所述主控制器包括一组寄存器、主处理模块、主发送模块和主接收模块;其中:
所述CPU,用于发起访问操作,将所述访问操作对应的命令数据写入目标寄存器;所述访问操作的对象为选定的位于第二板卡上的目标功能器件;
所述主处理模块,用于将所述目标寄存器中的命令数据发送至所述主发送模块;
所述主发送模块,用于根据所述命令数据,构造请求数据帧;发送所述请求数据帧给所述第二板卡;
所述主接收模块,用于接收所述第二板卡发送的响应数据帧;解析所述第二板卡发送的响应数据帧,获得响应数据;发送所述响应数据给所述主处理模块;
所述主处理模块,还用于根据所述响应数据确定访问操作结果;通知所述CPU所述访问操作结束。
2.根据权利要求1所述的第一板卡,其特征在于,所述一组寄存器包括:地址位宽设置寄存器、数据位宽设置寄存器、访问命令寄存器、访问地址寄存器和访问写数据寄存器;
若所述访问操作为读操作,所述目标寄存器包括:地址位宽设置寄存器、访问命令寄存器、访问地址寄存器;
若所述访问操作为写操作,所述目标寄存器包括:地址位宽设置寄存器、数据位宽设置寄存器、访问命令寄存器、访问地址寄存器和访问写数据寄存器;
所述CPU,还用于若所述访问操作为读操作,则将所述目标功能器件的地址位宽信息写入所述地址位宽设置寄存器,将读操作的读标识写入所述访问命令寄存器,将所述目标功能器件的地址写入所述访问地址寄存器;
所述CPU,还用于若所述访问操作为写操作,将所述目标功能器件的地址位宽信息写入所述地址位宽设置寄存器,将所述目标功能器件的数据位宽信息写入所述数据位宽设置寄存器,将写操作的写标识写入所述访问命令寄存器,将所述目标功能器件的地址写入所述访问地址寄存器,将待写入数据写入所述访问写数据寄存器。
3.根据权利要求1或2所述的第一板卡,其特征在于,所述一组寄存器包括访问使能寄存器;
所述CPU,还用于在查询到所述访问使能寄存器的启动位EN指示为空闲时,发起所述访问操作;还用于将所述访问操作对应的命令数据写入目标寄存器后,将所述访问使能寄存器的EN置为启动访问操作;
所述主处理模块,还用于在查询到所述访问使能寄存器的EN指示为启动访问操作时,将所述目标寄存器中存储的所述命令数据发送给所述主发送模块;
所述主处理模块,还用于在根据所述响应数据确定访问操作结果后,将所述访问使能寄存器的EN置为空闲,并通知所述CPU所述访问操作结束。
4.根据权利要求1或2所述的第一板卡,其特征在于,所述主控制器还包括:第一超时定时器;
所述主处理模块,还用于在确定所述主发送模块发送所述请求数据帧完毕后,使能所述主接收模块,并启动所述第一超时定时器;当所述第一超时定时器超时溢出时,去使能所述主接收模块;
所述主接收模块,还用于在接收到所述响应数据帧、且确定所述响应数据帧有效时,解析所述有效的响应数据帧,获得有效的响应数据;
所述主处理模块,还用于对所述有效的响应数据进行校验。
5.根据权利要求4所述的第一板卡,其特征在于,所述一组寄存器包括:访问命令寄存器;
所述主处理模块,还用于在所述访问操作结果指示为成功时,将所述访问命令寄存器的indicator置为访问操作成功;
所述主处理模块,还用于在确认所述第一超时定时器溢出、或确定所述主接收模块接收到无效的响应数据帧、或对所述有效的响应数据校验未通过、或所述访问操作结果指示为失败时,将所述访问命令寄存器的indicator置为访问操作失败,以及将所述访问命令寄存器的错误类型置为相应的值。
6.根据权利要求5所述的第一板卡,其特征在于,所述一组寄存器包括:访问读数据寄存器;
所述主处理模块,还用于在所述访问操作结果指示为成功、且所述访问操作为读操作时,将所述有效的响应数据中的读出数据写入所述访问读数据寄存器。
7.根据权利要求1所述的第一板卡,其特征在于,
所述主发送模块,还用于按照预设帧格式,根据所述命令数据构造请求数据帧;所述预设帧格式为:帧开始的间隔符和帧结束的间隔符为010。
8.一种第二板卡,其特征在于,包括从控制器和与所述从控制器连接的至少一个功能器件,以及与所述功能器件连接的接口控制器,所述从控制器包括:从处理模块、从接收模块和从发送模块;其中:
所述从接收模块,用于接收第一板卡发送的访问操作的请求数据帧;解析所述请求数据帧,获取命令数据;发送所述命令数据给所述从处理模块;
所述从处理模块,用于根据所述命令数据,生成操作指令,并确定作为所述访问操作对象的目标功能器件;将所述操作指令发送给所述接口控制器;
所述接口控制器,用于根据所述操作指令,对目标功能器件进行访问操作;将所述访问操作的访问结果发送至所述从处理模块;
所述从处理模块,还用于根据所述访问结果确定响应数据;将所述响应数据发送给所述从发送模块;
所述从发送模块,用于根据所述响应数据构造响应数据帧;发送所述响应数据帧给所述第一板卡。
9.根据权利要求8所述的第二板卡,其特征在于,
所述从接收模块,还用于在接收到所述请求数据帧、且确定所述请求数据帧有效时,解析所述有效的请求数据帧,获取有效的命令数据。
10.根据权利要求9所述的第二板卡,其特征在于,所述从处理模块包括从处理子模块、以及与所述接口控制器数量相同的接口适配子模块,且每个接口适配子模块连接一个接口控制器;每个接口控制器连接一个功能器件;所述从控制器还包括:第二超时定时器;
所述从处理子模块,用于根据所述命令数据生成操作指令,并确定作为所述访问操作对象的目标功能器件,并将所述操作指令发送至所述目标功能器件对应的接口适配子模块,并启动所述第二超时定时器;
所述接口适配子模块,用于将所述操作指令发送至与所述目标功能器件连接的接口控制器;还用于接收所述目标功能器件连接的接口控制器发送所述访问操作的访问结果,发送所述访问操作的访问结果给所述从处理子模块;
所述从处理子模块,还用于根据所述访问结果确定响应数据;将所述响应数据发送给所述从发送模块。
11.根据权利要求10所述的第二板卡,其特征在于:
所述从处理模块,还用于在所述访问结果指示为成功时,确定所述响应数据中的访问状态为访问操作成功;
所述从处理模块,还用于在确认所述第二超时定时器溢出、或者所述访问结果指示为失败时,确定所述响应数据中的访问状态为访问操作失败。
12.根据权利要求8所述的第二板卡,其特征在于,
所述从发送模块,还用于按照预设帧格式,根据所述响应数据构造响应数据帧;所述预设帧格式为:帧开始的间隔符和帧结束的间隔符为010。
13.一种通信设备,其特征在于,包括权利要求1-7任一项所述的第一板卡,以及至少一个权利要求8-12任一项所述的第二板卡;所述第一板卡和所述第二板卡通过串行总线进行数据传输。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710210819.4A CN107025203B (zh) | 2017-03-31 | 2017-03-31 | 第一板卡、第二板卡及一种设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710210819.4A CN107025203B (zh) | 2017-03-31 | 2017-03-31 | 第一板卡、第二板卡及一种设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107025203A CN107025203A (zh) | 2017-08-08 |
CN107025203B true CN107025203B (zh) | 2020-09-25 |
Family
ID=59527796
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710210819.4A Active CN107025203B (zh) | 2017-03-31 | 2017-03-31 | 第一板卡、第二板卡及一种设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107025203B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108199941B (zh) * | 2017-12-29 | 2022-03-08 | 北京纳米维景科技有限公司 | 一种基于can2.0b的can总线通信方法 |
CN110389924A (zh) * | 2018-04-19 | 2019-10-29 | 大唐移动通信设备有限公司 | 一种串行总线装置及设置方法 |
CN110489359B (zh) * | 2019-08-22 | 2021-05-14 | 苏州国芯科技股份有限公司 | 一种数据传输控制方法及系统 |
CN113364523B (zh) * | 2020-03-06 | 2022-06-28 | 青岛海信宽带多媒体技术有限公司 | 一种数据发送方法及光模块 |
CN113868159A (zh) * | 2020-06-30 | 2021-12-31 | 中车株洲电力机车研究所有限公司 | Io模块、模块内主控装置和模块内接口装置的识别方法 |
CN112395147B (zh) * | 2020-11-26 | 2023-03-14 | 厦门紫光展锐科技有限公司 | Soc上的调试装置 |
CN115328846A (zh) * | 2022-10-12 | 2022-11-11 | 中科声龙科技发展(北京)有限公司 | 一种实现数据操作的方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103210372A (zh) * | 2011-09-08 | 2013-07-17 | 华为技术有限公司 | 一种板卡初始化的方法及装置 |
CN203191971U (zh) * | 2012-12-26 | 2013-09-11 | 上海航空电器有限公司 | 基于1553b总线的接口板卡及控制系统 |
CN104407882A (zh) * | 2014-10-28 | 2015-03-11 | 大唐移动通信设备有限公司 | 一种板卡装置 |
CN105718337A (zh) * | 2016-01-20 | 2016-06-29 | 邦彦技术股份有限公司 | 基于fpga的主备板卡在位自动检测及切换的系统及方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012154612A1 (en) * | 2011-05-06 | 2012-11-15 | Xcelemor, Inc. | Computing system with hardware scheduled reconfiguration mechanism and method of operation thereof |
-
2017
- 2017-03-31 CN CN201710210819.4A patent/CN107025203B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103210372A (zh) * | 2011-09-08 | 2013-07-17 | 华为技术有限公司 | 一种板卡初始化的方法及装置 |
CN203191971U (zh) * | 2012-12-26 | 2013-09-11 | 上海航空电器有限公司 | 基于1553b总线的接口板卡及控制系统 |
CN104407882A (zh) * | 2014-10-28 | 2015-03-11 | 大唐移动通信设备有限公司 | 一种板卡装置 |
CN105718337A (zh) * | 2016-01-20 | 2016-06-29 | 邦彦技术股份有限公司 | 基于fpga的主备板卡在位自动检测及切换的系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN107025203A (zh) | 2017-08-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107025203B (zh) | 第一板卡、第二板卡及一种设备 | |
CN109558371B (zh) | 用于与微控制器通信的方法、以及计算系统 | |
EP2380085B1 (en) | Detecting lost and out of order posted write packets in a peripheral component interconnect (pci) express network | |
US6842806B2 (en) | Method and apparatus for interconnecting wired-AND buses | |
US11726946B2 (en) | I2C bus communication control method, device and system, and readable storage medium | |
KR101711698B1 (ko) | 데이터 처리 방법, 및 데이터 처리 장치 | |
CN110896372B (zh) | 一种i2c链路切换方法、终端及存储介质 | |
CN102916776B (zh) | 光模块参数传输方法及装置 | |
US20120324078A1 (en) | Apparatus and method for sharing i/o device | |
CN112817899B (zh) | 基于pcie的数据传输方法、装置、存储介质和电子设备 | |
CN113434442A (zh) | 一种交换机及数据访问方法 | |
KR20170117326A (ko) | 랜덤 액세스 메모리를 포함하는 하나 이상의 처리 유닛을 위한 직접 메모리 액세스 제어 장치 | |
CN104346310B (zh) | 一种高性能i2c从机数据交换电路及方法 | |
CN103885910A (zh) | 多设备在主模式下进行iic通信的方法及系统 | |
KR101816895B1 (ko) | 섀시형 통신 장비를 위한 관리용 시리얼 버스 | |
CN113961496A (zh) | 通信电路系统、方法、芯片以及存储介质 | |
CN104035852B (zh) | 基于自动帧重复的1553b总线硬件定时通信测试装置及方法 | |
CN112395147A (zh) | Soc上的调试装置 | |
CN116756078B (zh) | pcie数据包的通知方法、装置及存储介质 | |
CN110049312A (zh) | 一种arinc818协议故障注入方法及装置 | |
CN113645322B (zh) | 一种基于光纤串行通信的地址码识别方法、装置及其应用 | |
CN112988202B (zh) | 一种fc模块升级的系统及方法 | |
CN116820866B (zh) | 针对axi总线传输的异常检测电路的验证方法及平台 | |
CN113934671B (zh) | 一种接口控制芯片及网络设备 | |
CN101930394A (zh) | 一种基于usb的ahb总线跟踪测试方法与系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |