一种通用输入输出数据传输方法、装置、设备及介质与流程

文档序号:26139505发布日期:2021-08-03 14:23阅读:182来源:国知局
一种通用输入输出数据传输方法、装置、设备及介质与流程

本发明涉及数据传输技术领域,尤其涉及一种通用输入输出数据传输方法、装置、设备及介质。



背景技术:

服务器的主板设计通过bmc(baseboardmanagementcontroller,基板管理控制器)来掌握整个系统的所有信息,也会设计cpld来控制主板上所有的电源控制时序。主板上的cpld也会记录下所有的电源状况,而cpld除了掌控所有的电源控制与主板的所有错误与事件,也会侦测整个系统上是否有错误或是告警信息,例如温度告警等等。bmc可直接通过与cpld间的传输来获取这些信息,cpld与bmc间最常见的传输方式就是通过sgpio(serialgeneralpurposeinputoutput,简称sgpio,通用输入输出)。

传统bmc与cpld间使用sgpio数据的输出通常是固定格式,此种方式仅简单控制某个cpld的gpio引脚输出0/1,从而分别实现以固定位数数据为一帧重复接收数据。例如图1a就是重复以每一帧包含8比特数据重复接收,又如图1b和图1c每帧接收的数据分别是12比特和24比特。

结合图1b所示,由于每帧数据包含24比特,这样会导致要控制的gpio引脚输出频率就会有个极限,也就是说cpld接收bmc端的数据,要每接收24个sclock后,cpld才能将接收进来的sdataout(串行数据输出)数据做解析,而对于cpld需要每次接收到bmc来的控制信号就是24个sclock的时间,假设sdataout(a23~a0)间的a23是cpld接收到后,就会通过cpld的输出引脚输出高/低电压,假设sclcok的频率是1mhz(1us),那cpld接收bmc送出一帧数据的时间就是1usx24=24us,由此该引脚最快的频率就是1/24us=41khz,那如果在系统上需要用到比41khz还快的控制信号就无法满足需求。此外,虽然固定8比特的传输格式,虽然可以让接收速度快3倍,但是在某些场景下8比特数据量还是不够快,而且sdataout内所包含的数据量又太少,只能包含8个数据量,若需要包含24个数据量时就又无法满足需求,因此亟需改进。



技术实现要素:

有鉴于此,有必要针对以上技术问题,提供一种通用输入输出数据传输方法、装置、设备及介质。

根据本发明的第一方面,提供了一种通用输入输出数据传输方法,所述方法包括:

若接收到长度为第一预设比特的第一sdataout数据,则解析所述第一sdataout数据以得到对应的第一二进制数;

将所述第一二进制数与预设传输长度和二进制数映射关系进行匹配以得到第二预设比特,其中,不同的二进制数对应不同的传输长度;

以所述第二预设比特为单位继续接收后续的第二sdataout数据。

在其中一个实施例中,所述第二预设比特大于所述第一预设比特。

在其中一个实施例中,所述第一预设比特为二比特或三比特。

在其中一个实施例中,所述方法还包括:

对接收到的每一第二sdataout数据进行解析以得到对应的第二二进制数;

对所述第二二进制数进行循环冗余校验以确定所述第二sdataout数据是否有效。

在其中一个实施例中,所述对所述第二二进制数进行循环冗余校验以确定所述第二sdataout数据是否有效的步骤包括:

获取所述第二二进制数的最后一位并记作校验位,以及将除最后一位的其余位均记作信息位;

根据预设编码规则计算信息位对应的校验值,并将所述校验值与所述校验位进行比较;

若所述校验值与校验位的数值相同,则确认所述第二sdataout数据为有效。

在其中一个实施例中,所述方法还包括:

若所述校验值与校验位的数值不相同,则确认所述第二sdataout数据为无效数据,并丢弃对应的第二预设比特的sdataout数据。

在其中一个实施例中,所述预设编码为对每一信息位分别取反后相加,或者对每一信息位取反相加再对相加结果取反。

根据本发明的第二方面,还提供了一种通用输入输出数据传输装置,所述装置包括:

第一接收模块,用于在接收到第一预设比特的第一sdataout数据,则解析所述第一sdataout数据以得到对应的第一二进制数;

匹配模块,用于将所述第一二进制数与预设传输长度和二进制数映射关系进行匹配以得到第二预设比特,其中,不同的二进制数对应不同的传输长度;

