掌桥专利:专业的专利平台
掌桥专利
首页

信号传输方法、计算机设备和存储介质

文献发布时间:2023-06-19 19:30:30


信号传输方法、计算机设备和存储介质

技术领域

本申请涉及服务器技术领域,特别是涉及一种信号传输方法、计算机设备和存储介质。

背景技术

随着服务器的构成越来越复杂,服务器主板的负载数量也越来越多,比如,一个复杂的服务器主板往往可以扩展多个背板,而每个背板又可以安装多个硬盘,主板到背板的线缆接口数量也相应增加,而线缆接口的增加会极大的影响主板与背板之间信号传输的可靠性。

目前,主板和背板之间通常采用同步串行和异步串行的通信协议实现数据包的发送与接收。异步串行通信的主板与背板以各自的时钟信号为基准,约定相同的波特率与解析方式进行通信。 而同步串行通信由主板发送同步时钟,数据传输比异步串行通信快速和稳定。

然而,现有的同步串行模式下的主板和背板之间的输入输出端口占用数量极多,导致服务器主板的成本极高。

发明内容

基于此,有必要针对上述技术问题,提供一种能够降低服务器主板成本的信号传输方法、计算机设备和存储介质。

第一方面,本申请提供了一种信号传输方法,所述信号传输方法应用于服务器的主板,所述主板与所述服务器的背板通过数据信号线连接;所述方法包括:

将所述数据信号线的状态设置为时钟起始状态;

在所述数据信号线为所述时钟起始状态的情况下,通过所述数据信号线与所述背板进行信号传输。

第二方面,本申请提供了一种信号传输方法,所述信号传输方法应用于服务器的背板,所述背板与所述服务器的主板通过数据信号线连接;所述方法包括:

侦测所述数据信号线的状态;

在侦测到所述数据信号线处于时钟起始状态时,通过所述数据信号线与所述主板进行信号传输。

第三方面,本申请还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述第一方面所述的方法。

第四方面,本申请还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述第二方面所述的方法。

第五方面,本申请还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面所述的方法。

第六方面,本申请还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述第二方面所述的方法。

本申请提供的信号传输方法、计算机设备和存储介质,通过将数据信号线的状态设置为时钟起始状态,并在数据信号线为时钟起始状态的情况下,通过数据信号线与背板进行信号传输。该方法通过设置数据信号线的时钟起始状态来指示主板与背板之间进行同步的信号传输,实现了将同步时钟内嵌到数据信号线中进行信号传输,相比于传统异步串行的传输方式,本方法的主板和背板之间通信不需要精确的时钟同步,可以解决主板和背板进行异步通信的波特率匹配问题,减少了信号传输的误码率;而相比于传统的同步串行的传输方式,本方法不需要额外增加时钟同步信号线,减少了主板与背板之间信号线连接的数量,进而极大的降低了服务器主板的成本。

附图说明

图1为一个实施例中信号传输系统的结构示意图;

图2为一个实施例中信号传输方法的流程示意图;

图3为一个实施例中主板向背板发送数据的信号传输方法的流程示意图;

图4为一个实施例中主板发送一个数据位的时序图;

图5为另一个实施例中主板发送一个数据位的时序图;

图6为另一个实施例中信号传输方法的流程示意图;

图7为另一个实施例中信号传输方法的流程示意图;

图8为一个实施例中背板接收数据的信号传输方法的流程示意图;

图9为一个实施例中背板接收一个数据位的时序图;

图10为另一个实施例中背板接收一个数据位的时序图;

图11为另一个实施例中信号传输方法的流程示意图;

图12为一个实施例中背板回传数据的信号传输方法的流程示意图;

图13为一个实施例中背板回传一个数据位的时序图;

图14为另一个实施例中背板回传一个数据位的时序图;

图15为另一个实施例中信号传输方法的流程示意图;

图16为一个实施例中主板接收数据的信号传输方法的流程示意图;

图17为另一个实施例中主板接收数据的信号传输方法的流程示意图;

图18为另一个实施例中信号传输的时序图;

图19为一个实施例中主板发送数据和接收数据的状态转移流程示意图;

图20为一个实施例中背板发送数据和接收数据的状态转移流程示意图;

图21为一个实施例中电路板的示意图;

图22为一个实施例中主板和背板的连接示意图;

图23为一个实施例中信号传输装置的结构框图;

图24为另一个实施例中信号传输装置的结构框图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

本申请实施例提供的信号传输方法,可以应用于如图1所示的服务器内部的信号传输系统中。该信号传输系统中包括主板和背板,主板上设置有可编程逻辑器件(ComplexProgrammable Logic Device,CPLD),背板上设置有CPLD。主板和背板之间建立单一数据信号线连接,在主板端,由一个1kΩ的电阻上拉到电源(P3V3_STBY),在背板端,由一个1kΩ的电阻上拉到电源(P3V3_STBY)。主板与背板之间采用半双工方式收发数据。下面实施例说明图1中主板与背板之前的信号传输方式。

在一个实施例中,如图2所示,提供了一种信号传输方法,该信号传输方法应用于如图1中服务器的主板,涉及主板向背板发送数据和接收数据的过程,该方法包括以下步骤:

S101,将数据信号线的状态设置为时钟起始状态。

其中,时钟起始状态用于主板向背板通知开始发送数据,或者指示背板向主板回传数据。当主板预向背板发送数据,或者预接收背板回传的数据时,主板的CPLD将数据信号线的状态设置为时钟起始状态后,即可开始向背板发送数据,或者开始接收背板的回传数据。

本实施例中,主板上设置CPLD,该CPLD用来控制数据信号线。当主板预向背板发送数据时,可以通过拉低数据信号线的方式将数据信号线的状态设置为时钟起始状态,以告知背板开始接收数据。相应的,主板接收背板回传的数据时,主板的CPLD也可以通过拉低数据信号线的方式将数据信号线的状态设置为时钟起始状态,以告知背板开始发送数据。由于通过拉低数据信号线将数据信号线的状态设置为时钟起始状态,因此这里的时钟起始状态也可以为数据信号线的低电平状态。

S102,在数据信号线为时钟起始状态的情况下,通过数据信号线与背板进行信号传输。

其中,数据信号线为时钟起始状态表示主板预向背板发送数据,或者主板预接收背板回传的数据。本实施例中,当主板预向背板发送数据时,主板的CPLD将数据信号线的状态设置为时钟起始状态,以告知背板主板开始发送数据,以便背板准备开始接收数据,之后主板的CPLD即可通过控制数据信号线的状态开始发送数据,对应的背板的CPLD通过侦测数据信号线的状态读取数据,完成主板发送数据,背板接收数据的过程;当主板预接收背板回传的数据时,主板的CPLD将数据信号线的状态设置为时钟起始状态,以告知背板可以开始回传数据,之后主板的CPLD将数据信号线的控制权交由背板的CPLD,背板的CPLD即可通过控制数据信号线的状态开始回传数据,对应的主板的CPLD通过侦测数据信号线的状态读取数据,完成背板回传数据,主板接收数据的过程。

本实施例提供的信号传输方法应用于服务器的主板,主板通过将数据信号线的状态设置为时钟起始状态,并在数据信号线为时钟起始状态的情况下,通过数据信号线与背板进行信号传输。该方法通过设置数据信号线的时钟起始状态来指示主板与背板之间进行同步的信号传输,实现了将同步时钟内嵌到数据信号线中进行信号传输,相比于传统异步串行的传输方式,本方法的主板和背板之间通信不需要精确的时钟同步,可以解决主板和背板进行异步通信的波特率匹配问题,减少了信号传输的误码率;而相比于传统的同步串行的传输方式,本方法不需要额外增加时钟同步信号线,减少了主板与背板之间信号线连接的数量,进而极大的降低了服务器主板的成本。

