时钟与数据恢复方法和装置的制作方法

文档序号:7605748阅读:95来源:国知局
专利名称:时钟与数据恢复方法和装置的制作方法
技术领域
本发明涉及用于从串行数据流中恢复时钟和数据信息的方法和装置。
背景技术
电子设备包括许多以串行方式传送数据的接口。某些实例是通用串行总线(USB,universal serial bus)、以太网、火线(Firewire)和Rambus。这些接口具有必须在接收机处被可靠地捕获的高比特率。大多数接收机都产生一个处于串行比特率的时钟,用于在解码之前采样串行数据。为了做到这一点,它们典型地使用锁相环(PLL,phase-locked loop)电路,以便找出接收的串行数据内的时钟信号。然后,它们使用一个同步时钟将接收的串行数据时钟控制地输入一个移位寄存器,上述同步时钟处于串行比特率,但是在相位上从所述串行数据翻转偏移,以便当串行数据稳定时对它进行采样。高于事先选定的阈值的采样串行数据为1,并且低于所述阈值的采样串行数据为0。
由于累积的定时误差仍将产生一个靠近正确时间的时钟边缘,本方法在低比特率(诸如低于100MHz)下工作情况良好。在高于100MHz的频率下,来源于工艺、温度或电压变化的串行采样时钟的定时变化可能导致数据的不正确采样。

发明内容
一般来说,在一个方面,本发明提供一种用于处理以基础时钟信号所建立的速率携带数据的串行数据流的方法。所述方法包括时间戳记串行数据流内的翻转序列的每一个翻转,从而产生一个时间戳序列;以及至少部分地基于时间戳序列,从所述串行数据流中恢复数据。
其它各实施例包括下列特征中的一项或多项。本方法还包括产生多个振荡信号,它们具有相同的频率,并且在相位上被分隔基本上相等的量,其中,时间戳记串行数据流内的翻转序列的每一个翻转包括捕获在所述翻转时所述多个振荡信号的状态。本方法还包括提供一个参考时钟信号;以及时间戳记参考时钟信号内的翻转序列的每一个翻转从而产生第二时间戳序列,其中,基础时钟信号和数据的恢复基于首先说明的时间戳序列和第二时间戳序列。本方法还包括产生多个振荡信号,它们具有相同的频率,并且在相位上被分隔基本上相等的量,其中,时间戳记串行数据流内的翻转序列的每一个翻转包括捕获在所述翻转时所述多个振荡信号的状态。同样,时间戳记参考时钟内的翻转序列的每一个翻转包括捕获在所述翻转时所述多个振荡信号的状态。本方法还包括产生一个圈计数(lap count),它是多个振荡信号中的特定一个振荡信号已走过一个完整圈的次数的计数。捕获串行数据流内的翻转序列的每一个翻转处所述多个振荡信号的状态包括捕获在所述翻转时所述多个振荡信号的每一个的值和圈计数。
在其它各实施例中发现的进一步的特征还包括下列各项本方法还包括使从串行数据流中恢复的数据并行化。使从串行数据流中恢复的数据并行化包括将恢复的串行数据时钟控制地送进移位寄存器,并且以n位一组并行输出时钟控制送进的恢复数据,其中,n为大于1的整数。从串行数据流中恢复数据包括至少部分地基于串行数据流内的翻转序列的时间戳序列来合成基础时钟信号,并使用已合成的时钟信号从串行数据流中恢复数据。
一般来说,在另一方面,本发明提供一种用于处理以基础时钟信号所建立的速率携带数据的串行数据流的电路。所述电路包括自激环路振荡器;串行数据流捕获模块,在运行期间它接收所述串行数据流,并且对于翻转序列中的每一个翻转,捕获自激环路振荡器的对应状态作为所述翻转的时间戳;以及数据恢复模块,在运行期间,它至少部分地基于对于翻转序列的已捕获状态来恢复串行数据流内的数据,所述数据恢复模块包括一个处理器部件,它分析对于翻转序列的已捕获状态。
其它各实施例包括下列特征中的一项或多项。所述电路还包括一个参考时钟捕获模块,该模块在运行期间接收为参考时钟翻转序列的参考时钟,并且对于参考时钟翻转序列的每一个参考时钟翻转,捕获自激环路振荡器的状态,其中,所述处理模块使用对于所述参考时钟翻转序列的已捕获状态连同对于串行数据流内的翻转序列的已捕获状态来恢复串行数据流内的数据。所述数据恢复模块还包括一个被安排接收串行数据流和输出并行数据的移位寄存器,以及一个时钟发生器,它响应于从所述处理器部件接收的指令,产生一个用于移位寄存器的合成时钟。所述电路还包括一个合成时钟捕获模块,在运行期间,它接收合成时钟,并且对于合成时钟翻转序列的每一个翻转,捕获自激环路振荡器的状态,其中,所述数据恢复模块使用对于合成时钟翻转序列的已捕获状态来校正合成时钟中的不希望变化。所述数据恢复模块还包括第二移位寄存器,它被安排接收第二串行数据流并输出相应的并行数据,以及一个延迟元件,它把一个预定的相移引入到合成时钟,并且向第二移位寄存器提供相移的合成时钟。所述自激环路振荡器包括串联连接以形成一个环路的多个缓冲级,其中,多个缓冲级的每一个缓冲级将基本上等量的延迟引入到当振荡时环绕所述环路循环的信号中,所述振荡器还包括多个抽头,每一个抽头与一个不同的缓冲级相连,并且输出一个表示所述缓冲级的状态的信号。
在下面的附图和说明书中,将陈述本发明的一个或多个实施例的细节。通过附图、说明书和权利要求书,将使本发明的其他特征、目的和优点变得更加明显。