第二接收模块,用于以所述第二预设比特为单位继续接收后续的第二sdataout数据。

根据本发明的第三方面,还提供了一种计算机设备,该计算机设备包括:

至少一个处理器;以及

存储器,存储器存储有可在处理器上运行的计算机程序,处理器执行程序时执行前述的通用输入输出数据传输方法。

根据本发明的第四方面,还提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时执行前述的通用输入输出数据传输方法。

上述一种通用输入输出数据传输方法,通过在接收到长度为第一预设比特的第一sdataout数据时,对第一sdataout数据进行解析得到对应的第一二进制数,然后根据预设传输长度和二进制数映射关系为第一二进制数匹配一个第二预设比特,进而以第二比特为单位继续接收后续的sdataout数据,从而实现了接收不同长度的数据,可兼顾数据写入量以及传输速度,使得数据传输方式更加灵活。

此外,本发明还提供了一种通用输入输出数据传输装置、一种计算机设备和一种计算机可读存储介质,同样能实现上述技术效果,这里不再赘述。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。

图1a为传统的8比特模式sgpio数据的示意图;

图1b为传统的16比特模式sgpio数据示的意图;

图1c为传统的24比特模式sgpio数据的示意图;

图2为本发明一个实施例提供的一种通用输入输出数据传输方法的流程示意图;

图3为本发明又一个实施例提供的主板cpld与bmc通信的架构示意图;

图4a为本发明一个实施例提供的sload信号低致能传输sgpio数据的示意图;

图4b为本发明一个实施例提供的sload信号高致能传输sgpio数据的示意图;

图5为本发明又一个实施例提供的一种通用输入输出数据传输装置的结构示意图;

图6本发明另一个实施例中计算机设备的内部结构图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。

需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应理解为对本发明实施例的限定,后续实施例对此不再一一说明。

在一个实施例中,请参照图2所示,本发明提供了一种通用输入输出数据传输方法,具体来说所述方法包括以下步骤:

