突发通信的时钟恢复方法

文档序号:7505532阅读:571来源:国知局
专利名称:突发通信的时钟恢复方法
技术领域
本发明一般涉及时钟恢复方法,尤其涉及在具有突发信号传输(例如USB)的通信系统中的恢复时钟的方法。
相关应用的参考本申请涉及于2001年6月19日提交的、以“FIELDPROGRAMMABLE MIXED-SIGNAL INTEGRATED CIRCUIT”为标题的美国专利申请09/885,459(Atty.Dkt.No.CYGL-25,768)(被包括在这里作为参考)以及与其同时的未决美国专利申请No._的“PRECISION OSCILLATOR FOR AN ASYNCHRONOUSTRANSMISSION SYSTEM”,Atty.Dkt.CYGL-26,116(也被包括在这里作为参考)。
背景技术
串行总线通信协议长期以来用于两个设备之间的通信。这种串行通信能够提供两个设备间长距离或者短距离的通信,而且既可以为“同步的”也可以为“异步的”。对于异步传输来说,提供两个独立的时钟,一个在主结点,一个在从结点(注意在通信路径的任意端上的任一设备都可以做为主结点或者从结点),其中主结点和从结点都可以只基于它们的时钟接收或者发送数据。异步通信会稍微慢于同步通信,因为在两个时钟之间当然存在一定差异。对于同步通信来说,在独立时钟线上的两个设备之间提供独立的时钟信号,或者利用某种类型的时钟恢复。一种利用独立时钟线的同步串行传输协议被称作I2C。在时钟恢复系统中,时钟信号与同一线路上的数据重叠,使得能够根据数据传输恢复时钟信息。一种这样的时钟恢复协议是曼彻斯特编码的PSK。与本说明书相关的另一种是通用串行总线(USB)。
为了维护两个系统之间的同步,接收端典型的做法就是“锁住”所接收的数据,并从中提取时钟信息。典型地提供接收时钟,接收时钟将使其频率和相位充分地等于从接收到的数据中所提取发送时钟的频率和相位。用于提供接收时钟并且校调整其频率和相位的一种技术是锁相环。对于连续发送系统,例如曼彻斯特编码的PSK,数据发送是在充分连续的基础上,使得在接收时钟和发送时钟之间相位和频点误差被连续地最小化或者得到校正。然而,对于USB传输系统,它具有被称为“突发”通信;也就是,数据只出现在突发中。因此,为了锁住锁相环,不存在充分连续的数据传输。这样,在没有数据发送的期间,接收时钟可能会在相位和频率上漂移,在接收下个数据突发的时候,在能够保证数据接收的完整性之前将必须重新获得锁定。
发明综述这里所公开和要求的发明,从一方面来说,包括一种用于根据接收到的、包含了具有在数据突发之间基本没有数据的区域的数据突发的数据流恢复时钟的方法。提供了工作在参考频率范围内的接收时钟。然后,相对于接收时钟来测量在接收到的数据中数据转换之间的时间。如果所测得的时间基本上是接收时钟的整数,那么就作决定。如果不是接收时钟的基本整数,就调整接收时钟以补偿差别。


为了更完整地理解本发明及其优点,结合浮土参考以下描述,其中图1是使用USB接口的混合信号(mixed-signal)集成电路的整体框图;图2是图1所示的集成电路的详图;图3是通用UART的框图;图3A是波特率发生器的框图;
图4是精确振荡器的框图;图5是图4所示的精确振荡器的详图;图6是精确振荡器的输出波形图;图7是温度补偿参考电压的示意图;图8是输出波形整形电路的一半的示意图;图9是表明掩模可编程特点的其中一个电阻器的示意图/布局;图10是可编程电容器的示意图;图11是比较器的示意图;图12是与比较器结合起来的S/R锁存器的逻辑图;图13是延时模块的示意图;图14是比较器的偏移量电路的示意图;图15是两个计算机外围设备的框图;图16表明了USB端口的数据流;图17是用于根据突发通信恢复时钟的系统的整体框图;图18是相对于PH以K为模的计数的SP计数器工作示意图;图19是SP计数值的示意图;图20说明了相对于SP计数的接收数据转换的示意图;图21是SP计数器和BP计数器的操作的示意图;图22是突发通信时钟恢复方法的整体框图;图23是描述突发通信方法基本控制步骤的简化流程图;图24是一个振荡器实例的框图;图25和图26表明了振荡器控制表。
发明详述参考图1,介绍一种集成电路,包括完全集成芯片上的混合信号集成系统,此芯片包括具有可编程增益预放大器S12的真12位多信道ADC 110、两个12位DAC 114和116、两个电压比较器118和120、电压参考22和具有32K字节快速擦写存储器126的8051兼容微控制器内核124。还配备有I2C/SMBUS 128、UART 130,和以硬件实现的SPI 132串行接口140(在用户软件中不是“bit-banged”),以及具有五个截获/比较模块的可编程计数器/计时器阵列(PCA)134。还有32个通用数字端口I/O。在模拟侧还包括多路复用器113,可以连接八个模拟输入信号到可编程放大器112以及到ADC 110。
通过板上VDD监测器136、WDT、和时钟振荡器137,集成电路是芯片上的独立系统。MCU有效地配置和管理模拟和数字外围设备。甚至能够内部电路地(in-circuit)重新编程快速擦写存储器126,以便提供非易失性的数据存储,并且也允许8051固件的现场升级。MCU还能够单独关闭任何或全部外围设备,以节约电量。
JTAG接口142允许用户通过常规的JTAG输入组144与集成电路进行交互。板上JTAG调试支持允许使用安装在最终应用中的集成电路产品的、非干涉的(不使用片上资源)、全速率的内部电路调试。此调试系统支持对存储器和寄存器的检查和修改、设置断点、观察点,单步执行、运行和暂停命令。当使用JTAG进行调试时,所有的模拟和数字外围设备都是完全起作用的。
微控制器140完全与MCS-51TM指令集兼容。标准的803x/805x汇编程序和编译器可以用于开发软件。内核具有标准8052包括的所有外围设备,包括三个16位计数器/计时器、全双工UART、256字节的内部RAM、128字节的专用功能寄存器(SFR)地址空间、和4个字节宽度的I/O端口。通用串行总线(USB)接口具有与存储器162(其全部或部分可以在具有控制器160的集成电路上)接口的控制器160和USB收发器164。收发器164将与专用管脚166连接,来接收/发送串行数据。这些数据被称作“突发通信”。
进一步参考图1,内核141通过内部总线150与各种输入/输出模块接口。纵横机(cross-bar switch)152提供了UART 130、SPI总线132等等与数字I/O输出之间的接口。这是可以配置的接口。
内核140使用流水线结构,这样大大的增加了它在标准8051体系结构上的指令流量。在标准8051中,在最大系统时钟是12M赫兹时,所有的指令(除了MUL和DIV以外)都需要12或者24个系统时钟周期来执行。作为对比,内核140在一个或两个系统时钟周期内执行70%的指令,而只有四条指令用了多于四个系统时钟周期。内核140总共有109条指令。指令的个数与执行他们所需的系统时钟周期如下所示

