感觉过了好久。。一直在忙核磁共振的数据分析。今天继续之前的话题,就是关于触发器FF的时序分析问题。为什么要分析FF的时序?答案很简单-FF不是要接受一个时钟信号么~那个时钟的延迟和FF内部的延迟关系怎么决定,我们怎么优化速度?所以就用这个时序分析的手法来解决。看例子:

 这里假设实际中给上几节里介绍的D触发器提供如下图的时序和数据输入(注意图的水平方向是时间轴,省略不画)

2.3触发器时序分析与抽象_触发器

不要说这个图看不懂~解释一下:在t1时刻CLK处于上升沿,同时无数据(或数据0)输入。t1到t3之间CLK保持高电平,而D在t2时刻开始有数据输入。。。。以此类推。现在看看Latch和FF的输出Q都是怎么变化的。这里为了大家方便,把上节的图拿过来:


2.3触发器时序分析与抽象_核磁共振_02

开始分析Latch

Step1:t1时刻以前: CLK=0--也就是闭锁状态,D=0,~D=1.R=0,S=0.所以Q=0或1(SR锁记忆初始的Q值)

Step2:t1时刻到t2时刻: t1临界时刻:CLK从0到1转变时,这个转变通过AND门但是必须经历一段延迟。此时由于D不发生变化,所以~D=0。

t1到t2时间:CLK过了AND的延迟CLK传播到R输出,此时R=1,S=0,所以Q输出0

Step3:t2到t3:t2临界时刻:CLK保持1,即Latch开放状态,此时D开始转变。而~D经过一段NOT门延时后进行变化,在经过一个AND延时后影响R输出。

t2到t3时间:D经过传播延迟后影响了R和S输出。此时R=0,S=1,也就是Q=1

Step4:t3临界:CLK从1正在转向0此时由于还没有影响R或S所以输出无变化

。。。。剩下的交给大家

同样开始分析FF:

2.3触发器时序分析与抽象_高电平_03

Step1:t1时刻以前: CLK=0 master的锁开放.输入D为0根据上面的Latch分析,master里的R输出为1,所以master的Q为0,通过导线N

传播给slave。所以此时slave的CLK和D均为0,最终输出记录Slave的初始状态(0或1)。

Step2:t1时刻到t2时刻: t1临界时刻:CLK从0到1转变时,这个转变通过NOT门,master的AND门 经历一段延迟。此时由于D不发生变化,所以master的Q暂时保持原值。

t1到t2时间:CLK=0过了AND的延迟CLK传播到master的R输出,此时R=0,S=0,所以master的Q输出上一次的0。而此时slave的CLK=1,D=0所以slave的R被设定,导致输出结果为0.

Step3:t2到t3:t2临界时刻:CLK保持1,master无动作,此时D开始转变。而此时master闭锁,所以D就是逆天也改不了最终输出。

t2到t3时间:无影响。。。

Step4:t3临界:master开锁,由于D为1所以master的S被设定,导致master的Q=1但是Slave闭锁,所以输出仍无影响。。

。。。。剩下的交给大家


最后总结一下时序图:

2.3触发器时序分析与抽象_核磁共振_04这里注意Q(flop)图中的一个上升沿,如果能明白那个上升沿是t3时刻存进去的就算过关了。

总而言之~FF只在时钟上升沿的时候拷贝数据D而Latch则是只要CLK=1时候就会记录D的变化

下面我给出一个习题,大家复习时序分析:

2.3触发器时序分析与抽象_核磁共振_05画出其时序图~