什么叫做真正的理解setup time/hold time呢?
聽我道來。
就是要講明白的setup time和hold time,都知道setup time的公式是
Tclk > Tcq + Tcomb + Tsetup - Tskew
hold time的公式是
Thold < Tcq + Tcomb - Tskew
那么這兩個公式是怎么來的呢?就是我要說明的問題
在我下面所舉的例子中,Tsetup和Thold都是針對DFF2而言的,而符號含義如下
Tclk = Frequency of clock Tcq = Flop clock to Flop q delay Tcomb = Delay on the combinational logic between the Flops Tsetup = Required setup time of a Flop Thold = Required hold time of a Flop Tskew = Delay between clock edges of two adjacent flops(本例中,是CLK2落后於CLK1的時間)
方便說明時序圖給上
(1)setup time
先來看setup time,這時其實要看的是由於p1導致的DFF1的Q端變化在DFF2的D端需要提前Tsetup時間穩定下來
就是以DFF1的p1時刻為基准,數據需要在DFF2的p3時刻采的時候滿足Tsetup的要求
那么以DFF1的p1時刻為基准的話,從p1時刻DFF1的值傳到DFF2的D端需要的時間就是(Tcq + Tcomb)
那么對於DFF2而言,下一個上升沿來臨的時刻相對於p1時刻而言是(Tclk + Tskew),得到如下式子
(Tclk + Tskew) - (Tcq + Tcomb) > Tsetup
化簡即得到平日所見的公式
Tclk > Tcq + Tcomb + Tsetup - Tskew
(2)hold time
對於hold time,即是相對於DFF2的D端而言,p2時鍾沿來了之后,不要立刻影響到p3采到的數據,使得p3能正常的采得數據,而p2來臨之后,傳遞到D端時間還是(Tcq + Tcomb)
而這就是要求變化的慢一點,要在p3這個沿之后來才好,那么算上要求的Thold,則需要D端至少保持(Thold + Tskew)這么長的時間,即是
Tcq + Tcomb > Thold + Tskew
經過化簡,得到平日里所用的公式
Thold < Tcq + Tcomb - Tskew
這就是setup time/ hold time的公式的由來,理解起來還算不太難,但是就是一開始都是沒有很深刻的理解