D触发器建立和保持时间的时序检查

时间:2022-10-20 08:14:27

D触发器建立和保持时间的时序检查

摘 要:目前的芯片系统越来越复杂,对应的各个功能模块都有自己工作的时钟领域。当各个功能模块之间进行数据传递时,信号就会跨时钟领域。信号跨时钟领域进行传输时,就会出现亚稳态现象,可能导致整个芯片功能的错误。针对不同信号跨时钟领域,本文介绍了几种同步的设计方法。

关键词:亚稳态 建立时间 同步设计 时钟领域

一、D触发器建立时间和保持时间

在芯片设计中,电路主要由门电路和D触发器构成。D触发器的特性方程为:Qn+1=D,即在触发时钟脉冲(CLK)的有效边沿到来时,触发器的输入数据D直接传送到触发器的输出端Q[1]。而在时钟触发边沿输出端Q能正确的输出D的值的前提条件是:输入信号D必须先于时钟有效沿到来之前稳定。如果时钟有效沿到来时,输入信号D正在变化,D触发器的输出状态就会变得不确定,即就会有亚稳态的出现。

输入信号必须先于时钟脉冲之前稳定的时间成为建立时间,用tset表示;同样为了保证触发器可靠翻转,输入信号的状态在时钟脉冲信号到来后还必须保持足够长的时间不变,这段时间成为保持时间,用th表示。如图1所示以接收“1”时的情况来看,D信号先于CLK上升沿建立起来(由0跳变到1)的时间不得小于建立时间tset,而在CLK上升沿到来后D仍保持“1”的时间不得小于保持时间th。

建立时间和保持时间是由触发器的电路结构决定的。图2所示为上升沿触发的CMOS集成的D触发器的电路结构图。其中由6个CMOS反相器和4个CMOS传输门组成,I2、I3和T2构成主锁存器;I4、I5和T4构成从锁存器。四个传输门中T1和T3在时钟脉冲CLK为“1”的时候导通,T2和T4在时钟脉冲CLK为“0”的时候导通。

在时钟脉冲为“0”的时候,主锁存器接收输入信号D,从锁存器输出之前保存的信号到Q端;上升沿之后,时钟脉冲为“1”,此时主锁存器输出上升沿到来时D的值直接到Q端,从锁存器不工作,如图3所示。

如图3红色线条所示,时钟脉冲从“0”跳变为“1”的上升沿时刻,传输门T1从导通跳变为截止状态。所以在时钟脉冲上升沿到来之前,输入信号必须传输到I3门的输出端A点,上升沿跳变之后T2导通,信号才能稳定的输出到Q端[2]。这段时间即为建立时间,由I1、T1、I2和I3四个门电路的延迟时间决定:

Tset=tI1+tT1+tI2+tI3 (式1)

通过减小四个门电路的延迟时间就可以减小D触发器的建立时间。

时钟脉冲信号从“0”跳变为“1”时,传输门T1从导通跳变为截止状态,在此跳变过程中,D的输入信号不能改变,否则会影响到跳变之前锁存在主锁存器中的值。即此触发器的保持时间由T1传输门从导通到截止的延迟时间和I1反相器的传输延迟时间决定:

th=tT1_close-open-tI1 (式2)

二、带同步复位和置位信号的D触发器的建立时间和保持时间

同步复位和置位信号的D触发器的内部结构图如图4所示。复位信号reset和置位信号set都是在时钟脉冲的上升沿的时候才会有效,即和时钟脉冲同步。其中复位信号为低有效,即reset为“0”时在时钟脉冲的上升沿到来的时候将Q端复位为“0”;当复位信号为“1”无效时,置位信号为高有效,即为“1”的时候且复位信号为“1”无效时,在时钟脉冲的上升沿到来的时候将Q输出端置位为“1”。由此可以看出复位信号和置位信号的优先级别为复位信号reset的优先级别高于置位信号。其特性表如表1所示。