在一个实施例中,提供了主板向背板发送数据的信号传输方法,如图3所示,该方法包括:

S201,在数据发送阶段的每个传输周期的第一个时钟周期将数据信号线的状态设置为时钟起始状态。

其中,传输周期为主板发送一个数据位占用的时钟周期,其可以根据实际信号传输情况确定,比如,可以设置四个时钟周期为一个数据位的传输周期,或设置六个时钟周期为一个数据位的传输周期。

本实施例中,当主板处于数据发送阶段时,主板的CPLD内部产生一个时钟信号,并在每一个数据位的传输周期的第一个时钟周期的上升沿时刻,拉低数据信号线作为隐含时钟起始位,即将数据信号线的状态设置为时钟起始状态,以同步告知背板可以开始接收数据,当背板监测到数据信号线被拉低后,即可开始同步接收主板发送的数据。

S202,从传输周期的第二个时钟周期开始,根据第一发送数据的数据位设置数据信号线的状态,以将第一发送数据发送给背板。

本实施例中,当主板的CPLD拉低数据信号线后,即可在传输周期的第二个时钟周期的上升沿时刻开始传输数据。具体的,可以先确定要发送的第一发送数据的数据位,若第一发送数据的数据位为第一数值,则将数据信号线的状态设置为高阻状态,其中第一数值可以具体为“1”的数值;若第一发送数据的数据位为第二数值,则将数据信号线的状态设置为低电平状态,其中的第二数值可以具体为“0”的数值。当主板的CPLD在第二个时钟周期设置完成数据信号线的状态后,接着可以在传输周期的第三个、第四个等时钟周期保持该数据信号线的状态,直到最后一个时钟周期除外,以稳定传输该数据位的数据。

S203,在传输周期的最后一个时钟周期释放数据信号线。

本实施例中,当主板的CPLD在第二个、第三个、...、第N个时钟周期等设置完成数据信号线的状态后,可以在传输周期的最后一个时钟周期的上升沿时刻拉高数据信号线,即将数据信号线的状态设置为高阻状态,从而释放数据信号线,以告知背板传输数据结束,指示背板停止接收数据。

示例性说明图3实施例所述方法,在主板的CPLD(使用host_CPLD表示)发送数据阶段,host_CPLD内部产生主板时钟(使用host_clk表示),在考虑实际应用中主板内2m的线缆长度的信号传输时延大约为10ns,信号线缆的寄生电容约100~150pf,在单端1Kohm的上拉电阻作用下信号从20%到90%的上升沿延时约120ns,按照集总电路的信号传输频率小于1/(120ns*6)=1.38Mhz,实际设定host_clk为1.2MHz, 按照4个host_clk为一个数据位的传输周期,数据传输的比特率约为300Kbps。

在主板端具体传输一个数据位的数据时,以发送数据位为0的数据为例,如图4所示的发送一个数据位为0的时序图,图4中,在第一个主板时钟host_clk周期的上升沿时刻(图中标1的位置),host_CPLD拉低数据信号线作为隐含时钟起始位,在第二个host_clk周期的上升沿时刻(图中标2的位置),host_CPLD根据第一发送数据的数据位为0的状态,设置数据信号线的状态为低电平状态(1’b0);在第三个host_clk周期保持数据信号线的低电平状态(1’b0),在第四个host_clk周期的上升沿时刻(图中标4的位置),host_CPLD将数据信号线的状态设置为高阻状态(1’bz)。在实际操作时,在主板外部上拉电阻的作用下,host_CPLD的输出为高阻时,数据信号线就被拉高,相当于此时host_CPLD释放数据信号线,表示一个数据位传输结束。

再例如,以发送数据位为1的数据为例,如图5所示的发送一个数据位为1的时序图,图5中,在第一个host_clk周期的上升沿时刻(图中标1的位置),host_CPLD拉低数据信号线作为隐含时钟起始位,在第二个host_clk周期的上升沿时刻(图中标2的位置)根据第一发送数据的数据位为1的状态,设置数据信号线的状态为高阻状态(1’bz);在第三个host_clk周期保持数据信号线的高阻状态(1’bz);在第四个host_clk周期的上升沿时刻(图中标4的位置),host_CPLD将数据信号线的状态设置为高阻状态(1’bz),即host_CPLD释放数据信号线,表示一个数据位传输结束。

需要说明的是,具体操作时,host_CPLD通过设置有限状态机来设置数据信号线的状态,即具体可以使用host_DAT_Ctr来表示数据信号线的状态,若设置数据信号线的状态为高阻状态时,可以设置host_DAT_Ctr为“1’bz”,若设置数据信号线的状态为低电平状态时,可以设置host_DAT_Ctr为“1’b0”。例如,当第一发送数据的数据位为1时,host_DAT_Ctr=1’bz;当第一发送数据的数据位为0时,host_DAT_Ctr=1’b0。

上述实施例所述的方法设计了一种同步串行通信方式,且将同步时钟嵌入到数据信号线中,减少了主板和背板之间信号线的连接数量。而且,内嵌的同步时钟避免了传统主板和背板因设置参考同步时钟的误差导致的通信不稳定问题。

在一个实施例中,当主板发送完一个数据位时,主板还需要确定是否继续发送数据,或停止发送数据。因此,如图6所示,图3实施例所述方法还包括:

S204,在每次到达传输周期的最后一个时钟周期时,启动第一计数器进行计数,并确定第一计数器的数值是否达到第一发送数据的长度,若达到,则执行步骤S205,若未达到,则执行步骤S206。

其中,主板的CPLD内部设置有第一计数器。第一计数器用于记录主板发送数据的位数,从而根据记录的位数确定主板是否将全部的第一发送数据发送完毕。

本实施例中,主板和背板之间采用半双工的收发模式,待传输的第一发送数据的字节长度根据设计需求可定义为固定长度。当主板向背板发送第一发送数据,并在每次到达传输周期的最后一个时钟周期时,即最后一个时钟周期的上升沿时刻(比如,在图4或图5中标4的位置),启动第一计数器进行计数,并确定第一计数器的计数值是否达到第一发送数据的长度。

S205,进入数据接收阶段。

若第一计数器的计数值达到第一发送数据的长度,说明主板已经将第一发送数据发送完毕,相应的,背板也已经接收完数据。此时,背板由数据接收阶段转入数据发送阶段,对应的主板则进入数据接收阶段。

S206,重新进入下一个传输周期的第一个时钟周期,将数据信号线的状态设置为时钟起始状态。

若第一计数器的计数值未达到第一发送数据的长度,说明主板还未发送完第一发送数据,需要继续发送第一发送数据,此时,主板重新进入数据发送阶段,并重新返回S201的步骤,进入下一个传输周期继续发送数据。

上述图3-图6实施例提供的是主板向背板发送数据的方法,对应的,在主板的数据发送阶段,背板处于数据接收阶段,下述图7-图11实施例提供背板接收数据的方法。

如图7所示,该信号传输方法应用于如图1中服务器的背板,涉及背板接收数据,以及向主板回传数据的过程,该方法包括以下步骤:

S301,侦测数据信号线的状态。

