做數(shù)字電路設(shè)計(jì)的可能都見(jiàn)過(guò)圖一所示的setup和hold時(shí)間檢查,從圖中可以明顯看出,setup time檢查下一個(gè)沿,而hold time檢查同一個(gè)沿。那么這是為什么呢 ?
圖1
數(shù)字電路的工作原理
以數(shù)字電路設(shè)計(jì)常見(jiàn)的狀態(tài)機(jī)為例,下一個(gè)狀態(tài)的值總是由當(dāng)前狀態(tài)加一些判斷條件決定。為了保證下一個(gè)狀態(tài)值的正確,新的狀態(tài)值要在下一個(gè)時(shí)鐘沿被正確采樣,同時(shí)不能被當(dāng)前時(shí)鐘沿采樣。
因此,setup time 的檢查是為了保證數(shù)據(jù)在下一個(gè)時(shí)鐘沿被正確采樣,而 hold time 的檢查是保證數(shù)據(jù)不被當(dāng)前沿采樣或破壞,滿足了這兩點(diǎn),數(shù)字電路便能正常工作。
Hold Time Violation
考慮一個(gè)兩級(jí)移位寄存器,其launch clock 和 capture clock如圖2所示。可以看到clock skew非常大,大于半個(gè)時(shí)鐘周期。假設(shè)數(shù)據(jù)的延遲小于半個(gè)時(shí)鐘周期,那么 hold time 的檢查公式必然不滿足, 即 Tcq + Tcomb < Tclk_skew + Thold。
對(duì)于這個(gè)兩級(jí)移位寄存器,我們希望的值是 00(cycle0), 01(cycle1), 10(cycle2),00(cycle3)。但是由于第二級(jí)寄存器有hold time violation,數(shù)據(jù)在當(dāng)前沿就被采樣,那么我們實(shí)際看到的值為 00(cycle0),11(cycle1),00(cycle2),00(cycle3),完全是錯(cuò)誤的結(jié)果。
圖2
時(shí)序違反一定會(huì)有亞穩(wěn)態(tài)發(fā)生嗎
不一定。寄存器進(jìn)入亞穩(wěn)態(tài)有兩個(gè)前提條件,一是數(shù)據(jù)要發(fā)生變化,二是數(shù)據(jù)的變化要發(fā)生在setup time和hold time限制的范圍內(nèi)。以上述圖2為例,假設(shè)數(shù)據(jù)的變化沒(méi)有出現(xiàn)在setup和hold time限制的范圍內(nèi),盡管是有hold time violation,也是沒(méi)有亞穩(wěn)態(tài)發(fā)生的。
-
寄存器
+關(guān)注
關(guān)注
31文章
5294瀏覽量
119816 -
數(shù)字電路
+關(guān)注
關(guān)注
193文章
1595瀏覽量
80379 -
Setup
+關(guān)注
關(guān)注
0文章
30瀏覽量
11957
原文標(biāo)題:為什么setup檢查下一個(gè)沿而hold檢查當(dāng)前沿
文章出處:【微信號(hào):FPGA開(kāi)發(fā)之路,微信公眾號(hào):FPGA開(kāi)發(fā)之路】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論