FPGA時序約束理解記錄

  • 2019 年 11 月 7 日
  • 筆記

最近整理了一下時序約束的內容,順便發出來分享記錄一下。

任何硬件想要工作正常,均需滿足建立和保持時間,至於這個概念不再陳述。

下面將重點介紹兩個概念:建立餘量和保持餘量。FPGA內部進行時序分析無非就是計算這兩個餘量,為正,則時序滿足要求,否則不滿足。

FPGA在與外部器件打交道時,端口如果為輸入則與input delay約束相關,如果最為輸出則output delay,這兩種約束的值究竟是什麼涵義,下文

我也會重點刨析,但是前提是需要理解圖1和圖2建立餘量和保持餘量。

建立餘量:不考慮clk_skew,數據在regA 的發射沿(即第一個上升沿)經過Tco+Tdata則會一直保持不變,等待着接受沿採集,接收沿有關建立只需滿足的建立時間即可,建立餘量=T-Tco-Tdata即下圖紅色區所示。

 

保持餘量

藍色是第一個數據,第一個上升沿是藍色數據的發射沿,第二個上升沿是藍色數據的接收沿

紫色是第二個數據,第二個上升沿是紫色數據的發射沿,第三個上升沿是紫色數據接收沿(圖中未畫)

意思是什麼?第一個藍色數據經過發射沿後延遲Tco+Tdata的時間就一直保持不變,直到紫色的數據在其發射沿來後經過Tco+Tdata時間將藍色數據代替,藍色數據只需要在其接收沿後停留的時間大於等於保持時間即可被正常採集,但是藍色數據實際上能夠停留多久是由Tco+Tdata決定的,因此Tco+Tdata的值決定了其在接受沿後的壽命,即Tco+Tdata>=Th就可以滿足保持時間,保持餘量=Tco+Tdata-Th,保持時間和時鐘周期T無關,因為他的壽命是由Tco+Tdata決定的。

 

 

 input delay 和output delay

對於input /output delay的保持餘量和建立餘量的計算方法和前面講的是一樣的,區別在於前面的例子中REGA和REGB均是在FPGA內部的,計算餘量的所有參數FPGA自身是知道的,他自己可以完成整個計算分析,但是一旦涉及到input delay和output delay,即FPGA作為是接收端或者發送端與其他器件交互時,有些計算的參數FPGA自己知道,有的計算的參數是外部器件知道,為了完成餘量的計算,那麼就要通過約束把FPGA不知道的量告訴FPGA。

用input delay舉例說明 見下圖 

建立餘量=T-Tco-Tdata-Tsu,FPGA作為接收端Tsu,Th是知道的,但是其餘兩個量不知道,Tco與外部器件性能相關,可以從其數據手冊中獲取這個量,Tdata也許和你PCB的布線延遲等有關,為了完成計算,只需要把Tdata+Tco的最告訴fpga即可,max參數是與建立參數相關,min與保持餘量相關,其最大值為 input delay max為Tco+Tdata的最大值,最小值為input delay min為Tco+Tdata的最小值。

output delay見下圖,紅色代表FPGA自己知道的量,其餘需要通過約束告知

所以max 為Tdata+Tsu

       min為Tdata-Th

下面是我做的一些其他概念的理解記錄,簡單總結供自己以後查詢

SDR和DDR的概念:S是單沿觸發,D是雙沿,雙沿又分中心對齊和邊沿對齊,見圖

 

 下圖是input delay 的DDR中心對齊,其中黑色方框框起來的是理想情況下的數據,藍色是數據整體左偏移,紅色是數據整體右偏移,來回抖動的範圍,圖示中XXXX則表示的數據不穩定的區域,對於上升沿,最小值就是到藍色框dv_are的大小,最大值就是到紅色框邊沿T/2-dv_bfe.下降沿不再贅述。

對於DDR邊沿對齊,對上升沿來講,黑色數據框是理想情況,紅色是向右偏移,藍色則是向左偏移,在第三個紅色框那裡,延遲已經等於0,再進一步左移則為負,藍色所示。對上升沿來講,max為skew_are,min為 負-skew_bre。

此篇較為粗糙,時序每研究一遍都會有不同的理解,而且每個人理解的着手點不一樣,希望能夠靜下心來,好好沉澱,莫急躁。

有問題歡迎討論

未來可期

 博客原為鏈接:https://www.cnblogs.com/aslmer/p/11746947.html