本实施例中,背板的CPLD(使用slave_CPLD表示)从数据信号线上接收数据时,在slave_CPLD内部需要生成参考时钟(使用slave_clk表示)。对该参考时钟slave_clk要求比主板时钟host_clk的频率高2倍以上,确保slave_CPLD能够准确的捕获数据信号线上信号转化的边沿状态。当背板准备接收主板发送的数据时,背板的CPLD可以侦测数据信号线的状态,确定数据信号线是否处于时钟起始状态,若数据信号线处于时钟起始状态,背板的CPLD即可开始接收主板发送的数据。

S302,在侦测到数据信号线处于时钟起始状态时,通过数据信号线与主板进行信号传输。

其中,数据信号线为时钟起始状态表示背板预接收数据,或者背板预回传数据。本实施例中,当主板预向背板发送数据时,主板的CPLD将数据信号线的状态设置为时钟起始状态,对于背板来说,背板的CPLD通过读取数据信号线的状态开始接收数据,完成数据接收后,背板由数据接收阶段转为数据发送阶段,背板的CPLD即可通过控制数据信号线的状态开始发送数据,此时,对应的主板的CPLD通过侦测数据信号线的状态读取数据,完成背板发送数据,主板接收数据。

本实施例提供的信号传输方法应用于服务器的背板,背板通过侦测数据信号线的状态,并在侦测到数据信号线处于时钟起始状态时,通过数据信号线与主板进行信号传输。该方法通过设置数据信号线的时钟起始状态来指示主板与背板之间的信号传输,实现了将同步时钟内嵌到数据信号线中进行信号传输,相比于传统异步串行的传输方式,本方法的主板和背板之间通信不需要精确的时钟同步,可以解决主板和背板进行异步通信的波特率匹配问题,减少了信号传输的误码率;相比于传统的同步串行的传输方式,本方法不需要额外增加时钟同步信号线,减少了主板与背板之间信号线连接的数量,进而极大的降低了服务器主板的成本。

在一个实施例中,提供了背板接收主板发送数据的信号传输方式,如图8所示,该方法包括:

S401,在侦测到数据信号线由高阻状态转换为低电平状态时,进入数据接收阶段,启动低电平计数器进行计数,并在侦测到数据信号线由低电平状态转换为高阻状态时,中止低电平计数器计数,以及启动高电平计数器进行计数,并在侦测到数据信号线由高阻状态转换为低电平状态时,中止高电平计数器计数。

其中,背板的CPLD内部设置有低电平计数器(使用L_COUNTER表示)和高电平计数器(使用H_COUNTER表示)。低电平计数器用于记录主板发送数据位为0的数据对应的时钟周期数,高电平计数器用于记录主板发送数据位为1的数据对应的时钟周期数。

本实施例中,当主板预向背板发送数据时,主板的CPLD拉低数据信号线,提示背板的CPLD开始接收数据,背板的CPLD立即启动低电平计数器进行计数,也就是说,当数据信号线的状态由高阻状态转换为低电平状态时,即在数据信号线的下降沿触发低电平计数器进行计数;当数据信号线的状态由低电平状态转换为高阻状态时,即在数据信号线的上升沿触发高电平计数器进行计数,同时终止低电平计数器的计数;当数据信号线的状态再次由高阻状态转换为低电平状态时,即在数据信号线的又一下降沿终止高电平计数器的计数。

S402,根据低电平计数器的计数值和高电平计数器的计数值确定第一接收数据的数据位,以从主板接收第一接收数据。

本实施例中,当背板的CPLD终止高电平计数器的计数后,即可比较低电平计数器的计数值和高电平计数器的计数值来判断接收到的数据的数据位是“1”或“0”。可选的,具体的判断方法可以为:若低电平计数器中的计数值与高电平计数器中的计数值的比值为第一预设比值,则确定第一接收数据的数据位为第一数值,其中的第一预设比值可由一个数据位的传输周期内的数据信号线的状态变化情况确定,第一数值为“1”的数值;若低电平计数器中的计数值与高电平计数器中的计数值的比值为第二预设比值,则确定第一接收数据的数据位为第二数值,其中的第二预设比值可由一个数据位的传输周期内的数据信号线的状态变化情况确定,第二数值为“0”的数值。需要说明的是,低电平计数器中的计数值与高电平计数器中的计数值的比值表示低电平与高电平的占宽比值,当该占宽比值小于1时,对应设置第一发送数据的数据位为“1”的数值;当该占宽比值大于1时,对应设置第一发送数据的数据位为“0”的数值。

示例性说明图8实施例所述方法,在背板的CPLD接收数据阶段,slave_ CPLD内部产生参考时钟slave_clk,在具体接收一个数据位的数据时,以接收数据位为0的数据为例,如图9所示的接收一个数据位为0的时序图(该图中示出了主板发送一个数据位为0的时序图作为比对),在主板的第一个host_clk周期的上升沿时刻(图中标1的位置),host_CPLD拉低数据信号线作为隐含时钟起始位,在第二个host_clk周期的上升沿时刻(图中标2的位置)根据第一发送数据的数据位为0的状态,设置数据信号线的状态为低电平状态(1’b0),此时,slave_CPLD通过参考时钟slave_clk侦测数据信号线的状态,并在侦测到数据信号线的状态由高阻状态转换为低电平状态时,触发低电平计数器进行计数;在侦测到数据信号线的状态由低电平状态转换为高阻状态时,触发高电平计数器进行计数。在一个数据位的传输周期结束时,即在第四个Host_clk周期的上升沿时刻(图中标4的位置),主板的CPLD将数据信号线的状态设置为高阻状态(1’bz),对应的,背板的CPLD通过两个计数器的比较来判断接收的数据是“1”或“0”,图9中,两个比较器的比值为3:1,即确定背板接收到的第一接收数据的数据位为“0”。

再例如,以发送数据位为1为例,如图10所示的接收一个数据位为1的时序图(该图中示出了主板发送一个数据位为1的时序图作为比对),在主板的第一个host_clk周期的上升沿时刻(图中标1的位置),host_CPLD拉低数据信号线作为隐含时钟起始位,在第二个host_clk周期的上升沿时刻(图中标2的位置)根据第一发送数据的数据位为1的状态,设置数据信号线的状态为高阻状态1’bz,此时,背板的CPLD通过参考时钟slave_clk侦测数据信号线的状态,并在侦测到数据信号线的状态由1’bz转换为1’b0时,触发低电平计数器进行计数;在侦测到数据信号线的状态由1’b0转换为1’bz时,触发高电平计数器进行计数。在一个数据位的传输周期结束时,即在第四个Host_clk周期的上升沿时刻(图中标4的位置),主板的CPLD将数据信号线的状态设置为1’bz,背板的CPLD通过两个计数器的比较来判断接收的数据是“1”或“0”,图10中,两个比较器的比值为1:3,即确定背板接收到的第一接收数据的数据位为“1”。

需要说明的是,具体操作时,背板的CPLD通过设置有限状态机来设置数据信号线的状态,即具体可以使用slave_DAT_Ctr来表示数据信号线的状态,若设置数据信号线的状态为高阻状态时,可以设置slave_DAT_Ctr为“1’bz”,若设置数据信号线的状态为低电平状态时,可以设置slave_DAT_Ctr为“1’b0”。例如,当第一发送数据的数据位为1时,slave_DAT_Ctr=1’bz;当第一发送数据的数据位为0时,slave_DAT_Ctr=1’b0。

