本文关键字:
6.1.2 时序约束条件下面来具体讨论一下系统时序需要满足的一些基本条件。我们仍然以图1-6-1的结构为例,并可以据此画出相应的时序分析示意图(图1-6-8)。
在上面的时序图中,存在两个时序环,我们称实线的环为建立时间环,而虚线的环我们称之为保持时间环??梢钥吹?,这两个环都不是闭合的,缺口的大小就代表了时序裕量的多少,因此设计者总希望尽可能增大这个缺口。同时还要注意到,每个环上的箭头方向不是一致的,而是朝着正反两个方向,因为整个系统时序是以时钟上升沿为基准的,所以我们时序环的起点为系统时钟clk in的上升沿,而所有箭头最终指向接收端的控制时钟CLKC的边沿。
先来分析建立时间环:
缺口的左边的半个时序环代表了从第一个系统时钟上升沿开始,直到数据传输至接收端的总的延时,我们计为数据延时,以Tdata tot表示:
Tdata tot =Tco clkb+Tflt clkb +Tco data +Tflt data
上式中:Tco clkb是系统时钟信号CLKB在时钟驱动器的内部延迟;Tflt clkb 是CLKB从时钟驱动器输出后到达发送端(CPU)触发器的飞行时间;Tco data是数据在发送端的内部延迟;Tflt data是数据从发送端输出到接收端的飞行时间。
从CLKC时钟边沿的右边半个时序环代表了系统时钟到达接收端的总的沿时,我们计为时钟延时,以Tclk tot表示:
Tclk tot =Tcycle +Tco clka +Tflt clka – Tjitter
其中,Tcycle是时钟信号周期;Tco clka 是系统时钟信号CLKA(第二个上升沿)在时钟驱动器的内部延迟;Tflt clka是时钟信号从时钟驱动器输出到达接收端触发器的飞行时间;Tjitter是时钟的抖动误差。
因此我们可以根据建立时间裕量的定义,得到:
Tsetup margin = Tclk tot – Tdata tot – Tsetup
将前面的相应等式带入可得:
Tsetup marin = Tcycle + Tco clka + Tflt clka – Tjitter – Tco clkb – Tflt clkb – Tco data – Tflt data – Tsetup
我们定义时钟驱动器(PLL)的两个时钟输出之间的偏移为Tclock Skew ,两根CLOCK走线之间的时钟偏移为TPCB Skew ,即:
Tclock Skew = Tco clkb - Tco clka;TPCB Skew = Tflt clkb - Tflt clka
这样就可以得到建立时间裕量的标准计算公式:
Tsetup marin =Tcycle – TPCB skew –Tclock skew –Tjitter – Tco data – Tflt data-Tsetup (1.6.1)
再来看保持时间环:
对照图1-6-8,我们可以同样的进行分析:
Tdata delay = Tco clkb + Tflt clkb + Tco data + Tflt data
Tclock delay = Tco clka + Tflt clka
于是可以得出保持时间裕量的计算公式:
Thold margin = Tdata delay – Tclock dalay – Thold time
即: Thold margin = Tco data + Tflt data + Tclock skew + Tpcb skew – Thold (1.6.2)
可以看到,式1.6.2中不包含时钟抖动Jitter的参数。这是因为Jitter是
指时钟周期间(Cycle to Cycle)的误差,而保持时间的计算和时钟周期无关。
对于任何时钟控制系统,如果要能保证正常工作,就必须使建立时间余量和保持时间裕量都至少大于零,即Tsetup marin >0;Thold margin >0,将公式1.6.1和1.6.2分别带入就可以得到普通时钟系统的时序约束条件不等式:
TPCB skew +Tclock skew +Tjitter + Tco data + Tflt data+Tsetup < Tcycle (1.6.3)
Tco data + Tflt data + Tclock skew + Tpcb skew > Thold (1.6.4)
需要注意的是:
1.数据在发送端的内部延时Tco data可以从芯片的datasheet查到,这个值是一个范围,在式1.6.3中取最大值,在式1.6.4中取最小值。
2.数据在传输线上的飞行时间Tflt data在实际计算中应该取最大/最小飞行时间参数,在式1.6.3中取最大飞行时间,在式1.6.4中取最小飞行时间。
3.时钟的偏移TPCB skew和Tclock skew也是一个变化的不确定参数,一般为+/-N ps,同样,在建立时间约束条件1.6.3中取+Nps,而在保持时间约束条件1.6.4中取-Nps。
从上面的分析可以看到,对于PCB设计工程师来说,保证足够稳定的系统时序最有效的途径就是尽量减小PCB skew和信号传输的飞行时间,而其它的参数都只和芯片本身的性能有关。实际中经常采取的措施就是严格控制时钟和数据的走线长度,调整合理的拓补结构,并尽可能减少信号完整性带来的影响。然而,即便我们已经考虑的很周全,普通时钟系统的本身的设计瓶颈始终是无法打破的,也就是建立时间的约束,我们在尽可能减少由PCB布线引起的信号延迟之外,器件本身的特性如Tco、Jitter、TSetup等等将成为最主要的制约因素,尽管我们可以通过提高工艺水平和电路设计技术来不断提高数字器件的性能,但得到的效果也仅仅是在一定范围之内提升了系统的主频,在频率超过300MHz的情况下,我们将不得不放弃使用这种普通时钟系统设计。
6.2 源同步时序系统针对普通时钟系统存在着限制时钟频率的弊端,人们设计了一种新的时序系统,称之为源同步时序系统。它最大的优点就是大大提升了总线的速度,在理论上信号的传送可以不受传输延迟的影响。下面我们来看看这种源同步时钟系统的结构。
6.2.1 源同步系统的基本结构图1-6-9是一个基本的源同步时钟系统的结构示意图??梢钥吹?,驱动芯片在发送数据信号的同时也产生了选通信号(Strobe),而接收端的触发器由该选通信号脉冲控制数据的读取,因此,这个选通信号也可以称为源同步时钟信号。
源同步时钟系统中,数据和源同步时钟信号是同步传输的,我们保证这两个信号的飞行时间完全一致,这样只要在发送端的时序是正确的,那么在接收端也能得到完全正确的时序。整个系统在时序上的稳定性完全体现在数据和选通信号的匹配程度上,包括传输延迟的匹配,器件性能的匹配等等,只要两者条件完全相同,那么我们就可以保证系统的时序绝对正确,而对系统的最高时钟频率没有任何限制。
当然,对于任何数据接收来说,一定的建立和保持时间都是必须满足的,源同步时钟系统也同样如此,主要体现在数据信号和选通信号之间的时序要求上。最理想的情况就是选通信号能在数据信号的中央部分读取,如图1-6-10所示,这样才能保证最充分的建立和保持时间。
为了保证选通信号和数据信号相对保持正确的时序,在源同步时钟系统中是通过驱动芯片内部的数字延时器件DLL来实现(见图1-6-9),而不是通过PCB走线来控制,因为相比较而言,DLL器件能做到更为精确的延时,同时还可以受芯片电路控制,调节起来更为方便。
6.2.2 源同步时序要求前面已经提到源同步时钟系统设计中最重要的一点就是保证data和strobe信号之间的偏移(Skew)最小,引起这些误差的最主要的因素就是实际系统中各器件的时序参数Tco的不同,此外还有布线上引起的差异,为了更好地说明这些Skew对时序的具体影响,下面我们还是通过时序图分析的方法来计算一下源同步时钟系统中信号的建立时间裕量和保持时间裕量。
首先考虑建立时间裕量:
和普通时序分析的方法一下,我们也是从建立时间环的角度考虑,参考1-6-9的结构图,我们可以作出驱动端和接收端的时序示意图(1-6-11)。
Tdata = Tco data +Tflt data
Tstrobe = Tco strobe + Tflt strobe + Tdelay
其中,Tco和Tflt分别代表数据/选通信号在器件的内部延迟和信号传输的飞行时间,Tdelay是指数据信号和选通信号之间的延迟,由系统内DLL延时器件决定,图中假设为一个时钟周期。
将上式带入建立时间裕量的计算公式:Tsetup margin = Tclk – Tdata– Tsetup
可以得到:
Tsetup margin =(Tco strobe + Tflt strobe + Tdelay)- (Tco data + Tflt data) – Tsetup
如果我们将数据和Strobe信号在器件内的延时差异定义为Tvb;将PCB走线引起的延时差异定义为Tpcb skew:
Tvb = Tco data– (Tco strobe + Tdelay)
Tpcb skew = Tflt data – Tflt strobe
这样可以得到一个简单的建立时间裕量方程:
Tsetup margin = - Tvb – Tsetup – Tpcb skew (1.6.5)
注意:公式1.6.5中Tvb是一个负值,从公式中可以看出,如果数据和选通信号的Tco相同的话,其大小就是- Tdelay ,也就说明数据信号必须提前于选通信号发送。
再考虑保持时间裕量,如图1-6-12,同样分析可以得到:
Thold margin = (Tco data + Tflt data + Tdelay) – (Tco strobe + Tflt strobe) – Thold
如果定义:Tva = Tco data – Tco strobe + Tdelay,为正值;Tpcb skew定义不变。则保持时间裕量的计算公式为:
Thold margin = Tva – Thold – Tpcb skew (1.6.6)
在公式1.6.5和1.6.6中,两个重要的参数是Tvb和Tva,Tvb表示“Valid before”,即数据在选通脉冲前有效存在的时间;Tva表示“Valid after”,指选通信号脉冲之后数据仍然有效持续的时间。这两个时序参数一般都可以在器件的datasheet上会找到。
和普通时钟系统相比,源同步总线在PCB布线的设计上反而更为方便,设计者只需要严格保证线长的匹配就行了,而不用太多的考虑信号走线本身的长度。当然,尽管源同步数据传输在理论上突破了频率的限制,但随着频率的提高,在控制Skew上也变得越来越困难,尤其是一些信号完整性因素带来的影响也越发显得突出,而且目前的高速系统设计中,往往综合应用了普通时钟和源同步时钟技术,比如对于地址/控制信号采用普通时钟总线,而高速的数据传输则是采用源同步总线。这些对于高速PCB设计分析人员来说是一个非常严峻的挑战。