时钟发生电路的重新配置的制作方法

文档序号:14453259阅读:449来源:国知局
时钟发生电路的重新配置的制作方法

本申请涉及电子系统并且,更具体而言,涉及数字电子系统中的时钟信号分配网络,并且尤其涉及包含许多处理单元的集成电路(Integrated Circuit,IC)芯片中的时钟分配。



背景技术:

对于大型昂贵的计算机系统,它们的经济性决定了它们要一直保持繁忙。按照惯例,性能是作为每秒的计算来测量的。对于小型不昂贵的计算机,持续的高速操作是不要求的,并且对于靠电池操作的设备甚至是个障碍。计算机和数字信号处理器(Digital Signal Processor,DSP)的性能越来越多地是以每秒每瓦的计算或者所使用的每焦耳能量的计算来测量的。

虽然存在需要一次数小时的高性能操作的娱乐应用,但是小型计算机的大部分使用对于高性能的突发需要少于一分钟。实际上,当小型嵌入式计算机或数字信号处理器(DSP)以降低的速度就可以良好地工作时,存在许多时间间隔。由于用于微型计算机的电路技术消耗与计算速度成比例的电力;因此以降低的速度运行的机会是降低功耗并节省电池电量的机会。对于个人电子设备(Personal Electronic Device,PED),机会可以是最大的,其中人的兴趣和注意力把高度可变的需求放在微型计算机和嵌入在其中的DSP上。

单处理器系统

在只有一个处理单元的计算机中,处理器可以通过写到生成系统时钟信号的特定电路来调节其自己的速度。这可以被用来使系统时钟频率匹配平均工作量。但是,降低的系统时钟频率(或速率)也放慢了操作系统软件的驻留内核及其响应时间。依赖于实现,当机器为了每秒更多计算的性能类型而需要升到更快的时钟速率时,用户会注意到停顿。

单处理器计算机及其控制软件也常常具有用户可调节的暂停(time-out);并且硬件中的断电模式越多,系统可以越精细地使其功率使用适应实际的计算需求。例如,在初始暂停之后处理器可以切换到降低的速度和降低的供给电压状态;在更长的暂停之后切换到时钟停止状态;并且在更长的暂停之后切换到低电压睡眠状态。这些低电压状态把数据维持在易失性存储器中,这对于快速重新激活是有利的。如果处理器的电源被完全切断,则其易失性存储器中的数据丢失;并且在处理器重新激活时,数据将必须从非易失性存储器重新加载。

多处理器系统

大型多处理器系统已经开辟了许多技术来提高每秒的计算,但是对于电源管理不太积极。随着利用包含多个处理单元的不昂贵IC芯片的PED的来临,对能量效率的需求增加了许多。

多处理的优点包括对于为了并行执行而被转换的算法有高得多的计算吞吐量,以及由于过程分离到不同的处理器和存储器上而产生的增加的可靠性和安全性。在多处理器系统中,在其自己的处理器上执行的监督过程更不可能被在其它处理器上执行的应用过程延迟。

在应用中,依赖于外部事件,一些处理器可以被放慢而其它被加速。例如,用于显示视频数据的视频处理器的性能许多都依赖于数据的类型和用户行为。(在这个例子中,视频处理器可以是专用于视频的单个单元,或者可以是被编程为以并行方式处理视频的一组处理元件。)如果用户在编辑视频,这在运动的显示中会有频繁的停顿。在停顿时,视频处理器可以降低至空闲速度,准备好作出响应但是比全速耗散更少的功率。同时,用户接口可以由为了进行用户交互而被优化的不同处理器处理。

在多处理器系统中节省电力的另一条途径是安排多个处理器在各种时钟频率上运行-快的时钟用于计算中的关键路径,而较慢的时钟用于其它部分。由于节省电力的机会高度依赖于应用软件,因此时钟分配硬件应当是可配置的,优选地可从应用软件快速配置。

多处理器阵列

诸如计算机和数字信号处理器(DSP)的数字电子系统越来越多地利用一个或多个多处理器阵列(Multi-Processor Array,MPA)。MPA可以被宽松地定义为多个处理元件(Processing Element,PE)、支持存储器(Supporting Memory,SM)以及高带宽互连网络(Interconnection Nnetwork,IN)。如在本文所使用的,术语“处理元件”指处理器或CPU(中央处理单元)、微处理器或者处理器核心。MPA中的词“阵列”在其最广泛的意义上是用来指通过网络互连的多个计算单元(每个计算单元可以包含处理和/或存储器资源),其中连接在一个、两个、三个或更多个维度中可用,包括圆形维度(回路或环)。应当指出,更高维度的MPA可以映射到具有较少维度的制造介质,假定该介质支持增加的布线密度。例如,具有四维(4D)超立方体形状的MPA可以映射到硅集成电路(IC)芯片的3D堆叠,或者映射到单个2D芯片,或者甚至ID的计算单元行。而且低纬度的MPA可以映射到更高维度的介质。例如,ID的计算单元行可以以蜿蜒的形状布置到IC芯片的2D平面上,或者盘绕到芯片的3D堆叠中。MPA可以包含多种类型的计算单元以及处理器和存储器的穿插布置。在MPA的广泛意义上,还包括MPA的层次或嵌套布置,尤其是由互连的IC芯片组成的MPA,其中IC芯片包含一个或多个还可以具有更深层次结构的MPA。

在不同类型的MPA中或者MPA之间可以有一个或多个互连网络(IN)。MPA中互连网络的目的是在PE、SM和I/O之间和之中移动数据、指令、状态、配置或控制信息。主互连网络(Primary Interconnection Network,PIN)是为高带宽数据移动而设计的,具有良好但不是极低的等待时间(在源和目的地之间输送数据的时间延迟)。被PIN移动的数据可以封装其它类型的信息,假定处于数据目的地的硬件或软件能够把数据翻译成其它类型的信息。MPA可以具有其它的辅助IN;这些辅助IN可以呈现更低或更高的等待时间,但是一般而言将具有低得多的带宽。

IN由链路和节点组成。链路通常由一组实现为电路板或IC上的导电路径(轨道或迹线)的一组平行“导线”组成。节点包含用于耦合到链路的端口,它包含在链路上发送和接收信号的发送器电路和接收器电路。节点可以具有用于与PE或SM通信的其它端口。节点具有包含数据路径的路由器和用于彼此连接端口的交换机,加上用于根据一种或多种协议选择性地连接端口的路由器控制机制。

为了实现高带宽,PIN的每条链路可以包括许多并行的导线。如果节点之间的距离小,则链路短并且可以使用标准CMOS二进制信令方案;该方案是电源高侧附近的稳定信号电压是代表逻辑1的信号状态(H)并且电源低(或接地)侧附近的稳定信号电压是其它二进制状态(L)并且代表逻辑0。在这种信令方案中,一根导线编码一位信息。如果链路的长度长,诸如在IC芯片之间或电路板之间,则不同的信令方案可以更好地适于维持高速度和拒绝噪声。

链路中的并行导线可以携带数据或时钟信号。时钟信号的目的是标记发送电路可以改变数据信号的时间点和接收电路可以采样数据信号的时间点。在适当设计的电路中,采样时间发生在改变的数据信号停留到稳态值之后。发送器可以使用时钟信号来触发何时它把线路驱动至信号状态H或L;接收器电路可以使用时钟信号把数据信号锁存到寄存器中。常见的惯例是接收器在其时钟信号的上升(0到1)变换上锁存数据,而发送器在其时钟信号的下降(1到0)变换上更新其输出。这些信号状态变换花有限的时间量完成,但是,如果上升和下降间隔与用来表示位的间隔相比而言短时,变换也可以被称为“边缘”。

如果时钟信号在多个发送器和接收器之间共享,则它们被说成是同步的并且数据传输一般被称为“同步”数据传输。“异步”数据传输简单地说就是在不使用公共时钟信号的情况下数据信号可以被发送和接收的任何方案。对于采样数据信号而言,异步接收器比同步接收器更加灵活。具体而言,它可以在与其本地时钟信号非常不同的时间点采样并锁存数据。一些异步接收器通过过采样输入来工作,以查看数据信号变换。更简单的异步接收器接受源自发送器并且与数据一起被携带的时钟(或选通)输入信号;选通输入在接收器的前端锁存数据,然后被缓冲并且为了同步输出而被重新定时。

链路上的数据流可能需要被发送器或接收器中断。如果发送器暂时没有新数据要发送,则接收器会错误地持续读数据的最后一位,除非它从发送器得到未就绪信号。类似地,如果接收器暂时没有位置放数据,则它会错误地忽略到达的数据,除非它可以告诉发送器停止发送。互连网络可以具有专用于流控制的特殊信号以及用于在这些信号改变状态时猜想节点要做什么的协议。这些特殊信号可以是链路本身当中的导线,或者它们可以是导线集合中的代码模式。协议是利用简单的状态机实现的。

在典型的微处理器IC芯片中,数据传输是同步的。但是,更高性能(每秒的计算)的追求已经把时钟频率推到越来越高(目前是大约2GHz)。这么高的时钟频率在导线物理上短的IC内部是合理的,但是对于芯片I/O和芯片间链路而言则难以管理。

信号以非常高的速度(大约每纳秒4-6英寸)在电路板上传播,但是对于电路板上的精细导线“迹线”,发送器会发展出比纳秒短的上升和下降时间。利用足够快的上升和下降时间,在任何给定的时刻,都有几个时钟/数据变换(或边缘)可以在IC芯片之间的信号线上经过。