在一个实施例中,当主板发送完一个数据位,背板接收完一个数据位时,背板还需要确定是否继续接收数据,或停止接收数据。因此,如图11所示,图8实施例所述方法还包括:

S403,在侦测到数据信号线由高阻状态转换为低电平状态时,启动第三计数器进行计数,并确定第三计数器中的计数值是否达到第一接收数据的长度,若达到,则执行步骤S404,若未达到,则执行步骤S405。

其中,背板的CPLD内部设置第三计数器,该第三计数器用于记录背板接收数据的位数,从而根据记录的位数确定背板是否全部接收完第一接收数据。

本实施例中,主板和背板之间采用半双工的收发模式,待传输的第一接收数据的字节长度根据设计需求可定义为固定长度。当背板接收第一接收数据,并在每次到达传输周期的最后一个时钟周期时,即最后一个时钟周期的上升沿时刻(比如,在图9或图10中标4的位置),启动第三计数器进行计数,并确定第三计数器的计数值是否达到第一接收数据的长度。这里第一接收数据实际为前述的第一发送数据,其长度也与第一接收数据的长度相同。

S404,进入数据发送阶段。

若第三计数器的计数值达到第一接收数据的长度,说明背板已经接收完第一接收数据,相应的,主板也已经发送完数据。此时,背板由数据接收阶段转入数据发送阶段,对应的主板则进入数据接收阶段。

S405,重新侦测数据信号线的状态,并在侦测到数据信号线处于时钟起始状态时,进入数据接收阶段。

若第三计数器的计数值未达到第一接收数据的长度,说明背板还未接收完第一接收数据,需要继续接收第一接收数据,此时,背板重新侦测数据信号线的状态,即重新返回S301的步骤,进入数据接收阶段继续接收第一接收数据。上述图7-图11实施例提供的是背板接收第一接收数据的方法,当背板接收完数据会立即从接收数据状态转换为发送数据状态,即进入数据发送阶段,下述图12-图15实施例提供背板发送第二发送数据的方法。

如图12所示,该信号传输方法应用于如图1中服务器的背板,涉及背板向主板回传数据,以及主板接收数据的过程,该方法包括以下步骤:

S501,侦测数据信号线的状态。

本实施例中,当背板准备向主板回传第二发送数据时,背板的CPLD可以侦测数据信号线的状态,确定数据信号线是否处于时钟起始状态,若数据信号线处于时钟起始状态,背板的CPLD即可开始接管数据信号线,并通过数据信号线向主板回传第二发送数据。

S502,在侦测到数据信号线处于时钟起始状态时,根据第二发送数据的数据位设置数据信号线的状态。

本实施例中,当背板的CPLD侦测到数据信号线处于时钟起始状态,即侦测到数据信号线被拉低时,即可在之后开始回传数据。具体的,可以先确定要回传的第二发送数据的数据位,若第二发送数据的数据位为第一数值,则将数据信号线的状态设置为高阻状态,其中第一数值可以具体为“1”的数值;若第二发送数据的数据位为第二数值,则将数据信号线的状态设置为低电平状态,其中的第二数值可以具体为“0”的数值。

S503,在预设时长内保持数据信号线的状态之后释放数据信号线。

当背板的CPLD根据第二发送数据的数据位设置了数据信号线的状态后,可以启动回传数据计数器来对回传数据的周期数进行计数,在计数期间可以继续保持数据信号线的当前状态,当该回传数据计数器的计数值表示的时长达到预设时长时,表示背板的CPLD回传完一个数据位,此时,背板的CPLD将数据信号线的状态转换为高阻状态,相当于释放数据信号线。需要说明的是,上述预设时长可预先由背板的CPLD根据接收数据时所占的主板时钟周期数确定,比如,预设时长可以根据之前背板接收数据时启动的低电平计数器和高电平计数器中的最大计数值确定。

示例性说明图12实施例所述方法,在背板的CPLD回传数据阶段,slave_ CPLD内部产生参考时钟slave_clk,在具体回传一个数据位的数据时,以回传数据位为1的数据为例,如图13所示的回传一个数据位为1的时序图(该图中示出了主板接收一个数据位为1的时序图作为比对),在主板的第一个host_clk周期的上升沿时刻(图中主板时钟上标1的位置),host_CPLD拉低数据信号线作为隐含时钟起始位,背板的CPLD此时侦测到数据信号线被拉低时(图13中参考时钟slave_clk上标1的位置为侦测到数据信号线被拉低的位置),根据第二发送数据的数据位为1的状态,设置数据信号线的状态为高阻状态(1’bz),当侦测到数据信号线被拉高时,若该数据信号线的状态为高阻状态(1’bz),则继续保持该高阻状态(1’bz)一定时长,图13中数据信号线在主板的第二个、第三个和第四个的时钟周期均保持高阻状态,以传输数据“1”。

再例如,以发送数据位为0的数据为例,如图14所示的回传一个数据位为0的时序图(该图中示出了主板接收一个数据位为0的时序图作为比对),在主板的第一个host_clk周期的上升沿时刻(图中主板时钟上标1的位置),host_ CPLD拉低数据信号线作为隐含时钟起始位,背板的CPLD此时侦测到数据信号线被拉低时(图14中参考时钟slave_clk上标1的位置为侦测到数据信号线被拉低的位置),根据第二发送数据的数据位为0的状态,设置数据信号线的状态为低电平状态(1’b0),继续保持低电平状态(1’b0)一定时长,图14中数据信号线在主板的第一个、第二个和第三个的时钟周期均低电平状态,以传输数据“0”。

在一个实施例中,当背板回传完一个数据位,主板接收完一个数据位时,背板还需要确定是否继续回传数据,或停止回传数据。因此图12实施例所述方法,如图15所示,还包括:

S504,启动第四计数器进行计数,并确定第四计数器中的计数值是否达到第二发送数据的长度,若达到,则执行步骤S505,若未达到,则执行步骤S506。

其中,背板的CPLD内部设置有第四计数器。第四计数器用于记录背板回传数据的位数,从而根据记录的位数确定背板是否将全部的第二发送数据回传完毕。

本实施例中,待回传的第二发送数据的字节长度根据设计需求可定义为固定长度。当背板回传第二发送数据,并在侦测到数据信号线被拉高时(比如,图13或图14中参考时钟slave_clk上标识4的位置),启动第四计数器进行计数,并确定第四计数器的计数值是否达到第二发送数据的长度。

S505,进入数据确认阶段。

若第四计数器的计数值达到第二发送数据的长度,说明背板已经将第二发送数据回传完毕,相应的,主板也已经接收完数据,此时,背板由数据回传阶段转入数据确认阶段,以确认接收和发送的数据是否完整。

S506,重新侦测数据信号线的状态,并在侦测到数据信号线处于时钟起始状态时,进入数据发送阶段。

若第四计数器的计数值未达到第二发送数据的长度,说明背板还未发送完第二发送数据,需要继续发送第二发送数据,此时,背板重新进入数据发送阶段,并重新返回S501的步骤,进入下一个传输周期继续回传第二发送数据。

上述图12-图15实施例提供的是背板向主板回传第二发送数据的方法,对应的,在背板的数据回传阶段,主板处于数据接收阶段,下述图16-图19实施例提供主板接收数据的方法。

在一个实施例中,提供了主板接收背板回传数据的方式,如图16所示,该方法包括:

S601,在数据接收阶段的每个传输周期的第一个时钟周期将数据信号线的状态设置为时钟起始状态。