s100,若接收到长度为第一预设比特的第一sdataout数据,则解析所述第一sdataout数据以得到对应的第一二进制数;其中,常用的sgipo数据包含时钟(sclock)信号、负载(sload)信号、数据输出(sdataout)信号、数据输入(sdatain,但一般而言,不是所有的sgpio设备都支持sdatain脚位,因此sdatain的信号线是可选(optional)的。

需要说明的是,sclock的信号则是用以定义sgipo传输数据时所使用的频率。sload脚位的信号可为一低致能(lowactive)信号或是一高致能(highactive)信号。当sload脚位的信号为低致能信号时,sgpio数据的每一个帧则是由sload脚位的信号的相邻的两个低电位脉波来定义,在此状况下,sgpio数据。相对的,当sload脚位的信号为高致能信号时,sgpio数据的每一个帧则是由sload信号的相邻的两个高电位脉波来定义,在此状况下,sgpio数据每一帧的时间在时序上是介于sload信号的相邻的两个高电位脉波之间。常用的发送数据的主体一端可以是服务器上的bmc,常用的接收数据的主体是服务器的主板cpld,当然也可是风扇cpld、以及背板cpld等等。

s200,将所述第一二进制数与预设传输长度和二进制数映射关系进行匹配以得到第二预设比特,其中,不同的二进制数对应不同的传输长度;

需要说明的是,预设传输长度和二进制数映射关系并不是固定的,一方面第一二进制数据的长度不同,而且具体的某一个数值所映射的传输长度也可以是任意的;例如当解析得到的第一二进制数为01,可以规定01对应6比特,10对应7比特,11对应24比特,在实施过重中考虑到cpld在进行信号控制时常用的控制数据长度进行调整即可,可以理解的是以上数值的设定仅仅为了便于理解,并不应理解为对本发明方案的限制。另外,考虑到第一预设比特对应的第一sdataout数据虽然属于传输数据的一部分,但仅仅是其余数据的信息标识,在具体使用是,第一预设比特无需占用过大的长度,只要能够区分需要使用的多个不同的第一预设比特即可,例如当需要对三种不同长度数据进行组合接收时,采用两比特的即可满足该需求,若仍使用三位可能会造成不必要的浪费。

s300,以所述第二预设比特为单位继续接收后续的第二sdataout数据。在实施过程中由于数据是持续发送的,对于接收方而言,只要接收到第一预设比特的数据后,后续就会使用新接收到的第一sdataout数据内的数据所映射的新的第二预设比特数据继续接收,因而可能会出现当接收到一个第一预设比特的数据后,会连续收到多个第二预设长度的数据。

上述一种通用输入输出数据传输方法,通过在接收到长度为第一预设比特的第一sdataout数据时,对第一sdataout数据进行解析得到对应的第一二进制数,然后根据预设传输长度和二进制数映射关系为第一二进制数匹配一个第二预设比特,进而以第二比特为单位继续接收后续的sdataout数据,从而实现了接收不同长度的数据,可兼顾数据写入量以及传输速度,使得数据传输方式更加灵活。

在又一个实施例中,所述第二预设比特均大于所述第一预设比特。

在又一个实施例中,所述第一预设比特为二比特或三比特。

在又一个实施例中,所述方法还包括:

s410,对接收到的每一第二sdataout数据进行解析以得到对应的第二二进制数;

s420,对所述第二二进制数进行循环冗余校验以确定所述第二sdataout数据是否有效。

在又一个实施例中,前述步骤s420具体包括以下子步骤:

s421,获取所述第二二进制数的最后一位并记作校验位,以及将除最后一位的其余位均记作信息位;

s422,根据预设编码规则计算信息位对应的校验值,并将所述校验值与所述校验位进行比较;优选地,所述预设编码为对每一信息位分别取反后相加,或者对每一信息位取反相加再对相加结果取反

s423若所述校验值与校验位的数值相同,则确认所述第二sdataout数据为有效。

优选地,所述方法还包括:

s424,若所述校验值与校验位的数值不相同,则确认所述第二sdataout数据为无效数据,并丢弃对应的第二预设比特的sdataout数据。

在又一个实施例中,为了便于理解本发明的技术方案,下面以bmc作为发送端,cpld为接收端为例进行详细说明,请结合图3所示,为了改善传统bmc与cpld间使用sgpio的传输控制方式不弹性,且没有效率,而且也缺少校验机制的问题本发明设定了控制比特(即controlbit)和数据比特(databits),具体的实施方式如下:

结合图4a和4b所示,设定控制比特的位数,举例来说controlbit可以包含多位,通常三位的控制比可以映射8种不同长度的数据比特(databits),并且能够满足大多数的信号控制场景,因此可以将controlbit设置为长度为3比特的数据。

设定控制比特的对应的二进制数值与传输长度的对应关系,举例来说,假设controlbit为001,databit就会设定为4bits;假设controlbit为010,databit就会设定为5bits;假设controlbit为011,databit就会设定为6bits;假设controlbit为100,databit就会设定为7bits...以此类推。

请再次参照图3所述,为了便于cpld对接收到的sdataout数据进行区分,cpld分别用3-bitcontrol解码器和数据长度解码器对controlbit、和databit数据进行解码,具体方式为:3-bitcontrol解码器会优先判断sgpio送出的信号是否为3-bit的控制比特,每次的sload信号如图4a所示由1->0后,sclock就开始计数sdataout,并在sload=1的时候,就会判断整个帧的长度是否是给3-bitcontrol解码器使用,若sload=1时,计数sdataout的数量大于3,就表示此帧数据为datalengh解码器使用;需要说明的是,图4b则是另一种sgpio的表现方式,是在sload由0->1时,sclock就开始计数sdataout并在sload=0的时候,就会判断整个数据帧是否是给3-bitcontrol解码器使用,若sload=0时,计数sdataout的数量大于3,就表示此次封包为datalengh解码器使用。

下面结合图4a的接收sdataout数据进行详细说明,图4a中第一次收到3-bitcontrol数据,经解析其对应的二进制数为001,由于预先定义001映射为以4比特为单位长度接收数据,随后连续接收到两组长度为4比特的数据a3-a0,此两组数据可作为cpld的控制信号;然后第二次接收到3-bitcontrol数据,经解析其对应的二进制数为010,由于预先定义010映射为以5比特为单位长度接收数据,随后梁旭接收到两组长度为5比特的数据b4-b0;最后第三次接收到3-bitcontrol数据,经解析其对应的二进制数为011,由于预先定义011映射为以6比特为单位长度接收数据,随后连续接收到两组长度为6比特的数据c5-c0,后续依次类推,假设再次接收到3-bitcontrol数据则继续以相同的方式变换接收数据的长度。

此外,本发明方法还导入了crc(cyclicredundancycheck,循环冗余校验),可判别此传输数据是否正常,cpld若判断为正确的crc数值,才会将bmc传输至cpld的数据正常解读并反应至系统上;具体来说crc的机制可以为将crc前端的数据全部相加后取反,或是将crc前端的数据全部相加再加1…等等的方法皆可。

在又一个实施例中,请结合图4a和图4b所示,为了实现cpld从bmc中接收包含不同长度的sgpi数据,在现有cpld与bmc的通信架构基础上进行改进具体实施方式如下:

步骤一,重新设计bmc即(sgpio信号发送端)发送的封包格式,并将controlbit(控制比特)导入至新的sgpio信号发送的封包格式,并以此送出的封包送出至不同电路板的cpld,如主板cpld,风扇cpld,或者背板cpld等。

步骤二,重新设计cpld(即sgpio信号接收端))接收端的封包格式,并将controlbit(控制比特)导入至新的信号接收端的封包格式,并以此接收来至bmc的sgpio信号。