在几乎任何微处理器IC芯片上,与芯片I/O电路一起使用的时钟信号不像在核心中使用的时钟信号那么高。电路板上附近芯片之间大约每秒4千兆字(每个字16位)的高带宽可以利用并行导线、低电压差分信令(Low-Voltage Differential Signaling,LVDS)和同步数据传输获得。在电路板之间,高带宽可以利用并行导线或光纤以及同步或异步数据传输获得。专用的电路和控制器与外部存储器芯片一起使用,诸如流行的双数据率(Double Data Rate,DDR)系列的接口。专用的电路还用于高速位串行通信,诸如串行器&解串器(serializer&deserializer,SERDES)电路。

为了建立由多个VLSI芯片和同步并行芯片间通信组成的大型系统,IO时钟优选地以使得它们将跨多个IC芯片同步这样一种方式生成。通常这是利用每个芯片中的锁相环(Phase-Locked Loop,PLL)实现的。PLL在外部生成的时钟参考信号与芯片内部的时钟信号之间维持恒定的平均相位关系。通常,参考时钟频率比内部时钟频率低得多,以便限制带宽和引入参考时钟信号的噪声,和/或使用晶体控制振荡器的输出。

多频率时钟

用于MPA的PE、SM、IN和时钟分配网络与常规微处理器相比需要更高的每个处理器功率效率,这仅仅是因为在每个MPA IC芯片中有10至100倍更多的处理器,并且用于其的合理芯片尺寸和包装具有有限的容量来耗散热量。

MPA时钟分配及其控制机制还应当更加灵活,因为,对于大量的处理器,对于其操作的瞬时需求存在更大波动。

在多处理器系统中,处理器可以被配置为控制其它处理器的供给电压和时钟频率,以节省整体功耗。简单的方法是关闭到暂时不需要的处理器的时钟并且用来使切断其电力的间隔更长。更专业的方法涉及准备处于低速的处理器供在高速时使用。

对于处理器和存储器,重新打开电源并且恢复处理比关掉其复杂得多。当通电时,处理器处于随机状态,在时钟开启之后需要电路的复位。然后,需要初始化序列把处理器带到已知的就绪状态、重新加载支持存储器并且开始应用软件的执行。

如果所有这些对应用来说所花时间太长,则准备处于低时钟频率的处理器会是有用的(节省电力),使得它可以只需要几微秒的事先通知就可以重新开始全速操作。

功耗

为了看到如何利用并行计算节省能量,我们简单地回顾数字CMOS电路使用电力的途径。基本上,平均电力使用依赖于供给电压和时钟频率。

在CMOS数字电路中,逻辑一和零由信号线上的高和低电压电平表示。信号线的状态是高或低。电力被用来改变(或切换)每个信号的状态,否则电路就处于耗散小得多的电量的静止状态,这种小的电量仅仅是由于泄漏电流造成的。把信号线从高切换到低或从低切换到高所需的能量通常与线路和连接到其的晶体管的总电容C成比例。晶体管切换信号线所需的电源电流首先浪涌然后衰减-非常像通过开关给电容器充电的电流。通过晶体管用于切换事件的集成的电流(以安培*秒为单位)等于总电容C上电荷Q的变化。根据电容器的物理性质,Q=C*V,其中C以法拉第为单位,并且V以伏为单位。以某个频率f重复的充电和放电导致平均切换功率:

Pavg=I*V=f*C*V*V=f*C*V2

功耗与频率的这种线性关系在很宽的范围内保持,有许多个数量级。在非常低的频率,存在功率本底,其中dc泄漏电流将在整个功耗中占主导地位。在非常高的频率,晶体管没有快到足以完全切换信号线,并且这造成位错误和过多的供给电流。位错误常常可以通过增加供给的V来抑制,但是这造成功率的二次增长,直到电路由于过热而被损坏为止。

如果CMOS电路不需要太快运行,则Pavg可以通过在较低的频率操作而减小,并且通过减小供给电压而进一步减小。但是,以较低的电压操作导致每个晶体管更小的充电/放电电流。低于阈值电压Vth,晶体管断开(除了微小的亚阈值电流之外)。

用于并行计算的能量节约机会

用于并行计算的机会在于每单位能量的计算低于利用单个处理器的每单位能量的计算。为了看到为什么是这样,考虑需要十亿次操作的计算。在处于1GHz的单元处理器上,以比方说100W(在2V是平均500mA)或大约100焦耳能量的电源,这花费大约1s。如果使用100个相同类型和电源的处理器,则计算时间可以减小,理想地按处理器的个数减小,但是由于通信开销,减小50倍到20ms是更有可能的。所需的能量加倍,因为多100倍的处理器在该时间间隔的1/50上运行。但是,我们可以把处理器放慢50倍至20MHz并且在原始的1s间隔内完成该固定的计算。这把每个处理器的功耗减少至2W。

但是现在供给电压可以减小,因为晶体管不需要这么快地给电容充电和放电。

实际的IC芯片可以具有更接近最大供给电压规格大约一半的最小供电电压规格,常常是由于为高速设计的内部电路。

一般化:对大型计算利用N倍多的处理器,并且利用相同的时间量来完成该计算,则时钟频率F可以按保守估计~2/N减小,然后,对于10<N<100,Vsupply可以减小大约两倍。每个处理器的平均动态功率减小(Fp/Fs)*(Vp/Vs)^2,其中下标p指并行计算并且下标s指单处理器计算。因此,对于N个处理器,与单个快速处理器相比而言的典型动态功率减小是:

Pp/Ps=N*2/N*(1/2)^2=1/2

而且,由于泄漏电流造成的静态功耗也可以通过较低的供给电压来减小。

当然,这种策略有其物理限制。由于Vdd比晶体管接通电压(Vth)高一伏的十分之几,因此Vth的统计分散变成限制因素。制造技术的将来改进可以减小Vth的分散。

在MPA中,如果对阵列的远离部分之间的时钟漂移(clock skew)的需求可以放宽,则额外的功率节约可以在时钟分配网络本身当中进行。通过只连接到附近的电路块,这在其中大部分信号路径短的MPA中是有可能的。例如,非常高百分比的信号路径长度短的HyperX体系架构(参考专利No.7,415,594)具有这种特性。

示例性多处理器IC

图1说明了多处理器IC的实施例,用来阐明由本申请的实施例解决的时钟分配网络设计方面/问题。如图1中所说明的,示例性hx3100A多处理器IC包括MPA,它接收时钟信号CLK1和同步信号SYNC作为输入。CLK1和SYNC信号是由CLKI+SYNC发生器生成的。CLKI+SYNC发生器接收时钟参考信号CLKREF、时钟旁路信号Bypass和系统同步信号SYNCIN作为输入。在hx3100A多处理器IC上存在的其它输入和其它部件没有说明。时钟参考信号CLKREF是可以被用来同步不同芯片之间的操作的系统参考时钟,并且在图1中被说明为由振荡器OSC1生成。这个和其它图中的部件没有按比例示出。

hx3100A多处理器IC的MPA具有PE的10×10阵列,该阵列散布在互连网络(IN)的11×11节点网中。每个IN节点包含共享的数据存储器(Data Memory,DM),以支持邻近的四个PE;并且每个PE可以访问围绕其的四个邻近节点中的共享DM。每个PE具有私有指令存储器(Instruction Memory,IM)。

为了内部dc电源分配,芯片被分到四个象限中;配电网的正侧被分成四个可以单独地耦合到外部电源的“电压孤岛”。配电网的负侧耦合到系统零参考“地”。

跨象限之间边界的电路可以简单地设计成利用处于相同电压的相邻电压孤岛操作并且当一个电压孤岛被切断时自我保护。通过电平移位电路的添加,可以进一步使跨边界的电路能够利用处于不同非零电压的相邻电压孤岛操作。电平移位电路在业内是众所周知的,并且很容易添加,但是它们会引入额外的功耗和信号延迟。

在维持整体同步阵列的情况下,用于hx3100A芯片的时钟分配网络支持处理器与其支持存储器(SM)和互连网络(IN)之间的中等大小(16X)的频率差。核心阵列中的所有处理器存储器访问和数据传输都发生在利用全局时钟信号的步骤中。

hx3100具有利用分布式再生器体系架构的时钟树。它利用相对低的功耗把时钟信号分配到芯片的每个部分,同时限制PE和本地节点之间的时钟漂移。H树也被考虑,但是它将比所选的树具有更多再生器,并且因此将耗散更多功率。这种树与H树相比而言的缺点是中心区域相对于芯片的周界具有逐步漂移(相位超前)的时钟信号。但是,它为其设计的多处理器体系架构具有到最近邻居的大部分短链路和连接,以及因此在各步之间具有良好的漂移容限。

图2示出芯片被分成宏单元的棋盘格,每个宏单元由再生器输出提供服务,并且具有统一的时钟信号相位和内部同步的操作。

在同心窗口帧时间区的概念中,中心定位的区可以分接靠更近其根的时钟网络。整体效果就是相对于H树而言需要更少的再生器。图中的圆圈代表再生器。每个再生器具有一个或多个输出,以驱动其它再生器和/或宏单元(棋盘方格)。到宏单元的每个输出具有可配置的划分和延迟单元(图中未示出)。全局时钟信号CLK1和同步信号SYNC是在芯片的边缘由CLK1+SYNC发生器生成的,并且传送到中心时钟再生器。

