一种基于K码的Serdes链路传输方法
技术领域
本发明涉及数据通信接口技术领域,特别是一种基于K码的Serdes链路传输方法。
背景技术
串行器/解串行器(Serializer/Deserializer,简称SerDes)是一种时分复用、点对点的串行通信技术,该技术将链路发送端多路低速的并行传输数据转换成高速的串行数据,通过传输媒介进行信号传输,然后在接收端将高速串行信号通过时钟恢复技术(CDR)恢复出传输时钟,并分解出低速并行数据。该技术能够最大限度的利用传输媒介的信道容量,并且管脚数少、传输速度快,因此得到了广泛应用。
但是在通过SerDes进行板间通信的过程中,经常会遇到数据传输错误,造成该现象的原因主要有两个:一是参考时钟的不稳定性,由于SerDes属于高速串行传输技术,因此对参考时钟要求极高,如果系统内部存在一些工作不理想的器件,则会影响到参考时钟的稳定性,从而导致接收端恢复时钟不稳定,产生数据传输错误;二则是外部环境的不稳定性,如器件松动导致的链路断开,受到强磁干扰、强噪声干扰及温度电流干扰等导致的链路不稳定等。针对如何建立稳定的SerDes链路以及实时自检并修复链路故障,尚未存在一套完整的解决方案。
发明内容
本发明的目的在于提供一种具备链路自检与自愈能力的基于K码的SerDes链路传输方法,从而建立正确的SerDes链路,保证用户数据的安全、稳健传输。
实现本发明目的的技术解决方案为:一种基于K码的Serdes链路传输方法,包括建链与中断复位两个部分,其中:
建链部分包括时钟恢复阶段、建链阶段、数据传输检测阶段和用户数据传输阶段,在任一阶段,SerDes链路两端均是自由收发,且使用的码字均为K码;
中断复位部分为:在建链任一阶段出现异常则请求中断复位,出现异常的端口向链路另一端发送复位码,将链路两端的流程均退回至建链的初始阶段。
进一步地,所述SerDes链路两端均是自由收发,且使用的码字均为K码,具体如下:
8B/10B编码是将8bit数值编码成10bit以保证串行链路中的直流平衡,8B/10B编码包含D码和K码两种码字,其中D码为数据编码,K码为特殊的控制代码;8B/10B编码中总共有12个K码,复位码、时钟恢复码、时钟锁定码、握手码、应答码、链路监测码均为不同的K码,由用户从12种K码中自由选择。
进一步地,所述时钟恢复阶段具体如下:
SerDes链路两端互发时钟恢复码,当任意一端的恢复时钟锁定后,该端开始交叉发送时钟恢复码和时钟锁定码;
若两端均未收到时钟锁定码,则在此阶段停留等待应答:当两端在指定时间内均收到时钟锁定码时,表明两端恢复时钟均已锁定并进入建链阶段;若停留时间超时,则请求中断复位,使得链路两端的流程均退回到初始阶段。
进一步地,所述建链阶段具体如下:
SerDes链路两端互发握手码,当任意一端接收到握手码后,该端开始交叉发送握手码和应答码;
若两端未收到应答码,则在此阶段停留等待应答:当两端在指定时间内均收到应答码时,即表示建链成功并进入数据传输检测阶段;若停留时间超时,则请求中断复位,使得链路两端的流程均退回到初始阶段。
进一步地,所述数据传输检测阶段,具体如下:
SerDes链路两端均发送用户指定的测试数据包,并接收测试数据包并进行校验:如果校验错误,表示该链路异常,则请求中断复位;如果校验正确,则进入用户数据传输阶段。
进一步地,所述用户数据传输阶段,具体如下:
若用户请求传输数据,则SerDes链路传输用户数据;在SerDes链路空闲时,传输链路监测码以监测SerDes链路的工作状态,状态异常则切断用户数据传输通路、上报异常状态并请求中断复位。
进一步地,所述SerDes链路两端均发送用户指定的测试数据包,接收对方发送的测试数据包并进行校验,具体如下:
根据用户命令使得SerDes链路两端发送指定包长和净荷的测试数据包,并对接收的测试数据包进行编号、包长计算和净荷解析,通过对编号、包长和包净荷进行校验来判断SerDes链路是否存在丢包、数据传输异常的问题。
本发明与现有技术相比,其显著优点在于:(1)该方法内所有特殊码字均为K码,这种码字的8B/10B编码方式与用户数据存在区别,因此可避免用户数据对链路状态的影响;(2)该方法在建链阶段采用交替发送握手码和应答码的方式,从而避免由于链路两端或各收发端口起始工作时间点不一致而导致的建链挂死问题;(3)该方法有较强的自愈能力,在稳健建链的任一阶段出现异常即可通过请求中断复位的方式尝试进行重新建链;(4)该方法不仅提前建立正确的SerDes链路,在用户数据传输的过程中,还实时监测链路状态并上报,以保证数据的安全传输。
附图说明
图1是本发明基于K码的Serdes链路传输方法的总体流程图。
图2是K码的8B/10B编码图。
图3是D码的8B/10B编码图。
图4是建链阶段链路两端的工作流程及数据交互图。
图5是数据传输检测阶段链路一端的具体结构图。
图6是用户数据传输阶段链路一端的具体结构图。
图7是链路中断后重新恢复链路过程示意图。
具体实施方式
本发明公开了一种基于K码的SerDes链路传输方法,该发明是针对SerDes器件工作特点所设计的传输方法,可建立正确的SerDes链路,保证安全的用户数据传输与较强的故障自愈能力,其主要包括建链与中断复位两个部分,其中:
(1)建链部分包括时钟恢复阶段、建链阶段、数据传输检测阶段和用户数据传输阶段,在任一阶段,SerDes链路两端均是自由收发,且使用的码字均为K码;
对于稳健建链部分,其流程如下:首先为时钟恢复阶段,对接的SerDes端口互发时钟恢复码,当任意端的恢复时钟锁定后,该端开始交叉发送时钟恢复码和时钟锁定码,当两端均收到时钟锁定码时,表明两端恢复时钟均已锁定并准备好进行建链;其次为建链阶段,两端互发握手码,当任意端接收到握手码后,开始交叉发送握手码和应答码,两端均收到应答码后建链成功;然后为数据传输检测阶段,该阶段两端发送指定的大数据包,并校验接收到的大测试数据包,若校验错误,则链路传输异常,此时请求中断复位,若校验正确,则链路传输正常且稳定,上报工作就绪状态并进入用户数据传输阶段;最后为用户数据传输阶段,此阶段下若有用户数据传输事件,则SerDes传输用户数据,若链路空闲,则SerDes发送链路监测码以检测链路状态,并在链路状态异常时切断用户数据传输通路、上报异常状态、请求中断复位。
(2)中断复位部分为:在建链任一阶段出现异常则请求中断复位,出现异常的端口向链路另一端发送复位码,将链路两端的流程均退回至建链的初始阶段。
中断复位在建链的每个阶段都起着至关重要的作用,在稳健建链任一阶段出现异常,如当前阶段停留时间超额,数据链路异常等,均可通过请求中断复位来尝试重建链路,出现异常端口向链路另一端发送复位码,使得链路两端均退回到建链的初始阶段即时钟恢复阶段,双方重新进行建链。由此可知,中断复位部分实现了该方法的自愈功能。
进一步地,所述SerDes链路两端均是自由收发,且使用的码字均为K码,具体如下:
8B/10B编码是将8bit数值编码成10bit以保证串行链路中的直流平衡,8B/10B编码包含D码和K码两种码字,其中D码为数据编码,K码为特殊的控制代码;8B/10B编码中总共有12个K码,复位码、时钟恢复码、时钟锁定码、握手码、应答码、链路监测码均为不同的K码,由用户从12种K码中自由选择。
进一步地,所述时钟恢复阶段实现SerDes链路两端恢复时钟的锁定,具体如下:
SerDes链路两端互发时钟恢复码,当任意一端的恢复时钟锁定后,该端开始交叉发送时钟恢复码和时钟锁定码;
若两端均未收到时钟锁定码,则在此阶段停留等待应答:当两端在指定时间内均收到时钟锁定码时,表明两端恢复时钟均已锁定并进入建链阶段;若停留时间超时,则请求中断复位,使得链路两端的流程均退回到初始阶段。
进一步地,所述建链阶段具体如下:
SerDes链路两端互发握手码,当任意一端接收到握手码后,该端开始交叉发送握手码和应答码;
若两端未收到应答码,则在此阶段停留等待应答:当两端在指定时间内均收到应答码时,即表示建链成功并进入数据传输检测阶段;若停留时间超时,则请求中断复位,使得链路两端的流程均退回到初始阶段。
进一步地,所述数据传输检测阶段,具体如下:
SerDes链路两端均发送用户指定的测试数据包,并接收测试数据包并进行校验:如果校验错误,表示该链路异常,则请求中断复位;如果校验正确,则进入用户数据传输阶段。
进一步地,所述用户数据传输阶段,具体如下:
若用户请求传输数据,则SerDes链路传输用户数据;在SerDes链路空闲时,传输链路监测码以监测SerDes链路的工作状态,状态异常则切断用户数据传输通路、上报异常状态并请求中断复位。
进一步地,所述SerDes链路两端均发送用户指定的测试数据包,接收对方发送的测试数据包并进行校验,具体如下:
根据用户命令使得SerDes链路两端发送指定包长和净荷的测试数据包,并对接收的测试数据包进行编号、包长计算和净荷解析,通过对编号、包长和包净荷进行校验来判断SerDes链路是否存在丢包、数据传输异常的问题。
本发明基于K码的SerDes链路传输方法,具有以下特点:
①结合稳健建链与中断复位两个部分,使其无论在数据传输的任意阶段出现异常,均可通过中断复位使双方都退回至时钟恢复阶段,重新进行稳健建链,从而保证了该方法较强的自愈能力。
②在稳健建链的任一阶段,SerDes链路两端均是自由收发,不采用主从模式,从而保证双方的工作进程一致,无需一方等待另一方。
③稳健建链中所使用的码字均为K码,在SerDes传输中,K码因与用户数据采用不同的8b/10b编码方式,保证用户数据传输的独立性,从而避免了用户数据对链路状态的干扰。
④建链阶段在任意一方接收到握手码后,交替发送握手码和应答码,从而避免链路两端或各端收发器件起始工作时间点不一致时产生的挂死问题,以保证正确的链路建立。
⑤稳健建链中包含数据传输检测阶段,该阶段可根据用户命令使得链路两端发送指定包长和净荷的测试数据包,并对接收的测试数据包进行编号、包长计算和净荷解析,通过对编号、包长和包净荷进行校验来判断SerDes链路是否存在丢包、数据传输异常等问题,以判断链路传输是否存在隐患;另外测试数据包的指定包长很长,以测试链路可否长时间传输数据,从而确保链路传输的稳定性。
⑥在用户数据传输阶段不仅传输用户数据,而且在链路空闲时会传输链路监测码,通过检测链路空闲时接收到的数据,判断其是否为监测码,即可判定链路是否存在异常,若存在异常,该方法会立即终止用户数据的传输,上传异常状态并请求中断复位,尝试对链路进行恢复,从而为用户数据的安全传输提供保障。
为了使本发明的目的、技术方案及优点更加清楚明确,以下参照附图和具体实施例对本发明进行进一步详细说明。
实施例
本实施例提供了基于K码的SerDes链路稳健传输方法,该方法由中断复位和稳健建链两部分组成,这两部分相辅相成,从而建立正确的SerDes链路,保证用户数据的安全传输以及完成链路自检工作。以下将结合图1对该方法的流程进行介绍。首先是时钟恢复阶段,在链路两端执行相应的时钟恢复操作后,若两端未收到应答,则在此阶段停留;若该阶段停留时间超时,则请求中断复位,中断复位会将自身流程退回到该方法的初始阶段,并发送复位码,使得对方也退回到初始阶段,两端重新进行建链;若SerDes链路两端均接收到应答,则该方法进入下一阶段。接着为建链阶段,该阶段同样存在应答等待状态,若该阶段停留时间超时,则会请求中断复位;若接收到应答,则进入数据传输检测阶段。在数据传输检测阶段中,各接收端会对接收到的数据进行校验,若校验错误,则请求中断复位;若校验正确,则开始用户数据传输。在用户数据传输阶段中,仍会在链路空闲时对链路状态进行检测,若链路状态异常,则会终止用户数据的传输、上报异常状态并请求中断复位。接下来对稳健建链的各个阶段进行详细介绍。
阶段1、时钟恢复阶段
SerDes属于高速串行传输技术,其须从串行数据中恢复出数据传输时钟和并行数据,因此在建链前,必须保证该链路可正确的恢复出时钟并锁定。首先,SerDes链路两端均发送时钟恢复码,采用K码的原因在于:一般建链过程中采用D码,但是所述方法中采用K码以保证用户数据的独立传输且避免用户数据对链路状态的干扰,图2和图3分别展示了8B/10B编码下相同8Bit数值所对应的K码和D码,当任意端接收到时钟恢复码字后,SerDes内部会通过时钟恢复技术从接收到的数据中恢复出数据传输时钟,并将该时钟通过一个时钟管理器,然后根据时钟管理器输出的时钟锁定信号来判断恢复时钟是否稳定。当任意端检测到时钟锁定信号后,表示该端的恢复时钟已锁定,但因无法判断对方时钟是否锁定,因此开始交替发送时钟恢复码和时钟锁定码,其中时钟锁定码用于告知对方本端时钟已成功锁定;最后,当任意端在检测到时钟锁定信号并接收到对方的时钟锁定码时,表示双方均已完成时钟锁定。
阶段2、建链阶段
在实际应用中,SerDes链路两端或各端收发器件的起始工作时间点可能不一致,这种现象会导致建链过程挂死,因此必须采用合理的方式才能建立正确的SerDes链路。图4展示了建链阶段的具体流程以及建链过程中链路两端的数据交互。首先,SerDes链路两端A、B均发送握手码;接着,若端口A接收到握手码,而端口B未收到的握手码,即可判断此时端口A的接收端和端口B的发送端已正常工作,而端口A的发送端或端口B的接收端尚未正常工作,若此时端口A只发送应答码,当端口B接收端正常工作时,由于未接收到端口A发送的握手码,就会一直卡死在握手阶段,所以此时端口A应交替发送握手码和应答码;最后,在端口B接收到握手码后,同样开始交替发送握手码和应答码,此时端口A和B均可接收到对方的应答码,即完成建链。
阶段3、数据传输检测阶段
在建链完成后,虽已能保证该条SerDes链路是连通的,但是却无法保证该条链路在数据传输过程中的稳定性,因此需要通过发送测试数据包来初步确认该链路是否满足用户数据传输稳定性的要求。该阶段的具体结构如图5所示。首先,将用户指定的测试数据存储在存储单元中;接着,对发送的测试数据包进行编号,并将编号、包长度、包内容标识作为包头,将其与存储单元中读出的测试数据进行组合生成测试数据包,测试测试数据包一般较大,其目的是通过测试该链路是否能长时间传输数据来衡量链路传输的稳定性。链路发送端在发送测试数据包的同时,接收端接收对方传输的数据并进行校验。校验内容包括以下3项:(1)对接收到的测试数据包进行编号,将编号与测试数据包头中编号相比,以观察该条链路是否存在丢包;(2)对接收到的测试数据包长度进行计数,在该包传输结束后,将该计数值与测试数据包头中的包长相比,以判断链路中是否存在数据丢失的现象;(3)根据包头中的包内容标识,从相应的存储单元中读出测试数据并将其与接收到的测试数据包净荷相比,以判断数据是否传输错误;如果以上校验均正确,即该条链路正常且稳定,可进行用户数据的传输;若有其中一项校验错误,则请求中断复位使得两端均退回至时钟恢复阶段。
阶段4、用户数据传输阶段
在经过以上三个阶段后,表明该SerDes链路可进行用户数据的传输。该阶段的具体结构如图6所示。当用户请求数据传输时,该SerDes链路上传输有效的用户数据;SerDes属于高速串行传输技术,其传输容易受到外部环境的影响,另外在长时间传输数据的情况下,可能会出现错误累积,从而导致某一数据位出错,因此在用户数据传输的过程中也应时刻监测链路状态。因此当该链路空闲时,两端均会传输链路监测码,该监测码用来监测SerDes链路的工作状态。链路两端均会检测链路空闲时接收到的数据,若其不是监测码,表示链路工作异常,则立即切断用户数据的传输通路,上报异常工作状态并请求中断复位,使得两端均退回至时钟恢复阶段以试图对链路进行重建。
图7展示了在用户数据传输阶段链路突然断开后,该方法对该链路所进行的一系列恢复操作,首先是告知用户链路的异常工作状态,并且切断用户数据的传输通路;然后则是请求中断复位,开始重新建链;最后在稳健建链完成后,告知用户链路已准备就绪可进行数据传输,并重新接通用户数据通路,从而使得链路数据传输恢复正常。若其是监测码,则链路正常且稳定,可继续传输用户数据。