当内核140的最大系统时钟在20M赫兹时,它的峰值流量为20MIPS。
作为对图1系统的综述,纵横机152能够被设置为将其I/O侧的任何端口连接到提供纵横机152和内核140之间接口的任何功能模块128、130、132、134、或者136。而且,纵横机152还能够通过这些功能模块128-136直接连接到总线150。
现在参考图2,表示图1所示的集成电路的更详细的框图。在此实施例中,可以看到,纵横机152实际上通过总线150与系统总线202接口。总线150是允许内核140与各种功能模块128-134、和多个计时器204、206、208和210以及三个锁存器212、214和216连接的总线。纵横机152配置有由内核140配置的配置模块220。纵横机152的另一侧,I/O侧,与由与总线150连接的端口锁存器224所控制的多个端口驱动器222连接。另外,内核140可以利用控制模块226中的模拟接口配置来配置模拟侧。
内核140由线路232上的时钟来控制。如图所示,时钟选自具有多路复用器236的两个位置其中之一。第一个是外部振荡器电路137,第二个是内部振荡器236。内部振荡器电路236是精确的温度补偿振荡器,以下会详细描述。内核140同时由复位线154上的复位输入控制。复位信号由监视计时器(watchdog timer)电路(WDT)136产生,时钟和复位电路都由内核140控制的时钟和复位配置模块240来控制。因此,可以看出,用户能够配置系统以外部晶体振荡器或者基本上是“自激的”的内部精确的非晶体非稳定振荡器来运行。这个振荡器236(以下将会描述)为内核140和UART 130产生计时,并且相对于温度是稳定的。
现在参看图3,图示说明了UART 130的框图。系统时钟被输入到波特率发生器302,波特率发生器302提供了线路304上的发送时钟和线路306上的接收时钟。发送时钟被输入到发送控制模块308,接收时钟被输入到接收控制模块310。提供串行控制寄存器(SCON0)320,其可操作地向控制模块308和310提供控制信号。传输数据被从总线322上接收并通过门324被输入到串行数据缓冲器(SBUF)326。此数据的输出被输入到零检测器328,然后输入到控制模块308。系统是异步的、全双工的串行端口设备,并提供两个相关的专用功能寄存器,串行控制寄存器(SCON0)320以及串行数据缓冲器(SBUF0)(没有图示)。数据在线路312上被接收,并被输入到输入移位寄存器314中。这由控制模块310控制,以输出移入的(shifted-in)数据到锁存器332中,然后通过门334输出到SFR总线322。在传输模式下,数据被从SFR总线321接收,并通过门324输入到发送移位寄存器326中。其从发送移位寄存器326或者从控制模块308通过作为到传输线路319的OR门340的一个输入的AND门338输出到传输线路319。以上全部由控制模块308来控制。
现在参看图3A,说明波特率发生器302的框图。这个波特率是由计时器产生的,其中模块TL1产生发送时钟,而TL1的复件(表示为RX计时器)产生接收时钟,其中TL1的复件是用户不可访问的。发送和接收计时器溢出都除以2,用于发送时钟和接收时钟的波特率。当计时器1被使能时,接收计时器就工作,并且使用相同的TH1值,这是重新加载的值。然而,在接收管脚上检测到开始条件时,强制进行RX计时器重新加载。这样就允许了不管发送计时器的状态,不论何时只要检测到开始就开始接收。
现在参看图4,说明位于集成电路中的精确内部振荡器236的示意图。在上文提到的集成电路,是商业上可获得的、包括与其相关的精确振荡器236的集成电路。集成电路能够选择晶体振荡器(其中晶体位于两个晶体端口之间)、选择外部时钟信号或者选择内部自激振荡器。自激振荡器在图4中表示为精确振荡器236。振荡器的中心是两个比较器,第一比较器402和第二比较器404。提供温度补偿参考电压电路406,其向比较器402的负输入端提供温度补偿参考电压(断路电压VTRIP)作为。比较器402和404的输出端分别连接到S/R锁存器408的置位和复位输入端。其Q和Q-Bar输出端被输入到输出RC定时电路410,其中输出RC定时电路410可操作地限定振荡器的周期,S/R锁存器408的输出提供了输出时钟信号。RC定时电路410的输出被反馈回比较器402和404的正输入端。输出RC定时电路410也是温度补偿的。如以下将会描述的那样,电压参考模块406提供负温度系数,而比较器402和S/R锁存器408组合提供正温度系数,输出RC定时电路410提供正温度系数。所有组合的系数将接近于零,如下文描述的那样。
现在参看图5,说明图4中的精确振荡器的更加详细的示意图。电压参考电路406包括分压器,其在结点502上将供电电压VDD分压为VTRIP。分压器包括表示为R3的上电阻器504。分压器的下半部分包括两个并联的电阻,表示为R2的电阻506和表示为R4的电阻508。为了命名的目的,这些电阻器将分别被称为R2、R3和R4。
电阻R3和R4由相同材料制成,用于提供正温度系数。这些电阻由具有正温度系数的N-扩散材料制成。作为对比,R2由第一层中的多晶硅制成,其被称为Poly1材料,并且也具有正温度系数,但是不相同的正温度系数。应该理解,可以使用不同材料,只是必须有具有不同的温度系数的两个电阻。尽管不属于本说明书的一部分,Poly1材料基本是置于氧化保护层上方基层上的多晶硅第一层,从中制成如晶体管门的结构。电阻的正温度系数将导致具有负系数电压VTRIP。如下所述,不同材料的电阻有助于两个电阻R2和R4之间的调整,以改变温度系数。这主要是因为他们是不同材料这个事实。
输出RC定时电路410包括两个RC控制电路。第一RC电路包括P通道晶体管520,它的源/漏极路径连接在VDD和表示为R的电阻522的一端之间,电阻522的另一端连接到节点524。节点524连接到电容526的一端,而电容526的另一端连接到Vss。通道晶体管528的源/漏极路径连接跨过电容526,并且其栅极连接到P通道晶体管520的栅极,并且也连接到S/R锁存器408的Q-输出端。节点524包含比较器402的正输入。第二RC网络包含P通道晶体管530,其源/漏极路径连接在VDD和电阻532(表示为R)的一端之间,电阻532的另一端连接到节点534。节点534连接到电容536的一端,电容536的另一端连接Vss。N通道晶体管538的源/漏极路径连接在节点534和Vss之间。晶体管538的栅极连接到晶体管530的栅极,并也连接到S/R锁存器408的Q-Bar输出端。节点534包含比较器404的正输入。图5电路的输出波形在图6中表示,其中为每个RC电路图示说明传统的RC起落曲线都有。每个输出波形的周期被限定为从初始接通点(在那里,电压被施加到电阻R上)到另一个RC电路中的电阻R被接通那点。对于每个RC电路分别为周期T1和周期T2。这两个周期的和与振荡器的周期相等。制作晶体管520、530、528和538,使得他们的阻抗会充分地小于电阻522和532的电阻值。电阻522和532由Poly1材料制成,这是由于它低的温度系数。振荡器的周期是周期T1和周期T2之和再加上比较器延迟的两倍。
现在参看图7,说明参考电压406的实施方式的详细框图。图5中表示为与VDD连接的电阻504实际上是通过P通道电阻702的源/漏极连接到VDD,而其栅极与偏置电压连接。相似地,电阻506的底部通过N通道晶体管706的源/漏极路径与Vss连接,晶体管704和706的栅极都与偏压连接。制造晶体管702、704、和708,使得他们的阻抗充分地小于电阻R2、R3和R4的电阻值。而且,第一级电源供电独立也是由于断路电压VTRIP与供电电压成比例,即,VDD*(1-e(t/τ))。因此,在达到比较器的输入端上断路电压所需要的时间中,独立于第一级地供电。这是使用RC定时电路而不是电流源来对电容充电的一个原因,电流源不提供第一阶抵消。
VTrip=VDD*ratioVTrip=VDD*(1-e(-T1/τ))T1=-τ*ln(1-VTrip/VDD)ThusT1=-τ*ln(1-ratio)从温度补偿的观点来看,电压参考电路406有许多方面都可以用来提供温度补偿。通常,电阻具有相对于温度的固定变化(setvariation)。Poly1电阻R2的温度系数为255ppm,而N-扩散电阻R3和R4的电阻温度系数为800ppm。在本说明书中,希望具有负系数462ppm。
为了分析用电阻R2、R3和R4这样产生负温度系数,假定R2和R4是定义为REQ=R2//R4的并联组合。如果REQ和R3具有不同的温度系数并且TCR3>TCREQ,那么断路电压将具有负的温度系数。VTRIP是如下定义的VTRIP=REQR3+REQVDD]]>1VTRIPdVTRIPdT=1REQdREQdT-R3R3+REQ[1REQdREQdT]-R3R3+REQ[1R3dR3R3dT]]]>1VTRIPdVTRIPdT=R2R3+REQ[TCREQ+TCR2]]]>至于REQ,必须假定VTRIP为定值,这样R2和R4可以是不同的,以获得特定的温度系数。可以由如下等式表明1REQdREQdT=[1R2dR2dT]+[1R4dR4dT]-R2R2+R4[1R2dR2dT]-R4R2+R4[1R4dR4dT]]]>TCREQ=TCR2+TCR4-R2R2+R4TCR2-R4R2+R4TCR4]]>等式5的结果可以诶应用在等式3中,以设置最终的温度系数VTRIP。
现在参看图8,说明充电结构410的一半的实现的详细图示。与对于参考电压结构406的情况相同,提供了P-通道晶体管802,用于连接电阻522的上端到VDD,而其栅极连接到偏置电源。P-通道晶体管为其温度操作引入了非常小的误差。电容526为可变电容,这样可以改变其电容值来设置振荡器的周期。电容526由设置在第一层poly,P1和第二层poly,P2之间的绝缘体以及位于其间的氧化物制成。电阻522是晶体扩散电阻。
参考电压电路406中的电阻R3、R2和R4为可变电阻,可以是掩模可编程电阻。电阻R3用来设定VTRIP的值,电阻R2和R4用来选择温度系数,这是因为他们具有不同的温度系数。
图9是电阻R2--R4中的一个的布局图。提供了多个串联电阻,它们都被制造在具有N-类型扩散的基片中或在Poly1层中。这些电阻提供了掩模可编程组连接904,以允许一个或多个电阻902被加入到电阻串中,他们最初是被短路。尽管在图中没有表示,但是也提供了使电阻中附加的那些短路的能力,以减小电阻值。这是掩模可编程的,并且被用于在金属级“调整(tweak)”设计。
现在参看图10,说明电容526的示意图,电容526是寄存器可编程电容,以允许中心频率的调整。这里提供了380fF的标称电容1002,它被连接在节点24和Vss之间。与其并联地,还提供了掩模可编程电容1004,其为编程的八个步骤提供了39.5fF的增加。寄存器可编程电容配备有值为“C”的电容1006,电容1006被连接在节点524和N-通道晶体管1008的源/漏极路径的一端,N-通道晶体管1008的栅极被连接到LSB位。设置在开关晶体管1008和节点524之间的电容1006的配置只用于LSB。这种结构允许使用较小的单位(unit)电容,但存在由晶体管1008的源/漏极和引线结合器引入的非线性电容量。余下的可选电容每个都包括电容1010,电容1010被连接在Vss和N-通道晶体管1012的源/漏极路径的一端之间,N-通道晶体管1012的源/漏极路径的另一端被连接到节点524,而其栅极被连接到位[1]至[6]。与位<1>相关的电容1010的值为“C”,下一个可选的电容具有连接到位<2>的相关晶体管栅极,而最后一个可选电容1010具有连接到位<6>的相关晶体管栅极和值32C。这是二叉树状,具有提供近似为C/2的LSB的LSB。
现在参看图11,说明每个比较器402和404的不同输入结构的示意图。这里提供了两个微分P-通道晶体管1102和1104,其源/漏极路径的一端与节点1106连接,节点1106通过电流源1108连接到VDD。晶体管1102的源/漏极路径的另一端连接节点1110,晶体管1104的源/漏极路径的另一端连接节点1112。晶体管1102的栅极包括正输入,晶体管1104的栅极包括连接到VREF的负输入。节点1110连接到N-通道晶体管1114的源/漏极路径的一端及其栅极,而晶体管1114的源/漏极路径的另一端连接VSS。节点1112连接到N-通道晶体管1116的源/漏极路径的一端,N-通道晶体管1116的源/漏极路径的另一端连接到VSS,而其栅极连接节点1118,节点1118连接到电阻1120的一端,其另一端连接到晶体管1114的栅极。节点1112也连接到N-通道晶体管1122的栅极,其源/漏极路径连接在节点1118和VSS之间。这种结构被称为改进的Flynn-Lidholm锁存比较器,其提供具有动态逻辑的置位/复位锁存,在1992年7月的Vol.27 No.7中Flynn M.LidholmS.U.的“A 1.2μm CMOS Current Controlled Oscillator,IEEE Journal ofSolid state Circuits”中对其进行了描述。
现在参看图12,说明比较器402和表示Q-Bar输出的S/R锁存器408的一半的示意图。S/R锁存器408的这一半使其置位输入连接到比较器402的输出端,并被输入到N-通道晶体管1202的栅极,N-通道晶体管1202的源/漏极路径连接在节点1204和VSS之间。P-通道晶体管1206的源/漏极路径连接在节点1204和VDD之间,其栅极连接到节点1208。节点1204连接到常规反相器1210的输入,并也被连接到N-通道晶体管1212的源/漏极路径的一端,N-通道晶体管1212的源/漏极路径的另一端连接到VDD,N-通道晶体管1212的栅极连接到节点1214,节点1214也连接到反相器1210的输出端。节点1214连接到反相器1216的输入端,其输出提供Q-Bar输出。节点1214也通过延时模块1218连接到表示为“ND1”的NAND门1220的输入。NAND门1220包括P-通道晶体管1222(其源/漏极路径连接在VSS和节点1208之间)和N-通道晶体管1224(其源/漏极路径连接在节点1204和N-通道晶体管1226的源/漏极路径的一端之间,N-通道晶体管1226的源/漏极路径的另一端连接VSS)。晶体管1222和1224的栅极连接到延时模块1218的输出端。晶体管1226的栅极连接到来自S/R锁存器408另一侧的复位输入“RST”。节点1208连接至反相器1230的输入,其输出驱动N通道晶体管1232(其源/漏极路径连接在比较器402的输出端,锁存器408的SET输入端之间,而晶体管1232的源/漏极路径的另一端连接到VSS)。为比较器404的输出提供图12中所示的与比较器402的输出相关的并联结构,用于复位输入。
操作中,当比较器402的正输入,FB1,充电时,SET开始变高。当它到达晶体管1202的门限电压VTH时,Q-Bar开始变低,同时,具有类似于ND1的NAND门ND2的锁存器的另一端开始变低,并使RST变低。当RST变低时,就置位了Q-输出。最初,假定Q-Bar被设置为值“1”,Q-输出被设置为“0”,而FB1在比较器402上等于“0”,比较器404正输入的FB2初始设置为“1”(SET=0和RST=1)。在RST变低以前,延时模块1218阻止ND1使SET值变低。RST的变低保证了降低的输入是低的(或者ND1高),从而导致了SET/RST的均衡过程。
现在参看图13,说明延时模块1218的示意图。这个延时模块包括多个串联的、包括两个串联晶体管的反相器,P通道晶体管1302和N通道晶体管1304,其栅极连接在一起,而其源/漏极路径的一端连接到节点1306,晶体管1302连接在VDD和VSS之间。
现在参看图14,说明表示怎样加强供电独立的简化比较器的示意图由位于VDD和节点1404之间的电流源1402、连接到两个微分连接的P通道晶体管1406和1408一侧的节点1404来说明。图14的比较器。晶体管1406的栅极连接到一个输入,而晶体管1408的栅极连接到另一个VREF的输入。晶体管1406的源/漏极路径的另一端连接到节点1410,节点1410连接到N通道1412的源/漏极路径的一端,N通道1412的源/漏极路径的另一端接地,N通道1412的栅极连接到其在节点1410上的漏极,也连接到N通道晶体管1414的栅极。晶体管1414的源/漏极路径连接在晶体管1408的另一侧和VSS之间。另外,P-通道类型的偏移晶体管(offset transistor)1416的源/漏极路径连接跨过晶体管1408的源/漏极路径,其栅极连接到VREF和晶体管1408的栅极。晶体管1416表示可选晶体管,其为掩模可编程的,以选择比较器中预定偏移的。比较器输入端的偏移有助于供电独立。如果没有偏移量,以下情况将是真实的有偏移量TPeriod=2*(-τ*ln(1-VTrip/VDD)+TDelay(comp))TPeriod=2*(-τ*ln(1-ratio)+TDelay(comp))VTrip=ratio*VDD没有偏移量VTrip=VTrip+VOSTPeriod=2*(-τ*ln(1-ratio-Vos/VDD)+TDelay(comp))从这些方程式中可以看到,已经增加了VDD的依赖性。通过变化晶体管1416,能够增加或减小电源供应的依赖性,注意还可以有跨过晶体管1406的可变晶体管。这样,偏移可以为负或者为正。同样的,这是掩模可编程系统。
现在参看图15,说明两个计算机外围设备(发送设备1502和接收设备1504,各自独立又通过串行通信线路1506互相连接)的框图。在图15中表示单向传输,其中信息被从发送器1502发送到接收器1504。表示为Tref的发送时钟1508与发送器相关。与接收器1504相关的则为接收时钟1510Tclk。在图16中说明发送的数据,其中有大量的数据突发1602,它们在不同的时间发生在时间线(timeline)上,尽管它们可能以给定的周期重复。然而,对于突发通信,注意到以下情况很重要,即通信实际上在突发1512之间的有限时间内消失,使得接收时钟1510具有更难从接收数据中获取时钟信息的时间。
现在参看图17,说明用于根据突发通信恢复时钟的系统的整体框图。接收时钟1510,如上文所述,是可变频率时钟,并且可以使其频率和相位改变。为了追踪数据转换和判定时钟是否没有被锁定,提供第一计数器1702,这个第一计数器1702被称作滑动周期计数器(SP计数器,Slip Period Counter)。此计数器1702可操作地接收线路1704上的数据转换以及线路1706上的时钟电路1510的输出作为输入。以高于发送时钟的速率操作接收时钟l510,在本说明书中为4X,以提供过采样的情况。因此,对于发送端时钟Tref的每一个周期,将有时钟1510的四个周期。滑动周期计数器1702可操作地在检测到数据转换时就以值“0”开始计数。以最高位,,计数器1702将只以两个最低位继续向上计数,以提供对4取模的计数,可以理解,这可以是任何取模基数的,也就是,可以为对8取模,对16取模等等。因此,这两个最低位将从“0”计数到“3”,然后再重新从“0”开始。这两个最低位的值被称作相位滑动值“PH”。实际上,计数器1702的这两个最低位将为发送时钟的每一个周期提供四个计数值。
如下文所描述的那样,滑动周期计数器在出现相位滑移时被复位,而且可操作地使用PH值来确定下一次滑移发生的时间。当采样到后来的数据转化且PH计数器的值不为零时,这种情况会发生。这表明接收到的数据间隔不是PH时钟周期乘四的整数倍。例如,在接收到的数据中进行数据转换时启动计数器1702。这将导致接收时钟1510增加计数值。第一数据转换将发生在PH时钟值为“0”的时候。如果发送时钟和接收时钟被锁定,并且没有频率误差,且数据转换间隔为PH时钟周期乘四的整数倍,那么数据转换将总是发生在PH时钟计数值为“0”的时候。然而,如果其中一个时钟相对于另一个接收/发送时钟发生漂移,那么将会到达一个时间点,在那里,与数据转换的发生相关的PH时钟的值可能对于相对于接收时钟慢的发送时钟为“1”,或者对于比接收时钟快的发送时钟为值“3”。在确定数据转换发生在PH计数器值为非“0”时(这产生“滑动”)的时候,SP计数器1702将被记录,并被输出到处理器1710,接着SP计数器1702复位。
提供第二计数器,计数器1708,以对与“位周期”相关的接收时钟周期的数量进行计数,这被称为“BP”计数器。位周期是发生在接收数据的第M个数据和第M-1个数据转换之间的两个数据转换之间发生的接收时钟循环的数量,其中,第M个数据转换构成被确定为在滑移发生并且SP计数器1702被复位时的数据转换。于是,BP计数器1708的输出被锁存在锁存器1712中,其输出被提供给处理器1710。如下文所述,锁存器的内容包括当前滑动周期和最近的上个滑动周期的最后一个位周期的计数。
除了确定SP和BP计数器值,还将提供主误差(ME)模块1716,它被用来计算误差值。这利用线路1704和1706上的数据转换和时钟信号。这被提供给处理器1710。
处理器1710将利用来自SP计数器1702的滑移提示和它的值、锁存器1712的内容和ME模块1716的内容来确定为了实现接收时钟1510中的改变以减小接收和发送时钟之间所需要的频率误差所需要的振荡器校正的方向和校正的大小。然后,它被输出到振荡器校准模块1720,振荡器校准模块1720将校正控制提供给接收时钟。这与使用迭代步骤的标准锁相环相对照,其中它计算出误差,然后在一个方向或者另一个方向步测(step)振荡器,以重新确定误差。步测的步幅典型是恒定步幅。在所公开的实施例中,处理器1710实际上确定步幅的值和方向。校准模块1720包括带符号的加法器。这包括求和器1721,其在输入端1723上接收误差εosc,求和器1721的输出输入到校准寄存器模块1730。然后,校准寄存器模块1730的输出被输入到求和器1721的另一个输入端,并向振荡器1510提供频率输入。
在本说明书的时钟恢复中,假定到来的转换之间的时间间隔为参考时钟Tref周期的整数倍,这是由于时钟恢复的要求是能够产生本地振荡器和参考或者发送振荡器之间频率误差的可靠测量。本系统利用到来的转换周期的量化特性,以便生成误差的测量。例如,如果使用以K倍于本地时钟运行的SP计数器1702来测量每一个到来的转换,那么在接收和发送时钟处于相同频率时,每个转换都应该发生在此SP计数器1702的相同的对K取模的边界上。然而,正如以上提到的,如果接收时钟稍快,那么在每个到来的转换处对K取模地采样的计数器值将趋向于在正方向上“移动”。相似地,如果接收时钟稍慢,则对K取模采样的转换将趋向于在负方向上移动。
现在参看图18,说明SP计数器怎样相对于PH对K取模的计数器运行的示意图。可以看到,SP计数器在值“0”处被启动,然后向上计数。PH计数器也与SP计数器同时被复位为零(这是因为它基本包括SP计数器1802的至少两位重要位),并且开始从“0”计数到“3”。这样连续循环,使得,例如每个4的倍数(例如值“8”和“12”)将得到值“0”。
现在参看图19,说明SP计数值从“0”到值“SP”的示意图。如果在PH≠0处采样到一个转换,并且在PH=1处采样到后一个转换,这就被称为“相位滑动”,这表明接收时钟快于参考时钟。因为即使是时钟的轻微不匹配都最终造成这种情况,所以不知道快多少。在图19中,第一转换被表示为发生在SP计数开始时,这是由在前一个SP计数值中检测到滑步而启动的,正如下文详述的那样。在计数值为“0”的第一计数循环1902,转换可能已经在计数循环开始到将使计数器加1的下一个时钟边之间的时钟周期内的任何一点上被采样。这被测量作为从起始边缘1906(由接收时钟限定的边缘1904)到转换边缘(由发送时钟Tref限定的边缘)的距离,其具有相对于接收时钟,Tclk,的值aTclk。接收系统将继续采样转换,直到检测到相位滑动。这将发生在滑动周期SP的最后一个值,在转换1908处,这个转换又由发送时钟Tref确定。转换1906和1908被整数个发送时钟N隔开,给出时间间隔N·Tref。第二转换将在SP计数器1702的最后一个计数循环1910内的任何地方发生。然而,从一个接收时钟边缘到接收数据转换的计数循环内的位置又是未知的。它相对于接收时钟被定义为b·Tclk。已知相位滑动之间的时间及相位滑动值就提供了频率误差,也就是,时间变化上的相位变化。然而,注意,由于不确定aclk,相位滑动“1”可能代表比“0”大比“2”小的相位滑动。振荡器具有已知的最大误差,因此,如果在时间上间隔足够远地发生转化,使得相位滑动将太大并超过这个误差,那么将忽略这个测量。由于数据的突发特性和大的静寂时间的可能,可能存在这种情况,导致了可能出现转换之间的时间太大。如果不忽略,可能导致错误大小和/或符号的频率校正。
现在参看图20,说明相对于SP计数器的接收数据转换的更详细示意图。在第一计数循环2002处的零值处对计数器复位,同时发生接收数据转换2006,数据转换2006位于与计数循环2002的前沿距离值aTclk。转换2006被表示为T1。将表示为Tn的第n个转换2004说明为发生在值为“41”而PH值为“1”(这表明一个SP时钟的相位滑动)的、SP计数器2202的计数循环2008期间。转换2004位于与计数循环2008的前沿距离bTclk。如果时钟被锁定,使得N Tref=NKTclk且没有相对相位滑动,那么这将导致计数循环模块2010中的第n个转换Tn的转换2004’的值为“40”,而PH值为“0”(表明没有相位滑动)。转换2004’与计数循环模块2010的边缘的距离等于aTclk,使得转换2006和转换2004’之间的时间就为NKTref。然而,既然存在时钟的相位滑动,那么从SP时钟2002的前沿起的值将为Nclkf+(b-a+1)·Tclk,导致了误差2012。如果误差的符号和误差大小都已知的,那么这个误差可以被用来调整时钟。这个误差的原因就是每个在SP计数器中引入的转换都包含了范围从零到一的不确定因数(a&b)。测量到的时钟之间的误差可以如下导出1.
aTclk+N Tref=SP·Tclk+bTclk2.
TclkTref=NSP+b-a]]>3.
Tref(1+ϵ)KTref=NSP+b-a]]>4.
ϵ=KNSP+b-a-1=KN-SP-b+aSP+b-a]]>5.
ϵ=PH-b+aSP+b-a]]>6.
PH-1SP+1<ϵ<PH+1SP-1]]>注意,在这些等式中,PH作为二的补码值,也就是,3=-1,等等。在方程式6中,需要注意的是对于PH(-1,1)的小的绝对值,只有符号信息已知,误差大小还不知道。BP计数器1708被用来帮助恢复大小信息。另外,使用BP计数器和SP计数器,已知在一行中存在两个正的相位变化,或者两个负的相位变化。如果有正的,然后有负的,或者反之,那么误差就被忽略。
现在参看图21,说明SP计数器1702和BP计数器1708的操作的示意图。BP计数器的值包括发生在SP计数器1702复位之前或直到SP计数器1702复位的最后的位周期。为了说明的目的,说明两个滑动周期,第一滑动周期的值从零到SP1,第二滑动周期的值从零到SP2。在转换2102以及为非“0”的PH值所发生的数据(没有标出)时,第一滑动周期将获得其最终计数值SP1。这将发生在计数循环2104中。这时,SP计数器1702复位到值“0”,使得计数循环2104构成第二滑动周期的第一计数循环,并且PH的值将被置为“0”。这将继续对发送时钟的整数倍进行向上的计数,直到与计数循环2108内的非零PH值相关的转换2106发生。再次,第一转换2102发生在与计数循环2104的前沿距离为aTclk的地方,而转换2106发生在与计数循环2108前沿距离为b·Tclk的地方。
对于BP计数器1708,导致用于第一滑动周期的SP计数器1702复位的转换2102发生在距离在前的转换2110为Tref时钟的整数倍处。先前的转换2110就是数据转换2102的前一个转换。然而,应该理解,根据所使用的通信协议,这个数据转换可以在发送时钟的任何倍数时发生。BP计数器1708在每个数据转换(例如计数循环2112内第一滑动周期中的最后位周期的转换2110,与计数循环2110的前沿的距离为c·Telk)时被复位。BP计数器将在对应于SP计数循环2104的计数循环2114中累加至值BP。这将是与其前沿的距离a·Tclk。当转换2102发生并且检测到滑动时,BP计数值被存储,并且这个值被用来计算时钟误差。与前一种情况相似,对于这种情况,时钟误差可以被如下计算7.
cTclk+M·Tref+N·Tref=BP·Tclk+SP2·Tclk+bTclk8.
TclkTref=M+NBP+SP2+b-c]]>9.
Tref(1+ϵ)KTref=M+NBP+SP2+b-c]]>10.
ϵ=KM+KN-BP-SP2-b+cBP+SP2+b-c]]>11.
ϵ=PH1+PH2-b+cBP+SP2+b-c]]>表明(KN-SP2)=PH2和(KM-BP)=PH1,这样12.
|PH1+PH2|-1BP+SP2+1<|ϵ|<|PH1+PH2|+1BP+SP2-1]]>PH1和PH2分别是与SP1和SP2相关的那些值。
方程式12定义了其幅度大小的误差范围。符号已经被确定,而且对于PH1和PH2的任何非零值,这个方程式产生了可以计算的时钟误差的非零下限。因此,能够对本地时钟进行高达两倍于此下限的频率校正,而不会增加得到的绝对误差。对词的原因就是,例如,下限值上+1.5%的确定的误差可以在相反方向上被调整高达3%,这将导致时钟具有-1.5%的误差,这不会造成更差的误差。所产生的校正因数如下所示13.
ϵosc=SIGN(PH1+PH2)(|PH1+PH2|-1BP+SP2+1)(1+o)]]>其中,o是最大允许过调,并且校正符号与PH的值的符号相同。因此,方程式13为给定的过调因数o提供了符号和大小。
以上推导使用了关系(KN-SP2)=PH2。然而,由于我们在引入的转换中采样PH2的值,所以可能发生混淆,因此使此关系式无效。相对于Tref边沿的PH2变化率与KTclk上的时钟误差相等。因此,Nyquist极限要求14.
1BP·Tclk>2ϵKTclk]]>其中,BP是引入的转换之间的Tclk周期数量。通常,避免混淆的BP最大值由以下给出15.
BPmax<K2ϵ]]>造成BP计数超出这个数量的转换应该被忽略以避免误差。注意,为了知道何时排除引入的转换,必须知道时钟误差的上限。尽管可以基于起始振荡器容忍度来使用最差情况误差,但这将会通过排除更多的转换而减小跟踪循环的带宽,因此,增加了将时钟误差减少到可接受范围内所需要的时间。另一个可选择的方法就是维持对根据引入的转换所计算出的时钟误差的上限(被称为ME)。于是,这个极限可以用于计算BPmax值。这个上限可以被初始化为最差情况的振荡器误差。当观察到引入的转换时,就可以减少ME,因此增加了BPmax,并允许有用转换之间更大的间隙。当处理突发通信系统时,例如USB,这尤其重要。ME的计算将会在下文中描述。
尽管以上方程式通常是正确的,但是可以使用进一步的考虑来优化BPmax的计算。例如,由于在每个引入的转换之后,SP值都被复位至“0”并因此PH值也被复位至“0”,所以这用PH有效地锁定了Tref的相位。因此,对于给定的PH采样值,能够计算防止对特定PH值混淆的BPmax的特定值。这通过考虑Tref和PH之间的相位误差怎样随时间累加来完成。这个累加的误差必须被限制,以便防止PH的采样值重叠。尽管通常这意味着相位误差必须小于180度的,但是因为Tref和PH在每个转换都是相位锁定的,所以在有些情况下,允许的相位误差可以超出180度。在MTref周期内累加的误差被如下给出16.
ΛT=aTclk+M(KTclk-Tref)其中a是初始相位误差。为了避免混淆,这个误差必须不超出K和PH之间的主要距离(称为D)。因此17.
aTclk+M(KTclk-Tref)<DTclk其中D由下式给出18.
D=K-|PH|if|PH|<K22K-|PH|if|PH|=K2]]>使用19.
Tref=KTclk/(1+ε)解出M20.
M<(D-a)K(1+ϵ)ϵ]]>使用时钟之间的关系和a的最差情况值“1”,这可以用BPmaxTclk周期写作21.
BPmax<D-1ϵ]]>注意,BPmax的这个值是排除混淆转换所允许的最大值。然而,由于PH值的量化特性,所以能够计算出BPmax的下限,它保证了不排除对于PH的给定采样值的有效转换。这是通过要求累计误差总是超出PH和0加1之间的主要距离得到的,写作22.
aTclk+M(KTclk-Tref)>(PH+1)·Tclk这可以用a为0值以BPmax表示解出23.
BBmax>|PH|+1ϵ]]>对于这种时钟恢复算法的给定实现,使用满足上下限的BPmax任意值将防止混淆,而不会排除可接受的进入的转换。实际使用的值可以在这些极限范围内以减少硬件复杂性的方式来选择。
如上所述,要求测量最大时钟误差,以便合适的排除混淆转换。从方程式6开始,最大绝对误差可以写作如下24.
|ϵmax|<|PH-1|SP+1ifPH<0PH+1SP-1ifPH≥0]]>为了简化硬件,又不失一般性,这可以近似于25.
|ϵmax|<|PH|+1SP-1]]>最大误差寄存器(被称为ME)能够以最糟糕情况下的初始振荡器误差来初始化。在每个有效的到来的转换上,SP的现在值可以被用于计算εmax的新的绝对值。如果这个新的值小于ME,则ME就可以被缩小到这个新的值。然后,能够使用εmax=ME来计算BPmax。最大误差的这个测量随着时间改善,因此允许混淆发生以前引入的转换之间较大的间隙。注意,如果最糟糕情况下振荡器随时间漂移的情况是已知的,那么为了对这个漂移进行计数,ME值就能够在规则的间隔处增加校正因数。
现在参看图22,说明表示计数器和实现本说明中时钟恢复算法所要求的以上所述的各种方程式的实现方式的框图。提供通常的控制模块2202,它可操作地接收转换线路2204上的数据转换,并且根据来自其的输出在线路2206上产生振荡器校正请求。BP计数器1708被表示为具有累加寄存器2208,其接收两个多路输入复用器2210的输出作为输入。多路复用器2210由数据转换控制,在发生数据转换时选择“1”用于复位操作,并且在没有数据转换时,选择反馈增加循环,其中反馈增加循环在接收时钟的每个时钟循环都将增加BP锁存器2208中的值。这个操作使得,BP锁存器2208中所存储的值将被加载到多路复用器2212的一个输入端,“1”输入端,这个多路复用器2212由来自控制模块2202的滑动检测输出2214控制,这将引起BP锁存器2208的值被加载到BPmax锁存器2218。在没有滑动信号的时候,锁存器2218的输出被反馈到多路复用器2212的“0”输入端,使得它被持续地维持在锁存器2218中。
由接收两输入多路复用器2222(“1”输入端连接到固定的复位值“1”,当滑动信号在线路2214上显示时多路复用器提供复位)的输出作为其输入的SP锁存器2220来实现SP计数器1702。在没有滑移信号时,锁存器2220的输出被反馈到累加模块2224,累加模块2224被反馈到多路复用器2222的“0”输入端,这样,对于每一个时钟循环,SP计数器2220的值被增加。当滑动信号出现时,锁存器2220的输出及BPmax寄存器2218的输出值被输入到算法模块2226,以执行方程式13来确定振荡器周期校正因数。利用这两个值来实现这项操作。
SP锁存器2220的输出也被输入回控制模块2202,来确定其PH的值。这些PH值是用来确定是否已经发生滑动的。这个SP输出值也被输入到最大误差计算模块2228,来计算最大误差值,模块2228的输出被输入到模块2234的A-输入。这被输入到两输入多路复用器2230的“1”输入端,其输出被反馈给提供ME输出的ME寄存器2232。这被输入回到多路复用器2230的“0”输入端。计算模块2228的输出也被输入到比较模块2234,比较模块2234具有A和B输入端,其中B输入连接到ME锁存器2232的输出,可以理解,ME锁存器2232的初始值就是为系统预定的最大误差值。模块2234可操作地确定A值是否小于B值。如果是,就与转换输入22进行逻辑与,如果A小于B以及数据转换发生这两个条件同时满足,这就导致模块2228中计算的值被加载至ME模块2232中。接着,ME锁存器2232的输出被输入到计算模块2236,计算模块2236也接收SP锁存器2224的输出,以计算反混淆(anti-aliasing)值并且确定BPmax的值。这被输入到比较模块2238的A输入端,B输入端被连接到BP锁存器2208的输出。如果A输入被确定为小于B输入,这表明存在混淆情况,这向控制模块2202发回指示,以便可能地确定滑动指示还没有实际发生,并且将忽略。
现在参看图23,说明解释基本控制步骤的简化流程图。程序在起始模块2302启动,然后进入到功能模块2304,来设置ME值为最大初始误差,然后到功能模块2306以等待引入的转换。当引入转换发生时,BP计数器复位,如功能模块2308指示的那样。然后,程序流到功能模块2310,等待下一个转换。当下一个转换发生时,SP计数器和BP计数器都被采样,正如功能模块2312指示的那样。接着,程序到判定模块2314,以确定BP值是否小于BPmax的值。如果是,则程序将继续沿着“Y”路径到达功能模块2316,以更新ME的值,然后到达判定模块2318,以确定PH值是否等于零。如果不是,就表明滑动,然后程序继续前进到判定模块2320。如果是,则程序将返回到功能模块2308的输入。相似的,如果要求反混淆且在判定模块2314中已经确定BP不小于BPmax,那么程序将从判定模块2314流向功能模块2322,以复位SP计数器,然后返回到功能模块2308的输入。然而,当PH值被确定为不为零时,也就是滑动情况,那么程序流到判定模块2320,并且对当前PH值和前一个PH值是否有相同的符号做出判定。如果不是,则程序将流向功能模块2322来复位SP计数器。如果是,则程序将沿着“Y”路径到达功能模块2328,以用确定的最小误差来校准本地振荡器。
以上所述算法的实现主要是在管理量化和有限寄存效果的练习。例如,振荡器校正因数必须被指定为振荡器内在周期分辨率的整数倍。而且,因为逻辑必须从不增加相对误差,所以振荡器的最大可能单位步伐大小必须在计算中使用。这个值在RTL代码中定义如下26.
MAXOSCSTEP=1ϵstep]]>起始最糟糕情况的振荡器误差(εinit)定义为εstep的倍数,也就是27.
MAXINITERROR=ceil(ϵinitϵstep)=ceil(MAXOSCSTEP·ϵinit)]]>允许的最大过调被定义为25%的倍数,即28.
OVERSHOOT=4o最终,最大误差(ME)被维持为εME的整数倍(εstep的固定份额),由ERRORSTEP定义如下29.
ERRORSTEP=ϵstepϵME=1MAXOSCSTEP·ϵME]]>不同计数器的宽度通常被限定在对其将执行非混淆计算的最大值范围内。
余下的实现问题就是怎样避免大多数所述方程式中内在的分配。对于在实现中所使用的值K=4,大多数方程式只有八个或者更少的唯一值。这允许预先计算分配。例如,考虑振荡器校正因数的计算30.
|ϵosc|=(PH1+PH2-1BP+SP2+1)(1+o)]]>这可以写作31.
BP+SP2=(PH1+PH2-1|ϵosc|)(1+o)-1]]>现在,对于K=4,唯一有趣的情况对应于(PH1+PH2)=±2(为了简化硬件,(PH1+PH2)=±3的情况被近似为±2)。因此,方程式可以写作32.
BP+SP2=(1+o|ϵosc|)-1]]>既然23εstep>εinit,εosc的值可以量化到3位。因此,振荡器校正因数可以计算如下33.
|ϵosc|=7ifBP+SP2<(1+o7ϵstep)-1else6ifBP+SP2<(1+o6ϵstep)-1else5ifBP+SP2<(1+o5ϵstep)-1else4ifBP+SP2<(1+o4ϵstep)-1else3ifBP+SP2<(1+o3ϵstep)-1else2ifBP+SP2<(1+o2ϵstep)-1else1ifBP+SP2<(1+o1ϵstep)-1else0]]>这对应了一组七个比较器加上一些硬件的解码逻辑。
现在参看图24,说明精确振荡器的一个实例的示意图。在集成电路上实现的振荡器中,提供可编程的内部时钟发生器2402,内部时钟发生器2402由寄存器2406和寄存器2408控制。内部时钟发生器的输出被输入到分配电路2410,分配电路2410也是由寄存器2408控制,其输出被输入到多路复用器2410的一个输入端。这个多路复用器2410由寄存器2408控制。寄存器2410输出系统时钟(SYSCLK),其被输入到波特率发生器302。除了内部时钟发生器,还提供外部晶控振荡器。提供了晶控的内部或者片上的振荡器2412,其通过输入电路2412连接到终端2416和2418,到外部晶体2416。振荡器2412的输出被输入到多路复用器2410的一个输入端。另外,在终端2420上提供外部时钟,其也被输入到多路复用器2410的一个输入端。晶控振荡器2412由寄存器2422控制。
提供内部振荡器2402,使得它在系统复位后作为缺省系统时钟。内部振荡器周期可由寄存器2406按照如下方程式编程
ΔT≡0.0025×1fBASE×ΔOSCICL]]>其中fBASE是内部振荡器复位后的频率,ΔT是内部振荡器中的变化,ΔOSCICL是寄存器2406中值的变化。典型的,寄存器2406将被工厂校准到规定的频率,例如,12.0MHz。
现在参看图25,说明寄存器2406的表,其中可以看到,位6-0与振荡器的校准寄存器相关,而且它的值可以内部地变化。图26图示了说明为其提供的控制的控制寄存器2408。
尽管已经详细描述优选实施例,但是应该理解,还可以进行多种变化、替代或者变更,而不会背离由权利要求书所限定的此项发明的本质和范围。
权利要求
1.一种用于根据所接收的包含数据突发、并且具有在所述数据突发之间基本上没有数据的区域的数据流来恢复时钟的方法,包括以下步骤提供在参考频率范围内工作的接收时钟;相对于所述接收时钟测量所接收到的数据中数据转换之间的时间;确定所测量的时间是否基本为所述接收时钟的整数;如果不是所述接收时钟的基本整数,则调整所述接收时钟的频率,以补偿差异。
2.根据权利要求1的方法,还包括以下步骤计算所测量的时间和最近的接收时钟间隔之间的差的数量作为相位漂移值,并且从中计算频率误差作为相位差除以所测量的在其上确定相位差的时间;可操作地调整,以便调整所述接收时钟频率,以使这个频率误差最小。
3.根据权利要求2的方法,其中,如果前面的、为前面的调整所述接收时钟频率的步骤计算相位值的步骤产生了与当前的相位值计算的相位值符号相反的相位值,则调整所述接收时钟频率的步骤就被禁止。
4.根据权利要求2的方法,其中提供接收时钟的步骤包括提供K倍于所述发送时钟Tclk频率的过采样的接收时钟,因此,计算所述相位值的步骤包括确定数据转换之间的时间是否与所述过采样时钟的K个循环的整数倍不同。
5.根据权利要求的2方法,其中所述调整步骤包括用步长值来调整所述接收时钟的频率。
6.根据权利要求5的方法,其中进一步包括给所述步长值加上预定的过调值。
7.根据权利要求5的方法,其中所述步长值的符号与所述相位值符号一致。
8.根据权利要求1的方法,其中所述数据是不归零的二进制数据。
9.根据权利要求1的方法,其中在所述数据转换时量化所述测量数据转换之间时间的步骤。
10.根据权利要求1的方法,其中从第一数据转换到第二数据转换地测量数据转换之间的时间,所述第二数据转换包括在确定所测量的时间是否基本为所述接收时钟整数的步骤确定所测量的时间基本不是所述接收时钟的整数时发生的数据转换。
11.根据权利要求10的方法,其中在所述第一和第二数据转换之间可以有多个中间数据转换。
12.根据权利要求10的方法,其中所述第一和第二数据转换可以存在于不同的数据突发中。
13.根据权利要求2的方法,其中所述接收时钟具有已知的最大误差值,并且进一步包括步骤确定所测量的时间上应用的这个已知最大误差值是否可能导致所得到的相位的符号不确定,如果是,则禁止调整所述接收时钟的频率的步骤。
14.根据权利要求13的方法,其中提供接收时钟的步骤包括提供K倍于发送时钟TCLK频率的过采样的接收时钟,因此,计算所述相位值的步骤包括确定数据转换之间的时间是否与过采样时钟的K个循环的整数倍不同,并且进一步包括以下步骤计算所测量的时间和最近的接收时钟间隔之间的差的数量作为相位漂移值,并且从中计算频率误差作为除以所测量在其上确定相位差的时间的相位的差;可操作地调整,以便调整所述接收时钟的频率以使这个频率误差最小,并且还包括在每次确定所测量的时间是否基本为所述接收时钟的整数时根据下式调整所述最大频率误差的步骤|ϵmax|<|PH-1|SP+1ifPH<0PH+1SP-1ifPH≥0]]>其中,PH=相位漂移误差,SP=在从第一数据转换到第二数据转换的数据转换之间所述过采样时钟循环的数量。
15.一种用于从远程发送位置接收串行数据的方法,其中所述数据被包括在具有在数据突发之间基本没有数据的区域的数据突发的数据流,包括以下步骤在串行端口接收所述数据;通过以下步骤,从所接收的数据流中恢复时钟提供工作在参考频率范围内的接收时钟;相对于所述接收时钟测量所接收的数据中数据转换之间的时间;确定所测量的时间是否基本为所述接收时钟的整数;如果不是所述接收时钟的基本整数,则调整所述接收时钟的频率,以补偿差异;使用调整后的频率接收时钟来解码所述数据。
16.根据权利要求15的方法,进一步包括计算所测量的时间和最近的接收时钟间隔之间的差的数量作为相位漂移值、并且从中计算频率误差作为除以所测量的在其上确定相位差的时间的相位差的步骤,可操作地调整以便调整所述接收时钟频率以使这个频率误差最小的步骤。
17.根据权利要求16的方法,其中如果前面的、计算用于前面的调整所述接收时钟频率的步骤的相位值的步骤产生与当前相位值计算的相位值的符号相反的相位值,则调整所述接收时钟频率的步骤被禁止。
18.根据权利要求16的方法,其中提供接收时钟的步骤包括提供K倍于所述发送时钟Tclk频率的过采样的接收时钟,并且因此,计算所述相位值的步骤包括确定数据转换之间的时间是否与所述过采样时钟的K个循环的整数倍不同。
19.根据权利要求16的方法,其中所述调整步骤包括用步长值来调整所述接收时钟的频率。
20.根据权利要求19的方法,其还包括为所述步长值加上预定的过调值。
21.根据权利要求19的方法,其中所述步长值的符号与所述相位值的符号一致。
22.根据权利要求15的方法,其中所述数据是不归零的二进制数据。
23.根据权利要求15的方法,其中测量数据转换之间时间的步骤在所述数据转换时被量化。
24.根据权利要求15的方法,其中从第一数据转换到第二数据转换地测量数据转换之间的时间,其中所述第二数据转换包括在确定所测量的时间是否基本为所述接收时钟整数的步骤确定所测量的时间基本不是所述接收时钟整数时所发生的数据转换。
25.根据权利要求24的方法,其中在所述第一和第二数据转换之间可以有多个的中间数据转换。
26.根据权利要求24的方法,其中所述第一和第二数据转换可以存在于不同的数据突发中。
27.根据权利要求16的方法,其中所述接收时钟具有已知的最大误差值,并且进一步以下步骤包括确定在所测量的时间上应用的这个已知最大误差值是否可能导致所得到的相位的符号不确定,如果是,则禁止调整所述接收时钟的频率。
28.根据权利要求27的方法,其中提供接收时钟的步骤包括提供K倍于所述发送时钟Tclk频率的过采样的接收时钟,并且因此,计算所述相位值的步骤包括确定数据转换之间的时间是否与所述过采样时钟的K个循环的整数倍不同;并且进一步包括计算所测量的时间和最近的接收时钟间隔之间的差的数量作为相位漂移值、并且从中计算频率误差作为除以所测量的、在其上确定了相位差的时间的相位差的步骤,可操作地调整以调整所述接收时钟频率以使这个频率误差最小的步骤,还包括在每次确定所测量的时间是否基本为所述接收时钟的整数时根据以下方程式调整最大频率误差的步骤|ϵmax|<|PH-1|SP+1ifPH<0PH+1SP-1ifPH≥0]]>其中,PH=相位漂移误差,SP=在从第一数据转换到第二数据转换的数据转换之间的所述过采样时钟循环的数量。
29.一种从所接收的包含数据突发、并且具有在所述数据突发之间基本没有数据的区域的数据流中恢复时钟的时钟恢复设备,包括工作在参考频率范围内的接收时钟;用于相对于所述接收时钟测量在所接收的数据中数据转换之间时间的测量设备;用于确定所测量的时间是否基本为所述接收时钟整数的相位漂移检测设备;以及用于如果所测量的时间被确定为不是基本为所述接收时钟整数时,调整所述接收时钟频率以补偿这个差异的控制设备。
30.根据权利要求29的控制设备,其中所述相位漂移设备可操作地计算所测量的时间和最近的接收时钟间隔之间的差的数量作为相位漂移值,并且从中计算频率误差作为除以所测量的、在其上确定了所述相位差的时间的相位差,所述控制设备可操作地调整所述接收时钟的频率以使这个频率误差最小。
31.根据权利要求30的控制设备,其中,如果前面的、计算用于前面的调整所述接收时钟频率的操作的相位值的步骤生成了与当前相位值计算的相位值的符号相反的相位值,则禁止所述控制设备步骤来调整所述接收时钟的频率。
32.根据权利要求30的控制设备,其中所述接收时钟包括K倍于所述发送时钟TCLK频率的过采样的接收时钟,并且所述相位检测设备可操作地确定数据转换之间的时间是否与所述过采样时钟的K个循环的整数倍不同。
33.根据权利要求30的控制设备,其中所述控制设备可操作地通过步长值来调整所述接收时钟的频率。
34.根据权利要求33的控制设备,其中还包括给所述步长值加上预定的过调值。
35.根据权利要求33的控制设备,其中所述步长值具有与所述相位值的符号一致的符号。
36.根据权利要求29的控制设备,其中所述数据是不归零的二进制数据。
37.根据权利要求29的控制设备,其中所述测量设备可操作地测量被量化的数据转换之间的时间。
38.根据权利要求29的控制设备,其中是从第一数据转换到第二数据转换地测量数据转换之间的时间,其中所述第二数据转换包括在所述相位检测设备确定所测量的时间基本不是所述接收时钟整数时发生的数据转换。
39.根据权利要求38的控制设备,其中在所述第一和第二数据转换之间可以有多个中间数据转换。
40.根据权利要求38的控制设备,其中所述第一和第二数据转换可以存在于不同的数据突发中。
41.根据权利要求30的控制设备,其中所述接收时钟具有已知的最大误差值,并且进一步包括禁止设备,用于确定在所测量的时间上应用的这个已知最大误差值是否可能导致得到的相位的符号不确定,如果是,则由所述控制设备禁止调整所述接收时钟的频率。
42.根据权利要求41的控制设备,其中所述接收时钟包括K倍于所述发送时钟TCLK频率的过采样的接收时钟,并且所述相位检测设备可操作地确定数据转换之间的时间是否与所述过采样时钟的K个循环的整数倍不同;并且所述相位检测设备可操作地计算所测量的时间和最近的接收时钟间隔之间的差的数量作为相位漂移值,并且从中计算频率误差作为除以所测量的、在其上确定了所述相位差的时间的相位差,所述控制设备可操作地调整所述接收时钟频率来最小化这个频率误差,并且进一步可操作地在每次确定所测量的时间是否基本为所述接收时钟的整数时根据下式调整所述最大频率误差|ϵmax|<|PH-1|SP+1ifPH<0PH+1SP-1ifPH≥0]]>其中,PH=相位漂移误差,SP=在第一数据转换到第二数据转换的数据转换之间的过采样时钟循环的数量。
43.一种数据接收器,用于接收从远程发送位置发送的串行数据,其中所述数据被包括在具有在数据突发之间基本没有数据的区域的、数据突发的数据流中,所述数据接收器包括在串行端口上接收所述数据;从所接收的数据流中通过以下步骤恢复所述时钟接收时钟,工作在参考频率范围内;测量设备,用于相对于所述接收时钟测量在所接收的数据中数据转换之间的时间;相位漂移检测设备,用于确定所测量的时间是否基本为所述接收时钟的整数;控制设备,用于如果确定所测量的时间不是基本上为所述接收时钟的整数,则调整所述接收时钟频率,以补偿所述差异;使用调整后的频率接收时钟来解码所述数据。
44.根据权利要求43的数据接收器,其中所述相位漂移检测设备可操作地计算所测量的时间和最近的接收时钟间隔之间的差的数量作为相位漂移值,并且从中计算频率误差作为除以所测量的、在其上确定了所述相位差的时间的相位差,调整步骤可操作地调整所述接收时钟频率以使这个频率误差最小。
45.根据权利要求44的数据接收器,其中如果前面的、计算用于前面调整所述接收时钟频率的步骤的相位值的步骤生成了与当前相位值计算的相位值的符号相反的相位值,则禁止所述控制设备步骤调整所述接收时钟频率。
46.根据权利要求44的数据接收器,其中所述接收时钟包括K倍于所述发送时钟TCLK频率的过采样的接收时钟,并且所述相位检测设备可操作地确定数据转换之间的时间是否与所述过采样时钟的K个循环的整数倍不同。
47.根据权利要求44的数据接收器,其中所述控制设备可操作地通过步长值来调整所述接收时钟的频率。
48.根据权利要求47的数据接收器,其中还包括给所述步长值加上预定的过调值。
49.根据权利要求47的数据接收器,其中所述步长值具有与所述相位值符号一致的符号。
50.根据权利要求43的数据接收器,其中所述数据不归零的二进制数据。
51.根据权利要求43的数据接收器,其中所述测量设备可操作地测量被量化的数据转换之间的时间。
52.根据权利要求43的数据接收器,其中从第一数据转换到第二数据转换地测量数据转换之间的时间,其中所述第二数据转换包括在所述相位检测设备确定所测量的时间基本为所述接收时钟整数,确定所测量的时间基本不是所述接收时钟整数时发生的数据转换。
53.根据权利要求52的数据接收器,其中在所述第一和第二数据转换之间可以有多个中间数据转换。
54.根据权利要求52的数据接收器,其中所述第一和第二数据转换可以存在于不同的数据突发中。
55.根据权利要求44的数据接收器,其中所述接收时钟具有已知的最大误差值,并且进一步包括禁止设备,用于确定在所测量的时间上应用的这个已知最大误差值是否可能导致得到的相位的符号不确定,如果是,就禁止调整所述接收时钟的频率。
56.根据权利要求52的数据接收器,其中所述接收时钟包括K倍于所述发送时钟TCLK频率的过采样的接收时钟,并且所述相位检测设备可操作地确定数据转换之间的时间是否与所述过采样时钟的K个循环的整数倍不同;并且所述相位检测设备可操作地计算所测量的时间和最近的接收时钟间隔之间的差的数量作为相位漂移值,并且从中计算频率误差作为除以所测量的、在其上确定了所述相位差的时间的相位差,所述控制设备可操作地调整所述接收时钟频率来最小化这个频率误差,并且还包括以下步骤在每次确定所测量的时间是否基本为所述接收时钟的整数时根据下式调整所述最大频率误差|ϵmax|<|PH-1|SP+1ifPH<0PH+1SP-1ifPH≥0]]>其中,PH=相位漂移误差,SP=从第一数据转换到第二数据转换的数据转换之间的过采样时钟循环数量。
全文摘要
本发明公开了一种用于根据所接收的数据流恢复时钟的方法,所接收的数据流包括数据突发,而在数据突发之间具有基本没有数据的区域。提供了一个接收时钟,它在参考频率范围内工作。然后,相对于接收时钟测量所接收数据中数据转换之间的时间。然后,如果测量的时间基本是接收时钟的整数,那么作出确定。如果不是接收时钟的基本整数,那么调整接收时钟的频率,以对差别进行补偿。
文档编号H03L7/085GK1706143SQ03824509
公开日2005年12月7日 申请日期2003年9月15日 优先权日2002年9月16日
发明者肯尼思·W.·弗纳尔德 申请人:希格纳尔集成产品公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1