中心时钟再生器在四个方向中向芯片的四个象限当中每一个并且向每个象限中的附加再生器分配时钟和同步信号(sync)。附加的分支作为树的延伸朝芯片的周界添加。除了中心时钟再生器之外,再生器单元具有用于本地宏单元的输出。树建立一系列形状近似地像同心窗口帧的时间区-但是每个帧不需要具有确切的矩形边界或者构成一个完整的回路。

在hx3100A芯片上,宏单元可以由一个PE和一个IN节点组成,IN节点包含DM和路由器并且也被称为数据-存储器路由器(Data-Memory Router,DMR)。在其它类型的芯片上,宏单元可以包含不同数量的这些元件。

hx3100A时钟分配网络为每个PE提供时钟频率的选择,同时为DMR维护统一的高频。各个PE可以被配置为利用位于再生器中的时钟分频器以降低的时钟频率操作。

2的幂的分频(1/(2^N))很容易利用如图3中所说明的N位长度的二进制计数器生成。hx3100A芯片再生器使用4位计数器以及输出选择器,使得支持1/2、1/4、1/8和1/16的分数。如果计数器极长(以覆盖更宽范围的频率),则它开始占用额外的硅面积(real-estate)并增加泄漏功耗。

SYNC信号不是时钟,而是一个CLK1周期宽的脉冲,它在CLK1的每个第16个循环上利用CLK1广播并且它被用来同步再生器中的PE时钟分频器,如图4的波形中所示。如图3中所示,SYNC被用来每16个循环复位一次计数器。如果没有SYNC信号,则每个分频器会在不同的时间开始计数并且因此不同的计数器在CLK1循环的递增中彼此异相。RegP是用于再生器的配置寄存器,并且它可以由应用软件访问。RegP输出的更新与SYNC信号对齐。

数据和地址缓冲区位于PE和DMR之间以及DMR之间,以便在停机间隔(stall interval)期间保持数据。虽然最初被用来控制数据流,但是相同的机制有助于放慢的PE到全速DMR的接口。

DMR运行不慢,从而维持互连网络的带宽;但是它们可以被挂起(时钟输入被暂停)。通常,DMR功耗也随请求速率而变,并且如果邻近的放慢的PE在较低的速率作出请求,则DMR功耗也将减小。

图5示出了生成被用在hx3100A上的全局CLK1和SYNC信号的途径。PLL由芯片输入配置。当PLL被激活时,在多个循环之后,它将相位锁定到芯片输入CLKREF的平均频率和相位,其中CLKREF是方波,并且,依赖于配置,它可以具有通常比CLKREF高8至128倍的频率。

由通过Logic1可软件访问的Reg0配置的多路复用器M1选择HFC或CLKREF输入,并且输出耦合到时钟分频器DIV1的CLK0信号。时钟分频器DIV1通过Logic1被配置为产生相同或减小频率的CLK1,其中CLK1是发送到核心阵列中的最高频率时钟信号。计数器CNT0和逻辑门NOR1可以被用来生成SYNC信号。

计数器CNT0可以由芯片输入信号SYNCIN周期性地复位。在多芯片系统中,一个hx3100A可以被选择具有主CNT0,而其它hx3100A可以通过从由主CNT0生成的SYNCOUT信号接收SYNCIN信号而从属于该hx3100A。但是,在高时钟速率,难以对齐芯片间同步信号的相位来正确地复位CNT0,其中CNT0在相位锁定到CLKREF的时钟上运行。而且,除一之外的任何DIV1I/O频率比都导致HFC循环的倍数的芯片的内部SYNC信号之间的可能相位偏移。

在大部分多芯片系统中,芯片之间的互连是为了以比芯片上互连被操作的速率更低的速率进行数据传输而操作的。这么作既是出于信号完整性也是出于功耗原因。如果两个芯片上的CLK1都被向下调至芯片间连接可以支持但不变形的速率,则芯片之间的可靠同步通信可以开始进行。但是,这限制了芯片核心当中PE和DMR的速度并且因此限制了应用的范围。因此,存在相对于CLK1放慢I/O单元的时钟的需求。放慢的I/O单元的好处是,对于小于大约1000的减速比,它们的功耗几乎与减速比成比例地下降,并且,当数据脉冲宽度增加时,时序余量改善。

在hx3100A芯片中,I/O单元从时钟分配分支中最后一个再生器并且从输出接收时钟信号,该输出将到达位于I/O单元位置的PE,如果有的话。再生器包含取得CLK1和SYNC输入的时钟分频器。因而,I/O单元时钟速率可以以与PE时钟速率相同的方式配置,并且被配置为比CLK1慢的时钟速率,如对于芯片间连接所期望的。在芯片内部,以这种方式计时的I/O单元维持与最近DMR的同步通信并且通过片上网络(IN)到达芯片内的其余DMR和PE。I/O单元和DMR之间的流控制防止数据丢失或重复;但是,如果以比其可以处理的更高的速率向放慢的I/O单元发送数据,则会导致数据拥塞。

虽然共享的时钟参考信号(CLKREF)到两个芯片的PLL的输入提供了CLK1相位稳定性以及两个芯片的SYNC信号之间的相位稳定性,但是两个芯片的CNT0计数器的sync(同步信号)发生器将必须在CLK1的确切相同循环上复位,以便让两个芯片的SYNC信号确切对齐。如果一个复位信号相对于另一个被延迟(或者“漂移”)仅仅CLK1的半个周期那么一点,则两个CNT0计数器会在SYNC信号之间锁定到漂移的完整CLK1循环,这侵占了芯片之间用于信号的时序余量。一般而言,复位信号的按间隔t的漂移将导致SYNC信号中n个CLK1循环的漂移,其中n=t/tper,四舍五入到最近的整数值n,并且tper是CLK1的周期。因此,期望新的方法。



技术实现要素:

公开了方法和系统的各种实施例,其中时钟和选择信号可以贯穿整个同步数字系统分配。

在一种实施例中,公开了一种用于在同步数字系统的时钟分配网络中重新配置时钟发生电路的方法。第一时钟信号可以被生成并选作主时钟。然后,第二时钟信号可以代替第一时钟作为主时钟,而不会造成同步数字系统中由时钟引起的错误。然后,在第二时钟信号充当主时钟期间,时钟发生电路可以被重新配置。然后,在时钟发生电路稳定之后,第一时钟信号可以再次被选作主时钟,而不会造成同步数字系统中由时钟引起的错误。

在一些实施例中,第二时钟信号可以是外部时钟信号。在其中同步数字系统包括在芯片上的其它实施例中,第二时钟信号可以由独立于外部时钟信号的片上振荡器生成。在这种实施例中,可以检测需要选择片上生成的时钟信号作为主时钟的条件。然后,响应于该检测,可以选择第二时钟信号。在一些实施例中,需要选择片上生成的时钟信号的条件可以包括指示可能篡改同步数字系统的信号。

在一些实施例中,重新配置时钟发生电路可以包括改变时钟发生电路的至少一个设置,使得时钟发生电路以不同的速率耗散功率。在一些实施例中,重新配置可以包括给时钟发生电路断电,以便把时钟发生电路放到关状态,并且随后给时钟发生电路通电,以便把时钟发生电路返回到开状态。在其它实施例中,重新配置可以包括从时钟发生电路除去时钟输入,并且随后把时钟输入放回到时钟发生电路。在还有其它实施例中,重新配置可以包括改变时钟发生电路的目标频率。

在一些实施例中,时钟发生电路可以在重新配置时钟发生电路之后被确定为已稳定。在时钟发生电路稳定之后选择第一时钟信号作为主时钟可以至少部分地响应于该确定而被执行。

在一些实施例中,时钟发生电路可以包括锁相环(PLL)。确定时钟发生电路已稳定可以包括确定PLL已实现相位锁定。

在一些实施例中,在重新配置时钟发生电路之后,可以允许经过预定的时间。在时钟发生电路已稳定之后选择第一时钟信号作为主时钟可以在等待该预定时间之后执行。

在一种实施例中,公开了一种同步数字系统。该同步数字系统的时钟发生电路可以被配置为至少部分地基于所接收的外部时钟信号生成第一时钟信号,并且通过编程接收配置设置。同步数字系统的时钟信号选择器电路可以被配置为在多个时钟信号之间通过编程进行选择,以用作主时钟信号,而不会造成同步数字系统中由时钟引起的错误。多个时钟信号可以包括所述第一时钟信号和外部时钟信号。被配置为利用主时钟信号操作的同步数字系统的同步数字逻辑可以被配置为使时钟信号选择器电路选择第一时钟信号。然后,在选择第一时钟信号之后,同步数字逻辑可以使时钟信号选择器电路选择多个时钟信号当中除第一时钟信号之外的一个时钟信号。然后,同步数字逻辑可以重新配置时钟发生电路。然后,在重新配置时钟发生电路之后时钟发生电路已稳定之后,同步数字逻辑可以使时钟信号选择器电路选择第一时钟信号。

在一些实施例中,在重新配置时钟发生电路时,同步数字逻辑可以被配置为改变时钟发生电路的至少一个设置,使得时钟发生电路以不同的速率耗散功率。在一些实施例中,同步数字逻辑可以给时钟发生电路断电,以便把时钟发生电路放到关状态,并且随后给时钟发生电路通电,以便把时钟发生电路返回到开状态。在其它实施例中,同步数字逻辑可以从时钟发生电路除去外部时钟输入,并且随后把外部时钟输入放回到时钟发生电路。在其它实施例中,同步数字逻辑可以改变时钟发生电路的目标频率。