其中,传输周期为主板接收一个数据位所需的时钟周期。本实施例中,当主板处于数据接收阶段时,主板的CPLD内部产生一个时钟信号,并在每一个数据位的传输周期的第一个时钟周期的上升沿时刻,拉低数据信号线作为隐含时钟起始位,即将数据信号线的状态设置为时钟起始状态,以同步告知背板可以开始回传数据,主板可开始同步接收背板回传的数据。

S602,从数据接收阶段的每个传输周期的第二个时钟周期开始,根据信号数据线的状态确定第一接收数据的数据位,以从背板上接收第二接收数据。

本实施例中,当主板拉低数据信号线后,即可在传输周期的第二个时钟周期的上升沿时刻开始接收数据。具体的,可以在第三个时钟周期的上升沿时刻读取数据信号线的状态来确定第一接收数据的数据位,若信号数据线的状态为高阻状态,则确定第一接收数据的数据位为第一数值,其中第一数值可以具体为“1”的数值;若信号数据线的状态为低电平状态,则确定第一接收数据的数据位为第二数值,其中的第二数值可以具体为“0”的数值。

S603,在数据接收阶段的每个传输周期的最后一个时钟周期释放数据信号线。

本实施例中,当主板在第二个和第三个时钟周期读取数据后,可以在传输周期的最后一个时钟周期的上升沿时刻拉高数据信号线,即将数据信号线的状态设置为高阻状态,从而释放数据信号线,以告知背板结束回传数据。

示例性说明图16实施例所述方法,在主板的CPLD接收数据阶段,host CPLD内部产生主板时钟host_clk,在具体接收一个数据位的数据时,以接收数据位为0的数据为例,如图14所示的接收一个数据位为0的时序图(图中示出了背板回传数据位为0的时序图),在主板的第一个host_clk周期的上升沿时刻(图中主板时钟上标1的位置),host CPLD拉低数据信号线作为隐含时钟起始位,在第二个host_clk周期的上升沿时刻(图中主板时钟上标2的位置)通过读取数据信号线的状态来接收数据,此时数据信号线的状态为低电平状态,因此读取的数据位为“0”;或者,为了提高读取数据的准确性和稳定性,在第三个host_clk周期的上升沿时刻(图中主板时钟上标3的位置)通过读取数据信号线的状态来接收数据,此时数据信号线的状态为低电平状态,因此读取的数据位为“0”;在第四个host_clk周期,将数据信号线的状态设置为高阻状态1’bz,以释放数据线。

再例如,以发送数据位为1的数据为例,如图13所示的接收一个数据位为1的时序图(图中示出了背板发送数据位为1的时序图),在主板的第一个host_clk周期的上升沿时刻(图中主板时钟上标1的位置),host CPLD拉低数据信号线作为隐含时钟起始位,在第二个host_clk周期的上升沿时刻(图中主板时钟上标2的位置)通过读取数据信号线的状态来接收数据,此时数据信号线的状态为高阻状态1’bz,因此读取的数据位为“1”;或者,为了提高读取数据的准确性和稳定性,在第三个host_clk周期的上升沿时刻(图中主板时钟上标3的位置)通过读取数据信号线的状态来接收数据,此时数据信号线的状态为高阻状态1’bz,因此读取的数据位为“1”;在第四个host_clk周期,将数据信号线的状态设置为高阻状态1’bz,以释放数据线。

在一个实施例中,当主板接收完一个数据位时,主板还需要确定是否继续接收数据,或停止接收数据。因此,如图17所示,图16实施例所述方法还包括:

S604,在每次到达数据接收阶段的每个传输周期的最后一个时钟周期时,启动第二计数器进行计数,并确定第二计数器的计数值是否达到第一接收数据的长度,若达到,则执行步骤S605,若未达到,则执行步骤S606。

其中,主板的CPLD内部设置有第二计数器。第二计数器用于记录主板接收数据的位数,从而根据记录的位数确定主板是否接收完全部的第一接收数据。

本实施例中,待传输的第一接收数据的字节长度根据设计需求可定义为固定长度。当主板接收背板回传的数据,并在每次到达传输周期的最后一个时钟周期时,即最后一个时钟周期的上升沿时刻(比如,在图13或图14中标4的位置),启动第二计数器进行计数,并确定第二计数器的计数值是否达到第一接收数据的长度。

S605,进入数据确认阶段。

若第二计数器的计数值达到第一接收数据的长度,说明主板已经接收完第一接收数据,也就是说,主板已经进行了一轮发送和接收数据,此时,由于实际应用中,在数据信号线传输过程中对线缆的热插拔可能造成不完整数据包或错误数据包的传送,对于数据接收方,只有在检测到完成一个完整的数据包(发送数据+接收数据)的传输后,才将接收到的数据从暂存器赋给数据寄存器进行存储,因此主板需要进入数据确认阶段,以确认发送的第一发送数据和接收的第一接收数据是否符合完整数据包的要求。

可选的,主板在进入数据确认阶段之后,主板的CPLD拉低数据信号线,并根据第一发送数据的长度和第一接收数据的长度确定数据是否传输完整,若确定数据传输完整,则存储第一接收数据,并进入空闲阶段;若确定数据未传输完整,则丢弃第一接收数据,并重新进入数据发送阶段,发送新的第一发送数据。

主板的CPLD在判断数据是否传输完整时,可以先将第一发送数据的长度和第一接收数据的长度求和,再将求和结果与预设数据包的长度进行比较,若求和结果与预设数据包的长度一致,则说明数据传输完整,此时,可以将第一接收数据从暂存器中转移到数据寄存器中进行存储,然后主板中止发送同步的主板时钟信号host_clk,强制数据信号线进入空闲阶段。若求和结果与预设数据包的长度不一致,则说明数据传输不完整。此时,可以直接丢弃第一接收数据,重新进行一轮发送数据和接收数据的过程,即重新进入主板数据发送阶段(上述S201的步骤),以重新发送和接收数据,直到获取到完整的第一接收数据为止。

可选的,在进入数据确认阶段时,除了确认数据是否传输完整,还可以进一步的对接收到的数据进行校验,具体可以在接收到的数据最后一个字节增加循环冗馀校验(Cyclic redundancy check,CRC)的校验码来进一步增强数据传输的可靠性,当检验到CRC错误时丢弃该次传输的数据包。由于串行IO信号是实时刷新的,丢弃不可靠数据包造成的数据刷新延时对于背板上的硬盘状态、发光二极管LED灯等低速信号的检测与控制没有影响。

S606,重新进入下一个传输周期的第一个时钟周期,将数据信号线的状态设置为时钟起始状态。

若第二计数器的计数值未达到第一接收数据的长度,说明主板还未接收完第一接收数据,需要继续接收第一接收数据,此时,主板重新进入数据接收阶段,并重新返回S601的步骤,进入下一个传输周期继续接收第一接收数据。

需要说明的是,主板进入上述空闲状态之后,主板的CPLD还会执行步骤:拉高数据信号线,并启动空闲计数器进行计数,以及在空闲计数器中的计数值达到预设阈值时,进入数据发送阶段发送新的第一发送数据,以进入新一轮的数据发送和接收。

