使用自由振荡式环形振荡器的任意波形合成器的制作方法

文档序号:7529750阅读:285来源:国知局
专利名称:使用自由振荡式环形振荡器的任意波形合成器的制作方法
技术领域
本发明一般涉及波形生成领域。更准确地说,本发明涉及一种通过使用自由振荡式环形振荡器来产生任意波形的方法和设备。
背景技术
目前存在很多希望将时间单位或距离单位以廉价方式分成更小单位的情况。例如在一个范围检测器中,输出信号与输入信号之间所经过的时间可能短到只有若干毫秒,使用标准的基准时钟来计算流逝的时间将会产生错误计数,由此导致不准确的距离计算。
在激光打印机这样的另一个实例中,较为理想的是在用于高分辨率的给定行单元内部的不同距离提供一个从白到黑的跃迁(反之亦然)。相关内容可以参见在此引入作为参考的美国专利5,109,283。然而,在打印机的激光二极管上并不足以分辨那些以10MHz的打印机像素时钟速率来计时的黑色-白色信号或白色-黑色信号,由此不能对指定打印单元内部的打印跃迁执行精确控制。更快的时钟则过于昂贵和/或不能用于在高分辨率图形图像所需要的高时间分辨率上为打印跃迁提供基准(例如与微米级的打印单元距离相对应的1纳秒)。
一种解决上述问题的方案是使用一个结合了自由振荡式(free-running)环形振荡器(也可以将其称为环路振荡器)的设备。在美国专利5,793,709和5,903,522中描述了这种解决方案,这些专利在此引入作为参考。然而,对CD-RW、DVD、通信和雷达领域中的应用来说,其在信号方面的需求要求使用具有更高频率和精度的跃迁边沿,由此对其产生了限制。而电路传导路径和实施硬件中的差别也会变得非常明显。基于基准时钟频率的代数时钟将会限制代数电路执行计算的速度。此外,计算自由振荡式环形振荡器(“环路”)的外部电路同样限制了代数电路执行计算的速度。在使用同步信号时,使用所述输出的设备无法容忍输出信号中的不可预测的突然跃迁。

发明内容
本发明旨在解决这些需要。
因此,本发明的一个目的是对不同实施硬件和不等路径长度进行补偿。本发明的另一个目的是根据生成的输出信号来产生一个远比基准时钟更快的用于跃迁边沿计算的内部时钟。本发明还包括一个用于在跃迁边沿计算出错时提供内部时钟的监视器(watchdog)。此外,本发明的另一个目的是通过在内部计算平均环路速度来提高总的可允许的计算频率。所述电路还根据平均环路速度而对环路中的跃迁位置进行计算,从而提高精度。本发明的另一个目的是在输出相位发生预定变化时产生一个将更新输出波形与先前输出波形无缝结合的输出。对CD-RW、DVD、通信和雷达领域中的应用来说,它们需要的是更快和更准确的边沿跃迁。
本发明涉及一种用于产生任意波形的方法和设备,在一个方面中,本发明涉及一种用于产生任意波形的波形生成器。所述波形生成器包括一个自由振荡式环形振荡器、一个代数模块、一个切换模块以及一个输出模块。自由振荡式环形振荡器包括多个连接在环路中的延迟部件以及排列在延迟部件之间的多个分支,其中每一个分支都提供了一个唯一定相的振荡跃迁信号。代数模块则包括一个代数数据输入端口、一个时钟输入端口以及一个代数数据输出端口。所述代数模块对在代数数据输入端口接收的信号作出响应,从而在代数数据输出端口产生一个表示任意波形的第一上升沿的信号。切换模块则包括一个与代数数据输出端口进行电通信的切换输入端口、多个与自由振荡式环形振荡器的分支进行电通信的切换分支输入端口以及切换输出端口。在切换输出端口,切换模块对在切换输入端口接收的表示第一上升沿的信号做出响应,从而提供一个从多个自由振荡式环形振荡器分支的一个分支中选出的第一跃迁信号。输出模块则包括一个与切换输出端口进行电通信的跃迁信号输入端口、一个与代数数据输出端口进行电通信的窗口输入端口以及一个与代数模块的时钟输入端口进行电通信的波形输出端口。所述输出模块还对在输出模块的跃迁信号输入端口接收的第一跃迁信号以及在窗口输入端口接收的第一上升沿的信号作出响应,从而在波形输出端口创建一个任意波形。
在一个实施例中,任意波形生成器包括一个环路平均模块,所述环路平均模块则包括一个基准时钟输入端口和一个分支输入端口,所述分支输入端口电连接到自由振荡式环形振荡器中的多个分支。所述环路平均模块对在基准时钟输入端口接收的基准时钟信号作出响应,从而对在基准时钟信号边沿之间出现的分支跃迁数目进行计数,此外还响应于所述计数对平均环路速度进行计算。所述环路平均模块还可以对计算得到的平均环路速度以及捕捉到的多个环路状态作出响应,从而计算环形振荡器的瞬时相位。
在另一个实施例中,任意波形生成器包括一个微小延迟模块。所述微小延迟模块包括一个与切换输出端口进行电通信的信号输入端口,一个与代数模块的代数数据输出端口进行电通信的选择输入端口,以及一个与输出模块的输入端口进行电通信的微小延迟输出端口。响应于在选择输入端口接收的第一上升沿的信号,所述微小延迟模块对从切换模块的切换输出端口到输出模块的输入端口的第一跃迁信号的传播进行延迟。此外,所述输出模块的选择输入端口还通过微小延迟模块与切换模块的切换输出端口进行电通信。
在另一个实施例中,代数模块包括一个同步输入端口。响应于在代数数据输入端口和同步输入端口接收的信号,所述代数模块在代数数据输出端口创建一个处于任意波形内部的第一上升沿的信号。然后,所述代数模块产生一个第一上升沿的信号,由此在任意波形生成器中实现第一上升沿的无缝合并。
在另一个实施例中,其中一个延迟部件是反相延迟部件,并且每个延迟部件都是同等负载的。在另一个实施例,至少有一个延迟部件包含了测试切换模块。这个测试切换模块具有一个测试控制输入端口和一个测试数据输入端口。响应于在测试控制输入端口接收的信号,所述延迟部件会在相应分支创建一个与在测试数据输入端口接收的信号相一致的信号。
在另一个实施例中,任意波形生成器还包括一个补偿模块。所述补偿模块包括一个与代数模块进行电通信的数据输出端口,以及一个用于对表示基准时钟源的频率改变参数的信号进行接收的补偿输入端口。所述补偿模块对关联于基准时钟源的频率改变参数的基准时钟频率变化进行估计。然后,响应于这个频率变化,所述补偿模块在补偿输出端口创建一个校正信号。在另一个实施例中,频率改变参数是基准时钟源的温度。而在另一个实施例中,频率改变参数是基准时钟源的寿命。
在另一个实施例中,代数模块对在代数输入端口接收的信号作出响应,从而在代数数据输出端口创建任意波形内部的第一下降沿的第二信号。在另一个实施例中则使得输出模块创建一个关于在窗口输入端口接收的第一上升沿的错误信号的追逐信号。在另一个实施例中,所述任意波形生成器是在CMOS集成电路内部实现的。
在另一个实施例中,任意波形生成器包括一个放大器和一个环路速度补偿电路。放大器对来自耦合到环形振荡器的电源的电源噪声的至少一个分量进行前馈,环路速度补偿电路则与放大器进行电通信。在一个实施例中,响应于经过放大的噪声,环路速度补偿电路与环路平均模块进行电通信,以便对所计算的平均环路速度进行调整。在另一个实施例中,环路速度补偿电路与代数模块进行电通信,以便响应于经过放大的噪声对计算得到的平均环路速度进行调整。
在另一个实施例中,任意波形生成器包括多个电容部件,其中每一个部件都与多条信号路径中的一条相应路径进行电通信。每一个电容部件都具有相应的预定容量,以便在经由相应信号路径传播跃迁信号的过程中创建相应的预定时延,这样一来,第一信号路径上的跃迁的传播时间实质上与第二信号路径上的跃迁的传播时间是相等的。
在另一个实施例中,多个电容部件中的每一个电容部件都具有一个小于50毫微微法左右的值。在另一个实施例中,多条信号路径中的每一条路径都与第一电容部件和第二电容部件进行电通信。并且在另一个实施例中,相对于温度、工艺以及电源电压而言,第一和第二电容部件具有不同的灵敏度。
在另一个方面中,本发明涉及一种用于创建任意波形的方法。所述创建任意波形的方法包括在延迟部件环路中生成一个连续跃迁序列,对在环路中的其中一个延迟部件上出现的跃迁进行计数,确定所需的第一上升沿时间和第一下降沿时间,基于计数得到的跃迁和内部时钟对所需第一上升沿做出响应,以便选择连续跃迁序列中的第一跃迁,基于计数得到的跃迁和内部时钟对所需第一下降沿时间作出响应,以便选择连续跃迁序列中的第二跃迁,通过使用第一和第二选定跃迁来产生一个输出信号,以及基于输出信号生成内部时钟信号。
在一个实施例中,生成输出信号的方法包括对过去出现的所需第一上升沿时间作出响应,从而使用连续跃迁序列中的每一个跃迁来产生输出信号。
在另一个实施例中,所述方法包括相对于输入基准时钟而在其中一个延迟部件上计算平均跃迁速率。
在另一个实施例中,所述方法包括对计算得到的平均跃迁速率以及延迟部件环路的多个所捕捉状态作出响应,从而计算延迟部件环路内部的瞬时相位。
在另一个实施例中,所述方法包括将多个传播延迟中的一个延迟添加到选定跃迁中,其中在多个传播延迟中,两个延迟之间的差值小于一个跃迁经由延迟部件环路中的延迟部件的平均传播时间。
在另一个实施例中,所述方法包括接收一个外部同步信号,以及对接收到的同步信号作出响应,从而修改第一和第二跃迁的选择。在另一个实施例中,所述修改处理包括调整第一跃迁的选择,由此在输出信号中提供第一上升沿的无缝合并,从而创建任意波形。
在另一个实施例中,每一个跃迁都具有极性。并且在另一个实施例中,产生连续跃迁序列包括结合一个延迟部件来对跃迁极性进行反相。此外在另一个实施例中,连续跃迁序列的生成为各个延迟部件都提供了相等的负载。
在另一个实施例中,所述方法包括接收一个表示基准时钟源的频率改变参数的信号,确定频率改变所造成的基准时钟的任何变化,以及对所确定的变化作出响应,从而改变第一跃迁的选择。并且在另一个实施例中,所述频率改变参数是基准时钟源的温度。此外,在另一个实施例中,所述频率改变参数是基准时钟源的寿命。
在另一个实施例中,所述方法包括将预定时延添加到经由相应信号路径的跃迁传播之中,由此经过信号路径的跃迁的传播时间实质上与经过第二信号路径的跃迁的传播时间是相等的。


