Stories

Detail Return Return

FPGA時序約束基礎 - Stories Detail

一、時序約束的目的
由於實際信號在FPGA內部期間傳輸時,由於觸發器等邏輯期間並非理想期間,因此不可避免地存在傳輸延時,這種延遲在高速工作頻率、高邏輯級數時會造成後級觸發器地建立時間和保持時間不滿足,造成時序違例。(這也是為什麼需要把FPGA設計不能以高級編程語言思想看的原因,設計時,需要做到“心中有電路”)一般來説在一個高速系統(時鐘頻率大於100M),或存在高速信號如DDR,千兆網絡等情況下,必須進行時序分析和約束,以提高系統的魯棒性和穩定性。
二、基本概念
2.1 建立時間和保持時間
setup time是指在時鐘有效沿(下圖為上升沿)之前,數據輸入端信號必須保持穩定的最短時間。

hold time是指在時鐘有效沿(下圖為上升沿)之後,數據輸入端信號必須保持穩定的最短時間。hold time時序檢查確保新數據不會在觸發器穩定輸出初始數據之前過早到達D端而覆蓋其初始數據。

簡單來説:數據傳輸至觸發器時,數據必須在時鐘的建立時間前保持穩定,而且數據必須保持到時鐘的保持時間點後才能撤銷,才能保證該級觸發器可以正常寄存該數據。
三、模型分析
下面以經典的時序分析模型分析:

如圖,data信號傳輸經存在DFF1、組合邏輯後傳輸至DFF2,由於觸發器延遲tco和組合邏輯延時,clk1傳輸延遲,
因此建立時間餘量為:
Tslack = (T-tsu+tclk2)-(tclk1+tco+tdelay),
保持時間餘量為:
Thd_slack = (T+tdelay+tco+tclk1)-(T+thd+tclk2)
以上可以看出,系統的極限性能參數(時鐘能跑多快,即T的大小)只與建立時間餘量有關。

Add a new Comments

Some HTML is okay.