其中,空闲状态对应的空闲周期可以由主板根据实际数据传输情况确定。比如,将超过传输周期的时钟周期可视为一个空闲周期,在该空闲周期内数据信号线的状态为高阻状态时,确定数据信号线处于空闲状态。比如,若四个host_clk周期为一个数据位的传输周期时,对应的六个host_clk周期可以视为一个空闲周期,或五个host_clk周期可以视为一个空闲周期。主板上的CPLD内部设置空闲计数器,空闲计数器用于记录空闲状态对应的时钟周期数。

在实际操作中,主板进入空闲阶段后,主板的CPLD拉高数据信号线,使数据信号线的状态处于高阻状态,并在空闲周期内一直保持这个状态,然后可以启动空闲计数器进行计数,当空闲计数器中的计数值达到预设阈值时,说明主板预开始发送新的数据,由空闲状态转换为数据发送状态,此时主板拉低数据信号线,发出同步主板时钟host_clk,即可进入数据发送阶段发送新的第一发送数据,以进入新一轮的数据发送和接收。

示例性说明上述主板在发送和接收完数据后进入空闲状态的方法,如图18所示的时序图,当主板发送数据,背板发送数据之后完成一个数据包的发送和接收,主板进入六个主板时钟周期的空闲状态,当六个主板时钟周期结束后,主板重新进入数据发送阶段发送数据。

上述图2-图18说明了主板发送数据,对应的背板接收数据,背板回传数据,对应的主板接收数据的四种信号传输方法,在实际应用中,按照300Kbps的比特数据传输,以半双工方式完成一个发送48bit与接受48bit的数据包,时间为325.8us, 除去空闲状态占据的时间,对输入/输出(Input/Output,I/O)的刷新率保持在3KHz以内,本信号传输方法可以满足对于低速的I/O信号刷新速率要求。在数据传输的传输周期的最后一个时钟周期

本申请还可以采用有限状态机的设计实现本文提出的信号传输方法,其中进行了隐含时钟同步串行I/O传输与接受接口功能设计。有限状态机( Finite State Machine,FSM)是表示有限个状态及在这些状态之间的转移和动作等行为的数学模型。下面实施例示例性说明采用有限状态机实现信号传输方法。

预先说明:host_DAT_Ctr表示host_CPLD对数据信号线的控制状态,slave_DAT_Ctr为Slave_CPLD对数据信号线的控制状态。主板和背板之间在物理上由一根数据信号线连接(参见图1)。host_DAT_Ctr与slave_DAT_Ctr均具有“1’bz”与“1’b0”二种状态,即高阻状态和低电平状态,当host_DAT_Ctr与slave_DAT_Ctr中的一个设置为“1’bz”时,该数据信号线的状态由另一个的状态决定,具体参见表一所示的数据信号线控制表。

表一

该表一中的状态“1’b1”表示数据信号线由外部上拉电阻上拉至“1”,实际上此时的数据信号线也处于高阻状态,即不受主板控制,也不受背板控制。

在一个实施例中,提供了采用有限状态机实现host_CPLD的数据发送与接收功能的状态转移流程,如图19所示,该流程包括:

(1)状态0(空闲状态SM_IDLE):host_CPLD上电后初始化进入空闲状态(使用IDLE表示),IDLE状态由空闲计数器IDLE_COUNTER设置停留6个host_clk的周期实现。 IDLE_COUNTER计数结束后转移至状态1(数据发送阶段SM_TXD_START)。在这个阶段,slave_CPLD不对数据信号线进行控制,因此对于数据信号线的控制状态Slave_DAT_Ctr始终保持高阻状态1’bz。

(2)状态1(数据发送阶段SM_TXD_START):host_CPLD内部生成主板时钟信号host_clk, 每四个host_clk发送1个数据位的数据。在第1个host_clk的上升沿时刻,host_CPLD拉低数据信号线,使数据信号线的状态为时钟起始状态,即使数据信号线的控制状态host_DAT_Ctr=1’b0,标志着开始发送数据,此时host_CPLD转移至状态2(设置发送数据SM_TXD_SETTING);

(3)状态2(设置发送数据SM_TXD_SETTING):在host_clk的第2个上升沿时刻,host_CPLD根据第1个发送的数据位TXD[n] 的状态对host_DAT_Ctr置位,当TXD[n]数据为1时,host_DAT_Ctr被设置为高阻状态1’bz,当TXD[n]数据为0时,host_DAT_Ctr被设置为低电平状态1’b0。当host_CPLD对host_DAT_Ctr置位后,host_CPLD转移至状态3(数据保持SM_TXD_HOLD);

(4)状态3(数据保持SM_TXD_HOLD):在host_clk的第3个上升沿开始的时钟周期为数据保持周期,使数据信号线的控制状态host_DAT_Ctr保持当前状态,数据信号线提供一个稳定的状态供slave_CPLD读取数据,然后,host_CPLD转移至状态4(释放数据信号线SM_TXD_RELEASE)。

(5)状态4(释放数据信号线SM_TXD_RELEASE):在host_clk的第4个上升沿开始的时钟周期里,设置数据信号线的控制状态host_DAT_Ctr为高阻状态1’bz,使数据信号线被host_CPLD释放,具体操作时由外部上拉电阻将数据信号线置高。在该状态下,对已经发送的数据位进行计数,即启动发送数据计数器TXD_COUNTER进行计数。如果TXD_COUNTER记录的数据位的长度已经达到发送数据的长度,则在下一个host_clk的上升沿时刻转移至状态5(数据接收阶段SM_RXD_START);如果TXD_COUNTER记录的数据位的长度未达到发送数据的长度,表明host_CPLD发送数据未结束,转移至状态1(数据发送阶段SM_TXD_START)进入下一个数据位的发送周期。

上述的4个host clk的数据位传输过程中,在host_clk的第1个时钟周期设置host_DAT_Ctr=1’b0;在host_clk的第2,3个时钟周期host_DAT_Ctr的状态由待传输的数据位决定。当传输数据为1时,host_DAT_Ctr的状态在4个host_clk的时钟周期内的第2,3,4周期保持高阻状态1’bz。当传输数据为0时,host_DAT_Ctr的状态在4个host_clk的时钟周期内的第1,2,3周期保持低电平状态1’b0,在第4时钟周期设置host_DAT_Ctr的状态为1’bz。

(6)状态5(数据接收阶段SM_RXD_START):host_CPLD重复发送数据这一过程,直到所有的数据发送结束。发送数据结束后转入背板向主板回传数据,此时,主板启动4个host_clk为一个数据位接收的接收数据循环。在接收数据的第1个host_clk周期,host_CPLD拉低数据信号线,设置host_DAT_Ctr的状态为低电平状态1’b0,使数据信号线的状态为时钟起始状态,以通知slave_CPLD启动向host_CPLD的数据回送循环。此时,host_CPLD接收slave_CPLD回送的数据,且转移至状态6(准备接收数据SM_RXD_PRELATCH)。

(7)状态6(准备接收数据SM_RXD_PRELATCH):host_CPLD在接受数据的第2个host_clk时钟周期,设置host_DAT_Ctr的状态为高阻状态1’bz, host_CPLD释放对数据信号线的控制;此时数据信号线的实际状态取决于slave_DAT_Ctr的状态,host_CPLD开始准备接收数据。然后,host_CPLD转移至状态7(读取数据SM_RXD_LATCH)。

