關於FPGA時序約束的學習筆記-時序模型的分析

最近一直在學習FPGA時序約束的內容,看了很多的教程。所以想用這篇去整理一下思路。好讓自己能夠堅持下去。
學習時序分析都離不開一個節點對節點的模型,如下圖;
在這裏插入圖片描述
這個模型是FPGA時序分析的基礎模型,描述數據在兩個寄存器間傳輸的一般模式,想要真正的理解這個模型還需要知道以下幾個概念:
啓動沿:數據被launch的時鐘邊沿,在每一個時鐘邊沿後產生一個新的數據。
鎖存沿:數據被latch的時鐘邊沿,也就是說,每一個鎖存沿,都會有一個新的數據被保存。
在這裏插入圖片描述
整個模型的功能就是從Signal in接受數據,在經過時序邏輯和組合邏輯的處理將數據從Signal out發送。從結構可以看出,第一個D觸發器reg1的功能就是將Signal in的數據採樣,併發送給下一級的邏輯處理。所以我們管第一個觸發器的時鐘clock1的上升沿叫做啓動沿。而第二個觸發器reg2的功能就是將前級處理過後的信號所存給Signal。所以我們管第二個觸發器的時鐘clock2的上升沿叫做鎖存沿。

在知道啓動沿和鎖存沿後,我們就可以得出在理想情況下(沒有物理延遲時)的時序如下:
在這裏插入圖片描述
紅色箭頭就是啓動沿所對應的時刻,綠色箭頭就是鎖存沿所對應的時刻。我們在分析這個模型的建立時間和保持時間時,分析的時鐘是以鎖存沿爲準。用鎖存沿去分析建立時間和保持時間。
在這裏插入圖片描述
那麼理想狀態下,clock1的時鐘打一拍reg1-Q 數據有效,clock1在打下一拍reg1-Q數據發生改變。這段時間就是信號的建立時間。在理想狀態下的建立時間爲clock1的週期。在clock2上升沿時,在reg1-Q信號線的數據被鎖存。在理想狀態下的保持時間就是0。

在非理想狀態下,這個模型受到物理延遲的影響。在理想狀態下,數據的建立時間和到達時間都爲0。在啓動沿(clock1)採樣後reg1-Q上數據到達reg2-D端口。而在非理想狀態下,這條路徑要經過延時。

數據建立時間在這裏插入圖片描述
正如上圖所示,在計算數據到達時間時,一般都會存在3個延時:

  1. Tclk1:時鐘信號從起點到達啓動寄存器的相應clk端口所耗的時間。

  2. Tco:啓動寄存器內部延時。

  3. Tdata:數據從上級寄存器輸出Q到下級寄存器的數據輸入D之間的延時。

數據到達時間

在這裏插入圖片描述
通過上面的兩幅圖我們可以知道我們模型中存在的延遲。
我剛纔說了,這個模型的建立時間和保持時間都是以鎖存沿爲準。記住這個,我就可以分析下一個概念餘量(slack)
在這裏插入圖片描述
理想狀態下,我們的建立時間如下圖所示;

Tus表示了鎖存方的寄存器在讀取數據之前所需要的最小準備時間,圖中數據的建立時間是10ns,假設Tus是2ns。那麼我們的建立時間餘量就等於 10ns - Tus = 8ns。
在這裏插入圖片描述
假設把Tus調大至3ns ,鎖存沿從原本10ns的位置返回7ns的位置。建立餘量也從原本的8ns的再降至7ns,不過建立餘量還是正值。換言之,只要建立餘量還是正值,寄存器2讀取reg1-Q的數據也是沒有問題的。

以上都是在理想狀態下
如果同源時鐘信號由於路徑的不同而出現時鐘偏移(skew)
在這裏插入圖片描述
上圖中clock1沒有變化,換之clock2位移-36度,即clock2比clock1提早1ns。clock2位移-36度就表示建立變爲原來的9/10.(此例子中10ns變爲9ns)。
分析完建立時間保持時間同理
在這裏插入圖片描述
結合傳輸路徑延遲如下圖
在這裏插入圖片描述
實際的建立時間餘量就爲圖中綠色部分(Setup Slack)。
在這裏插入圖片描述
實際的保持時間餘量就爲圖中綠色部分(Hold Slack)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章