Verilog 建立時間和保持時間

2022-05-20 14:44 更新

關鍵詞: 建立時間, 保持時間

對于數字系統(tǒng)而言,建立時間(setup time)和保持時間(hold time)是數字電路時序的基礎。數字電路系統(tǒng)的穩(wěn)定性,基本取決于時序是否滿足建立時間和保持時間。所以,這里用一整節(jié)的篇幅,來詳細的說明建立時間和保持時間的概念。

基本概念

建立時間就是時鐘觸發(fā)事件來臨之前,數據需要保持穩(wěn)定的最小時間,以便數據能夠被時鐘正確的采樣。

保持時間就是時鐘觸發(fā)事件來臨之后,數據需要保持穩(wěn)定的最小時間,以便數據能夠被電路準確的傳輸。

可以通俗的理解為:時鐘到來之前,數據需要提前準備好;時鐘到來之后,數據還要穩(wěn)定一段時間。建立時間和保持時間組成了數據穩(wěn)定的窗口,如下圖所示。


《Verilog 門延遲》中已經介紹過一種簡單的 D 觸發(fā)器。下面再看一種典型的上升沿 D 觸發(fā)器,來說明建立時間和保持時間的由來。


G1~G4 與非門是維持阻塞電路,G5~G6 組成 RS 觸發(fā)器。

時鐘直接作用在 G2/G3 門上,時鐘為低時 G2/G3 通道關閉,為高時通道打開,進行數據的采樣傳輸。

但數據傳輸到 G2/G3 門之前,會經過 G4/G1 與非門,將引入時間延遲。引入建立時間的概念,就是為了補償數據在 G4/G1 門上的延遲。即時鐘到來之前,G2/G3 端的輸入數據需要準備好,以便數據能夠被正確的采樣。

數據被時鐘采樣完畢后,傳輸到 RS 觸發(fā)器進行鎖存之前,也需要經過 G2/G3 門,也會引入延遲。保持時間就是為了補償數據在 G2/G3 門上的延遲。即時鐘到來之后,要保證數據能夠正確的傳輸到 G6/G5 與非門輸入端。

如果數據在傳輸中不滿足建立時間或保持時間,則會處于亞穩(wěn)態(tài),導致傳輸出錯。

約束條件

建立時間約束條件

下圖是一個典型的觸發(fā)器到觸發(fā)器之間的數據傳輸示意圖。其中 "Comb" 代表組合邏輯延遲,"Clock Skew" 表示時鐘偏移,數據均在時鐘上升沿觸發(fā)。


時鐘到來之前,數據需要提前準備好,才能被時鐘正確采樣,要求數據路徑 (data path) 比時鐘路徑 (clock path)更快,即數據到達時間(data arrival time)小于數據要求時間(data required time)。則建立時間需要滿足的表達式為:

Tcq + Tcomb + Tsu <= Tclk + Tskew (1)

各個時間參數說明如下:

  • ?Tcq?: 寄存器 clock 端到 Q 端的延遲;
  • ?Tcomb?: data path 中的組合邏輯延遲;
  • ?Tsu?: 建立時間;
  • ?Tclk?: 時鐘周期;
  • ?Tskew?: 時鐘偏移。

對上式進行變換,則理論上電路能夠承載的最小時鐘周期和最快時鐘頻率分別為:

最小時鐘周期 = Tcq + Tcomb + Tsu - Tskew
最快時鐘頻率 = 1 / (Tcq + Tcomb + Tsu - Tskew)

保持時間約束條件

時鐘到來之后,數據還要穩(wěn)定一段時間,這就要求前一級的數據延遲(data delay time)不要大于觸發(fā)器的保持時間,以免數據被沖刷掉。則保持時間需要滿足的表達式為:

Tcq + Tcomb >= Thd + Tskew (2)

各個時間參數說明如下:

  • ?Tcq?: 寄存器 clock 端到 Q 端的延遲;
  • ?Tcomb?: data path 中的組合邏輯延遲;
  • ?Thd?: 保持時間;
  • ?Tskew?: 時鐘偏移。

由式 (1) (2) 可以推導出時鐘偏移、組合邏輯延遲及時鐘周期的約束。

建議大家只需要記住這 2 個最基本的約束條件表達式,需要求取其他參數約束時,再進行推導,以免各種推導造成記憶混亂。

建立時間與保持時間時序圖

一個關于建立時間和保持時間的復雜時序圖如下所示。

其中,綠色部分表示建立時間的裕量(margin),藍色部分表示保持時間的裕量。時間裕量,其實就是電路在滿足時序約束的條件下,不等式 (1) 或 (2) 兩邊時間的差值。

建立時間裕量為:(時鐘路徑時間)-(數據路徑時間)
保持時間裕量為:(數據延遲時間) - (保持時間 + 時鐘偏移)

該圖只是便于理解建立時間和保持時間約束條件的推導。如果這里會造成記憶混亂,建議不要深究(^_^)。


計算舉例

為更好的理解建立時間和保持時間的概念,也為面試或工作提供方便,這里列舉一些典型的建立時間和保持時間的試題,以供參考。

例1:

考慮線網延遲,某電路各種延遲值(單位:ns)如下,時鐘周期為 15ns,請判斷該電路的建立時間和保持時間是否存在 violation ?


解:

這里涉及了延遲值的最大值和最小值。

因為要求時序約束恒成立,所以式 (1) (2) 的變形為:

max (data path time) <= min (clock path time)
min (data delay time) >= max (Thd + Tskew)

建立時間檢查:

max (data path time) = 2 + 11 + 2 + 9 + 2 + 2 = 28ns
min (clock path time) = 15 + 2 + 5 + 2 = 24ns

因此建立時間存在 violation。

保持時間檢查:

min (data delay time) = 1 + 9 + 1 + 6 + 1 = 18ns
max (Thd + Tskew) = 3 + 3 + 9 + 2 = 17ns

因此保持時間不存在 violation,裕量(margin)為 1ns。

此例不能生硬的去照搬建立時間和保持時間的表達式,而要從數據路徑、時間路徑、數據延遲等概念去建立約束條件。所以,各種時序約束條件還要根據實際電路去分析。

例2:

一道知名公司的面試題:時鐘周期為 T, 第一級觸發(fā)器 D1 建立時間最大值為 T1max,最小值為 T1min。組合邏輯最大延遲為 T2max, 最小值為 T2min。問:第二級觸發(fā)器 D2 的建立時間和保持時間應該滿足什么條件?

解:

第二級的建立時間和保持時間和第一級觸發(fā)器沒有直接關系,所以這里的 T1max 和 T1min 是迷惑項。

例題中也沒有給出時鐘到 Q 端的延遲和時鐘偏移,這里也不用考慮。

結合例 1 的指示,所以 D2 建立時間 Tsu 和保持時間 Thd 應該滿足:

T2max + Tsu <= T
T2min >= Thold

Tsu <= T - T2max
Thold <= T2min

此例中很多延遲類型沒有考慮。建立時序約束條件時,還需要根據已知條件懂得取舍。

例3:

一種簡單的分頻電路如下所示。該觸發(fā)器建立時間為 3ns, 保持時間為 3ns, 邏輯延遲為 6ns,兩個反相器延遲為 1ns,連線延遲為0。則該電路的最高工作頻率是多少?


解:

這里的邏輯延遲要理解為時鐘端到 Q 端的延遲,一定要注意不是電路中的組合邏輯延遲。

因為觸發(fā)器 Q 端和 D 端連接,可以理解為兩個觸發(fā)器直接進行傳輸,所以 data path 沒有組合邏輯延遲,只有一個反相器延遲。

因為只有一個鐘,所以也沒有時鐘偏移,clock path 的反相器延遲也是迷惑項。

所以,時序約束條件為:

Tcq + Tbuf + Tsu <= Tclk

可得該電路最高工作頻率為:

1 / (6ns + 1ns + 3ns) = 100Mhz。

此例是一個觸發(fā)器自身到自身的反饋,一定要分析好數據路徑和時鐘路徑,下面再看一道此類型的擴展例題。

例4:

  1. 以下電路固有的建立時間和保持時間?
  2. 該電路最高的工作頻率?


解:

該電路數據路徑和時鐘路徑上均有延遲,為達到與觸發(fā)器相同建立時間和保持時間的條件約束,則觸發(fā)器 D 端和時鐘端 CK,以及等效的數據端 Data 和時鐘端 Clock 時序圖如下(我已經很努力在往簡潔的方向上畫了~_~):


  1. 由圖可知:
  2. 該電路固有的建立時間為:2.1 + 2 - 1.2 = 2.9ns

    固有的保持時間為:1.2 + 1.5 - 2.1 = 0.6ns

    由此可知,數據路徑的延遲會增加電路固有的建立時間,但是會減少電路固有的保持時間。而時鐘偏移會減少電路固有的建立時間,增加電路固有的保持時間。

    偷偷告訴你,求取電路固有的建立時間和保持時間,其實就是求取時間裕量的過程。

  3. 此電路仍然是自身到自身的反饋電路。所以沒有時鐘偏移,也無需考慮 T1= 0.9ns 的延遲。所以最高工作頻率為: 1 / (1.8 + 1.2 + 2)ns = 200MHz


以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號