CN103812590A - 用于确定用于安全采样时钟域的信号的时间的系统和方法 - Google Patents
用于确定用于安全采样时钟域的信号的时间的系统和方法 Download PDFInfo
- Publication number
- CN103812590A CN103812590A CN201310557158.4A CN201310557158A CN103812590A CN 103812590 A CN103812590 A CN 103812590A CN 201310557158 A CN201310557158 A CN 201310557158A CN 103812590 A CN103812590 A CN 103812590A
- Authority
- CN
- China
- Prior art keywords
- clock
- phase
- signal
- cycle
- phase estimation
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/04—Generating or distributing clock signals or signals derived directly therefrom
- G06F1/12—Synchronisation of different clock signals provided by a plurality of clock generators
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Synchronisation In Digital Transmission Systems (AREA)
Abstract
本发明提供用于确定用于安全采样时钟域的信号的时间的系统和方法。在一个实施例中,基于第二时钟域和第一时钟域之间的相对频率估计来计算第一时钟域的相位估计,以及基于相位估计来确定在其期间来自第一时钟域的信号不变使得信号能够由第二时钟域安全采样的第一时间,以在第二时钟域中生成第一经采样的信号。此外,计算经更新的相位估计,并且基于经更新的相位估计来确定在其期间来自第一时钟域的信号正在改变使得信号不能够由第二时钟域安全采样的第二时间。在第二时间期间维护第二时钟域中的第一经采样的信号。
Description
优先权声明
本申请是于2010年11月30日提交的12/957,262号美国申请的部分继续申请案,其要求享有于2009年11月30日提交的61/265,280号美国临时申请的优先权。这些申请的全部内容通过援引并入本文。
技术领域
本发明涉及在时钟域之间所传输的信号,并且更具体地,涉及使时钟域同步。
背景技术
许多数字系统具有多个时钟域。因此,当信号从一个时钟域移动到另一个时,必须使它们同步以避免亚稳定性和同步故障。如果两个时钟具有固定的频率,则两个时钟之间的相位关系是以两个时钟的拍频而周期性的。通过利用该周期性的相位关系,周期性的同步器可以比必须完全处置异步信号的同步器更简单、具有更低的延迟和更低的故障可能性。
不幸的是,附加的周期性同步器展示出各种限制。例如,大多数现有系统的信号使用异步先入先出(FIFO)来与周期性时钟同步。这些引发对FIFO存储器的显著的面积开销。它们还添加数个周期的延迟,因为必须通过多个触发器使FIFO的经格雷编码的输入和输出指针同步以跨时钟域移动它们。
因此存在对于解决与现有技术相关联的这些和/或其他问题的需要。
发明内容
提供用于确定用于安全采样时钟域的信号的时间的系统和方法。在一个实施例中,基于第二时钟域和第一时钟域之间的相对频率估计来计算第一时钟域的相位估计,以及基于相位估计来确定在其期间来自第一时钟域的信号不变使得信号能够由第二时钟域安全采样的第一时间,以在第二时 钟域中生成第一经采样的信号。此外,计算经更新的相位估计,并且基于经更新的相位估计来确定在其期间来自第一时钟域的信号正在改变使得信号不能够由第二时钟域安全采样的第二时间。在第二时间期间维护第二时钟域中的第一经采样的信号。
附图说明
图1示出了根据一个实施例的、用于使用频率估计来确定用于安全采样时钟域的信号的时间的方法。
图2示出了根据另一个实施例的、用于使用相位估计来确定用于安全采样时钟域的信号的时间的方法。
图3示出了根据又一个实施例的、用于使用相位估计来安全采样时钟域的信号的全数字周期性同步器。
图4示出了根据再一个实施例的频率估计器。
图5A示出了根据另一个实施例的相位检测器。
图5B示出了根据又一个实施例的、用于分开的早和迟检测的相位检测器。
图5C示出了根据再一个实施例的四样本相位检测器。
图5D示出了根据另一个实施例的相位检测器校准器。
图5E示出了根据另一个实施例的、用于检测奇相位和偶相位的相位检测器。
图6示出了根据又一个实施例的相位估计器。
图7示出了根据再一个实施例的冲突检测器。
图8示出了根据另一个实施例的半权重(power-of-half)冲突检测器。
图9示出了根据又一个实施例的向前同步器。
图10示出了根据图9所示的向前同步器的操作的同步器状态图。
图11示出了图9所示的向前同步器的操作的时序图。
图12示出了根据又一个实施例的、具有流控制的同步器。
图13示出了图12所示的具有流控制的同步器的操作的时序图。
图14示出了根据另一个实施例的相位循环,所述相位循环示出偶阻进(keep-out)区域和奇阻进区域以及在其中选择偶寄存器的区域。
图15示出了根据另一个实施例的、使用偶/奇向前同步器的FIFO同步器。
图16示出了根据另一个实施例的FIFO同步器,其中维持头部指针和 尾部指针的偶版本和奇版本进一步降低FIFO延迟。
图17A-D示出了根据其他实施例的各种相位循环。
图18示出了在其中可以实现各先前实施例的各种架构和/或功能性的例示性系统。
图19A示出了根据又一个实施例的、用于使用相位估计来确定用于安全采样时钟域的信号的时间的方法。
图19B示出了根据又一个实施例的向前同步器。
图19C示出了根据图19B所示的向前同步器的操作的同步器状态图。
具体实施方式
表1示出了下文对图的描述中所引用的各种符号和信号名称,针对这类符号和信号名称的至少一些附有例示性的值。
表1
此外,下文所包括的各实施例的示例在由威廉·J·达利和斯蒂芬·G·特尔于2010年的异步电路与系统国际研讨会所发表的“The Even/Odd Synchronizer:A Fast,All-Digital,Periodic Synchronizer,”中进行了描述,见关于异步电路与系统的2010IEEE研讨会论文集75-84页,其通过援引整体并入本文。
图1示出了根据一个实施例的、用于使用频率估计来确定用于安全采样时钟域的信号的时间的方法100。如在操作102中所示,利用频率估计器计算第一时钟域的频率估计。关于本描述,第一时钟域可以包括可从其对信号进行采样的任何类型的系统的时钟域(例如具有特定频率的时钟)。例如,第一时钟域可以包括中央处理单元(CPU)、图形处理单元(GPU)、存储器控制器和/或具有时钟域的任何其他系统的时钟域。
如以上所提及的,第一时钟域可以包括系统的时钟。进一步地,时钟域可以以特定的频率进行操作(例如发射信号)。为此,第一时钟域的频率估计可以包括对系统时钟频率的估计(例如度量等)。
在一个实施例中,可以利用一对b比特(b-bit)计数器来计算频率估计。例如,计数器中的第一个(后文称为第一计数器)可以由第一时钟域计时并且可以对第一时钟域中的时钟的脉冲进行计数。进一步地,计数器 中的第二个(后文称为第二计数器)可以对期望对来自第一时钟域的信号进行采样的第二时钟域中的时钟的脉冲进行计数,并且可以由第二时钟域计时。应该注意第二时钟域可以包括系统的时钟域,可由其对第一时钟域的信号进行采样,并且因此和与第一时钟域相关联的系统不同。例如,第一时钟域的频率可以与第二时钟域的频率不同。
当第二计数器到达其终端计数时,可以停止第一计数器。以此方式,第一计数器正在对脉冲进行计数的时间可以等于第二计数器到达终端计数所花费的时间。之后可以将第一计数器的计数记录在寄存器中。这类第一计数可以指示第一时钟域的频率估计。
在另一个实施例中,可以计算频率估计而无需测量第一时钟域和第二时钟域中的每一个的频率。在这类实施例中,第一时钟域和第二时钟域可以具有相差有理数的频率。例如,第一时钟域的频率可以等于第二时钟域的频率乘以N/D,其中N和D是整数。因此,对于整数N和D,可以按照N除以D(N/D)来计算频率估计。
被用来计算频率估计的频率估计器可以包括在同步器中。例如,可以在与第一时钟域相关联的系统和与第二时钟域相关联的系统之间实现同步器用于使第一时钟域和第二时钟域之间的信号同步(例如,用于使由第二时钟域从第一时钟域对信号的采样同步)。如以下所描述的,可以基于所计算的频率估计来实施这类同步。
此外,如在操作104中所示的,使用频率估计来确定在其期间来自第一时钟域的信号不变使得信号能够由第二时钟域安全采样的时间。例如,在其期间来自第一时钟域的信号不变的时间可以包括第一时钟域的相位,在该第一时钟域的相位期间来自第一时钟域的信号不变(例如静态的等等)。作为另一个示例,在其期间来自第一时钟域的信号不变的时间可以包括在与第一时钟域的时钟沿相关联的检测范围以外的任何时间段。例如,可能知道信号与第一时钟域的时钟的边沿同步地改变。因此,检测范围可以包括在第一时钟域的时钟沿之前的第一时间段和在第一时钟域的时钟沿之后的第二时间段的组合。
在一个实施例中,可以基于识别第一时钟域和第二时钟域为有理相关来确定在其期间来自第一时钟域的信号不变的时间。有理关系可以起因于第一时钟域的频率和第二时钟域的频率二者都由锁相环(PLL)从共同晶体基准频率生成,该锁相环分解基准频率并且之后向上增加。
在另一个实施例中,一经将第一时钟域和第二时钟域识别为有理相关, 就可以自动地确定第一时钟域的相位是不变的(并且因此不能被检测)或是缓慢变化的。因此,可以确定在其期间来自第一时钟域的信号不变的时间而非一定利用对第一时钟域的相位的估计(例如,因此仅利用第一时钟域的频率估计)。
例如,相位可以表示为P=a.b/D,其中“a”是整数部分,“b”是小数部分,并且D是有理相对频率的分母。以此方式,相位可以被检测并且上限(up)和下限(lp)可以初始化为按D进行比例缩放的检测区域的界限,如以上所描述的。在一个实施例中,第一检测可以初始化相位界限(up和lp)。D个相对相位可以被重复访问,其中的至少一个被期望造成检测(并且因此检测可能的冲突)。在没有检测的D+1个周期之后,可以确定两个时钟之间的所有的D个相对相位不造成冲突,使得在其期间来自第一时钟域的信号不变的时间可以被确定,使得信号能够由第二时钟域安全采样。
图2示出了根据另一个实施例的、用于使用相位估计来确定用于安全采样时钟域的信号的时间的方法。如在操作202中所示的,利用频率估计器计算第一时钟域的频率估计。关于本描述,可以以以上关于图1的操作102所描述的方式来计算频率估计。
进一步地,如在操作204中所示的,利用相位估计器基于频率估计来计算第一时钟域的相位估计。在一个实施例中,可以检测第一时钟域的相位。例如,早和迟样本可以来自相对于第二时钟域的第一时钟域。
早和迟样本可以包括样本对,每对由早样本和迟样本组成。进一步地,可以是与第一时钟域同步的信号的早和迟样本。如果一对早和迟样本不同,可以确定在发生于取得早和迟样本的时间之间的检测区域(例如时间)期间发生转变。以此方式,可以检测第一时钟域的相位。
在另一个实施例中,可以基于相位检测来计算相位估计。例如,可以相对于第二时钟域维护对第一时钟域的相位的b比特运行估计。相位估计可以是b比特分数,表示单位循环周围的零和一之间的值。进一步地,可以在每次以以上所描述的方式检测相位时都复位相位估计以指示从第一时钟域进行采样是安全的。
在进一步的实施例中,根据检测,应该将第一时钟域的相位设置为f(S+1),其中将附加的周期添加到S(同步器的延迟)以在它发生之前的一个周期预测相位估计。可以将以上所描述的第一时钟域的相位设置为f(S+1),使得相位估计在第二时钟域的下一个上升沿处预测第一时钟域的相位。例如,相位估计可以在第一时钟域的偶周期和奇周期内对相位进行 编码。如果相位未被检测,则可以在第二时钟域的每个周期期间将相位估计增大第一时钟域的相对频率。为此,可以维护运行相位估计。应该注意,除频率检测器之外,相位检测器和相位估计器也可以包括在同步器中。例如,可以在与第一时钟域相关联的系统和与第二时钟域相关联的系统之间实现同步器用于使第一时钟域和第二时钟域之间的信号同步(例如用于使由第二时钟域从第一时钟域对信号的采样同步)。如以下所描述的,可以基于所计算的相位估计来实施这类同步。
此外,如在操作206中所示的,使用相位估计来确定在其期间来自第一时钟域的信号不变的时间,使得信号能够由第二时钟域安全采样。如以上所提及的,相位估计可以指示在其期间从第一时钟域采样安全的时间(即当来自第一时钟域的信号已知为不变时)。
例如,相位估计可以预测第一时钟域在第二时钟域的下一个上升沿处的相位。这可以允许输入信号的经延迟版本在第二时钟域样本的上升沿对正在阻进区域中进行转变(并且因此可能正在改变)的直接输入进行采样之前被采样。
现在将关于各可选架构和特征来阐述更多示例性的信息,根据用户的期望可以采用所述架构和特征来实现或不实现前述的框架。应该强烈注意下面的信息出于示例性的目的而阐述并且其不应该被认为是以任何方式进行限制。下面特征中的任何一个可以可选地合并,排斥或无需排斥所述的其他特征。
图3示出了根据又一个实施例的、用于使用相位估计来安全采样时钟域的信号的全数字周期性同步器300。作为选项,可以实现全数字周期性同步器300以实行图1和/或2的方法。然而当然,全数字周期性同步器300可以在任何期望的环境中实现。还应该注意前述定义可以在本描述期间应用。
可以使用完全数字部件,通过测量任意周期性信号的频率和相位,并且之后使用该信息来确定何时采用接收时钟对信号进行简单采样是安全的以及何时直接采样是不安全的并且必须使用经延迟的时钟,来使该任意周期性信号同步。通过使用频率和相位,FIFO存储器的使用可以被避免。此外,同步的延迟可以被降低(例如通过对通过蛮力(brute-force)同步器来使经格雷编码的头部和尾部指针同步加以避免)。
如果FIFO同步器被用于流控制,则可以使用同步器来代替蛮力同步器 (使用串联连接的多个触发器)以使FIFO头部和尾部指针同步。这可以降低FIFO同步器的延迟并且消除对指针进行格雷编码的使用(否则其可要求维护格雷编码和二进制指针二者)。
关于本实施例,可以将传入信号d同步到(发射时钟域的)发射时钟tclk,tclk具有固定的频率fT,fT低于(接收时钟域的)接收时钟rclk的频率fR。此处所描述的实施例还在fT高于fR的情况下生效。
如所示的,频率估计块使用一对b比特计数器来测量发射时钟的频率。频率估计块输出对2f取模的b比特相对频率f=fT/fR。
相位检测块记录最后一次发射时钟进入接收时钟的检测区域。当该情况发生时输出检测信号(det)。因为检测信号被同步,所以它反映了S个接收周期之前的发射时钟的相位。应该注意可以采用多个检测区域和信号。然而,关于本实施例,假定单个位的检测信号。
相位估计块维持对接收时钟的相位的运行估计。它在每次检测被接收时将相位p设置为(S+1)f并且在对于其不存在检测的rclk的每个周期将运行相位增量f。
最后,冲突检测块使用当前的相位估计来确定何时直接采样是安全的或何时要求经延迟的采样。当相位p在接近危险点的窗口中时,将冲突信号c置位(assert),其引导多路转换器(multiplexer)以采样准同步输入的经延迟版本。
同步器数据路径接受被同步到tclk的a比特宽的输入d1。在图中,d1由寄存器F1生成,寄存器F1由tclk计时。可选地,寄存器F1可能不一定是同步器300的一部分。然而,作为另一个选项,信号d1可以直接来自寄存器而无需干预逻辑。锁存器L1(或触发器,未示出)在rclk的下降沿上对信号d1进行采样以生成经延迟的输入信号d2。当不存在冲突时多路转换器选择直接输入d1,并且当存在冲突时多路转换器选择经延迟的输入d2。保证该选择的结果dx对于由寄存器F2进行采样是安全的,寄存器F2产生与rclk同步的输出ds。
设置冲突检测窗口,使得对多路转换器的所选择的输入进行采样是安全的。当c被置位并且多路转换器选择d2时,保证由锁存器L1在rclk的下降沿上对信号d1的采样是安全的。当c未被置位时,那么保证由寄存器F2在rclk的上升沿上对d1的采样是安全的。
同步器300使用锁存器L1来将输入d1延迟半个周期(在clkR的下降沿上进行采样)。因此,可以提供pD=0.5的相位延迟。作为另一个选项, 具有不同时序的锁存器或寄存器可以用来将d1延迟不同的量。作为又一个选项,延迟线(例如串联的偶数个反相器)可以用来将信号d1延迟足够的时间量以使得由寄存器F2进行采样是安全的。这些替代品可以给出PD的不同值。
图4示出了根据再一个实施例的频率估计器400。作为选项,频率估计器400可以在图1-3的功能性和架构的上下文中实现。然而当然,频率估计器400可以在任何期望的环境中实现。还应该注意前述定义可以在本描述期间应用。
图3的同步器取决于在每个接收时钟周期结束时具有对发射时钟相位的准确估计。该估计通过以下步骤生成,首先测量发射时钟的相对频率(图3所示)并且之后使用该频率估计来与相位检测器(图5E所示)一起生成相位估计。使用区间运算来计算相位估计以维护对相位的准确误差界限。
如图4所示,提供了频率测量单元的框图400,其使用一对计数器来计算发射时钟相对于接收时钟的频率f。由开始信号st发起频率测量过程。st的上升沿复位接收计数器(CR)。还将开始信号通过蛮力同步器传递到发射时钟(tclk)域中,这产生信号stT,其用来复位发射计数器(CT)。
当接收计数器到达终端计数(例如对于b=10比特计数器来说计数1023)时,将信号tc置位并且将其同步到tclk域中。该经同步的终端计数信号tcT使发射计数器停止。平衡sp和tc同步器的延迟,使得CT出来的的最终计数反映在2b接收时钟(rclk)周期期间发生的tclk周期的数目,即发射器的相对频率f=fT/fR。将终端计数信号同步回rclk域中以产生信号tcTR,其指示何时频率测量f就绪并且在结果寄存器(RR)中使能它的捕获。
计数器CT产生b+1比特结果,使得f以模2生成。它是固定点数,一比特在二进制点的左边,b比特在右边。以模2而非模1来计算发射频率估计,使得相位估计器(以下关于图5E所描述的)可以追踪发射器是奇时钟周期还是偶时钟周期。
图4的频率测量块中存在三个蛮力同步器。这些同步器仅使用一次,即当频率在复位之后被测量时。所有这些同步器都偏离关键路径,所以可以使它们的延迟任意高以实现任意低的同步故障可能性。典型地四个或五个时钟周期的延迟S足以给出小于10-40的故障可能性。
开始信号和终端计数同步器各自在频率测量中引入一周期的不确定性。因此频率测量块的输出精确到±1LSB,即±2-b。
图5A示出了根据另一个实施例的相位检测器500。作为选项,相位检测器500可以在图1-4的功能性和架构的上下文中实现。例如,相位检测器可以包括以上所描述的相位估计器的部件。然而当然,相位检测器500可以在任何期望的环境中实现。还应该注意前述定义可以在本描述期间应用。
如所示的,关于相位检测器500所示的相位检测逻辑通过取得相对于rclk的、与tclk同步的信号dT的早和迟样本来进行操作。如果早和迟样本不同,则确定在检测区域期间发生转变。触发器F1生成与每个周期翻转(toggle)的tclk同步的信号dT。相对于rclk,由触发器F3对信号dT进行早采样并且由触发器F2对其进行迟采样。由rclk被延迟T1的版本对触发器F2计时并且因此在rclk的上升沿之后的时间T1处对dT进行采样。dT的该迟采样的结果是信号dL。触发器F3在利用rclk对信号dT进行采样之前将其延迟时间T2。效果与在rclk之前的时间T2处对dT进行采样相同。该早采样的结果是信号dE。
信号dL和dE是对异步信号进行采样的结果并且因此可能进入亚稳态。为了留出时间使任何亚稳态趋于稳定,将这些信号分别传递通过蛮力同步器S1和S2。这产生早和迟信号的经延迟和经同步的版本:dLS和dES。为了达到充分低的同步故障可能性,信号dLS和dES将从dL和dE被延迟rclk的S个(典型地2至4个)周期。触发器F2和F3可以分别视为同步器S1和S2的第一级,或者可以省略这些触发器并且同步器直接用来取得早和迟样本。
异或门X1检测何时dLS和dES之间存在差。该门的输出det当是真信号时,则在S个周期以前,信号dT具有发生在相对于rclk的转变的窗口[-T2,T1]中的转变。以此方式,相位检测器500可以检测何时发射时钟相位在范围[-T2/T,T1/T]中,其中T是发射时钟周期。
延迟线T1和T2可以由偶数个反相器的链实现。必须使这些延迟足够大以包括寄存器F2的阻进窗口tko=ts+th,加上该阻进区域任何一边的防护带g。可选地,一个(FO1)反相器的4至8个扇出可以用于每个延迟线。
虽然此处仅示出了单个相位检测器,但是应该注意可以使用两个相位检测器,一个针对rclk的上升沿并且一个针对rclk的下降沿。两个检测信号可以用来在检测发生在rclk的上升沿上时将相位估计复位为零(加上(S+1)f),以及用来在检测发生在rclk的下降沿上时将相位估计复位为0.5(加上(S+1)f)。这可以防止当相位进动非常慢时亚稳态被从经延迟的路径 采样。
如以下关于图5B-D所描述的,相位检测器500可以被修改以使用多个样本用于提供更准确的相位测量,可以维持对相位估计的上限和下限(例如利用区间运算来计算相位)用于允许更精确的确定何时一个时钟在另一个的“阻进”区域中,并且可以被自动校准以确定多少比例的周期正在被检测。
图5B示出了根据又一个实施例的、用于分开的早和迟检测的相位检测器510。作为选项,相位检测器510可以在图1-4的功能性和架构的上下文中实现。然而当然,相位检测器510可以在任何期望的环境中实现。还应该注意前述定义可以在本描述期间应用。
如所示的,产生两个输出,包括检测何时发射相位在[-T2/T,0]的范围中的detE和检测何时相位在范围[0,T1/T]中的detL。通过使用detE和detL,基于经检测的相位所计算的相位估计可以被更准确地限定。
图5C示出了根据再一个实施例的四样本相位检测器520。作为选项,四样本相位检测器520可以在图1-4的功能性和架构的上下文中实现。然而当然,四样本相位检测器520可以在任何期望的环境中实现。还应该注意前述定义可以在本描述期间应用。
如所示的,(关于图5B的相位检测器510)可以包括附加延迟线以产生附加检测信号。应该注意可被包括的附加检测线的数目可以可选地扩展为任何期望的数目。通过添加延迟线,可以提供相位信息的更大准确度。四样本相位检测器520当发射相位在[-2T2/T,-T2/T]中时生成detLL并且当相位在[T1/T,2T1/T]中时生成detEE。
当检测相位时,原始的快周期性同步器可以有效地使相位估计归零(例如将相位设置为(S+1)f以说明使相位检测同步的S个周期的延迟)。可以通过维护对相位估计的上限和下限(例如通过使用区间运算来计算相位估计),来更准确地检测在其期间发射相位在阻进区域中的时间。对相位估计的更新可以使用对频率的界限。因为图4中的两个同步器各自仅引入一周期的不确定性,所以频率由范围[f-1,f+1]界定。
表2示出了可以用于使用图5B中的相位检测器510更新上和下相位估计(分别是up和lp)的Verilog代码的一个示例。当然,应该注意标2中所阐述的代码仅用于示例性的目的,并且因此不应视为以任何方式进行限制。
表2
表2所示的代码对相位检测将上限和下限设置为适当的值并且之后使用对频率的界限使它们随时间演变。使用用于相位估计的上限和下限指示当这些界限与防护带区域[-c,c]重叠时发射时钟域在阻进区域中。例如,这可以当上限或下限在阻进区域中时发生,或者如果上限为正并且下限为负则发生。
表3所示的最后一个实例(case)覆盖相位区域包括整个阻进区域的情形。表3示出了基于带符号运算的、可以被实现以使用用于相位估计的上限和下限的Verilog代码的一个示例。当然,应该注意表3所阐述的代码仅用于示例性的目的,并且因此不应视为以任何方式进行限制。
表3
ko=((up>-c)&&(up<c))|((lp>-c)&&(lp<c))|((up>0)&&(lp<0));//带符号
表4示出了基于无符号运算的、可以被实现以使用用于相位估计的上限和下限的Verilog代码的一个示例。当然,应该注意表4所阐述的代码仅用于示例性的目的,并且因此不应视为以任何方式进行限制。
表4
ko=(up>cneg)|(up<c)|(lp>cneg)|(lp<c)|(up<lp);//无符号
采用表4所示的无符号表示,相位从0增量到最大值(全1)并且cneg是与-c相对应的大的正值(接近全1)。采用偶/奇同步器(以下所描述的), 通过以当前的Tx周期是偶还是奇来限制ko,分开的阻进偶信号(koe)和阻进奇信号(koo)可以以此方式来生成。
进一步地,为了确定T1/T、T2/T等的实际大小,除发射器周期时间T之外,还利用确定T1和T2的过程变化。这可以假定同步器在接收器时钟域中。如果同步器在发射时钟域中(例如对接收器相位进行估计),那么是接收器周期时间。
如果发射和接收时钟不是有理相关的,则将通过检测导致检测的发射周期的分数来测量T1/T(和T2/T)。这可以在通过添加两个附加的计数器来测量频率的同时被完成。如果两个时钟不是有理相关的,则接收时钟将均匀地对发射时钟进行采样并且该分数可以收敛到T1/T(或T2/T)。
图5D示出了根据另一个实施例的相位检测器校准器530。作为选项,校准器530可以在图1-5C的功能性和架构的上下文中实现。例如,相位检测器校准器可以是以上所描述的相位检测器的部件。然而当然,校准器530可以在任何期望的环境中实现。还应该注意前述定义可以在本描述期间应用。
如所示的,校准器530测量检测区间d。校准器530在计数器CT2到达它的终端计数所花费的2b个tclk周期期间,通过对在其期间det(det=dete|deto)为真的tclk周期的数目进行计数来操作。这给出2d作为b比特二进制分数。像频率估计一样,由于同步器延迟的不确定性,该对d的测量具有+/-1的准确度。给定该不确定性,CD(计数器)的输出被增量以给出对2d的上限(例如使得对与相位估计相关联的检测区间的上限被提供以补偿同步器延迟)。可以在该点(未示出)处添加附加值以提供如以上所描述的防护带(例如对说明电压和温度变化以及中频抖动的d的界限)。将该数字右移一比特位置来给出d。完成信号指示对d的测量何时完成。
如果时钟不是有理相关的,则校准器530仅均匀地对tclk相位进行采样。如果它们是有理相关的,那么接收时钟重复访问单位相位循环上的相同的D(有理比的分母)点。如果D足够大,则这是足够的。估计误差小于1/D。对于小的D,可以使用独立的频率源-例如环形振荡器-校准相位检测器以驱动CD计数器。为此,校准器530可以允许相位检测器进行自校准。
图5E示出了根据另一个实施例的、用于检测偶相位和奇相位的相位检测器540。作为选项,相位检测器540可以在图5A-5D的功能性和架构的上下文中实现。然而当然,相位检测器540可以在任何期望的环境中实现。 还应该注意前述定义可以在本描述期间应用。
相位检测器540检测何时发射数据信号上的转变落入在接收时钟沿周围±td的窗口中。相位检测器对每个周期翻转的发射信号“even”进行采样。该信号在偶tclk周期期间为高并且在奇tclk周期期间为低。触发器F2利用被延迟td的rclk对“even”进行采样,给出dL,“even”的样本在rclk的上升沿之后的td,即迟采样。早采样dE由F3产生,F3对被延迟td的“even”进行采样。
如果“even”的边沿在rclk之前的td和rclk之后的td之间发生,则由F3和F2所采样的值将不同。早和迟样本由分别生成经同步的早和迟样本dES和dLS的一对蛮力同步器同步到接收时钟域。经同步的早和迟样本之间的差由一对与门进行检测。如果早采样为高并且迟采样为低,则检测tclk的偶边沿(结束偶周期的一个边沿)并且将“dete”置位。如果早样本为低并且迟样本为高,则检测tclk的奇边沿并且将“deto”置位。
在相位检测器中存在两个蛮力同步器,rclk的每个周期它们进行操作。然而,像频率测量单元中的那些一样,这些同步器偏离关键路径,所以可以使它们的延迟大到使得同步故障的频率任意小。用于采样触发器加上同步器的4或5个周期的经结合的延迟S典型地足以维护非常小于10-40Hz的故障频率。
为了初始化相位估计器,如以下所描述的,td的值被界定。虽然计算对td的最坏情况的上限是可能的,但是如果测量到td的瞬时值则可以生成更准确的相位估计并且之后将防护带添加到该测量以说明td随温度和电压的变化。
图6示出了根据又一个实施例的相位估计器600。作为选项,相位估计器600可以在图1-5E的功能性和架构的上下文中实现。然而当然,相位估计器600可以在任何期望的环境中实现。还应该注意前述定义可以在本描述期间应用。
如所示的,相位估计器600通过维持相对于rclk的、对tclk相位的b比特运行估计来进行操作。该估计p是b比特分数,其表示单位循环周围的零和一之间的值。每次在相位检测逻辑将det置位时,相位估计p就被复位为(S+1)f,这指示它已经检测到窗口[-T2,T1]中的dT的转变。当det未被置位时,相位在rclk的每个周期被增量f,即tclk的相对频率。寄存器pR保持b比特运行相位p。如果det被置位,则在相位检测逻辑中的同步器的延迟之前,将相位p复位为(S+1)f以反映相位在S个周期之前是零。 当det为低的时候,通过每周期添加f到运行和,来更新相位估计。
注意将预见性因子A设置为S+1,使得运行相位p预测在rclk的下一个上升沿处的tclk的相位。这使得图3中的多路转换器能够被设置为,在rclk的上升沿对正在阻进区域中进行转变的直接输入进行采样之前选择输入数据的经延迟的版本。
相位估计的准确度可以基于相位检测器的窗口和频率估计的准确度。一经检测,准确度可以初始地等于相位检测器的窗口[-T2,T1]。响应于没有检测的每个周期,频率估计中的误差可以是全LSB。
图7示出了根据再一个实施例的冲突检测器700。作为选项,冲突检测器700可以在图1-6的功能性和架构的上下文中实现。然而当然,冲突检测器700可以在任何期望的环境中实现。还应该注意前述定义可以在本描述期间应用。
冲突检测器700包括命中检测逻辑的一个实施例。冲突检测器700将相位p的运行估计与界线pL和pH相比较。当将p解释为无符号数时,如果p<pL或p>pH,则输出c将被置位。这与当将相位解释为带符号数时相位在范围[pH,pL]中(例如0周围的窗口)相对应。可以将这类窗口设置为大于准确度窗口[-N2-(b+1)-T2,N2-(b+1)+T1]。
图8示出了根据另一个实施例的半权重冲突检测器800。作为选项,半权重冲突检测器800可以在图1-7的功能性和架构的上下文中实现。然而当然,半权重冲突检测器800可以在任何期望的环境中实现。还应该注意前述定义可以在本描述期间应用。
当界线pL和pH被制约为具有2-I形式时,可以使用图8所示的命中检测逻辑的较简单的版本。半权重冲突检测器800检测何时p的最重要的i位是全0或全1。例如,为了检测何时p在范围[-1/8,1/8]中,可以确定何时p的较高的3位是全0或全1。作为另一个示例,可以通过检测何时p的较高的2位是全0或全1而将p检测为在范围[-1/4,1/4]中。
表5示出了可以用在表6所描述的、图3中的全数字准同步同步器300的操作的示例中的参数。应该注意这类参数和操作的示例被阐述仅用于示例性的目的,并且因此不应视为以任何方式进行限制。
表5
f | 0.467 |
阻进窗口 | [-0.01,0.01] |
[0118]
检测窗口 | [-0.05,0.05] |
冲突窗口 | [-0.125,0.125] |
S(前视周期) | 4 |
在以下所示的表6中,示出了操作的示例。第一列反映周期数目并且第二列示出tclk相对于rclk的实际相位。标记为Det的列指示何时实际相位落入相位检测器的检测窗口。如标记为Del的列中所反映的,相位检测器的实际输出是三个周期之后。当Del为真时,将相位设置为4f=0.868,其预测对下一个周期的实际相位。标记为p的列示出了实际相位。对初始的检测它是完全准确的,但是对随后的检测可能具有如检测窗口一样大的误差。标记为c的列示出了何时所估计的相位落入冲突信号内,并且因此c被置位。注意这在冲突实际发生之前的一个周期预测到它。最后标记为ko的列示出何时实际的时钟相位落入阻进窗口。在表中发生单个情况下,通过对先前周期置位c而被正确地预测。
表6
周期 | 相位 | Det | Del | p | c | ko |
0 | 0.000 | T | T | |||
1 | 0.467 | |||||
2 | 0.934 | |||||
3 | 0.401 | T | 0.868 | |||
4 | 0.868 | 0.335 | ||||
5 | 0.335 | 0.802 | ||||
6 | 0.802 | 0.269 | ||||
7 | 0.269 | 0.736 | ||||
8 | 0.736 | 0.203 | ||||
9 | 0.203 | 0.670 | ||||
10 | 0.670 | 0.137 | ||||
11 | 0.137 | 0.604 | ||||
12 | 0.604 | 0.071 | T | |||
13 | 0.071 | 0.538 | ||||
14 | 0.538 | 0.005 | T | |||
15 | 0.005 | T | 0.472 | T |
[0122]
16 | 0.472 | 0.939 | T | |||
17 | 0.939 | 0.406 | ||||
18 | 0.406 | T | 0.868 | |||
19 | 0.873 | 0.335 | ||||
20 | 0.340 | 0.802 | ||||
21 | 0.807 | 0.269 | ||||
22 | 0.274 | 0.736 | ||||
23 | 0.741 | 0.203 | ||||
24 | 0.208 | 0.670 | ||||
25 | 0.675 | 0.137 | ||||
26 | 0.142 | 0.604 | ||||
27 | 0.609 | 0.071 | T | |||
28 | 0.076 | 0.538 | ||||
29 | 0.543 | 0.005 | T | |||
30 | 0.010 | T | 0.472 | |||
31 | 0.477 | 0.939 | T |
以下呈现了对于图3中的全数字准同步同步器300的准确度的分析。阻进窗口、检测窗口和冲突窗口的相对大小确定频率和相位估计所要求的精度b。假设b为检测窗口的大小,g为检测窗口和阻进窗口之间的防护带,并且c为冲突窗口的大小。在以上的示例中,d是0.10,g是0.04,并且c是0.25。
当确定准确的相位估计时,系统显然保证安全同步。在采样时间,发射相位已知为φ∈[lp,up],并且如果lp∈[x,1+x),则偶寄存器对于采样是安全的。如果合适地挑选系统参数b和d,则因为从用于lp和up的检测以阈值k发散以来已经足够久,所以当准确的相位估计未知时,系统还以准同步模式保证安全同步。在该准同步情况下,可以示出频率将在其中相位检测将发生在用于同步器阻进事件之前足够远的范围中以保证合适采样。
针对f考虑以下情况:
针对f<g/S(防护带),将在误差之前存在检测。在该情况下,相位将足够慢地移动到检测区域中,检测将在相位进入阻进窗口之前的S个周期发生,这给予时间来在实际的冲突发生之前使检测同步、更新相位估计并且将冲突信号置位。
针对g/S≤f<d,将在每个N=1/f周期存在检测,每次相位围绕单位循环旋转时至少检测一次。因此只要2-b<gck/S,就将在太多误差积累在相位估计中之前存在检测。(此处k=0.25是添加附加精度的因子。)例如,对于示例的数字,具有gck/S=(0.04)(0.25)(0.25)/4=.000625并且b=11比特,精度是足够的。
针对f≥d,f被表示为具有有界分母加上误差项的有理分数,f=N/D±e,其中 如以下所示的,被称为法里序列的、具有有界分母的分数序列的特性保证eDC<1。在该情况下,在相位循环周围可能存在D点的重复样式(pattern),其每个D周期段位移De。这给出与针对f<d相同的两种情况。
如果De<g/S,则每个段的相位位移足够小以致将在误差之前存在检测,与当f<g/S时相同。
如果g/S≤De<d,那么检测将在每个1/(D2e)周期发生,所以如果2-b<gck/S,则将在积累太多误差之前存在检测。此处对b的要求与以上的g/S≤f<d的情况完全相同。
需要示出针对f>d>1/C,可以总是将f表示为f=N/D±e,其中D≤C并且eDC<1。考虑法里序列F(C),0和1之间的有理数序列,其中分母D≤C。针对来自该集的两个相邻数p/q、r/s,将总是r/s=(ps+1)/qs的情况,其中q、s<=C并且(ps+1)=qr。那么两个相邻有理数p/q和r/s之间的距离是1/qs。将p/q和p/q+1/q(s+q)之间的f值分配到p/q并且将来自r/s-1/s(s+q)的数字分配到r/s。那么因为由于法里序列的特性而s+q>C,所以知道e=1/q(s+q),eDC=(1/q(s+q))qC=C/(s+q)<1。
同步器参数之间的依赖性指示它们以pD、d、c并且之后b的顺序被选择。相位延迟pD的值设置对其他参数的若干约束。如以上的示例中设置pD=0.5以同步器的平均延迟的轻微提高为代价而给予最大灵活性。可以通过将pD设置为较小的值,例如0.1,来降低延迟。然而,这可能对剩余参数产生非常紧的约束。无论为pD挑选哪个值,都可以实现相位检测器以检测何时dT的转变与相位0和与相位pD这二者一起发生,并且可以实现相位估计器以据此对这两种事件复位它的相位估计。当De非常小时,相位将在样本进入任何一个采样路径的阻进区域之前被复位。
检测区域d的大小部分地确定相位测量中的误差并且因此被设置得足够小,使得相位估计器可以准确地在何时选择直接的数据值和经延迟的数据值之间进行辨别。约束是d<pD/2-k,其中k是为相位估计器所挑选的 准确度参数。在另一方面,挑选小的d给出小的防护带并且因此增加在频率和相位估计器中所利用的位的数目。在一个实施例中,将d设置为大约pD/4使这两个约束平衡。因为d由反相器延迟线确定,所以它的值将跨PVT相当大地变化,并且因此同步器设计为在两个极端处工作。
当冲突检测窗口c被设置为pD的一半时,实现针对误差的最大容忍度。例如,当pD是0.5时(如在以上的示例中),将c设置为[-.25,.25]给出针对误差的最大余量。相位可以偏离0.25-tko并且同步器将仍然避免对不安全信号进行采样。在另一方面,将c设置为如此之大,给出经延迟的数据信号的许多“假阳性”选择,该经延迟的数据信号增加平均同步器延迟。在一个实施例中,将c设置为[-.25,.25]或[-.125,.125]。使c是一半的权重允许使用图8的简单检测电路。一旦pD、d和c被挑选,用于b的最小值就如以上所描述的被选择,使得2-b<gck/S。
作为选项,图3中的全数字准同步同步器300的高代价部分可以在同步器的实例化之间共享。频率估计块的单个拷贝可以在使tclk和rclk之间的信号同步的所有同步器之间共享,其中值f由一个时钟生成并且分布到这两个时钟域之间的所有同步器。以类似方式,单个相位检测块、相位估计块和冲突检测块可以在共享tclk和rclk之间的相同相位关系的若干同步器之间共享。
图9示出了根据又一个实施例的向前同步器900。作为选项,向前同步器900可以在图1-2和4-8的功能性和架构的上下文中实现。然而当然,向前同步器900可以在任何期望的环境中实现。还应该注意前述定义可以在本描述期间应用。
关于本实施例,可以避免与对信号的经延迟版本进行采样相关联的限制。为了将多位信号从发射时钟域转发到接收时钟域而无需流控制,发射时钟在交替周期上写一对寄存器。例如,在偶周期上写寄存器E(在偶周期结束时更新),并且在奇周期上写寄存器O。
之后接收器使用它的相位估计来选择最近所写的发射寄存器,其对在接收时钟域中进行采样是安全的(在当前rclk周期结束时)。选择是基于当前rclk周期p结束时所预测的tclk相位的。在每个接收时钟上,如果发射时钟相位在e.x和o.x之间,则选择寄存器O,其中e是指偶周期,并且x是“阻进”余量。否则,选择E寄存器。该同步器的延迟将取决于具有0.5+0.x的平均数的相位而在0.x和1.x之间变化。
虽然关于偶时钟周期和奇时钟周期以及两个寄存器对本实施例进行 了描述,但是应该注意,在其他实施例中,可以利用任何数目的时钟周期和寄存器。因此,时钟周期可以标记为模N并且可以采用N个寄存器。增加寄存器的数目允许非常大的阻进区域(例如大于单个UI)。由于该原因而使用N个寄存器可以适用于图9所示的向前同步器和以下关于图11所描述的流控制同步器这二者。
如图9所示,并且关于发射器端,在“rclk”的每个周期上将“tdata”交替地写入E和O寄存器中。在接收器端,选择逻辑确定选择两个寄存器中的哪一个以在“rdata”上输出。选择逻辑可以以对由频率和相位估计逻辑(未示出)所生成的发射器时钟的相位估计作为该决定的基础。该逻辑产生指示何时相位在偶(或奇)阻进区域“tkoe”(“tkoo”)中以及何时发射器在偶时钟周期“teven”中的中间信号。
表7示出了能够用于选择信号的代码的一个示例。应该注意这类代码被阐述仅用于示例性的目的,并且因此不应视为以任何方式进行限制。
表7
Wire sel=tkoe|(teven &~tkoo);
因此,关于本实施例,除非接收时钟在奇阻进区域中,否则当发射器在其偶时钟周期中时选择奇寄存器(奇寄存器刚好在奇时钟周期结束时被写)。否则,选择偶寄存器。
一旦初始化,向前同步器900就可以穿过各种不同的状态。表8示出了在初始化期间向前同步器900的可选状态。当然,应该注意这些状态被阐述仅用于示例性的目的并且不应被视为以任何方式进行限制。
表8
如关于图10所描述的,当复位时,向前同步器900就进入频率获得(FA)状态并且开始它的一对计数器以测量“其他”时钟的频率。在该状态期间,向前同步器900检查以查看是否存在相位检测(相位落入检测区域中)。
一旦获得频率,就进入相位获得(PA)状态并且向前同步器900等待相位检测。在该点处频率估计f和相位估计p已经被确定并且进入追踪状态(T)。如果不存在相位检测(例如发生超时),则两个时钟是与相位偏移有理相关的(f=N/D)(或接近有理相关的),使得相位循环周围的D个命中留在检测区域之外。在该情况下,因为相位进动被保证足够慢以致它将在误差发生之前被检测,所以进入M状态。
在追踪状态(T)中,向前同步器900每周期更新相位估计并且当向前同步器900检测到它在偶阻进区域或奇阻进区域中时,采取适当的行动。为从最后的相位检测以来的周期的数目计数并且当该数目超过阈值时,相位估计不再是可靠的并且向前同步器900进入准同步(M)状态。
如果相位正在非常缓慢地位移(以有理分数为模的均步或准同步),则向前同步器900可以安全地同步而无需预测。在该情况(M状态)下,向前同步器900利用蛮力同步器简单地对检测区域的入口进行检测并且使用足够大的防护带,使得误差不能在使检测同步所要求的数个周期期间发生。例如,来自tclk域的偶信号直接用来在E和O寄存器之间进行选择。这是安全的,因为相位正在足够缓慢地改变,并且防护带g=d-x足够大,使得相位检测将发生,这在该信号变得不安全之前返回到T状态。注意在有理情况下,随着相位位移到检测区域中,可以识别1比D检测样式(其中D是有理分母)。在第一检测时转到T状态可以在这类情形下被利用。
T状态中的操作取决于频率是恒定的或接近恒定的。为了安全(例如针对其中频率可能在短时间段期间改变的情形,诸如当在电源状态之间改 变时),频率测量电路可以持续操作并且将其测量与当前估计相比较。如果差异大于阈值,则向前同步器900可以退回到蛮力(B)模式。例如,以上所描述的FIFO同步器可以适用于通过对指针进行格雷编码并且与E/O同步器并行地操作一对蛮力同步器来关于频率改变模式进行工作。当频率正在改变时,同步器切换到使用蛮力同步器(B模式)。一旦频率稳定,它们变回使用快周期性同步器(M模式)。
向前同步器900可以可选地仅在时钟是周期性的或与周期性行为的偏差被明确地用信号表示(例如,“非周期性”信号在时钟开始不可预测地变化之前触发蛮力模式)的情况下使用。以此方式,对太慢的频率改变的检测由此时钟域之间的数个不安全采样能够在对改变的检测之前进行,可以被避免。
如以上所提及的,具有针对整数N和D以有理数相异的频率即fr=Nft/D的两个时钟域之间的信号还可以被同步。对于有理频率,N、D、和两个频率有理相关的指示由系统提供。两个时钟之间的相位假定为未知的并且甚至能够缓慢地变化。
当时钟域有理相关时,不需要进行频率测量。反而f=N/D可能被用作频率。此外,相位可以维持乘以D以促进集成。例如,在一个实施例中,利用整数部分a和分数部分b表示相位,使得相位p=a.b/D。
进一步地,可以如以上关于图5B-E所描述的来检测相位。上限和下限up和lp被初始化到按比例D进行缩放的检测区域的界限。向前同步器900在“初始”状态开始。第一检测造成到“锁定”状态的转变并且初始化相位界限(up和lp)。在锁定状态中,系统重复访问D相对相位,其中的至少一个被期望造成检测(并且因此检测可能的冲突)。在D+1个没有检测的周期之后,做出到“安全”状态的转变。
因此可以注意两个时钟之间的D个相对相位不造成冲突,并且因此在所有D个相位中直接对偶寄存器和奇寄存器二者进行采样是安全的。在“锁定”状态中,通过以模D每周期添加N来推进(advance)经按比例缩放的相位界限(up和lp)。频率中不存在不确定性,所以界限将不会随着时间发散。
为此,相位检测(或其锁定)能够用来在时钟域有理相关时动态地检测相位差。此外,通过检测来自所估计的相位的冲突,可以避免使用大小为D的表格来存储冲突样式,使得用于大的D的面积也可以被避免。
在一个实施例中,如果两个时钟之间的相位缓慢地改变(以每周期Δp, 即至少暂时地实际频率是ft=Nfr/D+Δp),那么只要Δp<min((d-k)/2D,(d-k)/2S),就可以实现以上所描述的系统,其中(d-k)/2是检测区域(d)和阻进区域(k)之间的单侧余量,D是有理频率的分母,并且S是相位检测器同步器的延迟。该约束确保进入检测区域的第一步骤(至多DΔp的)可能不渗入阻进区域并且还确保一旦被检测到,检测就可以在相位进入阻进区域之前被同步。
为此,相位估计可以用来构建快的、简单的向前同步器,其将并行信号从一个周期性时钟域移动到另一个。具体地,在本实施例中,提供了向前同步器,其以免于同步故障方式将并行信号从发射时钟(tclk)域向前移动到接收时钟(rclk)域,但是无需流控制。进一步地,如以下所描述的,该同步器可以被采用在FIFO同步器中以提供同步和流控制。
图11示出了图9所示的向前同步器的操作的时序图。关于本实施例,“tclk”比“rclk”快。如所示的,相位估计器信号(even、tkoe和tkoo)反映tclk的相位在rclk的下一个上升沿上将如何。因此tkoe在所示出的rclk的第一边沿变高,因为rclk的下一个边沿在tclk的偶边沿的阻进区域中。
如所示的,总是对不在阻进区域中的最近所写的寄存器进行采样。rclk的第一边沿对来自寄存器E的值“a”进行采样,因为该边沿落入tclk的奇周期中。下一个边沿对来自寄存器O的“b”进行采样,因为该rclk边沿在tclk的偶阻进区域中。第三边沿对来自寄存器O的“d”进行采样,因为它落入偶tclk周期中。最终,最后一个rclk边沿对来自寄存器“E”的“e”进行采样,因为它落入tclk的奇阻进区域中。注意从不对值“c”进行采样,因为tclk比rclk快。确保每个值恰好被采样一次要求如以下关于图12所描述的具有流控制的同步器。
图12示出了根据又一个实施例的具有流控制的同步器1200。作为选项,同步器1200可以在图1-11的功能性和架构的上下文中实现。然而当然,同步器1200可以在任何期望的环境中实现。还应该注意前述定义可以在本描述期间应用。
关于本实施例,可以提供两个时钟域之间的流控制。例如,在发射器和接收器二者中都提供频率和相位估计器。可以扩展相位估计器以报告在范围0-2中(在周期中)的相位,使得它们描述其他时钟域是在偶周期还是奇周期上并且时钟在该周期的什么位置。发射器传递数据通过一对寄存器(数据寄存器)并且接收器传递流控制信息通过一对寄存器(反向翻转寄存器)。使用相位估计,同步器计算何时其他时钟在用于偶周期或奇周期 的“阻进”区域中。协议避免当在用于在其期间寄存器被写的周期(偶或奇)的阻进区域中时对寄存器进行采样。
关于本实施例,在同步器中实现流控制。具有流控制的同步器1200通过使发射器如以上关于图9所描述的来交替地写一对寄存器而进行操作,但是发射器暂停以在它们被接收器接受之前避免覆写寄存器以及当没有有效数据可用时避免写寄存器。当新的数据已经写到寄存器时,发射器在每个寄存器中翻转一位(向前翻转寄存器)以发出信号。当发射器数据被接受时,接收器交替地翻转一对流控制触发器(反向翻转寄存器)以发出信号。接收器可以因为来自下游流控制(即未就绪的信号)的反压力而延迟对触发器进行翻转。当接收器已经翻转相应的流控制触发器时发射器知道接收器已经接受值。
在一个实施例中,利用就绪/有效的流控制协议。发射器可以可选地仅在有效数据可用时更新发射寄存器。当两个寄存器都是满的时,发射器向未就绪的上游发出信号。接收器进一步在已经接收到来自发射器的、尚未由下游逻辑接受的新的字时用信号表示有效输出,如由它的就绪输入所用信号加以表示的。当就绪输入为低时,接收器可能不接受来自发射器的有效数据字。
为了使时钟域交叉安全,发射器传递ta寄存器的翻转位通过在偶时钟周期和奇时钟周期上所更新的一对寄存器(向前翻转寄存器)(分别是tae和tao)。类似地,将tb的翻转位传递通过tbe和tbo并且将接收翻转寄存器传递通过rae、rao、rbe和rbo。
接收器考虑这些经同步的翻转位以确定何时对ta或tb进行采样是安全的。在任何时间点,rtptr位指示是否接收器正在对ta或tb期望其下一个数据字。在对ta的下一个字正在到达的实施例中,接收器考虑ta的翻转位以查看新的字是否已经到达。如果不在阻进区域中,则直接考虑tat(ta的翻转位)。如果在偶(奇)阻进区域中,则考虑在奇(偶)时钟周期tao(tae)上所同步的tat的版本。
如果看到翻转,则翻转rtptr。第二指针optr驱动输出多路转换器以决定将ta或tb中的哪一个应用于接收器输出。当当前寄存器中存在有效数据并且“就绪”输入为真时,推进该指针,指示下游逻辑可以接受数据。当推进optr时,相应的接收器翻转位ra或rb被翻转以用信号表示数据已经接受。为了消除满与空的歧义,当rtptr=optr时,rcount寄存器维持对已经到达但是尚未被传递的字的计数。该计数器在推进rtptr时被增量并且在推 进optr时被减量。当二者都被推进时,它保持不变。当rcount是零时,接收器“有效”输出被设置为低。
图13示出了图12所示的具有流控制的同步器的操作的时序图。关于本实施例,发射器正在比接收器更快地运行。发射器在其第一偶周期上利用“a“写“ta”并且在其第一奇周期上利用“b”写“tb”。通过分别翻转“tat”和“tbt”来反映这些写。因为“optr”初始为零,所以“a”直接传播到输出并且由rclk的第一偶边沿进行采样。在接受“a”之后,rptr推进以选择“b”(只要它就绪)并且“ra”翻转以用信号表示接受。
电路以tclk的每个边沿将新的值入队并且rclk的每个边沿将它出队的方式进动。注意填充发射寄存器的入队使“tready”变低直到将值出队的接收器边沿出现为止。阻进区域需要足够大用于tready和rvalid信号以在它们各自的时钟沿之前稳定。在周期5上,“tready”在整个周期保持低,因为“rb”翻转以接受“d”进入阻进区域导致发射器应用反压力,并且“d”和“e”的有效时段扩展为三个周期。随着在周期8上对“f”的接受而发生相同的事情。
使用以上所描述的简单向前同步器的变体来处置接收时钟的阻进区域中的发射信号的转变(例如在发射器周期2结束时tat上升)以及发射时钟的阻进区域中的接收信号的转变(例如在接收器周期1结束时rb上升)。这导致这些转变在危险边沿被忽略但是之后在采样时钟的下一个边沿被安全地发现。这样,“tcount”仍然在周期6和9中处于“2”,即使值已经被接受并且没有新的值已经到达。接受发生在阻进区域中并且因此可能直到下一个周期才被发现。
图14示出了根据另一个实施例的、示出偶阻进区域和奇阻进区域、以及在其中偶寄存器被选择的区域的相位循环1400。作为选项,偶/奇向前同步器相位循环1400可以在图1-13的功能性和架构的上下文中实现。例如,相位循环1400可以在图9的向前同步器9的上下文中实现。然而当然,相位循环1400可以在任何期望的环境中实现。再者,应该注意前述定义可以在本描述期间应用。
在本实施例中,发射器相位是可以在范围[0,2)中的实数,其可在如图14所示的相位循环上可视化。奇时钟周期具有相位φ∈[0,1),并且偶时钟周期具有φ∈[1,2)。奇(偶)时钟周期在奇(偶)时钟边沿中结束,并且信号even在偶时钟周期期间(即当φ∈[1,2)时)为高。为了避免同步故障,接收器不在偶阻进周期φ∈[2-x,x)期间对偶(E)寄存器进行采样并且O寄 存器在奇阻进周期φ∈[1-x,1+x)期间被避免。参考本图,这些阻进周期是浅灰色阴影的。具有宽度2x的阻进窗口表示采样触发器的建立和保持时间。这些阻进区域的宽度在图中被夸大。典型的40nm触发器可以具有大约60ps或刚好1GHz时钟周期的6%的阻进窗口。
为了满足对进行采样安全的、最近所写的寄存器加以选择的规则,当如由图中的深灰色阴影圆弧所示的φ∈[x,1+x)时,选择逻辑选择偶(E)寄存器。只要相位在φ=x处清除偶阻进区域,就选择E寄存器。E寄存器对在参考本图所示的大的中间灰度圆弧φ∈[x,2-x)(除偶阻进区域之外的所有地方)期间进行采样是安全的。然而,它仅是直到φ=1+x的最近所写的安全寄存器。当φ∈[1+x,x)时,奇寄存器(O)是最近所写的安全寄存器。
确保每个值被恰好采样一次要求具有流控制的同步器,诸如以下关于图15-16所描述的FIFO同步器。迄今为止已经假定接收器知道tclk相位φ。实际上,接收器使用对tclk相位p的估计。为了说明估计误差,ε=|φ–p|,将防护带添加到对阻进区域的检测,或者使用以下关于图7和表9所描述的区间运算来计算相位估计,给出对ε的界限。当使用区间运算时,使用相位的下限(lp)做出选择决定,因为这总是选择对进行采样安全的、最近所写的寄存器。
图15示出了根据另一个实施例的、使用偶/奇向前同步器的FIFO同步器1500。作为选项,FIFO同步器1500可以在图1-14的功能性和架构的上下文中实现。然而当然,FIFO同步器1500可以在任何期望的环境中实现。再者,应该注意前述定义可以在本描述期间应用。
应该注意图15和16描述用于测量两个时钟的相对频率并且使用估计来生成具有误差界限的相位估计的实施例。如关于图15所示的,使用两个E/O同步器实现FIFO同步器1500。FIFO使用同步地写并且异步地读以保持数据在传输中的双端口存储器。针对小的FIFO,该存储器被实现为触发器或锁存器阵列。较大的FIFO使用RAM或寄存器堆巨集(macro)。
当输入有效(ivalid)为真并且满(full)为假时,在输入时钟(iclk)的上升沿上写FIFO存储器并且增量尾部指针。头部指针选择在FIFO的头部处的值以在存储器的输出端口显现。当空(empty)为假并且输出繁忙(obusy)为假时,头部指针在输出时钟(oclk)的上升沿上增量。尾部指针和满逻辑在iclk域中并且头部指针和空逻辑在oclk域中。
一对E/O同步器在两个时钟域之间移动头部指针和尾部指针。一个同步器将尾部指针从iclk域传递到oclk域,并且第二同步器将头部指针从 oclk域传递到iclk域。针对尾部同步器tclk=iclk并且rclk=oclk,同时针对头部同步器tclk=oclk并且rclk=iclk。这些同步器中的每一个包括9中所示的逻辑以及以上所描述的频率和相位估计逻辑。
图16示出了根据另一个实施例的、在其中维持头部指针和尾部指针的偶版本和奇版本进一步减少FIFO延迟的FIFO同步器1600。作为选项,FIFO同步器1600可以在图1-15的功能性和架构的上下文中实现。然而当然,FIFO同步器1600可以在任何期望的环境中实现。再者,应该注意前述定义可以在本描述期间应用。
通过如图16所示的维持头部指针和尾部指针的偶版本和奇版本可以避免延迟的时钟周期。在每个周期期间,输入逻辑计算下一个尾部指针并且将其存储进ETail寄存器(在偶周期上)或OTail寄存器(在奇周期上)。由ieven(输入偶)所控制的多路转换器总是选择最近所写的尾部寄存器到尾部信号上以用作写地址。由来自E/O同步器的选择信号osel所控制的第二多路转换器在下一个输出时钟结束时选择对进行采样安全的、最近所写的尾部寄存器到信号tailo(oclk域中的尾部)上。
tailo信号由输出逻辑用来计算满(full)并且计算下一个头部指针。在操作中,osel落后于ieven,使得当最近所写的寄存器对进行采样不安全时,ieven总是选择最近所写的尾部寄存器而osel可以选择较旧寄存器。以类似的方式,输出部分维持偶头部寄存器和奇头部寄存器并且使用一对多路转换器来生成当前头部指针(head)和输入时钟域中的版本(headI)。
与常规的使用蛮力同步器来在时钟域之间传递头部指针和尾部指针的方法相比,使用偶/奇同步器提供更大的速度和简便。与具有S+0.5周期(典型地3.5周期)的延迟的蛮力同步器相比,其中S是蛮力同步器的延迟,因为偶/奇同步器具有平均0.5周期的延迟,所以FIFO同步器的延迟被降低。因为头部指针和尾部指针可以维持二进制形式,所以设计也较简单。采用常规的蛮力同步器,指针必须经格雷编码以防止一次改变多于单个位。
图17A-D示出了根据其他实施例的各种相位循环。作为选项,相位循环可以在图1-16的功能性和架构的上下文中实现。然而当然,相位循环可以在任何期望的环境中被利用。而再者,应该注意前述定义可以在本描述期间应用。
为了示出同步器合适地进行操作,示出(a)检测将足够经常地发生,以致从不进入准同步模式(即将总是存在准确的相位估计),或者(b)当 在准同步模式中时,检测(p∈[-d,d])在阻进事件(p∈[-x,x])之前至少S+1个周期发生。
如图17A所示,达到安全的准同步同步。针对f<fg,在误差之前存在检测。在该情况下,相位足够缓慢地移动进检测区域中,以致检测将在相位进入阻进窗口之前至少A个周期发生,这给出时间来同步检测、更新相位估计和避免对不安全寄存器进行采样。还如所示的,针对小的f值,相位φ(有理线)越过八个时钟周期。因为f<fg,所以在进入阻进区域之前,相位在检测区域中超过A个周期(图中是六个)中。
图17B示出了最大的检测范围。针对fg≤f<2d,检测在每个N=1/f<A/g周期发生,每次相位围绕单位循环旋转时发生至少一次检测。只要2-b<gk/2A,就不进入准同步模式,因为相位界限将在检测之间仅以2-bg/2A而发散。例如,针对示例的数字,具有gk/2A=(0.1)(0.5)/(2)(4)=.00625,并且b=8比特的精度是足够的。因为f<2d,所以相位不能“跳过”检测区域并且保证每次相位围绕单位循环旋转时达到至少一个检测。因为f≥fg,所以该旋转将花费最多1/fg=A/g个周期。如在本实施例中所示的,至少每九个周期进行检测。
针对f≥2d,我们可以将f表示为具有有界分母加上误差项的有理分数,f=N/D±e,其中 如以下所描述的,称为法里序列的、具有有界分母的分数序列的特性保证eDC<1。在该情况下,在相位循环周围提供在的D点的重复样式,其每个D周期时段位移De。这给出与针对f<2d相同的两种情况。
图17C示出了具有D=4的接近有理情况和小的残留频率De。如果De<g/A,则每个周期的相位位移足够小,以致在误差之前存在检测,与当f<g/A时相同。这在本实施例中针对D=4示出。事实上,此处的约束更容易一点儿,因为每次相位“组”之一推进De时,D个周期过去,因此只要 就在阻进事件之前的A个周期存在检测, 是较松的约束。
图17D示出了具有D=4的接近有理情况和大的残留频率De。如果g/A≤De<2d,那么每个1/(De)<A/g周期达到检测,所以如果2-b<gk/2A,则检测将在积累太多误差之前发生。此处对b的要求恰好与以上在g/A≤f<2d的情况下相同。
可以示出针对f>2d>1/C,f可以总是表示为f=N/D±e,其中D≤C并且eDC<1。考虑法里序列F(C),0和1之间的有理数序列,其中分母D ≤C。针对来自该集的两个相邻数p/q、r/s,将总是r/s=(ps+1)/qs的情况,其中q、s<=C并且(ps+1)=qr[7]。那么两个相邻有理数p/q和r/s之间的距离是1/qs。将p/q和p/q+1/q(s+q)之间的值f分配到p/q并且将来自r/s-1/s(s+q)的数分配到r/s。那么因为由于法里序列的特性而s+q>C,所以知道e≤1/q(s+q),eDC≤(1/q(s+q))qC=C/(s+q)<1。
在其他实施例中,两个自由同步器参数是d和k。给定阻进区域2x,其是同步器触发器的特性,挑选d给出防护带的值,g=d-x,其转而确定频率估计和相位估计所要求的位数,2-b<gk/2A,所以b>lg(2A/gk)。挑选小的d,并且因此小的防护带给出更大精度的相位估计,并且因此降低同步器延迟,但是以在频率估计器和相位估计器中要求更多位以确保正确的行为为代价。
挑选k的值给出相似的权衡。挑选小的k给出较低的平均同步器延迟,因为同步器将抢先进入准同步模式(不具有延迟)。然而,挑选小的k还要求估计中的更多位的精度。
在一个例示性仿真中,可以构建以上所描述的周期性同步器的Verilog RTL模型,并且两个这类同步器可以用来建立如图15-16所描述的流控FIFO。相位检测器中的延迟线可以从行为上被建模,并且所有触发器可以以建立时间和保持时间检查来插装。Verilog仿真可以利用固定在1GHz的一个时钟和设置为2000个在500MHz和2GHz之间随机挑选的频率的另一个时钟来实施。在一个实施例中,1GHz时钟的相位在1600ps的范围上被缓慢地来回扫描,以每10个周期1ps的速率改变,来确保所有相对时钟相位被测试。在这类仿真期间可能检测不到时序误差。
图18示出了在其中可以实现各先前实施例的各种架构和/或功能性的示例性系统1800。如所示的,提供系统1800,包括至少一个主机处理器1801,其连接到通信总线1802。系统1800还包括主存储器1804。控制逻辑(软件)和数据存储在主存储器1804中,主存储器1804可以采取随机存取存储器(RAM)的形式。
系统1800还包括图形处理器1806和显示器1808,即计算机监视器。在一个实施例中,图形处理器1806可以包括多个着色器模块、光栅化模块等。前述模块中的每一个甚至可以布置于单个半导体平台上以形成图形处理单元(GPU)。
在本描述中,单个半导体平台可以指单独一个的基于半导体的集成电路或芯片。应该注意术语单个半导体平台还可以指具有增强连通性的多芯 片模块,其仿真片上操作,并且通过利用常规的中央处理单元(CPU)和总线实现方案来做出实质的改进。当然,各模块还可以根据用户的期望分开地或以半导体平台的各种组合来布置。
系统1800还可以包括二级存储1810。二级存储1810包括例如硬盘驱动器和/或表示软盘驱动器、磁带驱动器、光盘驱动器等的可移动存储驱动器。可移动存储驱动器以众所周知的方式读取自和/或写入到可移动存储单元。
计算机程序或计算机控制逻辑算法可以存储在主存储器1804和/或二级存储1810中。这类计算机程序当被执行时使得系统1800能够实施各种功能。存储器1804、存储1810和/或任何其他存储是计算机可读媒介的可能示例。
在一个实施例中,各先前图片的架构和/或功能性可以在主机处理器1801、图形处理器1806、能够是主机处理器1801和图形处理器1806这二者的至少部分能力的集成电路(未示出)、芯片集(即设计为作为用于实施相关功能的单元来工作和出售的集成电路组等)、和/或用于该问题的任何其他集成电路的上下文中实现。
还有就是,各先前图片的架构和/或功能性可以在通用计算机系统、电路板系统、专用于娱乐目的的游戏控制器系统、特定于应用的系统、和/或任何其他期望系统的上下文中实现。例如,系统1800可以采取桌面计算机、膝上型计算机和/或任何其他类型的逻辑的形式。还有就是,系统1800可以采取各种其他设备的形式,包括但不限于个人数字助理(PDA)设备、移动电话设备、电视机等。
进一步地,虽然未示出,但是系统1800可以耦连到网络(例如电信网络、局域网(LAN)、无线网络、诸如因特网的广域网(WAN)、点对点网络、电缆网络等)用于通信的目的。
如之前结合图14所解释的,当准确的相位估计被确定时,系统明显保证安全同步。实际上,接收器使用对tclk相位p的估计。为了说明估计误差,ε=|φ-p|,可以使用如之前关于图7和表9所描述的区间运算来计算相位估计,这给出对ε的界限。当使用区间运算时,使用发射相位的下限(lp)在偶或奇寄存器之间做出选择决定,因为这总是选择对采样安全的、最近所写的寄存器。还计算发射相位的上限(up)。
表9示出了可以用于使用图5E中的相位检测器540来更新上相位估计和下相位估计(分别是up和lp)的Verilog代码的一个示例。当然,应 该注意表9所阐述的代码仅用于示例性的目的,并且因此不应视为以任何方式进行限制。
表9
always(posedge rclk)begin
up<=det?{dete,bzeros}+d+(f+1)*(S+1):pu+f+1;
lp<=det?{dete,bzeros}–d+(f-1)*(S+1):pl+f-1;
end
在采样时间,发射相位已知为φ∈[lp,up],并且如果lp∈[x,1+x),则偶寄存器对采样是安全的。否则,奇寄存器对采样是安全的。然而,当up-lp>1-2x时,相位估计不再是有用的并且偶寄存器和奇寄存器二者对采样都不是安全的。不是以准同步模式来操作同步器,如之前所描述的,而是当up-lp>1-2x时,同步器配置为既不选择偶寄存器也不选择奇寄存器,反而维护之前在输出处所选择的样本。当阈值数目的rclk周期已经传递而不选择偶寄存器或奇寄存器时,同步器可以之后以准同步模式进行操作。
当时钟抖动增加持续一个或多个时钟周期而在相位估计中产生间歇误差时,在同步器的输出处维护之前的样本而非转变为以准同步模式进行操作允许同步器以较小的延迟在发射时钟域和接收时钟域之间传送信号。换言之,在相位估计器从造成相位估计不准确的暂时条件中恢复的同时,维护有效的、之前经采样的值。同步器可以追踪针对其奇寄存器或偶寄存器二者都不被选择以进行采样的接收时钟周期的数目。尽管关于奇寄存器和偶寄存器对同步器进行了描述,但是可以包括附加寄存器,存储与相对于发射时钟的不同的相对相位相对应的信号。
图19A示出了根据又一个实施例的、用于使用相位估计来确定用于安全采样时钟域的信号的时间的方法。如在操作1905中所示的,利用频率估计器计算第二时钟域(tclk)和第一时钟域(rclk)之间的相对频率估计。关于本描述,可以以以上关于图1的操作102所描述的方式来计算频率估计。图4所示的频率估计器400可以用来计算相对频率估计f,其指示发射时钟相对于接收时钟的频率。在替换实施例中,相对频率估计可以以某一其他方式已知或被确定,在该情况下,在步骤1905处提供相对频率估计。
进一步地,如在操作1906中所示的,利用相位估计器基于相对频率估计来计算第一时钟域的相位估计。在一个实施例中,如之前结合相位检测器500、510和540以及四样本相位检测器520所描述的,可以使用早和 迟样本来检测第一时钟域的相位,早和迟样本可以来自相对于第二时钟域的第一时钟域。
在另一个实施例中,可以基于相位检测来计算相位估计。例如,对第一时钟域的相位的b位运行估计可以相对于第二时钟域被维护,如之前结合测量检测区间d的校准器530所描述的。
在进一步的实施例中,一经检测,第一时钟域的相位应该设置为f(S+1),其中将附加周期添加到S(同步器的延迟)以预测它发生之前一个周期的相位估计。以上所描述的第一时钟域的相位可以设置为f(S+1),使得相位估计预测在第二时钟域的下一个上升沿处的第一时钟域的相位。例如,相位估计可以对第一时钟域的偶周期和奇周期内的相位进行编码。如果不检测相位,则相位估计可以在第二时钟域的每个周期期间被增量第一时钟域的相对频率以维护运行相位估计。
如在操作1907中所示,关于来自第一时钟域的信号是否可以安全地由第二时钟域进行采样以生成第二时钟域中的经采样的信号做出确定。当使用向前同步器900并且up-lp>1-2x时,相位估计不再是有用的并且偶寄存器或奇寄存器二者对采样都不是安全的。类似地,当使用配置为在以不同的相位偏移存储来自第一时钟域的信号的多个寄存器之间进行选择的同步器并且up-lp>(N-1)-2x时,其中N是多个寄存器的数目,相位估计不再是有用的。
如果在操作1907处基于相位估计确定在其期间来自第一时钟域的信号不变的时间,使得信号能够由第二时钟域安全采样,那么在操作1908中来自第一时钟域的信号由第二时钟域进行采样以生成经采样的信号。在生成经采样的信号之后,方法返回到操作1906并且计算经更新的相位估计。
每次相位检测逻辑指示tclk的转变已经在rlk的周期内发生时,复位相位估计p。具体地,将相位估计复位为[-d,d],并且如果检测到偶边沿则设置偶位(msb)。之后及时将相位估计推进S+1个周期。当转变尚未发生时,在rclk的每个周期将相位增量f,其指示tclk的相对频率。如表9所示,通过维护对相位估计的上限和下限up和lp,可以更准确地检测在其期间发射相位在阻进区域中的时间。
如果在操作1907处基于相位估计而确定来自第一时钟域的信号正在改变,使得信号不能够由第二时钟域安全采样,那么在操作1909处,维护第二时钟域中的经采样的信号。换言之,不对来自第一时钟域的信号进行 采样并且保持来自第一时钟域的、在第二时钟域中被采样的之前经采样的信号。
图19B示出了根据又一个实施例的向前同步器1910。应该注意除选择单元1916之外,相位检测器和相位估计器还包括在向前同步器1910中。例如,向前同步器1910可以实现在与第一时钟域相关联的系统和与第二时钟域相关联的系统之间实现用于使第一时钟域和第二时钟域之间的信号同步(例如用于使由第二时钟域从第一时钟域对信号的采样同步)。如以下所描述的,可以基于所计算的相位估计来实施这类同步。
作为选项,向前同步器1910可以在图1-2和4-8的功能性和架构的上下文中实现。然而当然,向前同步器1910可以在任何期望的环境中实现。还应该注意前述定义可以在本描述期间应用。
关于本实施例,可以避免与对信号的经延迟版本进行采样相关联的限制。为了将多位信号从发射时钟域转发到接收时钟域而无需流控制,发射时钟在交替周期上写一对寄存器。例如,在偶周期上写寄存器1912(在偶周期结束时被更新),并且在奇周期上写寄存器1911(在奇周期结束时被更新)。偶输入信号在偶周期上使能寄存器1912并且在奇周期上使能寄存器1911。
相位估计由选择单元1916用来选择对在接收时钟域中进行采样(在当前的rclk周期结束时)安全的、最近所写的发射寄存器。相位估计可以包括lp和up值,并且当寄存器1912和寄存器1911二者对采样都不“安全”时,选择单元1916置位“None”输出信号并且输出寄存器1915不被使能以对所选择的信号进行采样。选择基于在当前的rclk周期结束时所预测的tclk相位p。在每个接收时钟上,如果发射时钟相位在e.x和o.x之间,则选择寄存器1911,其中e是指偶周期,x是“阻进”余量。否则选择寄存器1912。向前同步器1910的延迟将取决于具有0.5+0.x的平均数的相位而在0.x和1.x之间变化。
虽然关于偶时钟周期和奇时钟周期以及两个寄存器对本实施例进行了描述,但是应该注意在其他实施例中,可以利用任何数目的时钟周期和寄存器。因此,时钟周期可以标记为模N并且可以采用N个寄存器。增加寄存器的数目允许非常大的阻进区域(例如大于单个UI)。
如在图19B中所示的,并且关于发射器端,“tdata”在“tclk”的每个周期上被交替地写入寄存器1912和寄存器1911。在接收器端,选择单元1916确定两个寄存器中的哪一个被选择以输出所选择的信号1917。选择单 元1916可以以由频率和相位估计逻辑(未示出)所生成的发射器时钟的相位估计作为该决定的基础。
图19C示出了根据图19B所示的向前同步器的操作的同步器状态图1930。一经初始化,向前同步器1910就可以经历各种不同的状态。表10示出了在初始化期间向前同步器1910的操作状态。当然,应该注意这类状态被阐述仅用于示例性的目的并且因此不应视为以任何方式进行限制。
表10
如关于图19C所描述的,当复位时,向前同步器1910就进入频率获得(FA)状态并且开始它的一对计数器以测量“其他”时钟的频率。在当处于FA状态期间,向前同步器1910检查以查看在到达终端计数并且信号tc被置位之后是否存在相位检测(相位落入检测区域中)。
一旦获得频率,就进入相位获得(PA)状态并且向前同步器1910等待相位检测(pd)。在该点处,频率估计f和相位估计p已经被确定。如果信号能够被安全采样,则不否定任何一个,进入追踪状态(T)。如果信号不能够被安全采样,则不置位任何一个并且进入全部不选状态(SN)。当在状态SN中时,如果不存在相位检测(例如发生超时),则两个时钟是与相位偏移有理相关的(f=N/D)(或接近有理相关的),使得相位循环周围的D命中留在检测区域之外。在该情况下,因为相位精度被保证足够慢以致它将在误差发生之前被检测,所以进入M状态。当在状态SN中时,如果存在相位检测并且不否定任何一个,则进入状态T。
在状态T和SN中,向前同步器1910每个周期更新相位估计并且当向前同步器1910检测到相位估计在阻进区域内时采取适当的动作。在状态SN中对从最后的相位检测以来的周期的数目计数并且当该数目超过预定值时,将信号to置位,并且相位估计不再是可靠的并且向前同步器1910进入准同步(M)状态。可以将周期的数目报告给软件驱动程序。
T状态中的操作取决于频率是恒定的或接近恒定的。为了安全(例如对于其中频率可能在短时间段期间改变的情形,诸如当在电源状态之间改变时),频率测量电路可以持续操作并且将其测量与前估计相比较。如果时钟频率中的改变大于阈值,则向前同步器1910可以退回到蛮力模式并且进入蛮力状态(B)。
向前同步器1910可以可选地仅在时钟是周期性的或与周期性行为的偏差被明确地用信号表示(例如,“非周期性”信号在周期开始不可预测地变化之前触发蛮力模式)的情况下使用。以此方式,对太慢的频率改变的检测由此时钟域之间的数个不安全采样能够在对改变的检测之前进行,可以被避免。
虽然以上已经描述了各实施例,但是应该理解它们通过仅示例而非限制的方式加以呈现。因此,优选实施例的宽度和范围不应该被上述示例性实施例中的任何一个所限制,而应该仅根据下面的权利要求及其等同物所定义。
Claims (20)
1.一种方法,包括:
基于第二时钟域和第一时钟域之间的相对频率估计来计算所述第一时钟域的相位估计;
基于所述相位估计来确定在其期间来自所述第一时钟域的信号不变使得所述信号能够由所述第二时钟域安全采样的第一时间;
在所述第一时间期间生成所述第二时钟域中的第一经采样的信号;
计算经更新的相位估计;
基于所述经更新的相位估计来确定在其期间来自所述第一时钟域的所述信号正在改变使得所述信号不能够由所述第二时钟域安全采样的第二时间;以及
在所述第二时间期间维护所述第二时钟域中的所述第一经采样的信号。
2.如权利要求1所述的方法,其中所述相位估计是包括上限和下限的区间。
3.如权利要求2所述的方法,其中确定在其期间来自所述第一时钟域的所述信号正在改变使得所述信号不能够由所述第二时钟域安全采样的的所述第二时间的所述步骤包括确定所述上限和所述下限之间的差超过阈值。
4.如权利要求1所述的方法,其中所述相位估计在所述第二时钟域的多个周期中的每一个期间被增量。
5.如权利要求1所述的方法,其中所述相位估计对所述第一时钟域的偶周期和奇周期内的相位进行编码。
6.如权利要求1所述的方法,进一步包括使在所述第二时钟域的周期期间检测所述第一时钟域中的时钟沿失败,并且其中对所述经更新的相位估计的所述计算包括将所述相位估计增量所述相对频率估计。
7.如权利要求1所述的方法,进一步包括在所述第二时钟域的周期期间检测所述第一时钟域中的时钟沿,并且其中对所述经更新的相位估计的所述计算包括将所述经更新的相位估计设置为等于检测区间。
8.如权利要求1所述的方法,进一步包括增量所述信号不能够被安全采样的周期的计数。
9.如权利要求8所述的方法,进一步包括:
确定所述周期的计数超过预定值;以及
以准同步模式进行操作。
10.如权利要求1所述的方法,其中所述经更新的相位估计指示所述第一时钟域中的时钟沿位于阻进范围内,在其内所述信号不能够由所述第二时钟域安全采样。
11.如权利要求1所述的方法,其中计算所述相位估计进一步包括通过应用对与所述相位估计相关联的检测区间的上限来补偿同步器延迟。
12.如权利要求1所述的方法,其中使用区间运算来计算所述相位估计以维护对与所述相位估计相关联的相位的准确误差界限。
13.如权利要求1所述的方法,其中所述第一时钟域在连续的周期上连续地写到多个寄存器,并且其中所述第二时钟域使用所述相位估计来选择所述多个寄存器中的对在所述第二时钟域中采样安全的、最近所写的寄存器。
14.如权利要求13所述的方法,其中所述多个寄存器仅包括两个寄存器。
15.如权利要求13所述的方法,其中所述交替的周期包括偶周期和奇周期,使得所述多个寄存器中的第一个在所述偶周期期间被写并且所述多个寄存器中的第二个在所述奇周期期间被写。
16.如权利要求1所述的方法,其中通过使用多个偶/奇同步器来实现FIFO同步器以将尾部指针传递到输出时钟域中并且将头部指针传递到输入时钟域中。
17.如权利要求16中所述的方法,其中通过以下步骤利用偶尾部指针、奇尾部指针、偶头部指针和奇头部指针:
在输入时钟的偶时钟周期上计算所述偶尾部指针并且在所述输入时钟的奇时钟周期上计算所述奇尾部指针;以及
在所述输入时钟的所述偶时钟周期上将所计算的偶尾部指针存储在偶尾部寄存器中并且在所述输入时钟的所述奇时钟周期上将所计算的奇尾部指针存储在奇尾部寄存器中。
18.一种系统,包括:
相位估计器,其配置为:
基于第二时钟域和第一时钟域之间的相对频率估计来计算所述第一时钟域的相位估计,以及
针对所述第二时钟域中的每个周期,计算经更新的相位估计;以及
同步器,其耦连到所述相位估计器并且配置为:
基于所述相位估计来确定在其期间来自所述第一时钟域的信号不变使得所述信号能够由所述第二时钟域安全采样的第一时间,
在所述第一时间期间生成所述第二时钟域中的第一经采样的信号,
基于所述经更新的相位估计来确定在其期间来自所述第一时钟域的所述信号正在改变使得所述信号不能够由所述第二时钟域采样的第二时间,以及
在所述第二时间期间维护所述第二时钟域中的所述第一经采样的信号。
19.如权利要求18所述的系统,其中所述相位估计是包括上限和下限的区间。
20.如权利要求18所述的系统,其中所述相位估计在所述第二时钟域的多个周期中的每一个期间被增量。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/674,864 US8964919B2 (en) | 2009-11-30 | 2012-11-12 | System and method for determining a time for safely sampling a signal of a clock domain |
US13/674,864 | 2012-11-12 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103812590A true CN103812590A (zh) | 2014-05-21 |
Family
ID=50556037
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310557158.4A Pending CN103812590A (zh) | 2012-11-12 | 2013-11-11 | 用于确定用于安全采样时钟域的信号的时间的系统和方法 |
Country Status (3)
Country | Link |
---|---|
CN (1) | CN103812590A (zh) |
DE (1) | DE102013221678A1 (zh) |
TW (1) | TWI516896B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107734386A (zh) * | 2017-09-13 | 2018-02-23 | 东莞市爱协生智能科技有限公司 | 一种基于mipi协议的视频图像缩小的方法及其系统 |
CN109478081A (zh) * | 2016-07-13 | 2019-03-15 | 超威半导体公司 | 管理跨不同时钟域的时钟信号的频率变化 |
CN114003530A (zh) * | 2021-10-29 | 2022-02-01 | 上海大学 | 一种基于fpga的串行差分通信数据采集系统及方法 |
WO2023109147A1 (zh) * | 2021-12-13 | 2023-06-22 | 深圳市紫光同创电子有限公司 | 一种时间戳脉冲同步方法、装置、电子设备及存储介质 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107306178B (zh) | 2016-04-25 | 2021-05-25 | 创意电子股份有限公司 | 时脉数据回复装置与方法 |
US10164758B2 (en) | 2016-11-30 | 2018-12-25 | Taiwan Semicondcutor Manufacturing Co., Ltd. | Read-write data translation technique of asynchronous clock domains |
TWI826133B (zh) * | 2022-11-21 | 2023-12-11 | 瑞昱半導體股份有限公司 | 資料傳輸裝置與跨時脈領域資料傳輸之方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090278577A1 (en) * | 2008-05-06 | 2009-11-12 | Dae-Kun Yoon | Semiconductor device including phase detector |
CN101923440A (zh) * | 2009-06-15 | 2010-12-22 | 杭州中科微电子有限公司 | 一种高速异步数据采集系统 |
CN201917844U (zh) * | 2010-11-25 | 2011-08-03 | 上海宇芯微电子有限公司 | 一种双时钟切换装置 |
-
2013
- 2013-10-24 DE DE201310221678 patent/DE102013221678A1/de active Granted
- 2013-10-31 TW TW102139651A patent/TWI516896B/zh active
- 2013-11-11 CN CN201310557158.4A patent/CN103812590A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090278577A1 (en) * | 2008-05-06 | 2009-11-12 | Dae-Kun Yoon | Semiconductor device including phase detector |
CN101923440A (zh) * | 2009-06-15 | 2010-12-22 | 杭州中科微电子有限公司 | 一种高速异步数据采集系统 |
CN201917844U (zh) * | 2010-11-25 | 2011-08-03 | 上海宇芯微电子有限公司 | 一种双时钟切换装置 |
Non-Patent Citations (1)
Title |
---|
URI FRANK: "A Predictive Synchronizer for Periodic Clock Domains", 《FORMAL METHODS IN SYSTEM DESIGN》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109478081A (zh) * | 2016-07-13 | 2019-03-15 | 超威半导体公司 | 管理跨不同时钟域的时钟信号的频率变化 |
CN107734386A (zh) * | 2017-09-13 | 2018-02-23 | 东莞市爱协生智能科技有限公司 | 一种基于mipi协议的视频图像缩小的方法及其系统 |
CN107734386B (zh) * | 2017-09-13 | 2019-12-17 | 东莞市爱协生智能科技有限公司 | 一种基于mipi协议的视频图像缩小的方法及其系统 |
CN114003530A (zh) * | 2021-10-29 | 2022-02-01 | 上海大学 | 一种基于fpga的串行差分通信数据采集系统及方法 |
CN114003530B (zh) * | 2021-10-29 | 2023-04-11 | 上海大学 | 一种基于fpga的串行差分通信数据采集系统及方法 |
WO2023109147A1 (zh) * | 2021-12-13 | 2023-06-22 | 深圳市紫光同创电子有限公司 | 一种时间戳脉冲同步方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
DE102013221678A1 (de) | 2014-05-15 |
TWI516896B (zh) | 2016-01-11 |
TW201439714A (zh) | 2014-10-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103812590A (zh) | 用于确定用于安全采样时钟域的信号的时间的系统和方法 | |
CN100559356C (zh) | 跨不同时钟域的数据信号传输方法 | |
KR101994243B1 (ko) | 클럭 생성 회로 및 이를 포함하는 반도체 장치 | |
US7500044B2 (en) | Digital phase relationship lock loop | |
US5359630A (en) | Method and apparatus for realignment of synchronous data | |
US8879681B2 (en) | System and method for determining a time for safely sampling a signal of a clock domain | |
EP2965470B1 (en) | High-resolution link-path delay estimator and method for estimating a signal-path delay | |
US9722767B2 (en) | Clock domain bridge static timing analysis | |
TW202042521A (zh) | 相位預測器及相關使用方法 | |
US10038450B1 (en) | Circuits for and methods of transmitting data in an integrated circuit | |
US8386828B1 (en) | Circuit for estimating latency through a FIFO buffer | |
CN103838296A (zh) | 容变周期性同步器 | |
JPH04320109A (ja) | データエツジ遷移位相判別回路 | |
US20100322365A1 (en) | System and method for synchronizing multi-clock domains | |
CN103853230A (zh) | 推测性周期性同步器 | |
US9166773B2 (en) | System timing margin improvement of high speed I/O interconnect links by using fine training of phase interpolator | |
US9164134B2 (en) | High-resolution phase detector | |
US8964919B2 (en) | System and method for determining a time for safely sampling a signal of a clock domain | |
US7936855B2 (en) | Oversampling data recovery circuit and method for a receiver | |
US20060188046A1 (en) | Prediction of an optimal sampling point for clock resynchronization in a source synchronous data channel | |
US7733130B2 (en) | Skew tolerant communication between ratioed synchronous clocks | |
US9143315B2 (en) | Predictive periodic synchronization using phase-locked loop digital ratio updates | |
Huemer et al. | Timing domain crossing using Muller pipelines | |
CN100376081C (zh) | 可共用计数器的延迟锁定回路及相关方法 | |
JP6427967B2 (ja) | データ受信機、入出力装置、ジッタ測定装置およびジッタ測定方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20140521 |