本领域技术人员可以从以下关于优选实施例的描述以及附图中想到其他目标、特征和优点,其中图1A是本发明一个实施例的高级框图;图1B是来自图1A所示的自由振荡式环路振动器分支的信号的时序图;图2是描述附加模块的本发明的一个实施例的高级框图;图3是图2所示的延迟部件模块的一个实施例的详细框图;图4是本发明另一个实施例的高级框图;图5是本发明的代数模块的一个实施例的详细框图;图6是图5所示的周期积分器模块的一个实施例的详细框图;图7是图5所示的环路平均模块的一个实施例的详细框图;图8是图5所示的时钟域变换模块的一个实施例的详细框图;图9A是图5所示的同步模块的一个实施例的详细框图;图9B是图9A所示的同步去抖动模块的一个实施例的详细框图;图10A是本发明的切换模块的一个实施例的详细框图;图10B是图10A所示的平衡复用模块的一个实施例的详细框图;
图11是本发明的微小延迟模块的一个实施例的详细框图;图12是本发明的输出模块的一个实施例的详细框图;图13是图12所示的捕获模块、窗口模块和边沿触发器的一个实施例的详细框图;图14是图12所示的相位组合模块的一个实施例的详细框图;图15是图14所示的平衡XOR模块的一个实施例的详细框图;以及图16是通过本发明一个实施例所进行的信号传播的时序图。
具体实施例方式
图1A在高级别上描述了一个用于创建输出信号136的任意波形生成器100。所述任意波形生成器100包括一个自由振荡式环路振动器104、一个切换模块112、一个代数模块108以及一个输出模块114。环路振荡器104经由分支电连接到切换模块112,以便将跃迁边沿传送到切换模块112。代数模块108接收一个外部基准时钟信号128和一个代数数据输入信号132。如下文更详细描述的那样,代数模块108通过使用这些信号128、132而从分支中选择跃迁边沿,以便产生输出信号136的下一个跃迁边沿。代数模块108电连接到切换模块112和输出模块114,以便传送计算得到的用于产生输出信号136的跃迁边沿。切换模块112接收来自代数模块108的跃迁边沿信息,并且选择与计算得到的跃迁边沿相对应的环路振荡器104的分支。所述切换模块还电连接到输出模块114,以便将来自选定分支的跃迁边沿传送到输出模块114。输出模块则接收跃迁边沿,并且将其作为输出信号136来进行供应。
自由振荡式环路振荡器104包括一个针对外部复位信号140的输入端、一系列延迟部件模块120a、120b、120c、120o、120p(概括为120)以及至少一个反相部件124。复位信号140具有两种状态,即复位状态和运行状态。当信号140处于复位状态时,环路振荡器104并不振荡。当信号140跃迁到运行状态时,环路振荡器104将会开始振荡。所述跃迁则经由第一延迟部件模块120a传播到下一个延迟部件模块120b的输入端。在延迟部件模块120的输入端接收到信号之后不久,在相应分支上将会输出所述信号。
举例来说,在将跃迁传播到延迟部件模块120a的输入端之后的某个时间,所述跃迁将会出现在分支0上。由于所述跃迁还传播到延迟部件模块120a的输出端并且随后传播到下一个延迟部件模块120b的输入端,因此该跃迁还会在分支1上出现。这个处理会在所述跃迁前进到最后一个延迟部件模块120p和分支15的整个过程中重复。图1A的示范性实施例描述了16个分支。但是分支数目也可以改变。此外,分支数目是出于设计考虑而选择的,其数目部分地取决于所需频率、可用实施硬件以及代数模块计算速度。
图1B的示范性实施例描述的是在图1A的相应分支上出现的跃迁。如图1B所示,在各个分支上的各个跃迁之间存在着大约300皮秒的延迟。这个延迟时间表示的是所述跃迁从延迟部件模块120的输入端传播到相应分支的输出端所花费的时间。它取决于实现所述设计的硬件。而所示实施例则是在采用了0.35微米工艺的ASIC上实现的。采用0.25微米工艺的ASIC可以产生大小约为采用0.35微米工艺的ASIC所产生的延迟时间的一半的延迟时间。借助于更小的延迟时间,代数模块108可以计算出所述跃迁边沿在输出信号136中的更准确的位置。所述延迟时间则是出于设计考虑而选择的,它取决于所需频率、可用实施硬件以及代数模块计算速度。
在另一个实施例中,每一个延迟部件模块120都包含一个反相部件。所述反相部件将会使间隔分支在与围绕环路的单个边沿传播相反的方向上进行跃迁。例如,分支1、分支3、分支5、分支7、分支9、分支11、分支13以及分支15各自从高电平状态跃迁到低电平状态,而不像图1B所显示的那样从低电平状态跃迁到高电平状态。由于正跃迁的传播时间不同于负跃迁的传播时间,因此使用反相部件将会使围绕环路的传播时间更为一致。此外,反相部件还产生了更均匀的电源负载。
参考图2,跃迁是通过一系列延迟部件模块120a~120p传播的。一旦到达最后一个延迟部件模块120p的输出端,那么所述跃迁将会完成一个循环(也称为一个行程(lap))。环路108的示范性实施例包括与最后一个延迟部件模块120p的输出端相连的反相逻辑部件208。这个反相逻辑部件208与连接到在先延迟部件模块120的输出端的每一个延迟部件模块120中所包含的反相逻辑部件404(图3)相类似。由此可以确保最后一个延迟部件模块120p的输出是以类似于其他延迟部件模块120a~120o的方式加载的,这样一来,在各个分支上,跃迁之间的时间都是相似的。此外,硬件实施方式的容限还可以确定延迟时间等同到何种程度。
为了创建“循环”效果,在这里必须重复执行经由一系列延迟部件模块120a、120b、120c、120o、120p的跃迁传播。为此目的,在这里选择一个跃迁(例如从延迟部件模块120o开始的跃迁)并且将其经由反相部件124回送到第一延迟部件模块120a的输入端。所使用的反相部件124的数目取决于选定延迟部件模块120(例如延迟部件模块120o)是否在第一延迟部件模块120a的相反方向上输出一个跃迁。
举例来说,如果第一延迟部件模块120a先前是从低电平跃迁到高电平,并且选定跃迁(例如延迟部件模块120o)也是从低电平跃迁到高电平,那么在所述路径中必然存在一个使得传送到第一延迟部件模块120a的输入端的跃迁是从高到低的反相器124。如果所述实施例具有包含反相部件的延迟部件模块120,并且已经相对于第一延迟部件模块120a而对选定跃迁进行了反相,那么这两个反相部件124,124′(未显示)将会串联使用,以便确保将相反方向的跃迁传送到第一延迟部件120a。此外在这里还对连接到反相器124的延迟部件模块120o进行选择,以使所述跃迁从选定延迟部件模块120o经由一个或多个反相部件124到达第一延迟部件模块120a的传播时间近似等于从选定延迟部件模块120o跃迁到最后一个延迟部件模块120p的输出端的传播时间。
对一个说明性实例来说,每一个延迟部件模块120都包含了反相部件。经过两个反相部件124、124’(未显示)的传播时间与两个延迟部件模块120的传播时间是相等的。此外在这里还选择了对应于分支13的延迟部件模块120n(未显示)。所述延迟部件模块120n是第一延迟部件模块120a的相反方向的跃迁,这样则需要两个反相部件124,124′来确保正确的极性。此外,所述定时同样是正确的,由此在该跃迁还在从分支13传播到分支15的时间里经由两个反相部件124、124’到达第一延迟部件模块120a的输入端。
如图2所示,环路振荡器104还包括一个行程计数器模块200和一个状态捕捉模块204。代数模块108还包括一个环路平均模块212。行程计数器模块200电连接到第一延迟部件模块120a,以便在跃迁边沿经过延迟部件模块120a时接收所述跃迁边沿。行程计数器模块200电连接到状态捕捉模块204,以便传送所保存的行程数目。状态捕捉模块204则接收一个基准时钟信号128。所述状态捕捉模块204电连接到每一个分支以及行程计数器模块200,以便在基准时钟信号128跃迁时接收并保存环路振荡器104的分支和行程计数器模块200的状态。此外,所述状态捕捉模块204还电连接到代数模块108,以便传送所保存的状态信息220。而环路平均模块212则接收来自状态捕捉模块204的经发送的存储的状态信息220,并对在代数模块108的计算中所使用的平均环路速度进行计算。
行程计数器200包括两个计数器。其中正沿计数器200a(未显示)在正沿跃迁(例如从逻辑低到高)每次经过第一延迟部件模块120a时都会计数1。负沿计数器200b(未显示)则会在负沿跃迁(例如从逻辑高到低的跃迁)每次经过第一延迟部件模块120a时计数1。因此,负沿计数器200b与正沿计数器200a具有180度的相位差。在这里使用两个计数器200a、200b是为了确保即使在更新一个计数器时,所述任意波形生成器100的其他模块也可以使用稳定和精确的计数器来确定行程数目。每一个计数器的大小(位数)都是可以改变的,并且所述大小是出于设计考虑而选择的,它取决于所需频率、可用实施硬件以及代数模块计算速度。此外,每一个计数器都会保持计数,一旦达到最大值,则计数器回滚到零并且继续计数。
状态捕捉模块204包括一个将基准时钟信号128用作时钟的寄存器204a(未显示)。一旦基准时钟信号128跃迁(通常是正沿跃迁),则寄存器204a保存(也称为捕捉)环路振荡器104的状态。在一个实施例中,寄存器204a保存的是一个16位数据字。在本实施例中则将11个比特用于行程计数器200的值。此外还使用了四个比特来表示16个分支。在这里将这四个比特用于分支状态,由此表示所述跃迁在捕捉时传播所经过的最后一个分支。此外在这里还使用了一个比特来表示所述跃迁在经过第一延迟部件模块120a时的跃迁状态(也就是正沿或负沿)。为了确定代数模块108选择的跃迁边沿究竟是正沿还是负沿以及是否需要由切换模块112进行反相,在这里需要使用这个比特。
延迟部件模块120创建那些输出到分支并被捕捉的跃迁边沿。图3中更详细地显示了其中一个延迟部件模块120。延迟部件模块120包括一个NAND部件404。NAND部件404的两个输入端408、412分别接收由在先延迟部件模块120输出的信号以及一个逻辑高电平信号424。所述逻辑高电平信号确保NAND部件404的输出即为来自先前延迟部件模块120的输出端的输入信号408的反相信号。
对第一延迟部件模块120a(图2)来说,逻辑高电平信号由复位信号140取代,输入信号408则是从反相输出部件124而不是先前延迟部件120输出的。当复位信号140处于复位状态即逻辑低电平时,无论输入信号408怎样变化,所述NAND部件404输出的都是一个逻辑高电平。对自由振荡式环形振荡器104′来说,其剩余延迟部件模块120b到120p(图2)都会驱动到其相应状态,所述环路振荡器104则会在复位信号跃迁到运行状态即逻辑高电平之前一直处于复位状态。
NAND部件404的输出发送到下一个延迟部件模块120。所述输出412同时也是反相器416的一个输入。来自某个选定延迟部件模块120(例如图2的延迟部件模块120o)的反相输出端420的跃迁发送到另一个反相器124(图2),然后则发送到第一延迟部件模块120a,从而保持环路振荡器104的振荡。对其他延迟部件模块120a、120b、120c、120p来说,输出420并未连接。在一个实施例中,出于负载均衡目的,无论是否连接,每一个延迟部件模块120中都会包含反相器416。如上所述,通过尽可能保持延迟部件模块120中的负载相似和相等,可以使得经过每一个延迟部件模块120的传播时间保持一致。
NAND部件404的输出端412与测试切换模块400相连。所述测试切换模块400接收一个测试输入信号440。这个信号440的状态确定了由测试切换模块400生成的信号。举例来说,如果测试输入信号440处于一种“NOT(否)”测试状态(例如逻辑低电平),那么NAND部件428将会输出一个信号,该信号与NAND部件404的输出412具有相反的状态。无论测试数据输入信号444怎样变化,所述NAND部件432都会输出一个逻辑高电平。因此,NAND部件436输出的是与NAND部件428的输出相反的状态,所述NAND部件428的输出则与NAND部件404的输出412的状态相同。如果测试输入信号440处于测试状态(例如逻辑高电平),那么无论NAND部件404的输出412怎样变化,所述NAND部件428都会输出一个逻辑高电平。NAND部件432输出的则是与测试数据输入信号444相反的状态。因此,NAND部件436输出的是与NAND部件432的输出相反的状态,这个状态与测试数据输入信号444的状态则是相同的。
反相驱动器448对NAND部件436的输出进行放大,其中所述输出即为测试切换模块400的输出。反相驱动器448的输出则是发送到切换模块112(图2)的分支信号456。因此,依照测试输入信号440的状态,反相驱动器448的输出将会是NAND部件404的输出或是测试数据输入信号444的相反状态。
对第一延迟部件模块120a来说,NAND部件436的输出是反相驱动器452的一个输入。反相驱动器452的输出端与行程计数器模块200相连。行程计数器对从反相驱动器452输出的每一个跃迁进行计数。对其他延迟部件模块120b到120p来说,反相驱动器452的输出并未连接。在一个实施例中,为了均衡负载,无论是否连接,每一个延迟部件模块120中都会包含反相驱动器452。
图4描述的是任意波形生成器100′的一个替换实施例。任意波形生成器100′还包括一个微小延迟模块310、一个补偿模块320、一个自由振荡式环路振荡器104′,其中所述振荡器包括一个状态捕捉模块204′和一个代数模块108′。所述代数模块108′则包括一个同步模块304。微小延迟模块310电连接到切换模块112,以便接收跃迁边沿。所述微小延迟模块310还经由一个延迟部件模块120而将差分延迟添加给小于传播延迟时间的跃迁边沿。此外,微小延迟模块310还电连接到输出模块114,以便将经过进一步延迟的跃迁边沿传送到输出模块114。补偿模块320则接收补偿输入信号324。此外,所述补偿模块还电连接到代数模块108′,以便传送调整信号。
在一个实施例中,补偿模块320接收一个补偿输入信号324,该信号表示的是创建基准时钟输入信号128的振荡器(也就是基准时钟128的来源)的温度。补偿模块320根据补偿输入信号324并且使用温度-频率的预定关系(例如查找表)来确定基准时钟128的频率变化。此外,补偿模块320还将带有变化信息的调整信号输出到代数模块108′。依照基准时钟128的周期增量的变化以代数方式添加给所需输出周期132,从而在没有恒温箱和加热延迟的情况下产生一个极其稳定的时间基准,以此作为输出信号136。
在另一个实施例中,通过将寿命标识信号(例如当前日期)用作补偿输入信号324,可以采用相似方式来对晶体老化进行校正。而补偿模块320则是根据补偿输入信号324并且使用寿命-频率的预定关系(例如查找表)来确定基准时钟128的频率变化的。
状态捕捉模块204′接收一个同步输入信号300。并且状态捕捉模块204′电连接到每一分支以及行程计数器模块200,以便在同步信号300变换时接收和保存环路振荡器104′分支以及行程计数器模块200的状态。所述状态捕捉模块204′包括一个将同步信号300用作时钟的第二寄存器204b(未显示)。一旦同步信号300跃迁(通常是正沿跃迁),那么第二寄存器204b将会保存环路振荡器104′的状态。在一个实施例中,第二寄存器204b保存一个16比特的数据字,它是用于描述第一寄存器204a的比特。
状态捕捉模块204′还电连接到代数模块108′,以便传送所保存的状态信息330。代数模块108′的同步模块304则接收状态捕捉模块204′传送的被保存状态信息330并且计算后续的跃迁边沿选定范围,由此输出信号136与同步信号300处于相同相位。
图5更详细地描述了代数模块108′。代数模块108’对从环路振荡器104’中创建输出信号136的每一个跃迁边沿所需要的行程和分支进行计算。在一个实施例中,四信道代数模块108′计算输出信号136的接下来的两个上升沿以及对应的下降沿。第一上升沿称为相位0信号,对应的下降沿则称为相位1信号,并且第二上升沿称为相位2信号,而相应的下降沿则称为相位3信号。为使附图保持清楚,除非所指内容之外,在这里只对用于创建相位0信号的电路进行描述。此外,除非另有所指,否则用于其他三个相位信号的电路都是相似的。通过并行计算四个边沿,代数模块108′可以在一个更快的频率上工作,由此允许输出信号136是一个更高的频率。在其他实施例中,根据所需要的性能而需要用到多于或少于四个信道。
代数模块108’接收基准时钟128和RISE(上升)时钟540。RISE时钟540是从输出模块114的相位组合模块1225(图12)那里接收的。所述RISE时钟540是输出信号136的频率的一半,它具有与输出信号136的上升沿相对应的边沿。代数模块108’则是将RISE时钟540用作执行计算和将数据存入寄存器的时钟。此外,代数模块108′还接收一个代数数据输入信号132。所述代数数据输入信号132包括一个表示基准时钟输入信号128的周期乘数的数据字132a,其乘积则限定了输出信号136的所需周期。
在一个实施例中,数据字132a是一个27比特的字,其中前6个比特表示乘数的整数部分,另外21个比特表示乘数的小数部分。使用27比特使得用户能够定义精度超过1ppm的输出信号136的频率。例如,对作为基准时钟输入128的周期的二分之一(也就是频率的两倍)的输出信号136来说,所述数据字132a是000000.100000000000000000000。对作为基准时钟输入128的周期的四分之一(也就是频率的四倍)的输出信号136来说,所述数据字132a是000000.010000000000000000000。在另一个实例中,作为周期为基准时钟输入128的周期的2.25倍的输出信号136(也就是频率的0.444444……倍),所述数据字132a是000010.010000000000000000000。
周期积分器模块500使用乘数数据字132a来确定何时出现下一个涉及基准时钟信号128的上升沿。图6更详细地描述了周期积分器模块500。在这里将乘数数据字132a输入到n倍模块600和加法器632′这两个组件之中。这两个组件600、632则使用乘数数据字132a,以便依据基准时钟信号128来分别计算用于第一上升沿即相位0以及第二上升沿即相位2的所需跃迁。在一个实施例中,n倍模块600将乘数数据字132a与IC中硬连线的一个常数相乘。如下所述,对不同条件来说,所述常数是不同的。所用常数则是出于设计需要而被确定的。
在一个说明性实例中,选定常数是2(用于标准条件)、6(用于捕获(catch-up)模式)和11(用于同步模式)。在标准条件下,由于相位0的计算是对间隔的上升沿进行计算,因此n倍模块600会将乘数数据字132a与2相乘。如下所述,所述“捕获”是这样一种模式,其中代数模块108’因为某种原因而错误地计算并请求了一个已经出现的需要边沿。这样一来,在代数模块108’能捕获并请求一个将来出现的需要边沿之前,所述捕获模块1205(图12)会使得RISE时钟540以快很多的速度运行。因此需要一个比标准条件中所使用的数字2更大的常数,以便顾及执行捕获的时间。对同步模式来说,在同步信号之后以及代数模块108′之前出现的等待时间周期将会放置一个跃迁边沿。这个等待时间周期表示的是同步模块304计算何时放置跃迁边沿来产生“无缝”同步所需要的时间。所述常数必须得到精准的确定,以便适应于所述等待时间周期。
在标准条件或捕获模式中,n倍模块600的输出发送到加法器628。所述输出是与用于标准条件或捕获模式之一的校正模式的常数相乘的乘数数据字132a。所述校正模式是通过接收自捕获模块1205的输入信号604确定的,其中所述信号表示的是任意波形生成器100′是否处于捕获模式。对同步模式来说,作为乘数数据字132a与用于同步模式的常数相乘的结果的所述输出将会发送到加法器624。
在加法器628中,n倍模块600的输出添加到寄存器616中保存的当前值中。寄存器616中保存的当前值表示的是当前相位0边沿。在标准条件下,加法器628的输出即为当前相位0边沿与二倍的依据基准时钟信号128的所需周期之和。它表示的是下一个相位0的边沿,其中所述边沿是经由复用器608传播并在下一个RISE时钟信号540上计时到寄存器616中的。复用器608则根据从同步模块304接收的转接信号596而从加法器624或加法器628中进行选择。在这里将会重复这个循环(例如将寄存器616的内容添加给n倍模块600的输出并且在下一个RISE时钟540对其加以保存),以便确定下一个奇数的上升沿跃迁。
相位2信号的确定处理(及其对应电路)则稍有不同。寄存器616包含了当前相位0的边沿。为了计算下一个(例如第二)上升沿,寄存器616的输出(也就是第一上升沿)将被发送到加法器632′并与根据基准时钟128(也就是乘数数据字132a)的所需周期相加。加法器632′的输出表示的是第二(例如偶数)上升沿的值。在下一个反相时钟脉冲RISEb540′上,加法器632′的输出计时到寄存器620′中。反相时钟RISEb540′则被用于满足用以产生与相位0的相差180度相位的边沿的相位2信道中的严格的定时需要。乘数数据字132a能够在每一个(例如第一和/或第二和/或第三等等)上升沿计算中得到改变。因此,所述周期可以随着每一个上升沿而变化,由此产生一个任意波形。
回过来参考图5,周期积分器模块500的输出发送到一个加法器572。如上所述,周期积分器模块500的输出表示的是依据基准时钟128而需要下一个奇数跃迁边沿的时间。加法器572的另一个输入则是当前时钟时间508。在下一个奇数跃迁边沿时间中减去从时钟域变换模块212接收的当前时钟时间508,以便确定在下一个奇数跃迁边沿位置之前所保持的时钟脉冲128的数目和部分。如图6中所示,用于下一个偶数跃迁边沿的周期积分器模块500的输出发送到一个相同的加法器572′(未显示)。图5所示的用于计算下一个奇数跃迁边沿的电路几乎完全等同于用于计算下一个偶数跃迁边沿的电路。其中的不同之处在于所有寄存器512′、516′、520′、524′、528′、532′、536′都是由RISEb时钟脉冲540′来进行计时的。
用户可以移动所需边沿的相位。这个操作是通过一个第二数据字132b来执行的,其中所述数据字是代数数据输入信号132的一部分。在一个实施例中,第二数据字132b是一个21比特带符号字,其中前8个比特表示的是基准时钟周期的整数部分,另外13个比特表示基准时钟周期的小数部分。输出信号的相位可以前移(举例来说,如果为正的话)或后移(举例来说,如果为负的话)128个基准时钟周期之多。如果处于同步模式,那么所述相移相对的是最后一个同步输入300。
如果使用第二数据字132b来请求一个相移输入,那么相移将会保存在寄存器532中并被添加给加法器572。加法器572的输出则是以基准时钟128的周期为单位的超出预发送集合时钟信号508的下一个边沿的位置。在每一个RISE时钟脉冲540上,加法器572的输出时钟输入到寄存器520中。由于这个值是用基准时钟128衡量的,因此必须将其转换成与乘法器576相乘的环路振荡器104′的行程和分支的单位。乘法器576则将寄存器520的输出(也就是根据基准时钟128的增量边沿位置)与寄存器512的输出相乘,其中所述输出是当前平均环路速度(也就是每一基准时钟脉冲128的分支)。所述结果则是来自基于环路振荡器104′的行程和分支的预发送时钟信号508的下一个边沿的时间。此外,所述结果(也就是乘法器576的输出)是在RISE时钟脉冲540上计时输入到寄存器524中的。
在一个实施例中,乘法器576是一个17比特×17比特的快速乘法器。并且在一个实施例中,由于加法器572的输出是21比特,因此在加法器572与寄存器520之间串联使用了一个桶形移位器(未显示)。所述桶形移位器从加法器572的输出上移到4个前端零(例如MSB),所移位的零的实际数目依赖于相关的环路速度,由此将二进制的表示减至17个比特。
寄存器524的输出表示的是多个行程和分支所预期的边沿时间,所述输出发送到加法器580a并且与环路振荡器104′的当前状态相加,从而确定下一个边沿放置的绝对位置,在一个实施例中,所述总和可以是通过添加寄存器536中保存的值所移动的另一个相位。保存在寄存器536中的值则作为第三数据字132c接收,其中所述第三数据字132c是代数数据输入信号132的一部分。由于相移是按照分支而不是基准时钟信号128进行的,因此可以使用第三数据字132c的输入来精确消除系统中的传播延迟。
加法器580的输出发送到加法器584,以便与常数550相加。常数550是通过选择实施方式而被确定的。举例来说,它可以借助芯片布局而被确定,并且可以对其进行选择,以便允许在边沿触发器1215、1220上最大限度地建立/保持容限。常数550是以已知传播延迟(例如以分支单位)为基础,由此将选定分支的跃迁集中在其窗口之中。常数550只影响到行程的选择而不影响分支的选择。加法器584的输出则是在RISE时钟脉冲540上计时输入到寄存器528中的。寄存器528中保存的值560则是用于选择下一个边沿跃迁的行程和的分支的值560。寄存器值560则发送到切换模块112、微小延迟模块310和输出模块114,从而为输出信号136中的下一个偶数上升沿(相位0信号)跃迁选择正确的边沿跃迁。
同样,相位2信号电路具有一个保存下一个奇数上升沿跃迁的值的寄存器528′。在一个实施例中,创建相应偶数与奇数下降沿(相位1信号与相位3信号)的电路包括一个添加寄存器528和528′的内容的加法器(未显示)。代数模块108′将加法器的输出分为两部分,以便获取一个与两个上升沿之间中途的时间相对应的值。分离的加法器将会创建偶数和奇数下降沿。在另一个实施例中,第四数据字132d(未显示)可以与图5描述的相似电路结合使用,以便根据第四数据字132d而将一个下降沿置于偶数与奇数上升沿之间的任何位置。
在计算跃迁边沿位置的过程中,代数模块108′使用环路平均模块212和时钟域变换模块504。图7更详细地描述了环路平均模块212。环路平均模块212接收基准时钟信号128,以便将时钟信息输入其寄存器700、712、734、750。环路平均模块212还从状态捕捉模块204′接收所保存的状态信息220。如上所述,所保存的状态信息220包含行程计数器200和所述跃迁在对基准时钟128的跃迁进行捕捉时传播经过的最后一个分支的状态。环路平均模块对每个基准时钟128以分支为单位对环路平均速度进行计算。此外,所述环路平均模块212还对最后一个基准时钟脉冲128上的环路平均位置进行计算,也就是计算最后一个基准时钟脉冲128上的环路瞬时相位。
环路平均模块212的平均环路速度部分在减法部件704的正输入端接收当前保存的规定信息220。寄存器700则在先前基准时钟脉冲128上保存所存储的规定信息220的值。减法部件704在负输入端接收寄存器700中保存的值。减法部件704的输出表示所述差值,并且该输出是所述跃迁在一个基准时钟128的周期所经过的分支数目。这个值保存在寄存器712中。在一个实施例中,算术部件716、720和724被用于在64个环路速度值(例如衰变时间常数=64)上对寄存器712中保存的环路速度值求取均值,从而获取一个平均环路速度。在64个时钟脉冲上求平均值仅仅是一个设计选择,它是为了提供与合成器的总精度相一致的环路速度精度。在其他实施例中,用于取平均的基准时钟脉冲128的数目可以是不同的。
平均速度保存在寄存器734中并被提供给时钟域变换模块504和同步模块304。在一个实施例中,如果当前环路速度与平均环路速度在每个基准时钟脉冲128上相差八个以上的分支,那么将会使用复用器730而在最近的环路速度中切换到寄存器734中。这样则允许环路速度发生突然变化,以便复位平均值,并且将可能在启动时出现的很大的瞬变值减至最小。在这里,8个分支以上的变化是一个可以加以变化、以便满足设计目的的设计选择。
此外,在未曾显示的另一个实施例中还对平均环路速度564进行调整,以便补偿为环形振荡器104供电的电源的变化。这个变化是由其他电路未曾滤出的频率上的噪声造成的。放大电路(未显示)将这个变化的电压电平缩放成补偿电路可用的电平。补偿电路(未显示)则对电源电压(例如噪声)中经过放大的变化进行测量,并且对此变化进行数字化(例如经由一个模-数转换器来发送噪声信号)。补偿电路则将数字化的变化信号发送到环路平均模块212,以便调整计算得到的平均环路速度564。所述变化具有线性相关性(也就是说,电压的增加将会提高环路速度),因此,计算得到的平均环路速度564是据此调整的。根据需要,在这里可以使用本领域已知的任何技术来对数字化的变化信号进行缩放。通过在数字化的变化信号中使用更多比特,可以提高补偿的精度。在另一个实施例中,补偿电路将数字化的变化信号发送到代数模块108,以便补偿电源的变化。
环路平均模块212的平均位置(也就是瞬时相位)部分对在分支的小数部分中计算得到的环路位置进行追踪,并且在时间上对所述位置求取均值。计算得到的平均位置则用于增加的精度。环路平均模块212的平均环路位置部分在减法部件738的正输入端接收当前保存的规定信息220。减法部件738则在负输入端接收计算得到平均环路位置,其中所述位置即为寄存器750中保存的内容的输出,先前计算得到的平均环路位置则是在加法器758那里与寄存器734中保存的平均环路速度相加的。所述差值则即为减法部件738的输出,该差值也是实际环路位置与计算得到的平均环路位置之间的差值。在一个实施例中,算术部件742和746被用于在32个值上求取所述差值的平均值,以便为过去的32个基准时钟脉冲128获取一个平均差值。此外,在这里还可以使用一个不同于32的值。而计算得到的平均环路位置则保存在寄存器750中。
在一个实施例中,如果当前从实际环路位置中得到的平均环路位置差值大于八个分支,则在先前环路位置中也可以使用复用器754来进行切换。由此允许环路相位中出现突然变化,以便复位平均值并将可能在启动时出现的很大的瞬变值减至最小。八个分支以上的变化是一个设计选择,在这里可以对其加以改变,以便满足设计目的。寄存器750的输出或寄存器700的输出是根据复用器754的状态而在加法器758中添加给平均环路速度564的,由此创建计算得到的平均环路位置568。此外,计算得到的平均环路位置568还发送到时钟域变换模块504和同步模块304。平均环路速度信号564和clean_cnt_at_clk信号568则携带了与其对应的时间常数将要证实的精度比特之外的附加精度比特。通过这个操作,可以避免累积来自系统性取整错误的直流偏压。
图8更详细地显示了时钟域变换模块504。时钟域变换模块504从在基准时钟128的域中计时的环路平均模块212那里接收平均环路速度564和计算得到的平均环路位置568。时钟域变换模块504则将基准时钟128域中的信号转换成RISE时钟540域中的信号。时钟域变换模块504为在RISE时钟540域中计时的代数模块108′的寄存器512,516(图5)提供稳定值。此外,时钟域变换模块504还提供当前时钟时间508,其中所述时间作为基准时钟128的域中的一个计数器640开始并且发送到加法器572,所述加法器则工作在RISE时钟540的域中。在所示实施例中,计数器640是一个8位计数器并且会在达到其最大值时回滚到零。此外,所显示的电路同时还将这些信号校正为RISEb(例如相位2电路)。
half_clk信号643是从基准时钟信号128中创建的。通过将基准时钟信号128分成两个,可以创建half_clk信号643。第一层寄存器644、648、676、680、690、692是使用基准时钟信号128计时的。其中第一层寄存器644、648、676、680、690、692用于确保在基准时钟128的域中正确捕捉信号508、564、568。用于各个信号508、564、568的电路(也就是传播路径)则分别包含了第一层寄存器对644和648、676和680、690和692。每一对寄存器中的一个寄存器644、676、690是在half_clk信号643处于正状态时启用的。这对寄存器中的另一个寄存器648、680、692则是在half_clk信号643处于负状态时启用的。对相位0跃迁边沿的计算来说,其中将会使用第二层寄存器中的寄存器652、682、694。通过使用第一层寄存器对644和648、676和680、690和692,可以确保这些寄存器对中至少有一个寄存器会在时钟输入到RISE时钟540的域中的寄存器652、682、694的时候是稳定的。即使基准时钟信号128是在将RISE时钟540域的寄存器652、682、694用作计时的过程中跃迁的,稳定性也是可以得到确保的。每一个复用器660、686、698都会确定使用哪一个第一层寄存器对644和648、676和680、690和692作为时钟域变换模块504的输出。在这里,所用寄存器是稳定的。复用器的信道选择则是通过寄存器641中保存的half_clk643的状态做出的。这个寄存器在RISE时钟540将数据计时输入RISE时钟540域的寄存器652、682、694之后的某个延迟时间保存half_clk信号643的状态。无论何时,只要捕捉所述half-clk时所述half_clk正在进行跃迁,那么寄存器641和642′的输出都是不可预测的。然而,这时所有第一层寄存器都是稳定的,这样一来,只要为master_clk信号508和clean_cnt_at_clk信号568选择相同寄存器,那么所选择的寄存器将是无关紧要的。所显示的延迟则是确保这个属性所必需的。
对相位2的计算来说(例如偶数跃迁边沿),在这里使用了相似的电路(也就是寄存器656′、684′、696′、642′以及复用器664′、688′、699′)。其中一个差别在于所有寄存器656′、684′、696′、642′都是使用RISEb信号540来计时的。在所示实施例中,从环路平均模块212接收的平均环路速度信号564是21个比特。桶形移位器668和自动排列(range)部件672则被用于将所述信号移出多达四个前端比特,以及将所述信号转换成17个比特。
如果使用同步信号来确定输出信号136(也就是同步模式)相位,那么在计算下一个边沿跃迁的时间时将会涉及到同步模块304。图9A更详细地描述了同步模块304。所述同步模块304接收同步输入300、来自环路平均模块212的平均环路速度564以及计算得到的平均位置568。此外,同步模块304还接收来自状态捕捉模块204′的所保存的状态信息330。保存的状态信息330包括在对同步输入300的跃迁进行捕捉时的行程计数器200和最后一个跃迁分支的状态。所述同步模块304输出一个表示可以放置无缝边沿跃迁时间的start_integrate信号592。由于所述同步模块304会在新定相输出能用最小“假信号”来旧定相输出时确定一个准确的半周期,因此所述边沿跃迁将是无缝的。同步模块304选择这个跃迁边缘作为指针,以便将输出信号136转接成与同步输入300同相的信号。同步模块304则产生一个转接信号596,以便向周期同步模块304表明同步模块304已经计算了所需要的边沿跃迁并且所述边沿跃迁应被代入周期积分器模块500。
为了计算无缝边沿跃迁位置,同步模块304使用减法部件820从所保存的状态信息330中减去先前基准时钟128时计算的平均位置568。减法部件820的输出则表示以分支为单位的基准时钟128与同步输入信号300之间的相移。在这里使用了三个寄存器808、812、816来为两个附加基准时钟128的脉冲保持先前基准时钟128的脉冲时计算得到的环路振荡器104′的平均位置568,同步去抖动模块800则对同步信号300的时间进行去抖动操作。
在图9B中更详细地显示了同步去抖动模块800。XOR部件904是一个允许用户设定同步输入信号300的极性的可选部件。在这里将sync_pol的输入设定成同步输入信号300的有效变换。在所示实施例中,防抖动电路是为有效上升的同步输入信号300而设立的。无论所用同步输入信号300的极性如何,所述XOR部件904都会确保其输出是一个有效上升信号。AND部件908则允许用户启用和禁用同步模式。如果禁用sync_enable(例如低电平状态),那么没有同步脉冲经过所述同步去抖动模块800。
同步去抖动模块800输出一个sync_buff信号950。在这里使用了所述synch_buff信号950来对捕捉周期积分器模块500的输出的寄存器832(图9A)进行计时,从而指示在同步脉冲300时出现的相位0和相位2这两个接下来预期得到的跃迁边沿。Sync-buff将snyc输入提供到状态捕捉模块204′。逻辑部件936则使得sync_buff信号只从同步输入300变换的时间持续到触发器912的第一D输入改变状态之前。此外还添加了延迟944,以确保在D触发器912上,所述模块204’的同步输入是在边沿之前。用于sync_buff信号950的时帧则非常窄,从而允许同步信号在没有出错的情况下任意接近一个ref-clk128边沿。一旦寄存器832保存所述信息并且第一D触发器改变了状态,那么下一个D触发器916将会在后续基准时钟128的脉冲上改变状态。AND部件924则只切换到高电平状态,如果同步脉冲(也就是AND部件908的输出)是高电平,那么第一D触发器912将会变成高电平状态,第二和第三D触发器916、920则处于低电平状态。如果AND部件924的输出在后续基准时钟128的脉冲上是高电平,那么第二D触发器915的输出将会变成高电平状态。由此创建了一个稳定的(也就是去抖动的)同步信号900(“SYNCsync”)。在这里不会看到任何持续了不到两个基准时钟128的脉冲的同步信号。SYNCsync信号900持续了基准时钟128的一个周期。NAND部件928、932与第三D触发器920则确保所述第二D触发器916会在SYNCsync信号900之后的下一个时钟脉冲再次改变状态。当第二D触发器916再次改变状态时,SYNCsync信号900将会结束。
回过来参考图9A,其中将SYNCsync信号900用于启用寄存器824。所述寄存器824保存减法部件820在SYNCsync信号900之后的下一个基准时钟128的脉冲上的输出。此外在这里还使用了所述SYNCsync信号900来启用寄存器850,其中所述寄存器保存的是SYNCsync信号900之后的下一个基准时钟128脉冲上的平均环路速度564。波纹除法器804则将所保存的以分支为单位的相移与寄存器850中保存的以每个基准时钟128的分支为单位的平均环路速度相除。
上述结果发送到求和器840上的一个正输入端。此外还将寄存器828中保存的当前时钟时间508发送到求和器840的一个正输入端。另外还将一个常数3发送到求和器840的一个负输入端。该常数表示的是用于同步去抖动模块800的三个基准时钟128的脉冲的等待时间,并且由此将被减去。此外,在这里还将当前(也就是转接的时候)相位0边沿位置发送到求和器840的一个正输入端。在寄存器832中捕捉的相位0的边沿位置或是相位2的边沿位置都发送到求和器840的一个负输入端。复用器836则根据与延迟854相等的某个时段的FALLb信号状态来选择将要使用的信号。这个操作即为在sync_buff信号950之前的时钟域之间的异步数据传送。选定的信号表示的是在同步脉冲300时计算得到的跃迁边沿。这个信号将会从当前(也就是在转接时)相位0的边沿跃迁中减去,以便补偿同步模块304的等待时间。而求和器840的输出592则发送到周期积分器模块500(图6)的寄存器612。所述输出592表示的是按照基准时钟128的与同步输入300同相的输出信号136的第一无缝边沿跃迁。
在这里将D触发器850、854、858用作一个延迟,以确保波纹除法器804在转接之前已经固定。而D触发器862、866则被用于借助转接信号来校准RISE时钟540,其中所述时钟即为周期积分器模块500中的寄存器所使用的时钟。D触发器866与AND部件858确保转接信号仅仅持续RISE时钟540的一个周期。转接信号596则由复用器608使用(图6)。在有效时,复用器608对加法器624的输出进行选择,其中所述输出包含从同步模块304中计算得到的边沿跃迁。在下一个RISE时钟540的脉冲上,计算得到的边沿跃迁将被计时到寄存器616中(图6),并且转接信号将会变为“无效”。然后,复用器608从加法器628的输出中进行选择,如上所述,所述输出继续将所需周期长度添加给先前跃迁边沿。
正如上文参考图5所描述的那样,用于与同步输出300同相的输出信号136并且通过按照基准时钟128的第一无缝边沿跃迁是从周期积分器模块500中输出的。所述跃迁经过加法器572和乘法器576,在所述设备中,所述跃迁从基准时钟128的周期转换成分支的数目。然后,边沿跃迁计算经由加法器580与加法器584继续进行,在所述设备中,所述跃迁在一个RISE时钟540脉冲上存入寄存器528。寄存器528的输出560表示的是用分支和行程来衡量的边沿跃迁位置,并且所述输出将会发送到切换模块112。切换模块112则使用这个信息来选择环路振荡器104′的所需分支,以便创建下一个边沿跃迁。
图10A和10B更详细地描述了切换模块112。图10A描述的是用于为相位0信号选择边沿的复用器1000、1003、1010的结构。在一个实施例中使用了16:1的分支选择模块1003而从环路振荡器104′的16个分支中的一个分支选择跃迁边沿。所述分支选择模块1003则是由5个平衡复用器模块1000组成的。
图10B更为详细地描述了平衡复用器模块1000。平衡复用器模块1000是一个4:1的复用器。所述平衡复用器模块1000包括NAND部件1015、1020、1025、1030、1035以及电容延迟部件1040、1045、1050、1055。在一个实施例中,正如本领域已知的那样,电容延迟部件1040、1045、1050、1055是通过使用专门为了在IC中创建电容器而设计的IC库单元来实现的。电容延迟部件1040、1045、1050、1055的电容将会导致当信号在沿相应路径传播时在信号跃迁中出现延迟。平衡复用器模块1000接收一个边沿选择输入,在一个实施例中,所述输入是一个2比特信号,它定义了的是所选择的四个输入。此外在这里还使用了NAND部件1015、1020、1025、1030、1035来选择和传播所请求的边沿,以便进行输出。
对图10A中描述的每一个平衡复用器模块1000a、1000b、1000c、1000d、1000e、1000f、1000g、1000h、1000i、1000j来说,NAND部件1015、1020、1025、1030、1035都是相同的。然而,对图10A中描述的每一个平衡复用器模块1000a、1000b、1000c、1000d、1000e、1000f、1000g、1000h、1000i、1000j来说,电容延迟部件1040、1045、1050、1055则是不同的。这一点是必需的,因为电容延迟部件1040、1045、1050、1055的值基于两个因素,对每一个平衡复用器模块1000a、1000b、1000c、1000d、1000e、1000f、1000g、1000h、1000i、1000j来说,这两个因素的值并不相同。
第一个因素在于正在传播的跃迁究竟是正向(也就是从低电平状态到高电平状态)还是负向(也就是从高电平状态到低电平状态)跃迁。这两种类型的跃迁都是经由NAND部件1015、1020、1025、1030、1035及其路径上的其他部件传播的,但是它们的传播速率则不相同。电容延迟部件1040、1045、1050、1055的值可以补偿这两个不同速率。第二个因素在于边沿从分支到切换模块112以及经过切换模块112的传播路径具有不同的长度。电容延迟部件1040、1045、1050、1055的值可以补偿这些不同的路径长度。无论信号极性或是信号所要传播的路径长度怎样,所述电容延迟部件1040、1045、1050、1055的值都会确保跃迁边沿从一个分支传播到切换模块112的输出的时间相等。电容延迟部件1040、1045、1050、1055的值则依照实施硬件设计而发生变化。此外,这些电容器还校正延迟部件104的回路中的不规则性。
在另一个实施例中,平衡复用器模块1000的每一个第一电容延迟部件1040、1045、1050、1055都具有相应的第二电容延迟部件1040a、1045a、1050a、1055a(未显示)。每一个相应的第二电容延迟部件1040a、1045a、1050a、1055a都与它所关联的第一电容延迟部件并联(也就是说,1040与1040a是并行的)。同样,第一电容部件集合1040、1045、1050、1055会对温度变化、工艺以及电源电压做出反应。而相应的第二电容延迟部件集合1040a、1045a、1050a、1055a则不会对温度变化、工艺以及电源电压做出相似的反应。由此确保了可以用相应的第二组电容延迟部件集合1040a、1045a、1050a、1055a来补偿相对于温度变化、工艺和电源电压而言并非线性的传播延迟变化。相应的第二电容延迟部件集合1040a、1045a、1050a、1055a则是通过一个与实施第一电容延迟部件集合1040、1045、1050、1055所不同的IC工艺来实现的。在此可以使用本领域已知的任何方法。
回过来参考图10A,其中使用和校准(也就是选择电容延迟部件的值)第一分支选择模块1003a来从环路振荡器104′的分支接收一个上升(也就是正向)跃迁。此外还通过使用和校准一个第二分支选择模块1003b(也就是选择电容延迟部件1040、1045、1050、1055的值)来从环路振荡器104′的分支中接收一个下降(也就是负向)跃迁。如果选定分支是一个下降沿,并且由此所述分支是通过第二分支选择选择模块1003b来选择的,那么所述分支是通过反相器1005来反相的。复用器1010基于从代数模块108′接收的输入来选择所用分支选择模块1003a、1003b。相位1、相位2和相位3的信号各自具有相似的复用器结构,以便选择相应的边沿。来自复用器1010的上升沿则始终是有效边沿。
图11更详细地描述了微小延迟模块310。微小延迟模块310旨在将所述跃迁边沿延迟一个差分时间量,其中所述时间量小于环路振荡器104′的分支之间的时间(例如小于图1B所描述的300皮秒)。微小延迟模块310提高了输出信号136中的边沿跃迁位置的精度。所述微小延迟模块310包括NAND部件1105、1110、1115、1120、1125、1130、1135、1140以及电容延迟部件1150、1155、1160、1165、1170、1175。此外,所述微小延迟模块310还接收一个边沿选择输入,其中在一个实施例中,所述输入是一个定义了所使用的是哪八条可能路径的三比特信号。NAND部件1105、1110、1115、1120、1125、1130、1135、1140则被用于选择所请求的边沿并且将其传播到输出端,由此可以经由八个可能路径之一来对其进行路由。任意波形生成器100′包括一个用于代数模块108′所计算的各条信道的微小延迟模块(例如相位0、相位1、相位2和相位3)。所关注的边沿则总是正向进入和离开所述微小延迟模块105。
如上所述,对每个微小延迟模块310来说,电容延迟部件1150、1155、1160、1165、1170、1175可以是不同的。然而在优选实施例中,微小延迟模块的内部设计全都是相同的,由此将会导致具有相同的电容值。此外如上所述,每一个微小延迟模块都可以包括相应的电容延迟部件集合1150a、1155a、1160a、1165a、1170a、1175a。在一个实施例中,通过微小延迟模块108的快速路径甚至远远大于每一个分支之间的延迟时间。然而在这八条可能路径中,任何两条路径之间的延迟时间差值都小于各个分支之间的延迟时间。微小延迟模块添加的很大的固定延迟分量则是由代数模块108′所使用的常数550(图5)的一部分以及代数模块108'中的相位补偿输入132c的一部分(可选的)来进行补偿的。而所述微小延迟模块310的输出则发送到输出模块114。
在图12中更详细地描述了输出模块114。所述输出模块包括一对边沿触发器1215、1220以及一个窗口模块1210。这三个组件1215、1220、1210是对应于各条信道(例如相位0、相位1、相位2和相位3)而被包含的。此外,输出模块114还包括相位或信道组合模块1225。用于各条信道的边沿触发器对1215、1220(例如相位0、相位1、相位2和相位3)的输出则发送到相位或信道组合模块1225。相位或信道组合模块1225将所有信道信号(例如相位0、相位1、相位2、相位3)组合成一个单独输出136。如果需要用到多个输出,那么可以通过相应信道组合模块1225来为各个输出合并不同信道组合。输出模块114还包括一个捕获模块,在一个实施例中,所述捕获模块只包括上升沿信道(例如相位0、相位2)。
在图13中更详细地描述了捕获模块1205、窗口模块1210以及一对边沿触发器1215、1220。在这里将接收自微小延迟模块310的相位0边沿用作这两个边沿JK触发器1215、1220的时钟。这对边沿触发器1215、1220的JK输入则是从窗口模块1210中接收的。在一个实施例中,窗口模块1210具有两个比较器1336、1360。第一比较器1336将代数模块108′计算的行程与同相行程计数器200a相比较。第二比较器1360则将代数模块108′计算的行程与异相行程计数器200b相比较。当代数模块108′计算的行程与行程计数器200相等时,所述窗口打开。在这里将边沿触发器对设定成通过AND部件1376或1382来对源自微小延迟模块310的边沿跃迁输入进行计时。窗口开启触发器1340或触发器1372中的每一个触发器都是基于以代数方式计算的单个比特并由复用器1344使用和选择的。此外还使用XOR部件1348、触发器1352以及NAND部件1356在所需边沿跃迁成功计时了边沿触发器对1215、1220的时候复位并关闭窗口。当得到代数信号ph0_win_open的创建替换窗口的指示时,触发器1368和AND部件1364将被用于创建一个替换窗口。替换窗口则用于使得波形合成器能以很高频率工作,例如在高于自由振荡环路本身的频率上工作。在这种情况下,所需环路已经处在进行中,使用包括比较器1350、1336的机制则变得过晚。取而代之的是,除了延迟之外,替换窗口将会立即“打开”,以使相关数据有效。
第一比较器1336还确定代数模块108′计算的行程是否比行程计数器200a的当前值与等待时间的容限之和更小。如果小于的话,那么代数模块108′传送一个错误计算并且第一比较器会将一个信号发送到捕获模块1205。所述捕获模块1205在代数模块108请求一个过去发生的行程(也就是所请求的行程小于当前行程)的时候有效。比较器1336的输出表示所请求的是一个过去的行程,该输出发送到捕获模块1205的触发器1308。在环路振荡器104′的下一个周期,误差信号将被计时输入到触发器1308中。采用ph0_catch标记的触发器1308的输出则发送到一个OR部件1312。相位2信号具有一个相似的捕获模块1205′(未显示)。其中的一个不同之处在于,触发器部件1309和OR部件1310没有与相位2捕获模块1205′包含在一起。而相位1和相位3信号则不具有捕获模块1205。对相位2的捕获模块1205′来说,其触发器1308′(未显示)的输出也是OR部件1312的输入以及触发器1309的输入。在触发器1308′的输出发生变化之后的RISEb时钟540′的脉冲上,触发器1309向OR部件1310输出一个有效捕获信号。所述OR部件1310则将一个有效捕获信号604输出到周期积分器模块500的n倍模块600。如上所述,所述n倍模块600使用这个信号604来确定所述任意波形生成器是否处于捕获模式之中并且是否应用了正确的乘法器。在处于捕获模式时,通过使用边沿触发器对1215、1220的置位和复位输入,所述NAND部件1316、1320、1324、1328以及AND部件1332将被用于以四分之一的自由环路振荡器104′的速度来创建RISE时钟540的脉冲。如上所述,在将来再一次请求所述行程之前,所述捕获模式将会为代数模块108′创建一个替换高速时钟并增加经过编程的周期。而在那时,所述捕获模块1205将会结束捕获模式(例如将捕获信号604改成“非”有效状态)。在电路恢复时,所述电路将是以正确的相位恢复的。
参考图14,输出模块114的相位或信道组合模块1225包含三个平衡XOR模块1500a、1500b、1500c以及四个反相驱动部件1405、1410、1415、1420。如上所述,前两个平衡XOR模块1500a、1500b的输出从输出模块114发送到代数模块108′并且由代数模块108′用作执行计算的时钟。此外,这些输出还发送到第三平衡XOR模块1500c,以便创建输出信号136。第一平衡XOR模块1500a接收上升沿信道信号(也就是相位0,相位2)。接下来的平衡XOR模块1500b则接收下降沿信道信号(也就是相位1,相位3)。在这里使用了相位组合模块1225来合并每一个信号(也就是相位0,相位1,相位2以及相位3)。所述相位组合模块1225是以一种平衡方式进行组合的,这样一来,无论信号或信号极性怎样(也就是相位0,相位1,相位2,相位3),来自边沿触发器对1215、1220的输出端到输出信号136的传播延迟时间几乎都是相同的。
图15更详细地描述了平衡XOR模块1500。平衡XOR模块1500包括6个NAND部件1505、1510、1515、1520、1525、1530以及八个反相器1535、1540、1545、1550、1555、1560、1565、1570。平衡XOR模块1500还包括电容延迟部件1575a、1575b、1575c、1575d、1575e、1575f、1575g、1575h。对图14中描述的每一个平衡XOR模块1500a、1500b、1500c来说,电容延迟部件1575a、1575b、1575c、1575d、1575e、1575f、1575g、1575h都是不同的。如上所述,对补偿用于各个输入的不同路径长度以及这些输入处理是上升沿还是下降沿跃迁来说,电容延迟部件1575a、1575b、1575c、1575d、1575e、1575f、1575g、1575h并不相同。此外如上所述,每一个平衡XOR模块都可以包括一个相应的第二电容延迟部件集合1575aa、1575ab、1575ac、1575ad、1575ae、1575af、1575ag、1575ah。
作为一个说明性实例,图16描述的是输出一个输出信号136″的任意波形生成器100″的时序图,其中所述信号是一个周期为7毫微秒(也就是大约143MHz)的方波。这个时序图描述的是一个任意波形生成器100″,其中代数模块108″包含了用于计算两个交替上升沿(也就是相位0和相位2)以及两个交替下降沿(也就是相位1、相位3)的并行电路。此外,所述时序图还显示了从输入端进入切换模块112″并且到达输出模块114″的输出端的各个信号。
标记了“16:1复用器”的方框表示的是经过分支选择模块(例如图10A的分支选择模块1003a)的传播时间。标记了“符号”的方框表示的是经过所述在正(也就是上升沿)分支选择模块(例如图10A中的1003a)或负(也就是下降沿)分支选择模块(例如图10A中的1003b)之间进行选择的复用器符号选择部件例如图10A中的复用器1010的传播时间。标记了“微调”的方框表示的是经过微小延迟模块(例如图11的微小延迟模块310)的传播时间。微调方框之前的边沿上的双线表示的则是经由微小延迟模块310传播的变量。标记了“JK flops”的方框表示的是经过边沿触发器对(例如图13中的触发器1215,1220)的传播时间。紧随在标记了“JK flops”的方框之后并且标记了“XOR的方框表示的是经过第一平衡XOR模块(例如图14所示的用于相位0和相位2信号的平衡XOR模块1500a或者用于相位1和相位3信号的平衡XOR模块1500b)的传播时间。紧随在标记了“XOR”的方框之后并且标记了“XOR”的下一个方框表示的是经过下一个平衡XOR模块(例如图14的平衡XOR模块1500c)的传播时间。标记了“时钟树”的方框表示的是经过时钟树(例如图14中所示的时钟树)的传播时间。标记了“out_clk”的信号表示的是由“任意波形生成器100输出的输出信号136”。
本发明可以在不脱离本发明实质或基本特征的情况下采用其他特定形式来加以实施。因此,在各个方面都将上述实施例视为是说明性的,而不是对这里描述的发明加以限制,这样一来,本发明的范围是通过附加权利要求而不是上文的描述来进行限定的,并且这其中意图包含所有那些落入权利要求等价物的含义和范围以内的变化。
权利要求
1.一种用于提供任意波形的波形生成器,包括一个自由振荡式环形振荡器,包括多个连接在环路中的延迟部件;以及排列在延迟部件之间的多个分支,每一个分支都提供了一个唯一定相的振荡跃迁信号;一个代数模块,该模块具有一个代数数据输入端口、一个时钟输入端口以及一个代数数据输出端口,所述代数模块对在代数数据输入端口接收的信号作出响应,从而在代数数据输出端口产生一个表示任意波形的第一上升沿的信号;一个切换模块,该模块具有一个与代数数据输出端口进行电通信的切换输入端口、多个与所述自由振荡式环形振荡器的分支进行电通信的切换分支输入端口以及一个切换输出端口,其中所述切换模块对在切换输入端口接收的表示第一上升沿的信号做出响应,从而在切换输出端口提供一个从多个分支的一个分支中选出的第一跃迁信号;以及一个输出模块,该模块具有一个与切换输出端口进行电通信的跃迁信号输入端口、一个与代数数据输出端口进行电通信的窗口输入端口以及一个与代数模块的时钟输入端口进行电通信的波形输出端口,其中所述输出模块对在输出模块的跃迁信号输入端口接收的第一跃迁信号以及在窗口输入端口接收的表示第一上升沿的信号作出响应,从而在波形输出端口生成一个任意波形。
2.权利要求1的任意波形生成器,还包括一个环路平均模块,该模块包括一个基准时钟输入端口和一个分支输入端口,其中所述分支输入端口电连接到多个分支,其中所述环路平均模块对在基准时钟输入端口接收的基准时钟信号作出响应,从而被配置成(i)对在基准时钟信号边沿之间出现的分支跃迁数目进行计数,(ii)响应于所述计数对平均环路速度进行计算。
3.权利要求2的环路平均模块,还被配置成对(i)计算得到的平均环路速度以及(ii)捕捉到的多个环路状态作出响应,从而计算环形振荡器的瞬时相位。
4.权利要求1的任意波形生成器,还包括一个微小延迟模块,该模块包括一个与切换输出端口进行电通信的信号输入端口、一个与代数模块的代数数据输出端口进行电通信的选择输入端口以及一个与输出模块的输入端口进行电通信的微小延迟输出端口,响应于在选择输入端口接收的指示第一上升沿的信号,所述微小延迟模块对从切换模块的切换输出端口到输出模块的输入端口的第一跃迁信号的传播进行延迟;其中所述输出模块的输入端口与切换模块的切换输出端口通过微小延迟模块进行电通信。
5.权利要求1的任意波形生成器,其中代数模块还包括一个同步输入端口,响应于在代数数据输入端口接收的信号以及在同步输入端口接收的信号,所述代数模块在代数数据输出端口生成一个表示任意波形内的第一上升沿的信号。
6.权利要求5的任意波形生成器,其中所述代数模块生成一个表示第一上升沿的信号,由此在任意波形中实现第一上升沿的无缝合并。
7.权利要求1的任意波形生成器,其中一个延迟部件是反相延迟部件。
8.权利要求1的任意波形生成器,其中每一个延迟部件都是同等负载的。
9.权利要求1的任意波形生成器,其中至少有一个延迟部件还包含测试切换模块,该模块具有一个测试控制输入端口和一个测试数据输入端口,响应于在测试控制输入端口接收的信号,所述延迟部件在相应分支生成一个与在测试数据输入端口接收的信号相同的信号。
10.权利要求1的任意波形生成器,还包括一个补偿模块,该模块包括一个与代数模块进行电通信的数据输出端口以及一个用于对表示基准时钟源的频率改变参数的信号进行接收的补偿输入端口,其中所述补偿模块对与频率改变参数相关联的基准时钟频率变化进行估计,响应于所述变化,所述补偿模块在补偿输出端口生成一个校正信号。
11.权利要求10的任意波形生成器,其中频率改变参数是基准时钟源的温度。
12.权利要求10的任意波形生成器,其中频率改变参数是基准时钟源的寿命。
13.权利要求1的任意波形生成器,其中代数模块还被配置成对在代数输入端口接收的信号作出响应,从而在代数数据输出端口生成一个表示任意波形内的第一下降沿的第二信号。
14.权利要求1的任意波形生成器,其中输出模块还被配置成生成一个捕获信号,该信号表示的是用于指示在窗口输入端口接收的第一上升沿的错误信号。
15.权利要求1的任意波形生成器,其中所述任意波形生成器是在CMOS集成电路内部实现的。
16.权利要求1的任意波形生成器,还包括一个放大器,所述放大器对来自耦合到环形振荡器的电源的电源噪声的至少一个分量进行前馈;以及一个环路速度补偿电路,所述环路速度补偿电路与所述放大器进行电通信。
17.权利要求1的任意波形生成器,还包括多个电容部件,其中每一个部件都与多条信号路径中的一条相应路径进行电通信,每一个电容部件都具有相应的预定容量,以便在经过相应信号路径传播跃迁信号的过程中生成相应的预定时延,由此,第一信号路径上的跃迁的传播时间实质上与第二信号路径上的跃迁的传播时间相等。
18.权利要求17的任意波形生成器,其中多个电容部件中的每一个电容部件都具有小于50毫微微法左右的值。
19.权利要求17的任意波形生成器,其中多条信号路径中的每一条路径都与第一电容部件和第二电容部件进行电通信。
20.权利要求19的任意波形生成器,其中相对于温度而言,第一电容部件和第二电容部件具有不同的灵敏度。
21.权利要求19的任意波形生成器,其中相对于工艺而言,第一电容部件和第二电容部件具有不同的灵敏度。
22.权利要求19的任意波形生成器,其中相对于供应电压而言,第一电容部件和第二电容部件具有不同的灵敏度。
23.一种用于产生任意波形的方法,包括在延迟部件环路中生成一个连续的跃迁序列;对在环路中的一个延迟部件上出现的跃迁进行计数;确定所需的第一上升沿时间和第一下降沿时间,以便产生任意波形;基于计数得到的跃迁和内部时钟对所需的第一上升沿时间做出响应,以便选择连续跃迁序列中的第一跃迁;基于计数得到的跃迁和内部时钟对所需的第一下降沿时间作出响应,以便选择连续跃迁序列中的第二跃迁;使用第一和第二选定跃迁来产生一个输出信号,从而生成任意波形;以及基于输出信号生成内部时钟信号。
24.权利要求23的方法,其中生成输出信号的步骤还包括对过去出现的所需第一上升沿时间作出响应,从而使用连续跃迁序列中的每一个跃迁来产生输出信号。
25.权利要求23的方法,还包括相对于输入基准时钟而在其中一个延迟部件上计算平均跃迁速率。
26.权利要求25的方法,还包括对(i)计算得到的平均跃迁速率以及(ii)延迟部件环路的多个捕捉状态作出响应,从而计算延迟部件环路内的瞬时相位。
27.权利要求23的方法,还包括将多个传播延迟中的一个延迟添加到选定跃迁中,其中在多个传播延迟中的两个延迟之间的差值小于跃迁经由延迟部件环路中的延迟部件的平均传播时间。
28.权利要求23的方法,还包括接收一个外部同步信号;以及对接收到的同步信号作出响应,从而修改第一跃迁和第二跃迁的选择。
29.权利要求28的方法,其中修改步骤还包括修改第一跃迁的选择,由此在输出信号中提供第一上升沿的无缝合并,以便生成任意波形。
30.权利要求23的方法,其中每一个跃迁都具有极性,并且生成连续跃迁序列的步骤还包括使用一个延迟部件来对跃迁极性进行反相。
31.权利要求23的方法,其中生成连续跃迁序列的步骤还包括为每个延迟部件提供相等的负载。
32.权利要求23的方法,还包括接收一个表示基准时钟源的频率改变参数的信号;确定频率改变参数所造成的基准时钟变化;以及对所确定的变化作出响应,从而改变第一跃迁的选择。
33.权利要求32的方法,其中频率改变参数是基准时钟源的温度。
34.权利要求32的方法,其中频率改变参数是基准时钟源的寿命。
35.权利要求23的方法,还包括将预定时延添加到经由相应信号路径的跃迁传播之中,由此,经过信号路径的跃迁的传播时间实质上与经过第二信号路径的跃迁的传播时间相等。
全文摘要
一种波形生成器,包括自由振荡式环形振荡器(104)、代数模块(108)、切换模块(112)以及输出模块(114)。自由振荡式环形振荡器包括多个连接在环路中的延迟部件(120p,120o,120c,120b,120a)以及排列在延迟部件之间的多个分支(分支15,分支14,分支2,分支1,分支0),每个分支提供唯一定相的振荡跃迁信号。代数模块(108)对输入信号(132)作出响应,从而产生表示任意波形的第一上升沿的输出信号(136)。
文档编号H03K3/64GK1628294SQ02828899
公开日2005年6月15日 申请日期2002年3月25日 优先权日2002年3月25日
发明者阿达姆·L·卡雷 申请人:时间工作室公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1