一种多通道数据传输的同步装置
技术领域
本发明涉及一种使接收端与发送端同步的装置,尤其涉及一种多通道数据传输的同步装置。
背景技术
随着通讯技术的不断发展,在不同的设备之间或者同一设备的不同单板之间或者同一单板的不同芯片之间,需要传输的数据的速率也在不停的提高。由于传输通路的物理接口都存在一个传输速率的上限,因此不可避免的,在很多情况下需要采用多条物理通道来进行数据传输,在接收端再对数据进行对齐和合并。
目前在设计中使用较多的对齐方式是通过控制各个通路的延时来保证多路数据到达接收端时仍然是同步的。这种处理方式存在的问题是:必须保证各个通路到达接收端的最大延时在一个时钟周期以内。当传输距离越来越长,数据速率越来越快,传输通路上的各种不确定性因素引入的时延差异将变得难以控制。
发明内容
因此本发明所要解决的技术问题是提供一种多通道数据传输的同步装置,该装置能够同时消除输入数据与本地时钟之间的延时抖动,将输入数据转化为本地时钟域的对齐的同步数据。
本发明具体是这样实现的:
一种多通道数据传输的同步装置,用于将多路数据源中的多通道数据通过数据发送物理通路同步到接收端电路中,所述多路数据源中包括具有帧同步信号的帧头数据,所述装置包 括括一多通道数据同步电路,用于实现多通道数据传输同步,所述多通道数据同步电路包括接收帧头提取电路和多路数据同步电路,其中,接收帧头提取电路接收数据发送物理通路上的数据流,从中提取出帧头数据,发送给多路数据同步电路;所述多路数据同步电路根据接收帧头提取电路发送的帧头数据,利用该帧头数据中的帧同步信号,将上述多路具有延时抖动差异的数据流转化为同步的数据流。
按上述方案,所述多路数据同步电路包括:N路双口RAM、N路写入地址产生装置和一路读出地址产生装置;其中,N为数据发送物理通路的通道数;双口RAM对各路的数据进行存储,其读时钟和写时钟相对独立;写入地址产生装置产生对应的双口RAM的写地址;读出地址产生装置产生各个双口RAM的读地址;写入地址产生装置根据接收帧头提取电路提取出来的帧头数据产生写地址,写入地址产生装置按照各自的时钟和写地址将数据写入各自的双口RAM中;读出地址产生装置根据接收帧头提取电路提取出来的帧头数据和写入地址产生装置产生的写地址使用本地系统时钟产生读地址,根据该读地址从N路双口RAM中同时读出数据。
按上述方案,所述读出地址产生装置包括:参考选择电路和周期读地址发生电路;参考选择电路从接收帧头提取电路提取的N路物理通路的帧头中选择一路作为周期读地址发生电路的参考帧头,同时将写入地址产生装置产生的与被选中的帧头对应的写地址作为周期读地址发生电路的参考写地址;周期读地址发生电路根据参考帧头和参考写地址使用本地系统时钟产生读地址。
按上述方案,写地址在帧头的位置进行重置,写入地址产生装置赋给其一个初始值,在没有帧头的其他位置,写地址每个时钟周期数值加一;读地址在参考帧头的位置进行重置,周期读地址发生电路根据读地址与参考写地址的相对差值赋给其一个初始值,在没有帧头的其他位置,读地址每个时钟周期数值加一。
按上述方案,双口RAM的大小是数据流帧长的整数倍,或者数据流帧长是双口RAM的大小的整数倍;同时,双口RAM的大小≥(K1+K2)的两倍,其中,K1为需要消除的输入的多路数据之间的最大相对相位误差换算成时钟周期的值,K2为需要消除的输入的多路数据相对本地系统时钟的最大延时抖动换算成时钟周期的值。
按上述方案,读地址的初始值和写地址的初始值之间的差值为双口RAM大小的二分之一长度。
按上述方案,参考选择电路在检测到参考帧头的时刻,周期读地址发生电路对当前的参考写地址和当前的读地址的差值进行判断,如果此差值小于K1,则对读地址进行重置,给读地址赋一个初始值。
按上述方案,参考选择电路使用以下方式对参考源进行选择:通过各物理通路是否有效,或者通过时钟是否同步,或者通过人机接口进行设置的方式来确定选择哪一路作为参考。
按上述方案,周期读地址发生电路是一个循环地址发生器。
按上述方案,接收帧头提取电路是一种带有同步和失步保护的帧头搜索电路。
按上述方案,接收帧头提取电路具有关于数据流有效性的检测电路。
由于采用了上述方案,本发明与现有技术相比,具有以下优点:
本发明同时完成了多路数据间抖动的消除和输入数据的时钟本地化,电路简单可靠。本发明有效地消除了各路数据之间的延时差异,提高了多路数据传输的可靠性。
附图说明
图1是本发明的一个具体实施例的结构框图;
图2是本发明的另一个具体实施例的结构框图;
图3是本发明的电路原理图;
图4是本发明中双口RAM各读写地址之间的相位关系示意图。
具体实施方式
以下结合附图对本发明的具体实施作进一步的说明:
本发明利用一个多通道数据同步电路实现多通道数据传输的同步。在本发明的实现过程中,需要结合以下常规技术:多路数据源、数据发送物理通路。所述多路数据源可以是实际的多个数据源,也可以是实际的一个数据源通过分路装置将数据分配到多个数据通路上去。 无论哪种数据源,都应该具有一个帧结构的产生装置。所述帧结构产生装置可以在每个数据发送物理通路上插入周期性的帧同步信号,接收端电路可以根据此帧同步信号进行数据对齐;所述数据发送物理通路可以但不局限于各种线缆、PCB(Printed Circuit Board,印制电路板)走线、无线通路等物理通路。
本发明的多通道数据同步电路包括:接收帧头提取电路、多路数据同步电路。
所述接收帧头提取电路在接收端接收数据发送物理通路上的数据流,并从其中提取出帧头的位置。所述接收帧头提取电路可以但不局限于一种带有同步和失步保护的帧头搜索电路,接收帧头提取电路可以具有关于数据流有效性的检测电路。
所述多路数据同步电路是一种将N路具有延时抖动差异的数据流转化为同步的属于本地时钟域的数据流的装置。所述多路数据同步电路包括:N路双口RAM(RandomAccess Memory,随机存取存储器)、N路写入地址产生装置和一路读出地址产生装置。所述多路数据同步电路针对每一路输入数据都有一路写入地址产生装置,每路输入数据的写入地址产生装置都是独立的;在读出端所有数据通路共用一路读出地址产生装置,使读出的数据对齐同步。
所述双口RAM的读时钟和写时钟是相对独立的。所述双口RAM的大小应该是帧长的整数倍,或者帧长是双口RAM的大小的整数倍,以保证在数据循环写入时帧头在双口RAM中的位置保持不变。所述双口RAM的大小还受到以下限制:假设需要消除的输入的多路数据之间的最大相对相位误差换算为时钟周期为K1,需要消除的输入的多路数据相对本地时钟的最大延时抖动换算为时钟周期为K2,则所述双口RAM的大小应该大于等于(K1+K2)的两倍。在满足上述条件的情况下双口RAM可以有效的吸收掉物理通路上的延时抖动。
所述写入地址产生装置根据接收帧头提取电路提取的帧头标志和相应时钟产生写入地址,写入地址在帧头的位置重置,在其他时钟周期写入地址每个时钟周期数值加一。当写入地址超出RAM实际地址时,RAM地址归零。
所述读出地址产生装置包括:参考选择电路和周期读地址发生电路。所述参考选择电路从接收帧头提取电路提取的N路帧头信号中选择一路作为周期读地址发生电路的参考帧头信号。所述参考选择电路同时将写入地址产生装置产生的与被选中的帧头信号对应的写地址送 给周期读地址发生电路作为参考写地址。参考选择的依据可以是接收物理通路的有效性指示信号或者是通过处理器接口的人为设置。所述周期读地址发生电路的驱动时钟为本地系统时钟。所述周期读地址发生电路是一个循环地址发生器。所述周期读地址发生电路根据上述参考选择电路送来的参考帧头信号和读地址与参考写地址的相对差值对读地址进行重置,在没有帧头的其他位置,读地址每个时钟周期数值加一。当读地址超出RAM实际地址时,RAM地址归零。
写入地址重置的值和读出地址的重置值之间的差值为双口RAM大小的二分之一。当写入时钟与读出时钟完全同步时,读地址和写地址的差值一直保持不变。当时钟有相对的抖动时,这个差值也会发生变化。每次读地址的调整都会产生数据的丢失或者重读,因此在读地址与参考写地址的物理差值大于等于K1时,读地址不进行重置,否则对读地址进行重置,使读地址与参考写地址的差值变为(K1+K2)。
图1所示为本发明的一个具体实施例,图2所示为本发明的另一个具体实施例。本发明可以以图1或者图2的方式应用,但不局限于以上应用方式。在图1的应用中多个数据源通过不同的物理通路到达接收端;在图2的应用中同一个数据源将数据分成多路通过不同的物理通路到达接收端。
图3是本发明的电路原理图。如图3所示,N路物理通路到达接收端后,N个接收帧头提取电路11从各自的物理通路中提取出时钟、帧头和数据。写入地址产生装置12利用上述提取出来的时钟和帧头产生写地址。上述产生的写地址循环的指向双口RAM的各个地址。在帧头的位置,写地址进行重置,写入地址产生装置12赋给写地址一个初始值。各个通路的写入地址产生装置12是各自独立的,它们按照各自的时钟和写地址将数据写入各自的双口RAM中。
参考选择电路21从N路物理通路的帧头和写地址中选择一路作为周期读地址发生电路22的参考帧头和参考写地址。参考选择电路21可以但是不局限于使用以下方式对参考源进行选择:参考选择电路21可以通过各物理通路是否有效,或者时钟是否同步,或者通过人机接口进行设置的方式来确定选择哪一路信号作为参考。
周期读地址发生电路22根据参考帧头和参考写地址使用本地系统时钟产生读地址,从N 个双口RAM同时读出数据,读出后的数据就变成同步和对齐的数据。周期读地址发生电路22产生的读地址循环的指向双口RAM的各个地址,并且与写地址的前进方向一致。在检测到参考帧头的时刻,周期读地址发生电路22对当前的参考写地址和当前的读地址的差值进行判断,如果此差值小于设计值K1,则对读地址进行重置,给读地址赋一个初始值。
读地址的初始值和写地址的初始值之间应该间隔双口RAM的二分之一长度。使两个地址间隔尽量远,可以容许更多的抖动。
图4是双口RAM各读写地址之间的相位关系。假设需要消除的输入的多路数据之间的最大相对相位误差换算为时钟周期为K1,需要消除的输入的多路数据相对本地时钟的最大延时抖动换算为时钟周期为K2。假设双口RAM的长度为2(K1+K2)。在初始化后第一个参考帧头到来的时刻周期读地址发生电路22将读地址重置为0,写入地址产生装置12将写地址重置为(K1+K2)。在后续的运行中,当读地址与任何一个写地址的差值不小于1时,在输出端将不会产生数据的重复或者漏读。