(8)状态7(读取数据SM_RXD_LATCH):host_CPLD在接受数据的第3个host_clk时钟周期,设置host_DAT_Ctr的状态为高阻状态1’bz, host_CPLD释放对数据信号线的控制;此时host_CPLD根据数据信号线的host_DAT_Ctr的实际状态读取数据,host_DAT_Ctr的实际状态取决于slave_DAT_Ctr的设置,并将读取的数据保存到数据接收暂存器RXD_TEMP[n],n=RXD_COUNTER。RXD_COUNTER为接收数据计数器,其中的计数值代表接收数据的长度。然后,host_CPLD转移至状态8(释放数据信号线SM_RXD_RELEASE)。

(9)状态8(释放数据信号线SM_RXD_RELEASE):在host_CPLD接收数据的第4个host_clk时钟周期,host_DAT_Ctr被设置为高阻状态1’bz, host_CPLD释放对数据信号线的控制;此时slave_CPLD也将释放对数据信号线的控制,数据信号线在外部上拉电阻作用下被拉高,表明结束一个数据位的接收。如果接收数据计数器RXD_COUNTER记录的数据长度小于待接收数据传输长度RXD_LENGTH,则转移回状态5(数据接收阶段SM_RXD_START)进行下一个数据位的接收。否则在RXD_COUNTER记录的数据长度达到接收数据的长度RXD_LENGTH后,在第4个host_clk时钟周期的上升沿进入转移到状态9(数据确认SM_RXD_END)。

(10)状态9(数据确认SM_RXD_END):进入本状态后host_CPLD拉低数据信号线,使数据信号线的Host_DAT_Ctr状态被设置为低电平状态,以通知slave_CPLD完成发送数据包后准备进入空闲状态IDLE,同时在本状态下执行数据包确认,具体的将发送数据长度TXD_LENGTH和接收数据长度RXD_LENGTH之和与实际数据包的长度比对,再根据对比结果确定数据包是否传输完整,若传输完整则进入状态0(空闲状态SM_IDLE),若未传输完整,则丢弃之前接收到的数据,并重新进入状态1(数据发送阶段SM_TXD_START)。在本状态下还可以设置CRC校验功能对接收到的数据进行校验,若校验接收的数据没有问题,则进入状态0(空闲状态SM_IDLE);若校验接收的数据存在问题,则丢弃接收的数据,并进入状态5(数据接收阶段SM_RXD_START)重新接收数据。其中,在进入状态0(空闲状态SM_IDLE)时,可以通过设置IDLE状态的空闲计数器IDLE_COUNTER,并在该空闲计数器IDLE_COUNTER中的计数值达到预设阈值时,在下一个host_clk时钟周期的上升沿转移到状态0(空闲状态SM_IDLE)。

从上述状态0到状态9的执行周期为发送数据所占的时钟周期、接收数据所占的时钟周期、数据确认所占的时钟周期和空闲状态所占的时钟周期之和。在实际应用中,若4个host_clk时钟周期为一个数据位的传输周期,则对于传输64bit的发送与64bit的接收数据,合计需要的执行周期为4*128+7=519个host_clk时钟周期。在host_clk频率为1.2MHz(时钟周期为0.83us)时,完成一个数据包的传输时长是432.5us。

在一个实施例中,提供了采用有限状态机实现slave_CPLD的数据接收与发送功能的状态转移流程,在slave_CPLD的接受端,slave_CPLD内部设置参考时钟slave_clk,slave_clk的频率与host_clk相比,需要大于host_clk的2倍以上,确保slave_CPLD能够准确分辨数据信号线的上升或下降边沿。如图20所示,上述流程包括:

(1)状态0(空闲状态SM_IDLE):slave_CPLD在初始化结束后,进入空闲状态IDLE,在空闲状态,slave_DAT_Ctr被置为高阻状态1’bz。当 slave_CPLD侦测到数据信号线的第1个下降沿时,此时数据信号线的状态为时钟起始状态,slave_CPLD转移至状态1(开始接收数据SM_RXD_START)开始准备接收数据。

(2)状态1(开始接收数据SM_RXD_START):slave_CPLD在数据信号线保持低电平期间,slave_CPLD启动低电平计数器L_counter记录低电平周期的时长。当侦测到数据信号线由低电平被拉高时,中止L_counter计数,转移到状态2(接收数据SM_RXD_PRELATCH)。

(3)状态2(接收数据SM_RXD_PRELATCH):当slave_CPLD侦测到数据信号线由低电平被拉高后,启动高电平计数器H_counter记录高阻周期的时长。当slave_CPLD再次侦测到数据信号线由高阻状态转换为低电平状态时,中止H_counter计数,转移到状态3(读取数据SM_RXD_LATCH);

(4)状态3(读取数据SM_RXD_LATCH):由于在host_CPLD端我们设计在一个数据位的传输周期中,数据信号线被拉低、拉高的持续时间由传输的数据的数值决定,当传输的数据为1时,在一个数据位的传输周期中低电平和高电平持续时间的比例为1:3,当传输的数据为0时,在一个数据位的传输周期中低电平和高电平持续时间的比例为3:1。在slave_CPLD端,通过对一个数据位的传输周期结束时比较L_couner与H_counter的计数值 即可判定slave_CPLD接收的这个数据的数据位是1还是0。

当完成数据位的判定后,可以将接收的数据写入接收数据暂存器RXD_TEMP[n]中。再根据接收数据位计数器RXD_counter判断数据接收是否结束,如果RXD_counter记录的计数值已经达到接收数据的长度RXD_Length, 则转移到状态4(开始发送数据SM_TXD_START);如果RXD_counter记录的计数值没有达到RXD_Length, 则转移到状态1(开始接收数据SM_RXD_START)继续接收从host_CPLD端传送的数据。

(5)状态4(开始发送数据SM_TXD_START):在本状态下,slave_CPLD侦测数据信号线的状态,若侦测到数据信号线为时钟起始状态,即可开始发送数据,slave_CPLD根据待发送数据的状态设置数据信号线的状态。如果slave_CPLD的待发送数据为1,则slave_CPLD端设置数据信号线的状态为高阻状态1’bz,使数据信号线在host_CPLD结束同步host_clk的发送后被拉高;如果slave_CPLD的待发送数据为0,则slave_CPLD端设置数据信号线的状态为低电平状态1’b0,使数据信号线被拉低,由于slave_CPLD内部的参考时钟slave_clk的频率比host_CPLD内部的时钟host_clk的频率高2倍以上,slave_CPLD能够在host_CPLD释放数据信号线前接管数据信号线的控制权。在发送数据期间,slave_CPLD会锁定数据信号线为1’b0,并保持该状态一定预设时长,该预设时长可使用数据保持计数器hold_timer记录,数据保持计数器hold_timer记录的时长可以根据前述状态1中的低电平计数器L_counter和状态2中的高电平计数器H_counter中的计数值确定,比如,hold_timer=maximum{L_COUNTER, H_COUNTER},这意味着slave_CPLD可以锁定数据信号线直到hold_timer计数结束,此时host_CPLD的第3个host_clk的上升沿结束,确保host_CPLD能够可靠地锁定slave_CPLD回送的数据位。slave_CPLD在锁定延迟hold_timer计数结束后,释放数据信号线,数据信号线在外部上拉电阻作用下拉高,以结束数据‘0’传输。当hold_counter计数达到hold_timer记录的时长,且数据信号线的状态由低电平状态转换为高阻状态时转移至状态5(释放数据信号线SM_TXD_RELEASE)。

(6)状态5(释放数据信号线SM_TXD_RELEASE):在该状态下,slave_DAT_Ctr被置为高阻状态1’bz,slave_CPLD释放对数据信号线的控制;如果侦测到数据信号线被拉低,则在参考时钟slave_clk的上升沿转移到状态6(结束发送数据SM_TXD_PRE_END)。