图1是使用自激环路振荡器的时钟和数据恢复电路的方框图。
图2是一个自激环路振荡器的示意图。
图3A是向图3的捕获模块提供差分抽头信号的自激环路的更详细电路图。
图3B是用于图3A的电路中的缓冲级的电路图。
图3C是用于图3B的缓冲级的与非门的电路图。
图4是捕获模块的电路图。
图5A-C表示图3所示的捕获模块的工作。
图6是使用自激环路振荡器的另一个时钟和数据恢复电路的方框图。
要注意的是,在不同的图中,相同的参考数字被用来表示所标识的部件是相同的或相似的。
具体实施例方式
描述了用于接收高速串行数据的两个方案。这两个方案都使用自激环路(FRL,free-running loop)技术,在2002年4月23日发布的题为“Arbitrary Waveform Synthesizer Using a Free RunningOscillator”的专利U.S.6,377,094和1998年8月11日发布的题为“Free Loop Interval Timer and Modulator”的专利U.S.5,793,709中,都说明了这种技术。上述两份专利在此都作为参考而并入。第一方案使用自激环路技术来产生采样时钟。第二方案使用自激环路技术来时间戳记串行数据中的翻转,然后由这些时间戳解码所述数据。这两个方案均可以被扩展用于接收多个同时的串行信号,诸如用于PCIexpress的信号。
时钟和数据恢复电路综览参照图1,时钟和数据恢复电路10的第一实施例包括一个自激环路振荡器12,它产生一组输出信号13,用于时间戳记另一个信号,并且用于产生所期望的时钟波形。自激环路是串联连接的缓冲器序列,在各缓冲器之间设有输出抽头。这些缓冲器作为延迟元件,它在通过每一个缓冲器的翻转信号中引入未知的然而是小量的延迟。这些缓冲器被连接成一个闭环,它使通过缓冲器序列进行传播的翻转信号(或者状态的改变)反馈到环路的起点,从而使所述翻转信号环绕着环路连续地循环。自激环路还包括一个计数器,它保持跟踪所述翻转信号环绕着环路已经完成了多少次完整的电路。因此,在任何时间点上,环路内的缓冲器状态表示翻转信号的位置。该位置加上圈计数表示从最后一次测量自激环路的状态算起,所述信号已经走了多远。因此,圈计数加上缓冲器的状态(通过读取抽头上的信号就能得到)提供方便的时间测量。时间戳记包括捕获一个事件,诸如时钟信号或数据信号的翻转发生时的信息以标记何时发生该事件。
时钟和数据恢复电路10包括3个捕获模块14、16和18,每一个都接收来自自激环路12的输出信号(即,抽头组上的信号加上圈计数)。每一个捕获模块14、16和18对从相关的输入线路上接收的不同输入信号作出响应。这些输入信号是将由捕获模块进行时间戳记的信号。每次各输入信号发生翻转时,使得捕获模块捕获自激环路的状态作为该次翻转的时间戳。这样一来,响应于接收到一个翻转序列,捕获模块输出对于所述序列内的翻转的时间戳流。
每一个捕获模块14、16和18都把它产生的时间戳序列送往一个时钟发生器代数模块20。一般来说,作为一个基于编程处理的模块(例如状态机或微处理器)的时钟发生器代数模块20分析多个已接收的时间戳流,以便识别串行数据流内的时钟信号,并且随后,它使得时钟发生器22产生一个同步于串行数据流的时钟信号24。它还使用接收的时间戳来监测已产生的时钟信号24的稳定性,并且改变已产生的时钟信号以补偿由于电源电压、温度和其它环境参数的变化所引起的时钟发生器22的性能变化。
捕获模块14提供用于校准自激时钟的信息。它接收一个其周期精确已知的稳定参考时钟9作为它的输入。响应于所述参考时钟,捕获模块14产生一个时间戳流,时钟发生器代数模块20内的环路平均模块15(未示出)可由上述时间戳流精确地计算出自激环路上各抽头之间的时间间隔。实质上,环路平均模块15采用对于参考信号中的两个连续正翻转的时间戳,计算这两个时间戳的差值,并且把计算出来的差值分为参考时钟的已知周期。其结果是,就翻转从一个抽头移动到下一个抽头所用的时间而言,实现了各抽头之间的间隔(即,每一个抽头的时间)的精确测量。
可替代地,如果用户知道需要被合成的时钟的频率并且向所述代数模块提供此项信息,则可以避免抽头间隔的计算。因此,分离合成时钟内的翻转的抽头的数目可以简单地表示为分离参考时钟内的翻转的抽头的数目乘以合成时钟频率与参考时钟频率之比。如果这个比值被证明为不十分精确,则在运行过程中,代数模块可以作出适当的调整。
捕获模块16提供关于对其进行时钟和数据恢复的串行数据流的信息。更精确地说,它时间戳记检测出的串行数据信号中的翻转。然后,时钟发生器代数模块20使用此信息连同来自捕获模块14的输入来计算构建合成时钟信号所需的所述翻转的定时,合成时钟信号与串行数据流内的时钟信号同步并且被适当的移相,以便精确地采样串行数据流内的数据。根据所计算的定时信息,代数模块20使时钟发生器22选择由自激环路12输出的适当翻转,并由此构建用于串行数据流的合成时钟24。
合成时钟24被送往移位寄存器30,在这里,它把来自串行数据流的数据时钟控制地送进所述寄存器。移位寄存器30输出存储的数据作为并行数据(即,由n位构成的组,其中,n可以是2,4,8,16,或更多位),并且还提供用于所述数据的并行时钟信号。
与合成时钟有关的温度和电压变化是事先无法知道的。这种变化可以归因于作为那些参数(即,PVT)变化结果的电路性能改变。由于这种变化典型地无法事先预测,所以代数模块20不能事先计算出对它的补偿。因此,为了消除由于这些变化所引起的定时误差,捕获模块18时间戳记合成时钟,并向代数模块20提供此项信息。通过将这些时间戳与合成时钟的预期定时进行比较,代数模块20检测定时变化,并且相应地调整时钟发生器22的控制。这就是说,代数模块20“知道”何时应当出现翻转,并且在送往时钟发生器22的控制信号中作出调整,以保证它们在应当出现时出现。通过这种技术,所述电路能够在后端调谐出PVT的效果。
还有一个CPU接口31,它被提供用于控制处理、时钟产生以及代数方框中的滤波,以及用于设置可编程延迟单元中的可编程延迟,这将在后面加以讨论。
现在,从自激环路振荡器开始,更详细地说明以上所介绍的各模块。
自激环路振荡器借助于图2,就能理解自激环路振荡器的基本工作原理,图2示出了自激环路振荡器的一种简化的实施方式。自激环路振荡器40包括一个用于外部复位信号的输入42、一系列延迟模块或缓冲器44(0),44(1),…,44(14)和44(15)(统称为44)以及至少一个反相元件46。在本实例中,延迟模块为正相型,因此,输入处的正翻转引起输出处的位置翻转。复位信号具有两种状态,即,复位状态和运行状态。当复位信号处于复位状态时,环路不振荡。当复位信号转变到运行状态时,环路开始振荡。状态的翻转或改变通过第一延迟元件模块44(0)传播到下一个延迟元件模块44(1)的输入。在延迟元件模块的输入处接收到一个信号稍后,此信号在对应的抽头0上输出。
所述翻转继续传播到下一个延迟元件模块44(1),在这里,它接着出现在抽头1上。随着所述翻转通过每一个相继的延迟元件模块44,这个过程将继续下去。通过在任何时间点观察各抽头的集合的输出,能说出所述翻转处于序列中的何处。
为了生成“环路”效果,例如,从延迟元件模块44(14)选择一个翻转,并且通过反相元件46反馈到第一延迟元件模块44(0)的输入。在本实例中,它被表示为连接在延迟元件模块44(14)和44(0)之间,但是也可以使用其它的设计安排。目的是提供能在环路中维持振荡的正反馈。
环路振荡器还包括一个圈计数器模块50。所述圈计数器模块电连接到第一延迟元件模块44(0),用于接收通过延迟元件模块44(0)进行传播的翻转边缘。圈计数器模块包括两个计数器,即正边缘计数器52(1)和负边缘计数器52(2)。每次一个正边缘翻转(例如,从逻辑低到高的翻转)传播通过延迟元件模块44(0)时,正边缘计数器52(1)计数1。每次一个负边缘翻转(例如,从逻辑高到低的翻转)传播通过延迟元件模块44(0)时,负边缘计数器52(2)计数1。因此,负边缘计数器52(2)与正边缘计数器52(1)是180°反相的。这两个计数器被用来保证当一个计数器被更新时,其它模块访问精确和稳定的另一个计数器,据此可以确定圈数。
经证明,正翻转的传播时间通常不同于负翻转的传播时间。因此,为了产生更一致的环绕环路的传播时间,使用下述类型的一种差分设计是有用的,在其中,在所有的时间都产生两种类型的边缘。该差分设计在每一个延迟元件模块中包括一个反相元件并提供差分输出,一个是上升沿而另一个是下降沿。这个方案也对于电源产生更加均匀的负载。
同样,要注意的是,自激环路振荡器也可以被视为产生低频时钟信号的16个等间隔相位。每一个相位从前一个相位偏移等于自激环路的两个抽头之间的延迟的量。
捕获模块如上所述,当被触发时,捕获模块捕获自激环路振荡器的抽头上的输出(即,状态)。由于检测到一个上升沿通常趋向于产生与检测到一个下降沿稍为不同的结果,自激环路振荡器的所述实施例中的每一个延迟元件模块实际上被设计成响应于循环的翻转信号,产生一个上升沿输出信号和一个下降沿输出信号。这就是说,每一个延迟元件模块具有一对差分输出线,用于输出两种类型的信号。这使得捕获模块总是通过适当地选择每一个延迟元件模块处的差分对的正确线来捕获一个上升沿。
参照图3A,具有差分输出的自激环路振荡器包括连接在一个环路中的16个缓冲级60。每一个缓冲级包括两个输出62(1)和62(2),它们构成该级的差分输出对。缓冲级的内部设计示于图3B,图中使用用于电路元件的传统符号。与非门的内部结构示于图3C。要注意的是,在图3A-C所示的自激环路振荡器中,在环路返回到相同状态之前,所述边缘必须沿环路走两遍。
自激环路振荡器具有16个延迟抽头,其中的每一个都与前一个隔开相似的延迟量。存在被标记为
…[15]的16个输出,其中的每一个与前一个由一个反相分隔。通过环路的一个翻转首先表现为在引线
上的一个上升沿,接着表现为线[1]上的一个下降沿,然后再次表现为线[2]上的一个上升沿,等等。还有被标记为[16]…[31]的另外16个输出,它们输出第一组16个线
…[15]上的相应信号的补码。这就是说,输出[N]和[N+16],其中,N=0…15,形成差分对,输出[N+16]上的信号是输出[N]上的信号的补码。因此,通过使用适当地设计的捕获电路,可以总是通过监测上升沿信号来检测环路的状态,从而避免因在监测上升沿信号和下降沿信号之间的交替而在测量中引入可能的误差。
一般来说,每一个捕获模块都包括一个寄存器,它使用输入信号作为它的时钟。在输入发生翻转(典型地为正边缘翻转)时,所述寄存器存储或“捕获”自激环路振荡器的状态。在所描述的实施例中,所述寄存器存储16位数据字,其中的11位用于圈计数器的值,以及4位被用来表示16个抽头。这4位被用于各抽头的状态,表示在捕获时,所述翻转传播通过的最后一个抽头。1位被用来表示当翻转通过第一延迟元件模块时所述翻转的状态(即,正边缘或负边缘)。这一位表示被代数模块选择的翻转边缘是正边缘还是负边缘,以及当构建同步时钟时,是否需要由切换模块反相。
与自激环路振荡器的差分输出配合使用的捕获模块80的更详细的设计草图示于图4。捕获模块80包括由D触发器阵列构成的捕获寄存器82,用以捕获自激环路振荡器的差分输出线上的信号。所述阵列包括16个D触发器84,从中选择正相信号作为它的输出,以及16个D触发器86,从中选择反相输出信号作为它的输出。16个正相D触发器中的每一个从16个输出
…[15]中的相应不同的一个接收它的信号,并且反相D触发器中的每一个从16个输出[16]…[31]中的相应不同的一个接收它的信号。对于进入捕获寄存器的线的每一个差分对,存在来自捕获寄存器的相应输出线对。要注意的是,当发生捕获时如果差分线对上的信号是已设定的和稳定的,则对应于所述差分对的来自捕获寄存器的两个输出将携带相同的值。
为了选择两个D触发器阵列的输出上的适当信号,存在一个由16个先接后离MUX构成的阵列88,其中的每一个都接收来自构成捕获寄存器的不同的相应输出线的对。控制这些MUX以便当来自捕获寄存器的两个输出信号不相同时,总是选择上升沿信号作为从中确定自激环路振荡器的状态的信号。作为一个规则,至一个MUX的两个输入信号事实上将是相同的。在远离自激环路振荡器内的边缘的位置上,来自所述振荡器的输出信号将是已设定的和稳定的,并且各MUX将干净地捕获它们。因此,在沿着自激环路的那些位置上,选择至MUX的哪一个输入信号作为输出信号是无关紧要的。然而,在靠近自激环路内的边缘处,就不是这样的情形。由于检测上升沿与检测下降沿之间的差异,以及由于翻转过程中的其它不稳定性,有可能出现这样的情况,即,送往MUX用于监测环路位置的两个输入信号将是不同的。因此,至MUX的选择线向前注视着半路环绕环路的信号,以便决定选择哪一个输入信号。其基本原理是半路环绕环路的控制信号将是稳定的,并且因此可以被用来精确地确定至MUX的哪一个信号是上升沿信号。
各MUX 88的输出向“同(XNOR)”门的阵列90提供输入。阵列中的每一个“同”门着眼于来自两个相邻的MUX的输出信号。实质上,XNOR门阵列与MUX阵列相结合,检测在时间戳被捕获的瞬间,边缘位于自激环路内的何处。
借助于图5A-C所示的图,将能理解这个电路是如何工作的。这些图示出位于自激环路的抽头0到6的差分输出以及位于D触发器、各MUX以及XNOR门(它们捕获并处理那些输出信号)的输出的信号。
图5A示出在翻转已经通过抽头3并且在它到达抽头4之前(见位置100),自激环路振荡器的抽头0到6的输出信号。在被标记为“输出”的行中的两个值表示该抽头的差分线对上的信号。因此,例如,位于抽头0的输出
的信号为“0”,以及位于抽头0的输出[16]的信号(即,第一延迟元件模块的差分对的另一输出)为“1”。正如人们所看到的那样,当观察者沿着抽头移动直到到达抽头4时,输出信号的图案将在0-1和1-0之间交替。由于翻转尚未到达抽头4,所以在其输出上的图案相同于抽头3的输出上的图案。但是从那一点往后,所述图案将再次交替。
在图5A所示的实例中,当翻转位于环路中的位置100时,时钟控制D触发器。对于与一个特定抽头有关的每一对D触发器来说,输出信号是相同的,即11或00。当观察者从一对D触发器移动到下一对时,它们的输出值在00和11之间交替,直到到达抽头4为止,在抽头4,所述D触发器对的输出相同于紧挨着的抽头3的D触发器对的输出。再有,这种状态将继续下去,因为所述翻转尚未到达抽头4。
由于至每一个MUX的两个输入相同,所以所述MUX将输出那些值中的任一个。并且所述XNOR门检测两个相邻MUX的输出何时相同。在本实例中,这出现在抽头3,在此处,相关的XNOR门输出1,这表明当环路的状态被捕获时,翻转正好处于自激环路振荡器中的那一点上。
图5B示出在翻转已经通过抽头4但尚未到达抽头5(在位置102)时,所捕获的各元件的输出状态。各信号的解释如同上面结合图5A所作的解释那样,所不同的是,一切在时间上都向前推进了一个等于抽头间隔的量。
一个更加有趣的实例示于图5C。在本例中,所述翻转靠近抽头4,并且它已经影响了差分输出中的一个,但是未影响另一个。如上所述,由于电路对上升沿的响应通常不同于电路对下降沿的响应(虽然差异不是很大),所以可能出现这种情况。结果,差分对的输出是相同的(即,11而非01)。捕获那些信号的D触发器对的输出是不同的。相关的MUX根据位于当前抽头之前8个抽头处的捕获寄存器中的反相D触发器的值,选择这些信号之一。这样来进行安排,使得选择上升沿的信号,在本例中为0值。一般来说,任何时间在抽头上出现这样一种情况,来自存在模糊的抽头之前的抽头的采样信号将告知MUX哪一个值是针对上升沿值。
由去抖动逻辑92(其类型是本领域的技术人员所熟知的)来处理XNOR门阵列90的输出。D触发器和路径中的微小差异可能导致“抖动”,在环路中的3个(或者在极端情况下为5个)靠近位置上出现边缘。这由能解决这个问题的去抖动逻辑进行校正,并检出第一个边缘作为“真正的”边缘。
然后,由一个转换到元件计数电路94解码去抖动逻辑92的输出信号,以产生以延迟元件为单位的时间戳的二进制表示。
时钟发生器代数模块时钟发生器代数模块20是一个数据处理模块,它由一个或多个编程的数字处理器来实现。代数模块20接收外部参考时钟信号9和来自捕获模块14、16和18的时间戳序列。使用这些输入,时钟发生器代数模块20根据编程的设置,分析数据流并且计算合成时钟的频率和相位应当是什么。它还计算将由自激环路振荡器产生的翻转中,需要(通过圈数和抽头位置)选择哪一个翻转来构建合成时钟。并且它还计算对于翻转沿的选择需要作出何种改变以补偿发生器模块和其它内部部件内的漂移和其它变化。为了进行所有这些计算,它使用本领域的技术人员所熟知的技术。
在所述实施例中,代数模块20具有4个通道用于计算同步时钟的下两个上升沿和相应下降沿。通过并行计算4个边缘,代数模块20可在更快的频率上运行,由此允许输出信号达到更高的频率。当然,根据特定应用的计算需求,可以使用更多的通道。
确实,给出了代数模块20为分析它从捕获摸块14、16和18接收的3个时间戳序列所需的计算量,吞吐量将成为在较高时钟速率的一个问题。为了处理较高的计算负荷,人们可以以多处理器体系结构的方式获得更多的处理能力,其中,可以在多个处理器间分配计算任务并且以并行方式来执行。可替代地,由于不需要来自转移指令数据流的所有时间戳来进行所需的计算,人们可以简单地忽略串行数据流的某些时间戳(例如,每n个取出)。
对于在数据翻转上具有很少噪声或抖动的串行数据流来说,上述方法能很好地工作。然而,可以使用这些技术的许多数据流具有相当大的噪声和抖动。两个良好的实例是从读取光学数据和从射频通信应用中产生的串行数据流。对这样的应用来说,需要对接收数据进行某种滤波以减小这些信号质量问题的负面影响。某些滤波,例如平均串行时间戳和期望的时间戳之间的误差,可以由时钟发生器代数模块20来执行。在这个阶段中的滤波将有助于更精确地捕获相对于参考时钟的环路速度。
时钟发生器模块时钟发生器模块22包括一个与自激环路振荡器的各抽头连接的内部切换模块(未示出)。它的工作如同上述美国专利第6,377,094号所描述的那样。一般来说,代数模块20向时钟发生器模块22发送为产生合成时钟需要使用的计算出来的翻转沿。从代数模块20发送过来的信息控制内部切换模块的操作,使它正确地选择自激环路振荡器的抽头以构建合成时钟。
附加电路有时,发送者将发送多路串行数据,他们全都需要接收和采样。典型地,当多路串行数据来自同一发送者时,它们全都使用同一个时钟,除了可能每一路被相移某种不同的预定量。如果相移信息可以被送往接收机,或者以某种方法导出,则通过简单地添加适当数量的移位寄存器32和可编程延迟单元34,就能容易地将上述方法和电路推广到接收多路串行数据。可编程延迟单元34从时钟发生器模块22接收合成时钟的副本,对它进行所需数量的相移,并将其送往移位寄存器32,以便按照时钟频率输入来自相应通路的串行数据。
另一方面,如果用于其它通路的时钟不相同,或者相移未知或者不容易确定,则人们可以简单地使用上述方案来恢复时钟,并且单独地为每一个通道采样所接收的数据。这意味着复制捕获模块16和18以及时钟发生器22的串行数据的用于将接收的每个附加通路。
存在可以被纳入到一个用于接收和采样串行数据流的完整系统的其它电路。这些附加电路对本领域的普通技术人员来说是众所周知的,因此,除了仅指出几个较相关的部件以外,在这里将不进行讨论。
例如,有一个电路位于时钟和数据恢复电路之前,并且在接收的信号被送往时钟和数据恢复电路之前,先由该电路进行处理。典型地,接收的信号(例如,来自一根电缆)可能电压很低,并且不具有足以驱动捕获电路中的触发器的振幅。因此,它需要被放大。此外,它通常以另一种形式(例如,作为差分信号)发送使之与发送它的介质更加兼容。那种形式需要被改变为标准的二进制形式。前端电路通常是一个模拟接口,它进行某些这样的处理。它将已接收的信号从它的发送形式转换为标准的二进制形式,具有整齐的波形,同时具有用于下游电路的足够的电压振幅。它还包括静电放电(ESD,electrostaticdischarge)保护电路、自动增益和偏移控制电路以及预滤波电路。
典型地,还有时钟和数据恢复电路这后的后端电路,提供反馈控制以校正检测到的二进制比特流中的误差。例如,前端中确定哪些采样信号为1和哪些为0的模拟电路可能具有不希望的偏移,引起所述处理中的误差。在许多系统中,二进制数据以这样的形式被发送,其中在一定时间段内,1的数目和0的数目相等。如果后端电路检测到它们没有表现为相等的数目,则可能表示前端电路中存在偏移误差,因此,后端电路调整用于校正这个问题的偏移。还可以检测采样数据中的其它模式,由此建议需要进行其它自动调整。
另一个时钟和数据恢复系统在图6所示的第二实施例中,全部工作都以数字方式完成。这就是说,取代产生一个合成时钟用于时钟控制地将串行数据送进移位寄存器,如结合图1所示电路所描述的那样,而是由并行时钟发生器和数据解码器代数90以数字方式来处理用于参考时钟和串行数据流的所有时间戳,以便提取接收的数据以及需要从接收的信号中得到的其它信息。例如,通过使用时间戳的统计平均来恢复时钟,并且通过使用其它已知技术根据用于串行数据流和参考时钟信号时间戳来计算数据而恢复数据。
典型地,两种极性的所有翻转都被捕获(即,时间戳记)。数据解码器代数与并行时钟产生代数配合工作,以便对信号翻转时间戳进行数字滤波并接收所述数据。根据串行输入中期望的翻转模式,可以使用各种数字滤波技术,诸如时间戳平均和模式识别。所述数据,连同所产生的数据时钟一起通过并行接口输出。
存在可用于察看“有噪声的”接收信号翻转的时间戳的各种滤波概念。例如,从用于串行接口的规格来说,接收信号中的翻转之间的正常时间是已知的,这样就能确定每一个时间戳与理想值的误差。如何处理时间误差以找出趋势的3个实例如下1.如果“理想信号”平均稍为快于或稍为慢于接收信号,则可以校正理想信号以匹配比特率。
2.也可以针对频率调制来分析所述误差,例如,诸如当60Hz交流噪声被耦合到信号中时。在这种情况下,在产生接收数据之前,所述调制可以被建模、预测以及从时间戳中被去除。
3.如果所述误差表现出一种趋势,即,0到1的翻转早于或迟于1到0的翻转,则可以调整接口中的接收阈值电压以去除这种误差,或者这种影响可以被建模、预测和去除。
如同采用图1所示方案那样,通过增加捕获模块92和附加的并行输出94,这个电路可以被扩展以便支持多个串行通道。
由图6表示的方案具有不需要产生高速时钟的优点。取而代之的是,仅需要一个用于并行数据的较慢速率的时钟。而且,通过数字处理来执行各项功能为校正信号中的问题以及动态地做这件事提供了更大的可能性。因此,当采样触发器的建立和保持时间不能可靠地满足时,或者当必须由一个接口来管理多接口标准时,如果串行数据的信号质量太低以致于无法确定正确的采样时间,则所述方案可能是特别适当的。
作为一件实际的事情,当在集成电路芯片上实现上述电路时,希望在物理上彼此靠近地定位捕获模块,使得它们倾向于面对相同的电气环境,并且更紧密地共享相同的工艺参数。这就是说,重要的是,使这些设计选择提供充分地保证在所述芯片可能暴露于其中的不同的工作和环境条件下,这些模块将在性能方面密切地互相跟踪。
其它实施例被纳入以下的权利要求书中。例如,虽然我们已经图示了一个具有16个抽头的自激环路振荡器(用于产生信号的16个等间隔的相位),但是可以使用较少的抽头(例如4个抽头)或者较多的抽头(例如32个抽头)。被使用的抽头数目取决于在时钟发生器代数模块中需要进行多少处理以及圈计数器有多快。较少的抽头要求更快的圈计数器,并且较多的抽头要求更强的处理能力。
此外,这里所说明的方法和电路可以用于需要从串行数据流中恢复时钟和数据的多种不同的应用,包括涉及处理来自光学存储器或者来自射频通信的串行数据的那些应用,二者在前面已经作了说明。
权利要求
1.一种处理以基础时钟信号所建立的速率携带数据的串行数据流的方法,所述方法包括时间戳记串行数据流内的翻转序列中的每一个翻转,由此产生一个时间戳序列;以及至少部分地基于时间戳序列,从所述串行数据流中恢复数据。
2.如权利要求1所述的方法,还包括产生多个振荡信号,它们具有相同的频率,并且在相位上被分隔基本上相等的量,其中,时间戳记串行数据流内的翻转序列的每一个翻转包括捕获在所述翻转时所述多个振荡信号的状态。
3.如权利要求1所述的方法,还包括提供一个参考时钟信号;以及时间戳记参考时钟信号内的翻转序列的每一个翻转,由此产生第二时间戳序列,其中,基础时钟信号和数据的恢复基于首先说明的时间戳序列和第二时间戳序列。
4.如权利要求3所述的方法,还包括产生多个振荡信号,它们具有相同的频率,并且在相位上被分隔基本上相等的量,其中,时间戳记串行数据流内的翻转序列的每一个翻转包括捕获在所述翻转时所述多个振荡信号的状态。
5.如权利要求4所述的方法,其中,时间戳记参考时钟内的翻转序列的每一个翻转包括捕获在所述翻转时所述多个振荡信号的状态。
6.如权利要求4所述的方法,还包括产生一个圈计数,它是多个振荡信号中的特定一个走过完整一圈的次数的计数。
7.如权利要求6所述的方法,其中,捕获串行数据流内的翻转序列的每一个翻转处所述多个振荡信号的状态还包括捕获在所述翻转时所述多个振荡信号的每一个的值。
8.如权利要求7所述的方法,其中,捕获串行数据流内的翻转序列的每一个翻转处所述多个振荡信号的状态还包括捕获在所述翻转时的所述圈计数。
9.如权利要求1所述的方法,还包括使从串行数据流中恢复的数据并行化。
10.如权利要求9所述的方法,其中,使从串行数据流中恢复的数据的并行化包括将恢复的串行数据时钟控制地输入移位寄存器,并且以n位一组的并行方式输出时钟控制输入的已恢复数据,其中,n为大于1的整数。
11.如权利要求1所述的方法,其中,从串行数据流中恢复数据包括至少部分地基于对于串行数据流的翻转序列的时间戳序列来合成基础时钟信号,并使用合成的时钟信号从串行数据流中恢复数据。
12.一种用于处理以基础时钟信号所建立的速率携带数据的串行数据流的电路,所述串行数据流包括时间上在基础时钟信号和串行数据流内的数据所确定的位置处的翻转序列,所述电路包括自激环路振荡器;串行数据流捕获模块,在运行中接收所述串行数据流,并且对于翻转序列中的每一个翻转捕获自激环路振荡器的相应状态作为所述翻转的时间戳;以及数据恢复模块,在运行中至少部分地基于对于翻转序列的已捕获状态来恢复串行数据流内的数据,所述数据恢复模块包括处理器部件,分析对于翻转序列的已捕获状态。
13.如权利要求12所述的电路,还包括参考时钟捕获模块,在运行中接收作为参考时钟翻转序列的参考时钟,并且对于参考时钟翻转序列中的每一个参考时钟翻转,捕获自激环路振荡器的状态,其中,所述处理模块使用对于参考时钟翻转序列的已捕获状态连同对于串行数据流内的翻转序列的已捕获状态,来恢复串行数据流内的数据。
14.如权利要求13所述的电路,其中,所述数据恢复模块还包括被安排接收串行数据流并输出并行数据的移位寄存器,以及时钟发生器,响应于从所述处理器部件接收的指令,产生用于移位寄存器的合成时钟。
15.如权利要求14所述的电路,其中,所述合成时钟是合成时钟翻转序列,所述电路还包括合成时钟捕获模块,在运行中它接收合成时钟,并且对于合成时钟翻转序列的每一个翻转,捕获自激环路振荡器的状态,其中,所述数据恢复模块使用对于合成时钟翻转序列的已捕获状态,来校正合成时钟中的不希望变化。
16.如权利要求14所述的电路,其中,所述数据恢复模块还包括第二移位寄存器,它被安排接收第二串行数据流并输出相应的并行数据,以及延迟元件,它将预定的相移引入到合成时钟,并且向第二移位寄存器提供相移的合成时钟。
17.如权利要求12所述的电路,其中,所述自激环路振荡器包括串联连接以形成一个环路的多个缓冲级,其中,多个缓冲级的每一个缓冲级将基本上等量的延迟引入到当振荡时环绕所述环路循环的信号中,所述振荡器还包括多个抽头,每一个抽头与不同的一个缓冲级相连,并且输出表示所述缓冲器的状态的信号。
全文摘要
一种用于处理以基础时钟信号所建立的速率携带数据的串行数据流的方法,所述方法包括时间戳记串行数据流内的翻转序列的每一个翻转,由此产生一个时间戳序列;以及至少部分地基于时间戳序列,从所述串行数据流中恢复数据。
文档编号H04L7/033GK1802810SQ200480010644
公开日2006年7月12日 申请日期2004年3月4日 优先权日2003年3月4日
发明者丹尼尔·J·艾伦 申请人:时间工作室公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1