专利名称:通过fifo消除不同高速串行链路间误差的方法及系统的制作方法
技术领域:
本发明涉及网络通信领域技术,尤其是一种通过FIFO消除不同高速串行链路间误差的方法及系统。
背景技术:
目前在很多高速数据传输的应用中,为保证数据传输的速率,往往需要将一组数据帧分割成若干个同步数据,然后在数条高速串行链路上并行传输所述的同步数据,最后在接收方将各个同步数据恢复成原先的一组数据帧。然而,由于实际物理传输的原因,比如各条链路传输数据的速率不同等,各条链路之间的同步数据之间会产生误差时间,这样各条链路上的接收方便不在同一时刻接收到各个同步数据,从而给数据的恢复带来了困难。
发明内容
针对上述技术问题,本发明的目的在于提供一种通过FIFO消除不同高速串行链路间误差的方法。通过在每个链路上存放一个FIFO,将接收到的数据存放于FIFO中,利用 FIFO的积累数据的延时性消除各条链路之间的误差。本发明的另一目的在于提供了一种可应用上述方法的通过FIFO消除不同高速串行链路间误差的系统。其中,一种通过FIFO消除不同高速链路间误差的方法,该方法包括以下步骤
51、接收各条链路上的同步数据,并将所述同步数据存储于各条链路中对应设置的 FIFO 中;
52、设定Pop时间点并在所述Pop时间点从各条链路上对应的所述FIFO中同时提取出所述同步数据;
53、将从各条链路中对应的FIFO中提取出的同步数据恢复为原始数据帧。作为本发明的进一步改进,所述步骤Sl具体包括
511、接收各条链路发送的同步数据;
512、在某条链路首先接收到一个帧数据时,计数器开始计数;
513、将各条链路上接收到的同步数据存储于各条链路中对应设置的FIFO中。作为本发明的进一步改进,所述S2步骤具体包括
521、根据各条链路的同步数据之间的误差时间来设定Pop时间点;
522、在计数器计数到所述Pop时间点时,查看并判断是否所有FIFO中均有数据,若是, 执行S33 ;若否,则重新设定Pop时间点;
523、从各条链路上对应的所述FIFO中同时提取出所述同步数据。作为本发明的进一步改进,所述步骤S22中Pop时间点的重新设定具体为在现有基础上延后Pop时间点。相应地,一种通过FIFO消除不同高速链路间误差的系统,其包括数据接收单元、用于接收各条链路上的同步数据,并将所述同步数据存储于各条链路中对应设置的FIFO中;
数据提取单元、用于设定Pop时间点并在所述Pop时间点从各条链路上对应的所述 FIFO中同时提取出所述同步数据;
数据恢复单元、用于将从各条链路中对应的FIFO中提取出的同步数据恢复为原始数据帧。作为本发明的进一步改进,所述数据接收单元具体用于 接收各条链路发送的同步数据;
在某条链路首先接收到一个帧数据时,计数器开始计数;
将各条链路上接收到的同步数据存储于各条链路中对应设置的FIFO中。作为本发明的进一步改进,所述数据提取单元具体用于 根据各条链路的同步数据之间的误差时间来设定Pop时间点;
在计数器计数到所述Pop时间点时,查看并判断是否所有FIFO中均有数据,若是,则从各条链路上对应的所述FIFO中同时提取出所述同步数据;若否,则重新设定Pop时间点; 作为本发明的进一步改进,所述Pop时间点的重新设定具体为在现有基础上延后Pop 时间点。相较于现有技术,本发明通过将每条链路上传输的同步数据存放进对应设置的各个FIFO中,在读取FIFO时,每个FIFO中的数据会同时被取出,从而消除掉各条链路间的 Skew,进而使得高速串行链路传输的数据恢复更为容易。
图1为本发明一实施方式中通过FIFO消除不同高速串行链路间误差的方法的流程图2为本发明一实施方式中高速串行链路上并行传输数据的原理示意图; 图3为本发明一实施方式中在不同时刻各FIFO的存储状态示意图; 图4为本发明一实施方式中S2具体步骤的流程图; 图5为本发明一实施方式中S3具体步骤的流程图6为本发明一实施方式中通过FIFO消除不同高速串行链路间误差系统的模块示意图。
具体实施例方式以下将结合附图所示的各实施例对本发明进行详细描述。但这些实施例并不限制本发明,本领域的普通技术人员根据这些实施例所做出的结构、方法、或功能上的变换均包含在本发明的保护范围内。如图1所示,在本发明一实施方式中,所述通过FIFO消除不同高速串行链路间误差的方法,包括以下步骤
Si、接收各条链路上的同步数据,并将所述同步数据存储于各条链路中对应设置的 FIFO中;如图2所示,在高速链路的数据传输过程中,需要将一串原始数据帧100分成若干个同步数据110进行在各条链路上并行传输,以提高传输速率。所述链路包括若干条,
4每一条链路用于传输一段同步数据110,在本发明一具体实施方式
中,设置链路的数目为3 条,分别为链路0、链路1、链路2,那么相应地就会将原始数据帧100分为3段同步数据110 进行传输,比如,原始数据帧100为“0123456789abCdef”,那么同步数据110为“0369…”、 “147w”、“258b…”这些同步数据110均被传输方发送到3条对应的链路中。需要说明的是,各条链路上的传输延时不同。特别需要指出的是,在每条链路中,相应地设置了一个先进先出的数据缓存器 (First Input First Output,FIFO),在接收到各条链路上的同步数据后,每条链路上传输的数据便会被链路的接收方接收后都会被按次序存储于对应设置的FIFO中。S2、设定Pop时间点并在所述Pop时间点从各条链路上对应的所述FIFO中同时提取出所述同步数据;通常情况下FIFO设计包括相对分离的Push控制逻辑和Pop控制逻辑, 在Push控制逻辑中维护写指针,在Pop控制逻辑中维护读指针,在本实施方式中,在同步数据被存储到FIFO中后,需要设定Pop时间点,然后在每个Pop时间点到来之际,运用Pop控制逻辑从各条链路上的FIFO中提取出各个同步数据。值得一提的是,在各个Pop时间点从各个FIFO中提取出同步数据的动作是同时进行的。S3、将从各条链路中对应的FIFO中提取出的同步数据恢复为一串原始数据帧。在本实施方式中,在各个链路中均设定有一个计数器,当某条链路上首先接收了一个帧数据时,计数器便开始计数,当计数器计到Pop时间点时(这个数值是可配的,可以根据链路上容许的最大误差时间skew来定),那么所有链路上的FIFO开始同时提取数据, 尔后根据数据的传输速率,每隔一个时间段就会检查一下各条链路上的FIFO是否有数据, 并把数据提取出来,如果到了规定的时间还是有一下FIFO里面没有数据,那么说明链路与链路之间的skew已经超过了容限。如此反复直到这个帧结束,等待下个帧的开始。请参照图3所示,在时间0时刻,链路2首先接收到了一个帧数据,表示一个帧要开始,这个时候计数器开始计数,此刻计为0时刻;当第二个链路接收到数据时,即链路0接收到数据,此刻计为1时刻;当第三个链路接收到数据时,即链路1接收到数据,此刻计为2 时刻;在此之后,当计到时间3时刻的时候,最少的一条链路里面已经有2个数据,而最多的一个里面有5个数据,如果选择在这个时候提取FIFO里面的数据,那么由于是同时提取出来的数据,这些数据在同一个时刻被看到并被恢复出来。以后每隔“3时刻-2时刻+误差时间”这段时间内去查看各个FIFO里面的数据,并把它们同时提取出来,那么所有的数据就可以在接收端同时被看到,而整个帧可以被恢复出来。如果链路上的每条链路传输速度偏差较大,可以根据帧的长度,来选择第一次提取的时间,也就是使最慢的那条链路上的FIFO 积累足够的数据来调节各个链路上的传输速度,以达到正确恢复数据的目的。如图4所示,所述步骤Sl具体包括
511、接收各条链路发送的同步数据;
512、在某条链路首先接收到一个帧数据时,计数器开始计数;
513、将各条链路上接收到的同步数据存储于各条链路中对应设置的FIFO中。如图5所示,所述S2步骤具体包括
521、根据各条链路的同步数据之间的误差时间来设定Pop时间点;
522、在计数器计数到所述Pop时间点时,查看并判断是否所有FIFO中均有数据,若是,执行S33 ;若否,则重新设定Pop时间点;其中若在设定好的Pop时间点发现并非所有FIFO 里的数据均有数据,那就说明链路之间的误差时间超出了容限,需要重新设定Pop时间点, 优选地,可在现有基础上将Pop时间点延后,使最慢的那条链路上的FIFO积累足够的数据, 以确保能够在之后的新的Pop时间点能够从各个FIFO中同时提取到同步数据,从而达到正确恢复数据的目的。S23、从各条链路上对应的所述FIFO中同时提取出所述同步数据。如图6所示,在本发明一实施方式中,所述通过FIFO消除不同高速串行链路间误差的系统,包括
数据接收单元10、接收各条链路上的同步数据,并将所述同步数据存储于各条链路中对应设置的FIFO中;
如图2所示,在高速链路的数据传输过程中,需要将一串原始数据帧100分成若干个同步数据110进行在各条链路上并行传输,以提高传输速率。所述链路包括若干条,每一条链路用于传输一段同步数据110,在本发明一具体实施方式
中,设置链路的数目为3条, 分别为链路0、链路1、链路2,那么相应地就会将原始数据帧100分为3段同步数据110进行传输,比如,原始数据帧100为“0123456789abCdef”,那么同步数据110为“0369…”、 “147w”、“258b…”这些同步数据110均被传输方发送到3条对应的链路中。需要说明的是,各条链路上的传输延时不同。特别需要指出的是,在每条链路中,相应地设置了一个先进先出的数据缓存器 (First Input First Output,FIFO),在接收到各条链路上的同步数据后,每条链路上传输的数据便会被链路的接收方接收后都会被按次序存储于对应设置的FIFO中。数据提取单元20、该单元主要是用于设定Pop时间点并在所述Pop时间点从各条链路上对应的所述FIFO中同时提取出所述同步数据;通常情况下FIFO设计包括相对分离的Push控制逻辑和Pop控制逻辑,在Push控制逻辑中维护写指针,在Pop控制逻辑中维护读指针,在本实施方式中,在同步数据被存储到FIFO中后,需要设定Pop时间点,然后在每个Pop时间点到来之际,运用Pop控制逻辑从各条链路上的FIFO中提取出各个同步数据。值得一提的是,在各个Pop时间点从各个FIFO中提取出同步数据的动作是同时进行的。数据恢复单元30、用于将从各条链路中对应的FIFO中提取出的同步数据恢复为一串原始数据帧。在本实施方式中,在各个链路中均设定有一个计数器,当某条链路上首先接收了一个帧数据时,计数器便开始计数,当计数器计到Pop时间点时(这个数值是可配的,可以根据链路上容许的最大误差时间skew来定),那么所有链路上的FIFO开始同时提取数据, 尔后根据数据的传输速率,每隔一个时间段就会检查一下各条链路上的FIFO是否有数据, 并把数据提取出来,如果到了规定的时间还是有一下FIFO里面没有数据,那么说明链路与链路之间的skew已经超过了容限。如此反复直到这个帧结束,等待下个帧的开始。请参照图3所示,在时间0时刻,链路2首先接收到了一个帧数据,表示一个帧要开始,这个时候计数器开始计数,此刻计为0时刻;当第二个链路接收到数据时,即链路0接收到数据,此刻计为1时刻;当第三个链路接收到数据时,即链路1接收到数据,此刻计为2 时刻;在此之后,当计到时间3时刻的时候,最少的一条链路里面已经有2个数据,而最多的一个里面有5个数据,如果选择在这个时候提取FIFO里面的数据,那么由于是同时提取出来的数据,这些数据在同一个时刻被看到并被恢复出来。以后每隔“3时刻-2时刻+误差时间”这段时间内去查看各个FIFO里面的数据,并把它们同时提取出来,那么所有的数据就可以在接收端同时被看到,而整个帧可以被恢复出来。如果链路上的每条链路传输速度偏差较大,可以根据帧的长度,来选择第一次提取的时间,也就是使最慢的那条链路上的FIFO 积累足够的数据来调节各个链路上的传输速度,以达到正确恢复数据的目的。其中,所述数据接收单元10具体用于 接收各条链路发送的同步数据;
在某条链路首先接收到一个帧数据时,计数器开始计数;
将各条链路上接收到的同步数据存储于各条链路中对应设置的FIFO中。其中,所述数据提取单元20具体用于
首先,根据各条链路的同步数据之间的误差时间来设定Pop时间点; 然后,在计数器计数到所述Pop时间点时,查看并判断是否所有FIFO中均有数据,若是,执行S33 ;若否,则重新设定Pop时间点;其中若在设定好的Pop时间点发现并非所有 FIFO里的数据均有数据,那就说明链路之间的误差时间超出了容限,需要重新设定Pop时间点,优选地,可在现有基础上将Pop时间点延后,使最慢的那条链路上的FIFO积累足够的数据,以确保能够在之后的新的Pop时间点能够从各个FIFO中同时提取到同步数据,从而达到正确恢复数据的目的。最后,从各条链路上对应的所述FIFO中同时提取出所述同步数据。本发明通过将每条链路上传输的同步数据存放进对应设置的各个FIFO中,在读取FIFO时,每个FIFO中的数据会同时被取出,从而消除掉各条链路间的Skew,进而使得高速串行链路传输的数据恢复更为容易。本发明还通过可调的FIFO的Pop时间点来微调链路上的传输速度,以达到正确恢复数据的目的。此方案实现简单,便于操作,而且可灵活的调节。为了描述的方便,描述以上系统时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备 (可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施方式或者实施方式的某些部分所述的方法。以上所描述的系统实施方式仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施方式方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。本申请可用于众多通用或专用的计算系统环境或配置、或通讯系统环境或设备中。例如个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、 包括以上任何系统或设备的分布式计算环境等等,以及交换机、路由器、包括以上任何设备的通讯系统环境等等。本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施方式中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。上文所列出的一系列的详细说明仅仅是针对本发明的可行性实施方式的具体说明,它们并非用以限制本发明的保护范围,凡未脱离本发明技艺精神所作的等效实施方式或变更均应包含在本发明的保护范围之内。
权利要求
1.一种通过FIFO消除不同高速链路间误差的方法,其特征在于,该方法包括以下步骤51、接收各条链路上的同步数据,并将所述同步数据存储于各条链路中对应设置的 FIFO 中;52、设定Pop时间点并在所述Pop时间点从各条链路上对应的所述FIFO中同时提取出所述同步数据;53、将从各条链路中对应的FIFO中提取出的同步数据恢复为原始数据帧。
2.根据权利要求1所述的方法,其特征在于,所述步骤Sl具体包括511、接收各条链路发送的同步数据;512、在某条链路首先接收到一个帧数据时,计数器开始计数;513、将各条链路上接收到的同步数据存储于各条链路中对应设置的FIFO中。
3.根据权利要求1所述的方法,其特征在于,所述S2步骤具体包括521、根据各条链路的同步数据之间的误差时间来设定Pop时间点;522、在计数器计数到所述Pop时间点时,查看并判断是否所有FIFO中均有数据,若是, 执行S33 ;若否,则重新设定Pop时间点;523、从各条链路上对应的所述FIFO中同时提取出所述同步数据。
4.根据权利要求3所述的方法,其特征在于,所述步骤S22中Pop时间点的重新设定具体为在现有基础上延后Pop时间点。
5.一种通过FIFO消除不同高速链路间误差的系统,其特征在于,其包括数据接收单元、用于接收各条链路上的同步数据,并将所述同步数据存储于各条链路中对应设置的FIFO中;数据提取单元、用于设定Pop时间点并在所述Pop时间点从各条链路上对应的所述 FIFO中同时提取出所述同步数据;数据恢复单元、用于将从各条链路中对应的FIFO中提取出的同步数据恢复为原始数据帧。
6.根据权利要求5所述的系统,其特征在于,所述数据接收单元具体用于 接收各条链路发送的同步数据;在某条链路首先接收到一个帧数据时,计数器开始计数;将各条链路上接收到的同步数据存储于各条链路中对应设置的FIFO中。
7.根据权利要求5所述的系统,其特征在于,所述数据提取单元具体用于 根据各条链路的同步数据之间的误差时间来设定Pop时间点;在计数器计数到所述Pop时间点时,查看并判断是否所有FIFO中均有数据,若是,则从各条链路上对应的所述FIFO中同时提取出所述同步数据;若否,则重新设定Pop时间点。
8.根据权利要求7所述的系统,其特征在于,所述Pop时间点的重新设定具体为在现有基础上延后Pop时间点。
全文摘要
本发明提供了一种通过FIFO消除不同高速链路间误差的方法,该方法包括以下步骤S1、接收各条链路上的同步数据,并将所述同步数据存储于各条链路中对应设置的FIFO中;S2、设定Pop时间点并在所述Pop时间点从各条链路上对应的所述FIFO中同时提取出所述同步数据;S3、将从各条链路中对应的FIFO中提取出的同步数据恢复为原始数据帧。相较于现有技术,本发明通过将每条链路上传输的同步数据存放进对应设置的各个FIFO中,在读取FIFO时,每个FIFO中的数据会同时被取出,从而消除掉各条链路间的Skew,进而使得高速串行链路传输的数据恢复更为容易。
文档编号H04L7/00GK102355345SQ201110306459
公开日2012年2月15日 申请日期2011年10月11日 优先权日2011年10月11日
发明者夏杰, 孙剑勇, 徐昌发, 许俊, 贾复山, 郑晓杨, 龚源泉 申请人:盛科网络(苏州)有限公司