步骤三,cpld接收bmc的sdataout串行数据输出数据;

步骤四,cpld接收sdataout(串行数据输出)后,先判别bmc送出sgpio数据内的controlbit控制比特/数值为何值。

步骤五,controlbit(控制比特)数值判断为:controlbit=001,databit=4bits;controlbit=010,databit=5bits;controlbit=011,databit=6bits;controlbit=100,databit=7bits...以此类推。

步骤六,cpld藉由控制比特数值判断后,即可转换接收sdataout的比特长度。

具体举例来说,假设cpld收到一个3比特的数据该数据即为controlbit,通过解析得到其二进制数表示为010,将该数值与步骤五中列举的情形进行匹配确认此二进制数对应的是5比特长度,进而后续将持续接收长度为5比特的封包数据;当连续接收到两组5比特长度的数据后,cpld再次接收到一个3比特的数据,该新接收到的3比特长度数据为controlbit,通过第二解析新接收到的3比特数据的内容其二进制数表示为100,将该数值与步骤无列举的情形进行匹配确认此二进制数对应的是7比特长度,进而后续将持续接收长度为7比特的封包数据。由此,cpld实现了从bmc分别接收5比特长和7比特长的两种数据,而不再是单一固定的长度,bmc与cpld间的传输控制方式弹性,传输效率更高有,对于cpld而言可加快写入数据,提升控制速度。

步骤七,cpld接收sdataout的数据后,会继续在sdataout的最后一个bit做crc循环冗余校验校验机制;

具体来说,crc校验机制举例:假设controlbit=001,databit=4bits,当cpld接到sdataout数据为0101,其中最后一各比特值为1,其作为校验位,前三位010为信息位,假设校验时使用的编码规则是对信息为的数据分别取反后相加,对010取反得到的即为101,然后三个信息位相加即为0,该值与最后一位对应数值不相同,正面此次校验失败,因crc冗余校验存在错误,cpld即认定此次接收数据无效并舍弃;反之cpld认为本次接收的数据有效,可以正常使用。

另外,需要说明的是编码规则有很多,此处仅仅列举几种常用的,当然可以对以上确定的信息位做如下运算:3个比特为010透过相加取反后+1的结果为1与cpld接受到sdataout最后1个比特一致等于1,所以此数据即为有效;反之,若cpld接收到的sdataout数据为0100,因crc冗余校验存在错误,cpld即认定此次接收数据无效并舍弃。

本发明的方法与传统的sgpio数据传输方式相比至少具备以下有益技术效果:

(1)改善了数据接收的长度固定且单一的问题,能够以多种长度为单位接收数据,可以增加对更短比特以及更大比特数据接收的情形,使得传输方式更为弹性,适合更多的应用场景,并且组合的使用方式使得接收数据更灵活。

(2)增加了对接收到的数据的校验机制,有效的避免的对传输错误数据的使用,显著的降低了使用错误传输数据造成后续控制出现异常的风险。

在又一个实施例中,请参照图5本发明还提供了一种通用输入输出数据传输装置,具体来说所述装置50包括:

第一接收模块51,用于在接收到第一预设比特的第一sdataout数据,则解析所述第一sdataout数据以得到对应的第一二进制数;其中,常用的sgipo数据包含时钟(sclock)信号、负载(sload)信号、数据输出(sdataout)信号、数据输入(sdatain,但一般而言,不是所有的sgpio设备都支持sdatain脚位,因此sdatain的信号线是可选(optional)的。

需要说明的是,sclock的信号则是用以定义sgipo传输数据时所使用的频率。sload脚位的信号可为一低致能(lowactive)信号或是一高致能(highactive)信号。当sload脚位的信号为低致能信号时,sgpio数据的每一个帧则是由sload脚位的信号的相邻的两个低电位脉波来定义,在此状况下,sgpio数据。相对的,当sload脚位的信号为高致能信号时,sgpio数据的每一个帧则是由sload信号的相邻的两个高电位脉波来定义,在此状况下,sgpio数据每一帧的时间在时序上是介于sload信号的相邻的两个高电位脉波之间。常用的发送数据的主体一端可以是服务器上的bmc,常用的接收数据的主体是服务器的主板cpld,当然也可是风扇cpld、以及背板cpld等等。

匹配模块52,用于将所述第一二进制数与预设传输长度和二进制数映射关系进行匹配以得到第二预设比特,其中,不同的二进制数对应不同的传输长度;

需要说明的是,预设传输长度和二进制数映射关系并不是固定的,一方面第一二进制数据的长度不同,而且具体的某一个数值所映射的传输长度也可以是任意的;例如当解析得到的第一二进制数为01,可以规定01对应6比特,10对应7比特,11对应24比特,在实施过重中考虑到cpld在进行信号控制时常用的控制数据长度进行调整即可,可以理解的是以上数值的设定仅仅为了便于理解,并不应理解为对本发明方案的限制。另外,考虑到第一预设比特对应的第一sdataout数据虽然属于传输数据的一部分,但仅仅是其余数据的信息标识,在具体使用是,第一预设比特无需占用过大的长度,只要能够区分需要使用的多个不同的第一预设比特即可,例如当需要对三种不同长度数据进行组合接收时,采用两比特的即可满足该需求,若仍使用三位可能会造成不必要的浪费。

第二接收模块53,用于以所述第二预设比特为单位继续接收后续的第二sdataout数据。在实施过程中由于数据是持续发送的,对于接收方而言,只要接收到第一预设比特的数据后,后续就会使用新接收到的第一sdataout数据内的数据所映射的新的第二预设比特数据继续接收,因而可能会出现当接收到一个第一预设比特的数据后,会连续收到多个第二预设长度的数据。

上述一种通用输入输出数据传输装置,通过在接收到长度为第一预设比特的第一sdataout数据时,对第一sdataout数据进行解析得到对应的第一二进制数,然后根据预设传输长度和二进制数映射关系为第一二进制数匹配一个第二预设比特,进而以第二比特为单位继续接收后续的sdataout数据,从而实现了接收不同长度的数据,可兼顾数据写入量以及传输速度,使得数据传输方式更加灵活。

优选地,所述第二预设比特均大于所述第一预设比特。

优选地,所述第一预设比特为二比特或三比特。

优选地,所述装置还包括:

解码模块,用于对接收到的每一第二sdataout数据进行解析以得到对应的第二二进制数;

校验模块,用于对所述第二二进制数进行循环冗余校验以确定所述第二sdataout数据是否有效。

优选地所述校验模块包括:

获取模块,用于获取所述第二二进制数的最后一位记并记作校验位,以及将除最后一位的其余位均记作信息位;

比较模块,用于根据预设编码规则计算信息位对应的校验值,并将所述校验值与所述校验位进行比较;

第一确认模块,用于在所述校验值与校验位的数值相同时,则确认所述第二sdataout数据为有效。

第二确认模块,用于在所述校验值与校验位的数值不相同时,则确认所述第二sdataout数据为无效数据,并丢弃对应的第二预设比特的sdataout数据。

优选地,所述预设编码为对每一信息位分别取反后相加,或者对每一信息位取反相加再对相加结果取反。

需要说明的是,关于通用输入输出数据传输装置的具体限定可以参见上文中对通用输入输出数据传输方法的限定,在此不再赘述。上述通用输入输出数据传输装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。

根据本发明的另一方面,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图请参照图6所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时实现以上所述的通用输入输出数据传输方法,具体来说,所述方法包括以下步骤:

若接收到长度为第一预设比特的第一sdataout数据,则解析所述第一sdataout数据以得到对应的第一二进制数;

将所述第一二进制数与预设传输长度和二进制数映射关系进行匹配以得到第二预设比特,其中,不同的二进制数对应不同的传输长度;

以所述第二预设比特为单位继续接收第二sdataout数据。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。

以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

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