詳解FPGA中的建立時間與保持時間
概念
對於一個數字系統而言,建立時間和保持時間可以說是基礎中的基礎,這兩個概念就像是數字電路的地基,整個系統的穩定性絕大部分都取決於是否滿足建立時間和保持時間。但是對於絕大部分包括我在內的初學者來說,建立時間和保持時間的理解一直都是一個很大的困擾,盡管概念背得住,但是卻沒有理解這其中的精髓。這篇文章主要是討論一下我對於這兩個時間的理解。
首先我們先來看看維基百科中對建立時間(Setup time)和保持時間(Hold time)的解釋:
Setup time is the minimum amount of time the data signal should be held steady beforethe clock event so that the data is reliably sampled by clock. This applies to synchronous input signals to the flip-flop.(建立時間就是時鐘觸發事件來臨之前數據需要保持穩定的最小時間,以便數據在隨時鐘信號采樣時是準確的) |
Hold time is the minimum amount of time the data signal should be held steady after the clock event so that the data are reliably sampled. This applies to synchronous input signals to the flpi-flop.(保持時間就是時鐘觸發事件來臨之後數據需要保持穩定的最小時間,以便數據能夠準確的被采樣) |
假設數據是在上升沿被采樣,那麽建立時間就是時鐘上升沿來臨之前數據需要保持穩定的最小時間,保持時間就是時鐘上升沿來臨之後數據需要保持穩定的最小時間。那麽問題來了,我們都知道數據是在時鐘信號上升沿的那一瞬間被打進觸發器從而被采樣的,那麽我們只需要在時鐘上升沿的那一瞬間或者那一小段時間保持穩定不就行了?理論上這麽想是沒問題的,但對於實際工程來講,這是幾乎不可能達到的。常規來講,數據在發送端通過一個D觸發器在時鐘信號的控制下將數據發送出去,在接收端通過一個D觸發器在時鐘信號的同步下進行采樣。圖一是一個最簡單的兩線單工通信系統大致框圖:
要分析這個問題,我們不妨先看一下D觸發器裏面到底長啥樣,圖二是經典上升沿D觸發器的內部結構圖:
與非門G1到G4是維持阻塞電路,G5和G6構成一個RS觸發器用於數據的鎖存。如有不明白RS觸發器的真值表和工作機理的可以在網上找到資料,這裏不再累述。
圖中可以看到,時鐘信號直接作用在了G2和G3上面,也就意味著G2和G3是真正的采樣傳輸門電路,輸入信號應該要正確的被G2和G3采樣後傳輸至後面的RS觸發器。我們註意到,數據在傳輸到G3之前經過了G4,傳輸至G2之前經過了G4和G1。我們知道,實際情況中信號經過門電路是有延遲的。所以輸入信號在到達G2和G3之前經過了G1和G4的延遲,因此就引入了建立時間的概念:建立時間就是為了補償信號在G1和G4上的延遲。也就是數據在時鐘沿來臨之前,需要足夠的建立時間讓信號經過G1和G4到達G2和G3。
那麽保持時間呢?一樣的,上升沿來臨時,數據通過G2和G3傳輸至後面的RS觸發器,但G2和G3也會存在延時。因此又引入了保持時間的概念:保持時間就是為了補償信號在G2和G3上的延遲。也就是數據在時鐘沿來臨之後,需要足夠的保持時間讓信號正確的從G2和G3傳輸至RS觸發器。觸發器的保持時間主要取決於G2到G3,進而可以推斷出,一般D觸發器的保持時間比建立時間要長。
也許有人問,如果不滿足建立時間和保持時間會怎樣?很簡單,因為在傳輸的過程中數據並不是處於穩定狀態而處於亞穩態區,則會導致采樣的數據可能會出錯。
約束條件
上面我們已經理解了建立時間和保持時間了,下面我們就結合一個比較經典的模型來看看我們在進行電路設計的時候要如何去滿足建立時間和保持時間。
圖三是一個典型的雙線單工通信模型的框圖,其中Comb表示組合邏輯電路,Clock Skew表示由於時鐘線存在長度而導致的時鐘偏移,兩個D觸發器均為上升沿觸發。
假設D觸發器的建立時間為Tsetup,保持時間為Thold,則存在如下關系式:
Tclk+Tskew-Tdq-Tcomb>=Tsetup (1)
Tdq+Tcomb-Tskew>=Thold (2)
其中:
Tclk : 時鐘周期
Tskew : 時鐘線上的延時
Tdq : D觸發器從D端到Q端的時延
Tcomb : 數據信號經過組合邏輯電路的延時(例如緩沖器)
圖四是這個模型的時序圖,結合圖四我們可以推導出這兩個約束關系式。
建立時間約束:
(1)式的思想其實就是在第二個時鐘沿來臨之前,數據穩定的時間一定要大於等於建立時間。因此在一個時鐘周期內,數據穩定的時間為Tclk-Tdq-Tcomb,因為時鐘也存在偏移,因此要把這個時鐘偏移加上,於是最後數據穩定的時間為Tclk+Tskew-Tdq-Tcomb,滿足這個穩定時間大於建立時間即可,因此推導出了(1)式,進而可以推導出在已知建立時間、組合邏輯延時、D觸發器延時、時鐘偏移的情況下,理論上能夠承載的最大時鐘頻率為:
f_max = 1/(Tsetup+Tdq+Tcomb-Tskew)
這個關系式對於電路設計和芯片選型方面都有著非常大的幫助。當然,在實際工程中還要根據實際情況留有一定的設計余量以應對短暫的非常規情況。
保持時間約束:
(2)式的思想為在第二個時鐘沿來臨之後,數據穩定的時間一定要大於等於保持時間。因此在時鐘沿來臨之後,數據穩定的時間為Tdq+Tcomb,再減去時鐘偏移則為Tdq+Tcomb-Tskew,滿足這個穩定時間大於等於保持時間即可。
最後聯立(1)(2)式我們可以推導得出:
組合邏輯延時範圍:
Thold+Tskew-Tdq<=Tcomb<=Tclk-Tdq+Tkew-Tsetup
時鐘偏移範圍:
Tsetup-Tclk+Tdq+Tcomb<=Tskew<=Tdq+Tcomb-Thold
詳解FPGA中的建立時間與保持時間