首先,我們需要理解什么是時鐘抖動。簡而言之,時鐘抖動(Jitter)反映的是時鐘源在時鐘邊沿的不確定性(Clock Uncertainty)。例如,假定我們現(xiàn)在有一個頻率為100MHz的時鐘,那么時鐘周期就是10ns,理想情況下,時鐘的上升沿將會出現(xiàn)在0ns,10ns,20ns……基于此,如果已知時鐘上升沿出現(xiàn)在30ns,這樣我們就可以得出下一個上升沿將會出現(xiàn)在40ns。但實際情況是,下一個上升沿很可能介于39.9ns到40.1ns之間。也就是說,有0.1ns對時鐘周期構成了影響。就FPGA設計而言,對于抖動我們理解這么多就足夠了。
接下來我們看一下時鐘抖動對時序性能的影響。以經(jīng)典的單周期時序路徑為例(收發(fā)時鐘為同一個時鐘且建立時間Requirement為一個時鐘周期),如下圖所示。
就建立時間而言,基于靜態(tài)時序分析(STA)理論,假定數(shù)據(jù)發(fā)起沿為下圖邊沿1,那么捕獲沿將是邊沿3。如果邊沿1出現(xiàn)在20ns這一時刻,那么邊沿3可能出現(xiàn)在以下兩個時刻:
20+Clock Period+Jitter
20+Clock Period-Jitter
考慮最壞情況,我們應該按照20+Clock Period-Jitter來評估建立時間裕量。換言之,實際的時鐘周期為Clock Period-Jitter。
再看保持時間,發(fā)起沿和捕獲沿都是邊沿1,或都是邊沿3,即發(fā)起沿和捕獲沿是同一時鐘的同一個上升沿,故抖動不會對保持時間裕量產(chǎn)生影響。
基于此,我們可以得出如下結論:對于發(fā)送時鐘和接收時鐘是同一時鐘的單周期路徑,時鐘抖動對建立時間有負面影響,但對保持時間沒有影響。這一點,在Vivado的時序報告中也可以看到。如下圖所示,圖中左側為建立時間時序報告,可以看到Clock Uncertainty,而右側為保持時間時序報告,是沒有Clock Uncertainty。
如果發(fā)送時鐘和接收時鐘是不同時鐘呢?假定發(fā)送時鐘為200MHz,接收時鐘為100MHz,兩者由同一個MMCM生成,故二者為同步時鐘。兩者之間的跨時鐘域路徑可采按多周期路徑進行約束。毋庸置疑,抖動仍然會對建立時間有負面影響。對于保持時間,發(fā)起沿是200MHz時鐘的上升沿,捕獲沿是100MHz的上升沿,不是同一個邊沿,故要將100MHz的時鐘抖動考慮在內。
根據(jù)保持時間的定義:數(shù)據(jù)被時鐘有效沿采樣到之后仍要穩(wěn)定保持一段時間,這個時間即為保持時間??紤]最壞情況,抖動使得時鐘采樣沿后移,意味著數(shù)據(jù)需要保持更長的時間即Th+Jitter。因此,此時,抖動對保持時間也是一種惡化。這一點在Vivado的時序報告中也會有所體現(xiàn)。
審核編輯:劉清
-
FPGA設計
+關注
關注
9文章
428瀏覽量
26518 -
時鐘抖動
+關注
關注
1文章
62瀏覽量
15928 -
STA
+關注
關注
0文章
51瀏覽量
18965
原文標題:時鐘抖動會影響建立時間和保持時間違例嗎?
文章出處:【微信號:Lauren_FPGA,微信公眾號:FPGA技術驛站】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論