在一些实施例中,同步数字逻辑被配置为在重新配置时钟发生电路之后确定时钟发生电路已稳定。在时钟发生电路稳定之后使时钟信号选择器电路选择第一时钟信号可以至少部分地响应于该确定来进行。在一些实施例中,时钟发生电路可以包括锁相环(PLL)。在确定时钟发生电路已稳定时,同步数字逻辑可以被配置为确定PLL已实现相位锁定。在其它实施例中,同步数字逻辑被配置为在重新配置时钟发生电路之后等待预定的时间。在时钟发生电路已稳定之后使时钟信号选择器电路选择第一时钟信号可以在等待该预定时间之后执行。

在其中同步数字系统包括在芯片上的一些实施例中,片上时钟信号发生器可以被配置为独立于外部时钟信号生成第二时钟信号。多个时钟信号还可以包括该第二时钟信号。在一些实施例中,片上时钟信号发生器包括环形振荡器。在一些实施例中,时钟信号选择器电路可以被配置为响应于需要选择片上生成的时钟信号作为主时钟的条件而选择第二时钟信号。在一些实施例中,该条件可以包括指示可能篡改同步数字系统的信号。

在一种实施例中,公开了一种包括在芯片上的同步数字系统。同步数字系统的同步数字逻辑可以被配置为利用主时钟信号操作。同步数字系统的片上时钟信号发生器可以被配置为独立于由同步数字系统接收的外部时钟信号而生成第一时钟信号。同步数字系统的时钟信号选择器电路可以被配置为在多个时钟信号之间选择以用作主时钟信号。这多个时钟信号可以包括第一时钟信号和依赖于外部时钟信号的信号。时钟信号选择器电路还可以被配置为,当时钟选择覆盖信号指示正常操作时,至少部分地基于可软件配置寄存器的内容在多个时钟信号之间进行选择。当时钟选择覆盖信号指示需要选择片上生成的时钟信号用作主时钟信号的条件时,时钟信号选择器电路可以选择第一时钟信号。

在一些实施例中,时钟选择覆盖信号可以包括篡改检测信号。指示需要选择片上生成的时钟信号用作主时钟信号的条件的时钟选择覆盖信号可以包括指示可能篡改同步数字系统的篡改检测信号。在一些实施例中,响应于篡改检测信号,同步数字逻辑可以被配置为执行需要持续时钟信号的安全措施。因此,选择第一时钟信号可以使安全措施能在不考虑外部时钟信号是否停止的情况下被执行。在一些实施例中,安全措施可以包括清除同步数字逻辑的状态信息。

在一些实施例中,时钟选择覆盖信号包括时钟丢失信号。指示需要选择片上生成的时钟信号用作主时钟信号的条件的时钟选择覆盖信号包括指示预见到外部时钟信号丢失的时钟丢失信号。

在一些实施例中,片上时钟信号发生器可以包括环形振荡器。

在一些实施例中,时钟信号选择器电路可以被配置为在多个时钟信号之间通过编程进行选择,而不会造成同步数字系统中由时钟引起的错误。

在一种实施例中,公开了一种避免包括在芯片上的同步数字系统中的时钟信号错误的方法。第一时钟信号可以作为用于同步数字系统的主时钟提供。第一时钟信号可以依赖于由同步数字系统接收的外部时钟信号。指示需要选择片上生成的时钟信号用作主时钟信号的条件的时钟选择覆盖信号可以被接收。响应于接收,第二时钟信号可以被选作主时钟。第二时钟信号可以由片上时钟信号发生器独立于外部时钟信号生成。

在一些实施例中,接收时钟选择覆盖信号可以包括接收指示可能篡改同步数字系统的篡改检测信号。在一些实施例中,响应于该篡改检测信号,需要持续时钟信号的安全措施可以被执行。因此,选择第一时钟信号可以使安全措施能被执行,而不管外部时钟信号是否停止。在一些实施例中,执行安全措施可以包括执行清除同步数字系统的状态信息的步骤。当所述步骤被执行时,第二时钟信号可以被用作主时钟。在其它实施例中,接收时钟选择覆盖信号可以包括接收指示预见到外部时钟信号丢失的信号。

在一些实施例中,片上时钟信号发生器可以包括环形振荡器。

在一些实施例中,选择第二时钟信号作为主时钟的执行不会造成同步数字系统中由时钟引起的错误。

在一种实施例中,公开了一种装置。装置的参考时钟发生器可以被配置为生成参考时钟信号。装置的多个集成电路芯片每个都可以包括耦合到该参考时钟发生器的输入端口。输入端口可以被配置为接收参考时钟信号。每个芯片还可以包括被配置为依赖于参考时钟信号生成主时钟信号的时钟发生电路。每个芯片还可以包括被配置为生成与主时钟信号边缘对齐并且与参考时钟信号相位对齐的同步信号的同步信号发生电路。由于它们与参考时钟信号的共同相位对齐,因此多个芯片各自的同步信号被相位对齐。每个芯片还可以包括被配置为接收主时钟信号和同步信号的时钟分频器电路。每个芯片的时钟分频器电路可以生成其频率小于主时钟信号的频率的频分时钟信号。频分时钟信号可以相位对齐到同步信号。每个芯片还可以包括被配置为接收该频分时钟信号作为时钟输入的输入/输出(I/O)电路。每个芯片的I/O电路可以与多个芯片中另一芯片的相应I/O电路通信。一个芯片的频分时钟信号的频率与另一芯片的频分时钟信号的相应频率相同,并且一个芯片的频分时钟信号与另一芯片的相应频分时钟信号相位对齐。

在一些实施例中,对于每个芯片,时钟发生电路可以包括被配置为接收参考时钟信号并且生成其频率比参考时钟信号的频率高得多的高频时钟信号的锁相环(PLL)。

在一些实施例中,每个芯片的I/O电路可以包括多个I/O单元。每个芯片还可以包括时钟和同步信号分配网络。每个芯片的分配网络可以包括被配置为接收主时钟信号的馈送点。每个芯片的分配网络还可以包括连接到馈送点的扇出(fan-out)电路。该扇出电路可以被配置为把主时钟信号从馈送点传播到I/O电路,使得主时钟信号在馈送点和多个I/O单元中每个I/O单元之间具有统一的延迟。每个芯片的分配网络还可以包括在整个扇出电路上放置的多个再生器。

在一些这种实施例中,每个芯片的时钟发生电路可以包括PLL。每个PLL可以被配置为接收参考时钟信号、生成高频时钟信号输出并且接收作为该高频时钟信号的延迟版本的反馈信号。反馈信号相位锁定到参考时钟信号。每个芯片的时钟发生电路还可以包括用于PLL的反馈路径。该反馈路径可以与通过时钟和同步信号分配网络从高频时钟输出到再生器的主时钟平行,其中该再生器服务于位于PLL附近的I/O单元之一。反馈路径被提供给PLL的反馈输入。

在一些实施例中,每个芯片的同步信号发生电路可以包括被配置为检测参考时钟信号的时钟边缘的边缘检测器,以及计数器。每个计数器可以被配置为基于主时钟信号更新计数值、基于边缘检测器的输出复位计数值,并且在计数值等于特定值时输出同步信号的脉冲。

在一些实施例中,参考时钟信号在参考时钟发生器和多个芯片中第一芯片之间的传播延迟近似地等于在参考时钟发生器和多个芯片中第二芯片之间的传播延迟。因此,在由第一芯片接收的参考时钟信号和由第二芯片接收的参考时钟信号之间,时钟漂移被最小化。

在一些实施例中,多个芯片中第一芯片的时钟发生电路与第一芯片的时钟分频器电路之间相应主时钟信号的传播延迟近似地等于多个芯片中第二芯片的时钟发生电路与第二芯片的时钟分频器电路之间相应主时钟信号的传播延迟。

在一种实施例中,公开了一种用于同步第一芯片和第二芯片之间数字通信的方法。外部参考时钟信号可以在每个芯片被接收。然后,每个芯片可以生成其频率为参考时钟频率的可配置倍数的相应的高频时钟信号。然后,每个芯片依赖于外部参考时钟信号生成相应的同步信号。由于它们共同依赖于外部参考时钟信号,因此第一芯片和第二芯片各自的同步信号相位对齐。每个芯片可以依赖于相应的高频时钟信号向包括在芯片上的相应的同步数字系统分配相应的主时钟信号。位于芯片的相应多个I/O单元中每一个的主时钟信号可以相对于相应的高频时钟信号统一延迟。每个芯片可以对相应的主时钟信号分频,以生成其频率小于相应主时钟信号的频率的相应的频分时钟信号。分频可以使用相应的同步信号,使得第一芯片和第二芯片各自的频分时钟信号边缘对齐。数字通信可以在第一芯片的第一I/O单元和第二芯片的第二I/O单元之间执行,其中第一I/O单元使用第一芯片的频分时钟信号作为时钟输入,并且第二I/O单元使用第二芯片的频分时钟信号作为时钟输入。

在一些实施例中,生成相应的同步信号包括确定外部参考时钟信号的边缘,并且响应于确定外部参考时钟信号的边缘而生成同步信号的脉冲。在一些实施例中,生成同步信号的脉冲可以包括复位被配置为在到达特定的计数值时输出脉冲的计数器。计数器可以使用主时钟信号作为时钟输入。