当复位信号和置位信号都无效时,实现基本的上升沿触发的D触发器的功能。根据前面的分析,同样可以得到带同步置位和复位信号的D触发器的建立时间和保持时间分别为:

从式3和式4可以看出,带同步置位和复位信号的D触发器的建立时间变大了,相应的其保持时间减小了。

三、带异步复位和置位信号的D触发器的建立时间和保持时间

异步复位和置位信号的D触发器的内部结构图如图5所示。当复位信号reset或置位信号set有效时不需要时钟脉冲的触发沿就可以实现将Q输出端置“0”和置“1”的功能,这就是异步的意思。其特性表如表2所示。

表2 带异步置位和复位信号的D触发器特性表

从表2中可以看出,当set为“0”,reset为“1”时,实现异步置“1”的功能;当reset为“0”时,不管set的值为多少,实现异步置“0”的功能。所以可以得出的结论是reset的优先级别高于set信号。

当复位信号和置位信号都无效时,实现基本的上升沿触发的D触发器的功能。带异步置位和复位信号的D触发器的建立时间和保持时间分别为:

四、D触发器时序检查

用Verilog可以对D触发器的建立时间和保持时间做检查。调用对应的系统任务,如系统任务$setup在数据变化到时钟沿的时差小于设定的值,就会有一个违反检查规则的报告信息。其用法为:

$setup(data,posedge CLK,4);

设置了检查数据data对于时钟脉冲CLK的上升沿,建立时间设置值为4ns,即当data变化在时钟上升沿之前的4ns之内,就会有错误的报告。系统任务$hold用来检查保持时间,用法如下:

$hold(posedge CLK,data,3);

设置了检查数据data对于时钟脉冲CLK的上升沿,保持时间设置值为3ns,即当data变化在时钟上升沿之后的3ns之内,就会有错误的报告。

系统任务的写法为固定,对于时钟脉冲可以上升沿也可以用下降沿,和D触发器的触发沿相同。以上设置的检查规则为在时钟上升沿的前4ns和时钟上升沿后的3ns时间内,输入数据data都不能翻转。

以上情况建立时间和保持时间都大于0。但从建立时间的表达式可以看出,建立时间一定为正的值;而从保持时间式子可以看出,保持时间有可能为负值。如式6所示,如果tI1大于tT1_close-open,最后得到的保持时间则为负值。接下来来讨论一下如果保持时间为负值时,时序检查应该怎么进行。

如图6所示,建立时间为4ns,保持时间为-2ns。保持时间是在时钟脉冲上升沿的后面,如果为负值则在时钟脉冲上升沿的前面。用前面建立时间和保持时间的系统任务,则检查的窗口为时钟脉冲上升沿前面的4ns内data都不能改变,而实际检查只需要检查红色箭头指示的2ns的时间窗口就可以了,所以针对这种情况,我们应该用$setuphold系统任务来实现,写为:

$setuphold(posedge CLK,data,4,-2);

五、结论

在对设计进行合成的时候,需要满足时序要求。建立时间的满足需要两个触发器之间的组合逻辑延时越小越好,而保持时间要求两个触发器之间的组合逻辑延迟时间越大越好,它们是相互矛盾的。所以会出现建立时间和保持时间只能满足一个的情况,这样就只能调整设计。

在真正的设计中,通常都将建立时间设定为正值,将保持时间设定为负值,这样合成软件就可以全力化简触发器之间的组合逻辑以满足建立时间的要求。

参考文献

[1]余孟尝. 数字电子技术基础简明教程[M]. 北京:高等教育出版社,2006,229~268.

[2]尼尔H.E.威斯特,大卫.哈里斯.CMOS大规模集成电路设计[M].北京:机械工业出版社,2005,402~410.

作者简介:周莉 , 出生年月:1983年12月 学位:硕士 工作单位:四川大学锦城学院。

上一篇:村官开网店,乡亲有钱赚 下一篇:浅析国有矿山企业人力资源管理中存在的问题和...