时序分析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、术语解释
Tco
对于任何一个时序器件,从时钟触发开始,到器件的输出端输出有效信号为止的这段时间,称为Tco。
缓冲延时(buffer delay)
对于任何一个时序器件,其结构基本都包括内部逻辑电路和输出缓冲器,如图1-1是一个典型的结构图。
图1-1、典型时序器件结构图
输出缓冲的作用是保存输出数据,以及一些电气参数的匹配,比如逻辑模块输出的信号为差分,而输出管脚要求为单端,则需要输出缓冲进行差分到单端的转换。一些器件也会有输入缓冲器,由于延时的计算是以有效时钟触发为始端,所以这里不在讨论。
由此可见,Tco包括了输出缓冲之前的延时和输出缓冲延时两部分。
传播延时(propagation delay)
信号从器件输出后就要经过传输线进行传输,信号在传输线上的延时就称为传播延时。它只与信号传输速度和线长有关。
飞行时间(Flight time)
飞行时间是,接收端的信号电平达到输出端信号电平所需的时间,这里的信号电平是指设计者所关心的信号点,记为Vmeas。
大多数的时序设计里,我们更关心的参数是飞行时间而不是传播延时,包括最大飞行时间和最小飞行时间。飞行时间包含了传播延时和信号上升沿变化这两个因素。图1-2为传播延时和飞行时间波形图,红线为接收端波形,黑色为输出端波形。
图1-2、传播延时和飞行时间
在较轻的负载(如单负载)情况下,驱动端的上升沿几乎和接收端的信号的上升沿平行,所以这时候平均飞行时间和传播延迟相差不大;但如果在重负载(如多负载)的情况下,接收信号的上升沿明显变缓,这时候平均飞行时间就会远远大于信号的传播延迟。这里说的平均飞行时间是指Buffer波形的Vms到接收端波形Vms之间的延时,这个参数只能用于时序的估算,准确的时序分析一定要通过仿真测量最大/最小飞行时间来计算。
最小飞行时间(或称First Switch Delay)和最大飞行时间(或称First Settle Delay)则是指接收端信号第一次达到参考信号电平和最后一次达到参考信号电平作用的时间。而这里的参考信号也和上面定义不同,拿上升沿来说,第一次达到的参考信号电平为最大的低电平阀值(ViL Max),最后一次达到的参考信号电平为最小高电平阀值(ViH Min)。下降沿则反
之。图1-3、为Cadence记录的飞信时间波形图。
图1-3、Cadence记录的飞信时间波形图
建立时间(Setup Time)
通俗讲就是时钟信触发号到来时,要求数据信号必须已经有效了一段时间,这段时间就是建立时间。超出的量就是建立时间裕量。建立时间由器件本身的特性决定。
保持时间(Hold Time)
时钟边沿触发后,数据信号必须要继续保持一段时间,一边能稳定的读取,这段时间就是保持时间。超出的量就是保持时间裕量。保持时间由器件本身的特性决定。
抖动(Jitter)
所谓抖动,就是指两个时钟周期之间存在的差值,这个误差是在时钟发生器内部产生的,和晶振或者PLL内部电路有关,布线对其没有影响,如图1-4。
图1-4、时钟抖动示意图
偏移(Skew)
时钟偏移(skew)是指两个相同的系统时钟之间的偏移。它表现的形式是多种多样的,既包含了时钟驱动器的多个输出之间的偏移,也包含了由于PCB 走线误差造成的接收端和驱动端时钟信号之间的偏移。
2、普通同步时序系统
图2-1为一普通时钟系统示意图
图2-1、普通时钟系统示意图
以该系统为例来具体讨论下系统时序需要满足的一些基本条件,相应的时序分析示意图如下:
图2-2、时序分析示意图
在上面的时序图中,存在两个时序环,我们称实线的环为建立时间环,而虚线的环我们称之为保持时间环。可以看到,这两个环都不是闭合的,缺口的大小就代表了时序裕量的多少,因此设计者总希望尽可能增大这个缺口。同时还要注意到,每个环上的箭头方向不是一致的,而是朝着正反两个方向,因为整个系统时序是以时钟上升沿为基准的,所以我们时序环的起点为系统时钟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 - Tcodata - Tflt data - Tsetup
我们定义时钟驱动器(PLL)的两个时钟输出之间的偏移为TclockSkew ,两根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,我们可以同样的进行分析:
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。
3、源同步时序系统
图3-1为源同步时序系统的结构示意图