(7)状态6(结束发送数据SM_TXD_PRE_END):在本状态下,slave_CPLD对回送的数据位进行计数,如果回送数据计数器TXD_counter的计数值对应的数据长度小于待回送的数据位长度TXD_length,则在参考时钟slave_clk的上升沿转移到状态4(开始发送数据SM_TXD_START);如果TXD_counter的计数值对应的数据长度达到待回送的数据位长度TXD_length,则在slave_clk的上升沿转移到状态7(数据确认SM_END)。

(8)状态7(数据确认SM_END):进入本状态后slave_CPLD拉低数据信号线,并在数据信号线被拉低的下降沿,slave_CPLD判断是否完成数据发送,同时对接收阶段收到的RXD_TEM暂存器的数据进行CRC的检验,以及对数据包的完整性进行验证,若数据包通过验证则将接收到的数据赋给数据寄存器。slave_CPLD在参考时钟slave_clk的上升沿,且数据信号线被host_CPLD拉高时,则转移至状态0(空闲状态SM_IDLE),若数据包未通过验证,则丢弃接收到的数据,并转移到状态1(开始接收数据SM_RXD_START)重新开始接收数据。需要说明的是,在上述状态0-状态7之间转移时,数据信号线若被拉高超过5个host_clk的时长,则强制返回状态0(空闲状态SM_IDLE)。

将图19和图20所述的信号传输方法应用在如图21所示的电路板时,实现了对主板和背板之间边带信号的压缩,如图21所示,主板和背板之间的数据信号线也称为smart_link,除了CLK_100M_P、CLK_100M_N、PCIERST#等信号,其它边带信号均通过smart_link传输。背板上硬盘(Hard Drive Disk,HDD)的状态信息、I2C_HP的点灯控制ATTENTION_LED也由smart_link传输,因此I2C_HP只需要进入主板CPLD,通过主板CPLD读取各个迷你输入输出(Mini Cool Edge Input/output,MCIO)的HDD状态,并控制LED。由此,边带信号压缩为:CLK_100M_P、 CLK_100M_N、PCIERST#、SMART_LINK、P3V3_AUX等四个。可以由一个2*28pin的Genz-1C连接器实现原来2*37pin的MCIO或Slimline连接器实现。

本实施例中,应用smart_link对MCIO连接线路的设计简化。采用smart_link可以将边带信号中除了PCIE_CLK、 PCIE RESET以及PCIE/SATA信号之外的其它sideband边带信号整合到一个串行传输信号中,由主板CPLD与背板CPLD在每一个MCIO建立这样的同步串行连接。

PORT_ID[4..0]、BP_SLOT_ID[4..0]、BP_TYPE[2..0]、BIF[2..0]等信号均通过smart_link传输,同时硬盘HDD的状态信号HDD_PRSNT#、ACTIVITY、IFDET#等也由smart_link从背板的CPLD传送到主板的CPLD。中央处理器(central processing unit,CPU)的I2C_HP以及基板管理控制器(Baseboard ManagementController,BMC)的I2C_BMC则通过I2C总线访问主板CPLD,BMC对背板的HDD_LOCATE#、HDD_ERR#等LED控制信号也由主板CPLD传送到B背板CPLD。

此设计减少了每一组MCIO线缆中的边带信号,PORT_ID[4..0]、BP_SLOT_ID[4..0]、BP_TYPE[2..0]、BIF[2..0]等15个信号线均可整合到smart_link中,降低了MCIO线缆的成本。I2C_HP也由访问背板CPLD改为访问主板CPLD,避免了从MCIO线缆或是专用的I2C线缆连接到背板上,降低了系统线缆连接的复杂度,例如,参见22所示的采用smart_link的精简边带信号的主板和背板的连接示意图。

本申请提供的信号传输方法所能达到的技术效果如下:

(1)本申请设计了同步串行通信的smart_link协议,将同步时钟嵌入到数据信号线中传输数据,不需要额外设置同步时钟信号线,减少了主板与背板之间信号线连接的数量,精简了主板与背板之间的连接方式。

(2)在smart_link的设计中,内嵌的同步时钟可以实现主板和背板之间通信的波特率一致,解决主板和背板之间异步通信的波特率匹配问题。

(3)主板与背板不需要精确的时钟同步,只要保证主板时钟host_clk的频率高于背板的参考时钟的频率2倍或以上,而主板和背板的CPLD的内嵌时钟可高达数十兆,远高于串行传输的传输率基础频率要求。

(4)在背板端,采用数据位的占宽比来判断接收数据是’0’或‘1’,通过一个数据位的传输周期内低电平与高电平的占比来判断接收的数据数值,避免了基于时钟边沿锁存时的时序要求。对于数据信号线的捕获操作不敏感,改善数据传输的稳定性。比采用时钟边沿锁存有更好的准确率以及抗干扰性。

(5)采用smart_link实现背板与主板的边带信号传输,大大减少了线缆的边带信号数量,降低了连接复杂度与成本。

(6)由于smart_link具有快速、信号容量大的特点, CPU通过I2C_HP访问背板可以改为从主板CPLD的寄存器读取信息,减少了I2C的连接复杂度。

(7)对比2*37的MCIO与2*28的Gen-Z 1-C连接器,一个是传输的边带信号减少,由20个减少到4个,总信号数由2*37=74减少到2*28=56个,信号数量的减少意味着线缆以及连接器成本的大幅度降低(降低15%至20%的成本),尤其是减少了背板、主板的印刷电路板(Printed Circuit Board,PCB)上连接器占据的宝贵空间。

应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。

基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的信号传输方法的信号传输装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个信号传输装置实施例中的具体限定可以参见上文中对于信号传输方法的限定,在此不再赘述。

在一个实施例中,如图23所示,提供了一种信号传输装置,包括:

设置模块11,用于将所述数据信号线的状态设置为时钟起始状态。

第一传输模块12,用于在所述数据信号线为所述时钟起始状态的情况下,通过所述数据信号线与所述背板进行信号传输。

在一个实施例中,如图24所示,提供了一种信号传输装置,包括:

侦测模块21,用于侦测所述数据信号线的状态。

第二传输模块22,用于在侦测到所述数据信号线处于时钟起始状态时,通过所述数据信号线与所述主板进行信号传输。

上述信号传输装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。

在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:

将所述数据信号线的状态设置为时钟起始状态;

在所述数据信号线为所述时钟起始状态的情况下,通过所述数据信号线与所述背板进行信号传输。

在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:

侦测所述数据信号线的状态;

在侦测到所述数据信号线处于时钟起始状态时,通过所述数据信号线与所述主板进行信号传输。

在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:

将所述数据信号线的状态设置为时钟起始状态;

在所述数据信号线为所述时钟起始状态的情况下,通过所述数据信号线与所述背板进行信号传输。

在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:

侦测所述数据信号线的状态;

在侦测到所述数据信号线处于时钟起始状态时,通过所述数据信号线与所述主板进行信号传输。

在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:

将所述数据信号线的状态设置为时钟起始状态;

在所述数据信号线为所述时钟起始状态的情况下,通过所述数据信号线与所述背板进行信号传输。

在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:

侦测所述数据信号线的状态;

在侦测到所述数据信号线处于时钟起始状态时,通过所述数据信号线与所述主板进行信号传输。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random AccessMemory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。

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

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

技术分类

06120115934601