在一些实施例中,生成相应的高频时钟信号可以包括从锁相环(PLL)输出高频时钟信号。在一些实施例中,生成相应的高频时钟信号还可以包括向PLL提供反馈信号。反馈信号的路径可以与主时钟信号从馈送点到芯片的I/O单元的路径平行。

附图说明

图1是说明现有技术系统的实施例的框图。

图2是说明现有技术系统中时钟分配网络的实施例的框图。

图3是说明现有技术系统中时钟分频器(clock divider)的实施例的框图。

图4绘出了现有技术系统中的示例时钟分频器波形。

图5是现有技术系统中时钟和同步信号发生器的实施例的框图。

图6是说明同步数字系统的实施例的框图。

图7是时钟和同步信号发生器的实施例的框图。

图8是根据现有技术的简单2-输入多路复用器的实施例的框图。

图9绘出了得自根据现有技术的多路复用器操作的示例波形。

图10是具有抗尖峰脉冲增强(glitch augmentation)的简单2-输入多路复用器的实施例的框图。

图11说明了绘出包括在图10多路复用器中的状态机操作的状态图。

图12说明了绘出包括在图10多路复用器中的另一状态机操作的状态图。

图13绘出了得自图10多路复用器的操作的示例波形。

图14是说明用于重新配置时钟发生电路而不在下游电路中引入时钟引起的错误的方法实施例的流程图。

图15是说明用于避免包括在芯片上的同步数字系统中的时钟信号错误的方法实施例的流程图。

图16是说明在两个集成电路(IC)芯片之间的输入/输出(I/O)通信的框图。

图17是说明用于图7的PLL的反馈路径实施例的框图。

图18是说明用于同步第一IC芯片和第二IC芯片之间的数字通信的方法实施例的流程图。

虽然本发明容易有各种修改和备选形式,但是其具体实施例作为例子在附图中示出并且将在这里详细描述。但是,应当理解,附图和对其的详细描述不是要把本公开内容限定到所说明的特定形式,相反,其意在覆盖属于由所附权利要求定义的本公开内容精神和范围的所有修改、等价物和备选方式。本文所使用的标题仅仅是为了组织而不是要用来限定描述的范围。如贯穿本申请所使用的,词“可以”是在允许的意义上(即,意味着有可能)而不是在强制的意义上(即,意味着必须)使用的。类似地,词“包括”意味着包括,但不限于。

流程图的提供是为了说明示例性实施例,而不是要把本公开内容限定到所说明的特定步骤。在各种实施例中,所示出的方法元素当中的一些可以并发地执行、以与所示不同的次序执行,或者被略去。附加的方法元素也可以根据期望被执行。

各种单元、电路或其它部件可以被描述为“被配置为”执行一个或多个任务。在这种语境下,“被配置为”是结构的广泛陈述,一般指“具有”在操作过程中执行所述一个或多个任务的“电路”。照此,即使单元/电路/部件目前没有开启,单元/电路/部件也可以被配置为执行任务。一般而言,构成对应于“被配置为”的结构的电路可以包括硬件电路。类似地,在描述中为了方便,各种单元/电路/部件可以被描述为执行一个或多个任务。这种描述应当被解释为包括短语“被配置为”。陈述被配置为执行一个或多个任务的单元/电路/部件明确地对于那个单元/电路/部件不要援引35U.S.C.§112第六段的解释。更一般而言,除非具体地陈述语言“用于...的装置”或“用于...的步骤”,否则任何元件的陈述明确地对于那个元件不要援引35U.S.C.§112第六段的解释。

具体实施方式

通过引用的结合

标题为“Processing System With Interspersed Stall Propagating Processors And Communication Elements”的美国专利No.7,415,594的全部内容通过引用被结合于此,就好像在本文完全和完整地阐述了一样,该专利的发明人是Michael B.Doerr、William H.Hallidy、David A.Gibson和Craig M.Chase。

于2011年10月14日提交的标题为“Disabling Communication in a Multiprocessor System”的美国专利申请序列No.13/274,138的全部内容通过引用被结合于此,就好像在本文完全和完整地阐述了一样,该专利的发明人是Michael B.Doerr、Carl S.Dobbs、Michael B.Solka、Michael R Trocino和David A.Gibson。

术语

硬件配置程序-包括可被编译成二进制图像的源文本的程序,可以被用来编程或配置硬件,诸如像集成电路。

计算机系统-各种类型的计算或处理系统中的任何一种,包括个人计算机系统(PC)、大型机计算机系统、工作站、网络设备、互联网设备、个人数字助理(PDA)、网格计算系统或者其它设备或设备的组合。一般地,术语“计算机系统”可被广泛地定义为涵盖具有执行来自存储介质的指令的至少一个处理器的任何设备(或设备的组合)。

自动-指的是在没有直接指定或执行动作或操作的用户输入的情况下由计算机系统(例如,由计算机系统执行的软件)或设备(例如,电路、可编程硬件元件、ASIC,等等)执行的动作或操作。从而,术语“自动”与在用户提供输入来直接执行操作的情况下由用户手动执行或指定的操作形成对照。自动过程可由用户提供的输入发起,但是“自动”执行的后续动作不是用户指定的,即,不是在用户指定每个要执行的动作的情况下“手动”执行的。例如,通过选择每个字段并且提供指定信息的输入(例如,通过键入信息、选择复选框、单选选择,等等)来填写电子表单的用户是在手动填写该表单,虽然计算机系统必须响应于用户动作来更新表单。表单可由计算机系统自动填写,其中计算机系统(例如,在计算机系统上执行的软件)分析表单的字段并且在没有任何指定字段的答案的用户输入的情况下填写表单。如上所述,用户可调用表单的自动填写,但不参与表单的实际填写(例如,用户不是手动指定字段的答案,而是这些字段被自动地完成)。本说明书提供了响应于用户采取的动作而自动执行操作的各种示例。

示例性同步数字系统

图6说明了包括时钟分配网络的同步数字系统的实施例。虽然该图的实施例说明为被包括在芯片上,但是其它实施例可以包括多个芯片和附加的部件。作为替代,多个同步数字系统可以被包括在单个芯片上。虽然所公开的系统被称为同步数字系统,但是该系统的某些部件可以以非同步的方式操作。例如,同步数字系统可以包括与系统的其余部分异步地操作的环形振荡器。类似地,系统可以包括模拟部件。把系统称为“数字同步系统”意味着仅仅暗示至少系统的实质性部分包括基于公共时钟或多个相关时钟操作的数字逻辑。

如图6中所说明的,同步数字系统包括数字逻辑区。在一些实施例中,数字逻辑可以包括多处理器阵列(MPA)。数字逻辑接收时钟信号CLK1和同步信号SYNC作为输入。CLK1和SYNC信号是由CLKI+SYNC发生器生成的。CLKI+SYNC发生器接收时钟参考信号CLKREF、时钟旁路信号Bypass和时钟覆盖信号Clock Override作为输入。在其它实施例中,各种其它输入是可能的。如图6中所说明的,输入被示为从芯片的输入引脚提供给CLKI+SYNC发生器。但是,在其它实施例中,这些信号可以在芯片上生成。时钟参考信号CLKREF是可以被用来同步不同芯片之间的操作的系统参考时钟,并且因此在图6的实施例中被说明为由同步数字系统外部的振荡器OSC1生成。

图7更详细地说明了CLKI+SYNC发生器的实施例。如所说明的,CLKI+SYNC发生器取CLKREF、BYPASS和Clock Override信号作为输入,并且提供CLK1和SYNC信号作为输出。CLKI+SYNC发生器还包括可以从软件接收数据的寄存器Configuration Reg0(配置寄存器0),以及可以存储要被软件检索的状态信息的寄存器Status Reg1(状态寄存器1)。这种状态信息可以包括,例如,PLL锁定状态信号和时钟输入丢失信号。

在图7中,CLK1发生器部分由锁相环(PLL)、环形振荡器、三个多路复用器、某个逻辑、配置寄存器以及状态寄存器组成。

输入信号CLKREF提供给PLL,PLL提供系统的最高频率时钟信号(HFC)作为输出。图7的PLL可以包括各种可配置的时钟分频器、选择逻辑以及本领域中已知的用于配置时钟信号的其它部件。在其它实施例中,PLL可以用数字锁相环(DPLL)、延迟锁定回路(DLL)或其它时钟发生电路代替。

输入信号CLKREF和时钟信号HFC都作为输入提供给多路复用器M1,多路复用器M1可以由输入信号BYPASS并且由来自逻辑块Logic1的信号控制,其中逻辑块Logic1从Configuration Reg0和PLL接收输入。多路复用器M1输出时钟信号CLK0。

环形振荡器Ring Osc.提供时钟信号CLKRO作为输出,该输出不依赖于CLKREF或者由同步数字系统接收的任何其它时钟信号。时钟信号CLK0和CLKRO作为输入提供给多路复用器M2,多路复用器M2可以由来自逻辑块Logic1的信号控制。

时钟信号CLKRO和多路复用器M2的输出时钟信号作为输入提供给多路复用器M3,多路复用器M3可以由输入信号Clock Override控制。多路复用器M3输出输出时钟信号CLK1,该信号在离开CLKI+SYNC发生器之前可以被缓冲。

在一些实施例中,附加的时钟分频器或其它电路可以穿插在多路复用器MI-M3之间和/或之后。

在图7中,SYNC发生器部分由数据触发器(DF1、DF2)、计数器(CNT0)和一些逻辑门组成。时钟信号CLK1提供给反相器,并且反相的时钟信号作为Clock(时钟)输入提供给计数器CNT0。计数器CNT0的多个输出馈送到逻辑“或非”门,该门提供输出同步信号SYNC。因此,如所说明的,SYNC只有当CNT0的所有输出都低时才为高;即,当CNT0的计数为零时。但是,在其它实施例中,CNT0的输出在被提供给NOR1之前还可以进一步配置,如本领域中已知的,使得SYNC在CNT0的输出对应于其它值时为高。虽然CNT0被绘制为四位计数器,但是其它实施例可以利用其它尺寸或者可变尺寸的计数器。输出信号SYNC可以在离开CLKI+SYNC发生器之前被缓冲。

输入信号CLKREF被提供给边缘检测器,其中边缘检测器被说明为包括由CLK1计时的DF1和DF2以及逻辑“与”门AND1的上升边缘检测器。在其它实施例中,可以使用其它边缘检测器,包括下降边缘检测器,只要需要以降低的速率进行同步通信的所有芯片使用相同的边缘就可以。边缘检测器的输出是信号CLKREFrising,该信号提供给计数器CNT0的Reset(复位)输入。

CLKI+SYNC发生器的功能将参考图8-18更完全地解释。

抗尖峰脉冲时钟信号选择

如图7中所说明的,多路复用器MI-M3允许选择各种时钟信号用作时钟信号CLK1。多路复用器MI-M2是可配置为从参考时钟信号CLKREF选择时钟信号源、从PLL选择时钟信号HFC或者从芯片上环形振荡器Ring Osc.选择时钟信号CLKRO的软件。当多路复用器从一个源切换到另一个源时,它会对其输出信号引入变形和噪声,这会造成下游电路的误动。时钟分配的首端的尖峰脉冲(glitch)可以经芯片一路传播并到达I/O单元并且在沿途任何地方造成功能错误。尖峰脉冲还因为它们减小时序余量而是不期望的。在现有技术中,新时钟信号源的选择通常后面跟着下游电路的复位,复位把它们带到用于重启的已知状态,从而除去尖峰脉冲的任何不良影响。

当“飞速(0n the fly)”把时钟信号源从第一时钟源切换到与第一时钟源不同步的第二时钟源时,存在多路复用器截断输入时钟脉冲并且发射短脉冲或者在较长的脉冲中放置缺口的可能性。这些短脉冲统称为尖峰脉冲。

为了消除在来自多路复用器MI-M3的输出中尖峰脉冲的可能性,多路复用器MI-M3当中一个或多个可以利用抗尖峰脉冲电路来增强。

传统的多路复用器是用来从多个信号输入选择的门的简单组合。基本的2-输入多路复用器(2-in mux)示意图在图8中示出。在图9中针对其中选择输入信号SEL改变的四种情况示出典型的波形。时钟信号CLK0和CLK1的波形仅仅是示例并且许多其它频率或相位失配是可能的。对于所示出的每种情况,在OUT信号上观察到尖峰脉冲,并且以圆圈示出。如图所示,小的和大的尖峰脉冲在高或低任一方向都是有可能的。

图10说明了具有抗尖峰脉冲增强的两-输入多路复用器的一种示例性实施例。这种实施例的增强包括一对状态机,这对状态机每个都可以从SEL、CLK0和CLK1输入以及从彼此接受输入。但是,本领域技术人员将认识到,其它实施例可以利用具有与这里所说明的两个状态机的功能相似的功能的一个或多个状态机。

图11中的状态图描述了状态机SM0的操作。在复位时,SM0被设置为状态SM0_OFF。在状态SM0_OFF,选择信号SEL0被设置为逻辑0。在检测到选择信号SEL被设置为逻辑0时,SM0变换到状态SM0_WAIT。在状态SM0_WAIT,SEL0保持设置在0。如果SEL改变成逻辑1,同时SM0处于状态SM0_WAIT,则SM0变换回状态SM0_OFF。相反,如果在SM0处于状态SM0_WAIT的时候SM0检测到SEL保持0并且SM1处于状态SM0_OFF,则SM0变换到状态SM0_ON。在状态SM0_ON,SEL0被设置为1。在检测到SEL为1时,SM0变换回状态SM0_OFF。

图12中的状态图描述了状态机SM1的操作。在复位时,SM1被设置为状态SM1_OFF。在状态SM1_OFF,选择信号SEL1被设置为逻辑0。在检测到选择信号SEL被设置为逻辑1时,SM1变换到状态SM1_WAIT。在状态SM1_WAIT,SEL1保持设置成0。如果在SM1处于状态SM1_WAIT的时候SEL变成逻辑0,则SM1变换回状态SM1_OFF。相反,如果在SM1处于状态SM1_WAIT的时候SM1检测到SEL保持1并且SM0处于状态SM0_OFF,则SM1变换到状态SM1_ON。在状态SM1_ON,SEL1被设置为1。在检测到SEL为0时,SM1变换回状态SM1_OFF。

图13示出了用于图9所示的相同四种情况的波形,并且添加了图10的抗尖峰脉冲多路复用器的输出信号DGOUT。图13的波形假设状态机SM0在时钟信号CLK0的下降边缘采样其输入,并且SM1在时钟信号CLK1的下降边缘采样其输入。如图13中所示,抗尖峰脉冲增强在CLK0和CLK1输入之间相位和频率差异的各种组合中防止短脉冲。

通过利用具有抗尖峰脉冲增强的多路复用器作为图7的多路复用器MI-M3当中的一个或多个,被选作CLK1的时钟信号可以“飞速”切换,而不会在同步数字系统中下游造成由时钟引起的错误。

重新配置时钟发生电路

在诸如图7的示例性实施例的系统中,动态地重新配置PLL或者类似的时钟发生电路,诸如经由软件控制,会是有利的。例如,当同步数字系统没有被完全利用时,PLL输出HFC的频率可以经由软件指令暂时减小,以节省功率。作为替代,输入参考信号CLKREF的源可以被切换,从而在PLL中造成相位锁定的丢失。在这种情况下,PLL可以产生尖峰脉冲,并且将花费一些时间来稳定。

在这个间隔中,适当的备选时钟信号可以被选择用作提供给同步数字系统的主时钟信号,以允许下游电路的持续操作。但是,应当小心确保时钟信号之间的切换不在主时钟信号上引入附加的尖峰脉冲。

图14是说明用于重新配置时钟发生电路而不在下游电路中引入由时钟引起的错误的方法实施例的流程图。除了其它系统,图14中所示的方法还可以结合图6-7的示例性系统使用。

在步骤1402中,第一时钟信号可以利用时钟发生电路生成。如图7的示例性实施例中所说明的,时钟发生电路可以包括PLL,并且第一时钟信号可以是时钟信号HFC。时钟发生电路的其它非限制性例子可以包括DPLL或DLL。作为替代,时钟发生电路可以包括环形振荡器,诸如图7的Ring Osc.。

在步骤1404中,第一时钟信号可以被选择作为用于同步数字系统的主时钟。在图6-7的示例性实施例中,用于同步数字系统的主时钟被标记为CLK1。在一些实施例中,第一时钟信号可以在正常操作期间被用作同步数字系统的主时钟。

在图7的示例性实施例中,第一时钟信号被选作主时钟信号可以经由多路复用器M1-M3来执行。多路复用器M1和M2可以经由寄存器Configuration Reg0和逻辑块Logic1基于软件配置来控制。这允许对主时钟选择的软件控制。因此,在一些实施例中,步骤1404可以响应于软件命令而被执行。作为替代,第一时钟信号被选作主时钟可以是自动的。多路复用器M1还可以基于输入信号BYPASS来控制。多路复用器M3可以基于输入信号Clock Override来控制,这在以下更详细地讨论。

在这种语境下,选择时钟信号“作为”用于同步系统的主时钟指示系统的电路把该指定的时钟信号传播到同步数字系统的至少实质性部分。这要涵盖其中选定的时钟信号可以经过选择电路、缓冲区和其它电路的实施例。例如,在图7的实施例中,当多路复用器M1被配置为选择HFC、多路复用器M2被配置为选择CLK0并且多路复用器M3被配置为选择多路复用器M2的输出时,时钟信号HFC被选作用于同步数字系统的主时钟。这还要涵盖其中主时钟被提供给本地时钟再生器电路的实施例,每个本地时钟再生器电路可以向本地逻辑元件输送作为主时钟的频率-和/或漂移-调节后版本的本地时钟信号。

在步骤1406中,第二时钟信号可以被选作主时钟。因此,第二时钟代替第一时钟作为主时钟。为了防止在主时钟信号上引入尖峰脉冲,选择可以利用包括抗尖峰脉冲增强的一个或多个多路复用器来执行,诸如图10-12的多路复用器。可以代替地使用本领域中已知的其它抗尖峰脉冲多路复用器。

在图7的示例性实施例中,第二时钟信号被选作主时钟信号可以经由多路复用器M1-M3来执行。例如,第二时钟信号可以是时钟参考信号CLKREF或时钟信号CLKRO。在一些实施例中,步骤1406可以响应于软件命令而被执行。作为替代,第二时钟信号被选作主时钟可以是自动的。例如,在一种实施例中,逻辑块Logic1可以自动地把多路复用器M1配置为响应于寄存器Configuration Reg0接收到重新配置PLL的命令而从选择HFC切换成选择CLKREF。

