
FPGA開發過程中,離不開時序約束,那么時序約束是什么?簡單點說,FPGA芯片中的邏輯電路,從輸入到輸出所需要的時間,這個時間必須在設定的時鐘周期內完成,更詳細一點,即需要滿足建立和保持時間。
時序約束可以讓VIvado和Quartus等FPGA開發軟件,在布線時檢測綜合出來的邏輯電路是否滿足這個時序要求,并生成時序報告。
一、建立/保持時間
(相關資料圖)
1、基本概念
設定時序約束的目的就是為了滿足建立時間和保持時間,所以理解“建立時間和保持時間”這兩個概念非常重要。
建立時間:在時鐘上升沿到來之前,輸入信號需要提前一個最小時間里“預先準備好”,這個最小時間量就是建立時間;
保持時間:在時鐘上升沿到來之后,輸入信號必須保持一個最小時間量“不能變化”,這樣這個最小時間量就是保持時間。
只有滿足建立時間和保持時間,這樣才能準確捕獲到這個輸入信號,下一級電路邏輯才能正常接收到正確的信號。
建立和保持時間是由FPGA芯片器件特性決定,也就是制程工藝決定的,以Xilinx FPGA K7芯片為例,setup time為0.04ns,hold time為0.2ns,具體可以查對應芯片手冊的setup time和hold time。
2、時鐘抖動
實際的時鐘信號是存在時鐘抖動的,時鐘抖動( Clock Jitter)是實際時鐘存在隨著時間積累的、時而超前、時而滯后的偏移,如下圖所示。
3、時鐘偏差
時鐘偏差(Clock Skew)表示在同一個時鐘域內時鐘信號到達各個寄存器用時的差異。時鐘信號在FPGA芯片中也是需要走線的,所以也存在布線延遲。
時鐘的不確定性,就是由時鐘抖動和時鐘偏差組成的。
二、時序路徑
時序路徑是指從FPGA輸入到輸出的所有邏輯路徑組成的路徑。當存在時序路徑時,需要考慮時序約束以確保正確的邏輯功能和時序性能。
時序路徑中的關鍵元素包括:
(1) 路徑起點(即時鐘觸發器輸入端口)
(2)路徑終點(即輸出端口的寄存器或查找表單元)
(3)邏輯電路和邏輯器件
有了這些元素,就可以構建完整的時序路徑。在實踐中,我們可以使用FPGA工具來分析、優化和修復時序路徑。
時序路徑對于設計的正確性和時序性能來說都是非常重要的。為了最大程度地提高性能并避免瓶頸,我們必須對時序路徑進行詳細的分析和優化。
三、時序模型
一個基本的時序路徑包括源時鐘路徑、數據路徑和目的時鐘路徑,如下圖所示:
各部分對應的延時計算如下圖所示:
時序約束的公式為:Tclk ≥ Tco + Tlogic+ Trouting + Tsetup - Tskew
說明:Tclk表示系統時鐘周期;Tco表示發送端寄存器時鐘到輸出時間;Tlogic表示組合邏輯延遲時間;Trouting為兩級寄存器之間的布線延遲;Tsetup為接收端寄存器的建立時間;Tskew為時鐘偏差。
Tlogic與我們寫的HDL代碼有直接關系,Trouting是FPGA開發軟件綜合布線根據FPGA內部資源情況進行布線產生的延時。
四、總結
本文介紹了FPGA時序約束的基礎理論知識,希望通過閱讀本文,大家能夠更好地理解時序約束原理,并在實際工作中運用這些原理提高設計效率和準確性。
標簽: