Verilog 建立時(shí)間和保持時(shí)間

2022-05-20 14:44 更新

關(guān)鍵詞: 建立時(shí)間, 保持時(shí)間

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

基本概念

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

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

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


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


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

時(shí)鐘直接作用在 G2/G3 門上,時(shí)鐘為低時(shí) G2/G3 通道關(guān)閉,為高時(shí)通道打開,進(jìn)行數(shù)據(jù)的采樣傳輸。

但數(shù)據(jù)傳輸?shù)?nbsp;G2/G3 門之前,會(huì)經(jīng)過 G4/G1 與非門,將引入時(shí)間延遲。引入建立時(shí)間的概念,就是為了補(bǔ)償數(shù)據(jù)在 G4/G1 門上的延遲。即時(shí)鐘到來之前,G2/G3 端的輸入數(shù)據(jù)需要準(zhǔn)備好,以便數(shù)據(jù)能夠被正確的采樣。

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

如果數(shù)據(jù)在傳輸中不滿足建立時(shí)間或保持時(shí)間,則會(huì)處于亞穩(wěn)態(tài),導(dǎo)致傳輸出錯(cuò)。

約束條件

建立時(shí)間約束條件

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


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

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

各個(gè)時(shí)間參數(shù)說明如下:

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

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

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

保持時(shí)間約束條件

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

Tcq + Tcomb >= Thd + Tskew (2)

各個(gè)時(shí)間參數(shù)說明如下:

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

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

建議大家只需要記住這 2 個(gè)最基本的約束條件表達(dá)式,需要求取其他參數(shù)約束時(shí),再進(jìn)行推導(dǎo),以免各種推導(dǎo)造成記憶混亂。

建立時(shí)間與保持時(shí)間時(shí)序圖

一個(gè)關(guān)于建立時(shí)間和保持時(shí)間的復(fù)雜時(shí)序圖如下所示。

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

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

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


計(jì)算舉例

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

例1:

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


解:

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

因?yàn)橐髸r(shí)序約束恒成立,所以式 (1) (2) 的變形為:

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

建立時(shí)間檢查:

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

因此建立時(shí)間存在 violation。

保持時(shí)間檢查:

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

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

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

例2:

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

解:

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

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

結(jié)合例 1 的指示,所以 D2 建立時(shí)間 Tsu 和保持時(shí)間 Thd 應(yīng)該滿足:

T2max + Tsu <= T
T2min >= Thold

Tsu <= T - T2max
Thold <= T2min

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

例3:

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


解:

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

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

因?yàn)橹挥幸粋€(gè)鐘,所以也沒有時(shí)鐘偏移,clock path 的反相器延遲也是迷惑項(xiàng)。

所以,時(shí)序約束條件為:

Tcq + Tbuf + Tsu <= Tclk

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

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

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

例4:

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


解:

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


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

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

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

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

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


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)