在步骤1408中,时钟发生电路可以在第二时钟信号充当主时钟的时间内被重新配置。因为第一时钟信号不充当主时钟,所以由于时钟发生电路的重新配置而在第一时钟信号上发生的任何尖峰脉冲都不会影响同步数字系统的下游电路。

在一种实施例中,重新配置时钟发生电路可以包括改变时钟发生电路的至少一个设置,使得时钟发生电路以不同的速率耗散功率。例如,当同步数字系统没有被完全利用时,时钟发生电路可以被重新配置为以较低的频率操作,从而耗散较少的功率。当同步数字系统的利用增加时,通过图14的方法的另一次迭代,时钟发生电路随后可以再次重新配置,以便在较高的频率操作。在一种实施例中,重新配置时钟发生电路可以包括给时钟发生电路断电,以防止操作,然后在随后的时间给时钟发生电路通电。类似地,在另一种实施例中,重新配置时钟发生电路可以包括除去输入到时钟发生电路的时钟信号,以防止操作,然后在随后的时间重新断言输入到时钟发生电路的时钟信号。在这些实施例中,可以通过以这些方式中任何一种防止时钟发生电路的操作来省电。在一些实施例中,这种重新配置可以通过编程来执行;即,经由软件控制。

在步骤1410中,第一时钟可以再次被选作主时钟。为了防止在主时钟信号上引入尖峰脉冲,选择可以利用包括抗尖峰脉冲增强的一个或多个多路复用器执行,诸如图10-12的多路复用器。本领域中已知的其它抗尖峰脉冲多路复用器可以代替地使用。在时钟发生电路被重新配置之后,可能需要一些时间来稳定。因此,再次选择第一时钟作为主时钟可以在时钟发生电路稳定之后执行。在这种语境下,术语“稳定”指时钟发生电路的输出充分地没有畸变,从而避免下游电路中由时钟引起的错误。

在一种实施例中,在时钟发生电路稳定之后选择第一时钟可以包括在时钟发生电路重新配置已经完成之后在选择第一时钟之前等待预定的时间量经过。该预定的时间量应当长到足以允许时钟发生电路稳定。

在另一种实施例中,在时钟发生电路稳定之后选择第一时钟可以包括确定时钟发生电路是否已稳定,并且至少部分地响应于该确定而选择第一时钟作为主时钟。例如,在图7的实施例中,PLL可以提供指示它是否在重新配置之后实现相位锁定的状态信号。在一种实施例中,逻辑块Logic1可以响应于从PLL接收到指示PLL已经实现相位锁定的状态信号而自动地配置多路复用器MI选择HFC。在另一种实施例中,寄存器Status Reg1可以存储指示PLL已经实现相位锁定的状态,以便由软件读取。然后,软件可以经由寄存器Configuration Reg0和用于多路复用器M1的逻辑块Logic1提供指令,以至少部分地响应于读取寄存器Status Reg1而选择HFC。

片上振荡器的自动选择

在一些情况下,独立于外部时钟信号自动选择在芯片上利用同步数字系统生成的信号作为主时钟会是有利的。具体而言,存在其中时钟信号错误可以以这种方式被避免的各种情况。

图15是说明用于在芯片上包括的同步数字系统中避免时钟信号错误的方法实施例的流程图。除其它系统之外,图15中所示的方法还可以结合图6-7的示例性系统使用。

在步骤1502中,第一时钟信号可以作为用于同步数字系统的主时钟提供。第一时钟信号依赖于由同步数字系统接收的外部时钟信号。如图7的示例性实施例中所说明的,第一时钟信号可以由PLL生成,并且第一时钟信号可以是时钟信号HFC,该信号依赖于输入时钟参考信号CLKREF。在图6-7的示例性实施例中,用于同步数字系统的主时钟被标记为CLK1。

在同步数字系统的正常操作期间,主时钟可以从包括第一时钟信号的多个可用的时钟信号中选择。例如,在图7的实施例中,CLK1可以利用多路复用器M1和M2从可用的时钟信号HFC、CLKREF和CLKRO中选择。如以上所讨论的,多路复用器M1和M2的控制可以是自动的或者由软件控制。

在步骤1504中,可以接收时钟选择覆盖信号。时钟选择覆盖信号可以指示需要选择片上生成的时钟信号用作主时钟的条件。在图7的示例性实施例中,时钟选择覆盖信号被说明为输入信号Clock Override。

在各种实施例中,时钟选择覆盖信号可以指示各种情况。例如,在一种实施例中,时钟选择覆盖信号可以包括指示可能或实际篡改同步数字系统的篡改检测信号。这种篡改可以包括对同步数字系统的硬件或软件的未授权访问。篡改检测信号可以包括来自被配置为检测篡改的一个或多个传感器或其它装备的信号。这种传感器或其它装备可以或可以不包括在同步数字系统中,并且可以或可以不存在于芯片上。用于检测篡改的方法和装备的例子可以在以上通过引用被结合的美国专利申请序列No.13/274,138中找到。

在另一种实施例中,时钟选择覆盖信号可以包括指示预见到外部时钟信号的丢失或不稳定的时钟丢失信号。例如,时钟丢失信号可以指示输入时钟参考信号CLKREF的源已经,或者将要,改变、复位或以别的方式被中断。

在步骤1506中,第二时钟信号可以响应于选择覆盖信号而被选作主时钟。因此,第二时钟代替第一时钟作为主时钟。第二时钟信号是由芯片上的信号发生器独立于外部时钟信号生成的。虽然第二时钟信号是独立于任何外部时钟信号生成的,但是一些实施例可以允许芯片上的信号发生器经由外部配置信号配置。

在图7的示例性实施例中,第二时钟信号被选作主时钟信号可以经由多路复用器M3执行。例如,独立于输入时钟参考信号CLKREF,第二时钟信号可以是由环形振荡器Ring Osc.生成的时钟信号CLKRO。因此,响应于输入信号Clock Override而对CLKRO的选择可以覆盖通过多路复用器M1-M2定义的其它自动的或软件定义的时钟选择。

为了防止在主时钟上引入尖峰脉冲,选择可以利用包括抗尖峰脉冲增强的一个或多个多路复用器执行,诸如图10-12的多路复用器。本领域中已知的其它抗尖峰脉冲多路复用器可以代替地使用。在其它实施例中,抗尖峰脉冲增强可以不是必需的。

在步骤1508中,可以执行需要持续时钟信号的安全措施。这种安全措施在其中时钟选择覆盖信号包括篡改检测信号的实施例中可以是适当的。例如,企图篡改芯片的黑客或其他人可能期望读出同步数字系统的内部寄存器的状态信息。已经提出了各种方法来防止寄存器被读出,诸如在检测到外部篡改时清除寄存器。因此,为了保存内部寄存器的状态,黑客可以停止系统参考时钟(CLKREF),从而冻结同步数字系统的内部寄存器中的操作。因此,在一种实施例中,安全措施,诸如清除同步数字系统的状态信息,可以响应于篡改检测信号而被执行。因为第二时钟信号已经被选作主时钟,所以诸如清除状态信息的安全措施可以独立于CLKREF是否停止而继续进行。可能的安全措施的附加例子可以在以上通过引用被结合的美国专利申请序列No.13/274,138中找到。

芯片间的通信

图16是说明两个集成电路(IC)芯片之间的输入/输出(I/O)通信的框图。如图16中所说明的,第一芯片和第二芯片当中每一个都包括诸如图6中所说明的同步数字系统。对于每个芯片,主时钟信号CLK1由各自的CLKI+SYNC发生器提供给数字逻辑块的中心时钟再生器。然后,当其通过时钟分配网络传播时,主时钟信号CLK1可以经过附加的时钟再生器。I/O单元可以从时钟分配分支中的最后一个再生器接收时钟信号。

在多芯片系统中,芯片之间的同步通信可以通过共享公共参考时钟输入信号并允许每个芯片上的PLL在I/O电路之间稳定相位关系来实现。这对其中不需要SYNC信号的未分频时钟工作得很好,并且在图17中说明。

图17是说明用于图7的PLL的反馈路径的实施例的框图。环形振荡器和PLL,以及信号CLKREF、CLKRO和HFC可以对应于图7中相同名字的部件和信号。图17的选择和配置电路可以对应于图7的多路复用器M1-M3。在其它实施例中,选择和配置电路可以包括其它电路。

图17的反馈路径在PLL的HFC输出开始,并且与通过分配网络到服务于PLL附近的I/O单元的再生器的主时钟平行。图16说明了主时钟到I/O单元1的示例性路径,其中I/O单元1在CLKI+SYNC发生器附近,其中CLKI+SYNC发生器可以包括PLL。图17的反馈路径包括与由主时钟通过分配网络的路径中再生器造成的缓冲区延迟匹配的缓冲区延迟。传播延迟也是匹配的。信号FEEDBACK_INPUT被提供给PLL反馈输入,其中该信号是在反馈路径的末端出现的高频时钟输出的结果得到的延迟版本。这种反馈具有把位于I/O单元的主时钟信号CLK1的相位与位于PLL的输入时钟参考信号CLKREF对齐的效果。这最小化再生器延迟以及它们随制造、供给电压和操作温度的变化对位于I/O单元的主时钟信号的相位的影响。因此,如果在第一芯片的PLL接收的时钟参考信号CLKREF与在第二芯片的PLL接收的时钟参考信号CLKREF边缘对齐,则位于第一芯片的I/O单元的相应主时钟信号CLK1将与位于第二芯片的I/O单元的相应主时钟信号CLK1边缘对齐。

芯片之间的数据信号可以以许多方式被延迟和变形,并且克服这些问题的一种最简单的解决方案是降低数据率,这也降低每个I/O电路的功耗。在一种实施例中,I/O电路可以具有关联的时钟分频器,诸如图3中所示的。通过更新用于I/O电路的时钟分频器的配置寄存器RegP,数据率可以在I/O电路中在程序控制下被降低。但是,使得两个芯片各自被分频的时钟的相位与CLK1的最近循环对齐需要两个芯片各自的SYNC信号利用CLK1分配到用于I/O电路的时钟分频器,并且还需要各自的SYNC信号在芯片之间同步。

在图5所示的现有技术中,CNT0的Reset(复位)输入可以是来自芯片引脚(SYNC-IN)的输入,并且希望这将使一个芯片成为另一个提供SYNC-OUT的芯片的从属。但是,由于芯片之间的SYNC信号延迟和变形,这是有问题的。因此,对于以由I/O电路中时钟分频器提供的较慢时钟速率的芯片间通信,分频器的复位需要在芯片之间更有效地同步。

时钟分频器不具有不受限的范围(这可能需要不受限的功耗)。对于低功耗应用,2^4=16的范围是有用的。时钟分频器的范围限制还限制PLL时钟倍增因数,如在参考图7的示例性实施例的以下分析中所示出的。

令CLK1的频率是fclk1,并且CLKREF的频率是fclkref。

fclk1=M*fclkref,其中M是PLL倍增因数,通常是2^i,其中i是整数。

通过把CLKREF驱动至由CLK1计时的CNT0的复位输入,我们具有SYNC的最小化频率是:

fsync=fclkref

如果fclk1是fclkref/2或更小,则CNT0不比其复位更快地计数,因此超出0000状态它有效地不计数。

当M=2^i时,这对i放置最小值0,以及M最小值1。

令D0=2^j0是CNT0的翻转计数(rollover count),则:

对于i=0至j0,fsync=fclkref,并且对于i>j0,fsync=fclkref M/D0。

例如,当CNT0固定在4位时,它对于CLK1的每16个脉冲翻转并且发射SYNC脉冲。例如,如果M是32,则SYNC频率将是fclkref的两倍,但是,由于周期性的复位输入,它将保持与CLKREF相位对齐。

在一种实施例中,j0的值可以固定在4,并且PLL倍增器可以在i=4(M=16)固定到时钟CNT0。在更下游,另一个分频器(不在图中)可以在其到芯片剩余部分的途中用2^k去除信号CLK1,其中0<k<4。这可以对芯片的剩余部分降低CLK1(例如,以降低芯片功耗),而不影响CNT0时钟。

如以上所指出的,每个I/O电路可以由包括时钟分频器的时钟再生器提供服务,如图3中所示,使得到I/O电路的输入时钟是利用频率fio被分频的时钟信号:

fio=fclk1/Dio,其中Dio是分频器比率,通常是2^j,其中0<j<jmax。

代换fclk1=Mio*fclkref,我们发现fio依赖性:

fio=fclkref*Mio/Dio,其中Mio是在服务于I/O电路的再生器的比率fclk1/fclkref。

对于分别编号为1和2的两个芯片的I/O电路之间可靠的数据传输,发送和接收时钟速率应当相同:

fio1=fio2。

代换并且用fclkref除以等式的两侧,我们发现Rule1(规则1):

Mio1/Dio1=Mio2/Dio2。

对于SYNC输入的适当时钟分频器使用,每个fio应当大于或等于fsync。

对称设置的例子:Mio1=16,Dio1=2,Mio2=16,Dio2=2。

不对称设置的例子:Mio1=16,Dio1=4,Mio2=8,Dio2=2。

这意味着运行不同核心CLK1速率的两个芯片可以通过使它们的通信I/O时钟分频器遵守Rule1以及以上关于Mio、Dio和fio的最大值和最小值的限制来进行通信。

图18是说明用于同步第一IC芯片和第二1C芯片之间的数字通信的方法实施例的流程图。除其它系统之外,图18中所示的方法还可以结合图6-7和16-17的示例性系统来使用。在一些实施例中,类似的方法可以用于同步更大量芯片之间的数字通信。

在步骤1802中,外部参考时钟信号可以由第一IC芯片和第二IC芯片当中每一个接收。例如,在图16的实施例中,由振荡器OSC1生成的外部参考时钟信号经由每个芯片的CLKREF输入引脚被接收。在一些实施例中,OSC1和两个芯片各自的CLKREF输入引脚之间的相应传播延迟紧密匹配,使得时钟漂移在两个芯片的CLKREF信号之间被最小化。

在步骤1804中,每个芯片可以生成依赖于外部参考时钟信号的各自的高频时钟信号。例如,在一些实施例中,高频时钟信号可以具有是参考时钟的频率的可配置倍数的频率。在图7的示例性实施例中,高频时钟信号HFC由PLL生成,其中PLL接收外部参考时钟信号CLKREF作为输入。PLL可以输出其频率是CLKREF的频率的可配置倍数的信号HFC,如本领域中已知的。

在步骤1806中,每个芯片可以生成依赖于外部参考时钟信号的各自的同步信号,使得第一芯片和第二芯片各自的同步信号由于它们共同依赖于外部参考时钟信号而相位对齐。例如,在图7的实施例中,芯片生成同步信号SYNC,该信号依赖于外部参考时钟信号CLKREF。具体而言,如图7中所说明的,当计数器CNT0输出零计数时,SYNC对于主时钟信号CLK1的一个时钟循环将为高。因为CNT0由主时钟信号CLK1计时,所以SYNC与CLK1边缘对齐。在这种语境下,如果它们的变换周期在时间上重叠,则两个信号是“边缘对齐的”。如果漂移在两个芯片的CLKREF信号之间被最小化,则因为响应于CLKREF的上升边缘,CNT0被信号CLKREFrising复位到零计数,所以两个芯片各自的SYNC信号将由于它们与CLKREF相互相位对齐而彼此相位对齐。在这种语境下,如果它们的变换发生在主时钟信号的同一时钟循环内,则两个信号是“相位对齐的”。

在步骤1808中,每个芯片可以依赖于芯片各自的高频时钟信号而向包括在芯片上的各自的同步数字系统分配各自的主时钟信号。主时钟信号是经由同步数字系统的时钟分配网络,诸如图2中所说明的时钟分配网络,分配的。

芯片可以包括多个I/O单元,如在图16的示例性实施例中所说明的。由于主时钟信号通过时钟分配网络分配到I/O单元,因此它将引起传播延迟,以及由于缓冲区或其它电路引起的延迟。在一些实施例中,时钟分配网络可以被配置为在高频时钟信号与每个I/O单元之间提供统一的延迟,从而最小化由每个I/O单元接收的主时钟的各延迟版本之间的时钟漂移。在最佳情况下,由每个I/O单元接收的主时钟的各延迟版本彼此边缘对齐。可以对同步信号类似地提供统一的延迟。

在步骤1810中,每个芯片可以利用芯片相应的同步信号对相应的主时钟信号分频。频分时钟信号可以具有小于芯片主时钟信号的频率的频率。图3说明了可以在步骤1810中使用的时钟分频器的示例性实施例的框图。如图3中所说明的,时钟脉冲可以利用计数器的任何输出位生成。计数器被同步信号SYNC复位。因为两个芯片各自的SYNC信号彼此相位对齐,所以两个芯片的频分时钟信号将彼此相位对齐。

在步骤1812中,数字通信可以在第一芯片的第一I/O单元和第二芯片的第二I/O单元之间执行。第一I/O单元可以使用第一芯片的频分时钟信号作为时钟,并且第二I/O单元可以使用第二芯片的频分时钟信号作为时钟,如在图16的示例性实施例中所示出的。因为两个芯片的频分时钟信号是至少相位对齐的,所以,如果两个芯片的频分时钟信号共享相同的频率,则两个I/O单元之间的数字通信可以被认为是同步通信。

在一些实施例中,具有反馈路径的PLL,诸如图17中所说明的,可以被用来进一步对齐两个芯片的频分时钟信号。例如,每个芯片上的反馈路径可以与从PLL的HFC输出到时钟分频器的相应主时钟信号平行,其中时钟分频器对相应的主时钟信号进行分频。这种时钟分频器可以位于芯片的I/O单元附近。如以上所讨论的,这可以导致位于第一芯片的I/O单元的相应主时钟信号CLK1与位于第二芯片的I/O单元的相应主时钟信号CLK1边缘对齐。在最佳情况下,因为两个芯片各自的主时钟信号彼此边缘对齐,所以两个芯片的频分时钟信号也将彼此边缘对齐。

因为SYNC不是时钟,而是用于时钟分频器的复位信号,所以,除保持用于每个I/O电路的时钟分频器在HFC的一个循环内同步之外,它不影响I/O电路的时钟漂移。

虽然以上实施例已经联系优选实施例进行了描述,但它不是要限定到本文所阐述的具体形式,相反,它是要覆盖可以合理地包括在如由所附权利要求定义的本发明实施例精神和范围内的此类变更、修改和等价物。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1