日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

TIMING_06 VIVADO环境下的时序约束 之 输入延迟约束

發布時間:2023/12/19 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 TIMING_06 VIVADO环境下的时序约束 之 输入延迟约束 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? ? ? ? ?由于該系列文章閱讀有順序性,所以請跳轉至該系列文章第一篇從頭開始閱讀,并按照文章末尾指示按順序閱讀,否則會云里霧里,傳送門在此:??https://blog.csdn.net/qq_33486907/article/details/89380368???《TIMING_01 時序約束與時序分析》

目錄

1.輸入延遲約束

1.1?同步方式 之 系統同步

1.1.1? 傳輸線延遲的計算方式

1.1.2??系統同步約束案例

1.2?同步方式 之 源同步方式

1.2.1 SDR

1.2.2?DDR


1.輸入延遲約束

? ? ? ? 輸入延遲約束用于告訴VIVADO FPGA上游器件的時序性能參數,FPGA結合自身內部的時序性能參數即可獲得這條時序路徑的分析結果,如圖:

約束如下:

? ? ? ? 情況1:沒有最大最小延遲的情況

? ? ? ?create_clock -period 10.000 -name clk -waveform {0.000 5.000} [get_ports clk]

? ? ? ?set_input_delay –clock clk 4 [get_ports din]

? ? ? ?情況2:有最大最小延遲的情況

? ? ? ? create_clock -period 10.000 -name clk -waveform {0.000 5.000} [get_ports clk]

? ? ? ? set_input_delay -clock clk -max number [get_ports din]

? ? ? ? set_input_delay -clock clk -min number [get_ports din]

? ? ? ? max用于分析建立時間? min用于分析保持時間

? ? ? ? 對于延時時間參數的計算方式和系統同步方式有關,接下來分別介紹。

1.1?同步方式 之 系統同步

? ? ? ?分析輸入端口到FPGA內部時序單元的路徑時,當source clock和destination clock來自同一個系統時鐘時,稱為系統同步輸入(system synchronous input);

? ? ? ? source clock是CLKA,destination clock是CLKB,其中CLKB通過輸入端口引入FPGA內部(約束成主時鐘),而CLKA引到了FPGA外部的板上芯片,并沒有引入到FPGA內部,CLKB是采集輸入端口的時鐘,因此首先約束CLKB為主時鐘。

?????? Tclkd_ext:表示外部時鐘源到外部芯片的延時;

? ? ? ?Tclkd_int:表示外部時鐘源到FPGA輸入端口的延時;

? ? ? ?Tco:表示外部芯片Tco時間;

? ? ? ?Tbd:表示外部芯片輸出端口到FPGA芯片的板上延時。

通用公式如下:

? ? ? ? max_input_delay = Tclkd_ext_max?+ Tco_max?+ Tbd_max? Tclkd_int_min

? ? ? ? min_input_delay = Tclkd_ext_min?+ Tco_min?+ Tbd_min? Tclkd_int_max

? ? ? ? 通常在硬件設計時會將外部時鐘源到FPGA管腳和到外部芯片時鐘管腳做等長處理,即可認為Tclkd_ext == Tclkd_int,可以將公式簡化為:

? ? ? ? max_input_delay = Tco_max?+ Tbd_max?

? ? ? ? min_input_delay = Tco_min?+ Tbd_min?

? ? ? ? 做約束時只需關注上游芯片的Tco時間和傳輸線延遲時間即可,但前提是時鐘線做了等長處理;

? ? ? ? Tco時間一般由上游器件的器件手冊或時序圖得到,傳輸線延遲時間Tbd則是根據實際PCB布線的長度來獲得的。

? ? ? ? 對于Tbd的最大最小值的得來,如果約束的對象是單比特數據線,那么自然Tbd只存在一個值;但如果約束的是多比特數據總線,那么在不做到絕對等長的情況下,走線肯定存在長短,也就有了最大和最小的延遲時間;

? ? ? ? 系統同步接口(System?Synchronous?Interface)的構建相對容易,以?FPGA?做接收側來舉例,上游器件僅僅傳遞數據信號到?FPGA?中,時鐘信號則完全依靠系統板級來同步。時鐘信號在系統級上同源,板級走線的延時也要對齊。正因為這樣的設計,決定了數據傳遞的性能受到時鐘在系統級的走線延時和?skew?以及數據路徑延時的雙重限制,無法達到更高速的設計要求,所以大部分情況也僅僅應用?SDR?方式。

1.1.1? 傳輸線延遲的計算方式

?????? 這里單獨給出一個章節,用于講解傳輸線延遲的計算方法:

? ? ? “信號速度還與不同材料的介電常數相關,具體計算公式是?? V=C/Er0.5????,其中Er是信號線周圍材料的相對介電常數。我們常見的PCB材料Fr4的介電常數在4.2-4.5左右,為了計算方便我們取4。帶入公式可以算出,Fr4材料制作的PCB板上面信號的傳輸速度是光速的二分之一。光速大約等于12inch/ns,計算得出Fr4板上信號速度大約是6inch/ns。換算成延時,也就是166ps/inch。這就是我們經常說的PCB板上信號延時大約是166ps/inch。”

? ? ?Tbd = lenth mil * 166ps/inch / 10^6 = num ns? 使用這個公式即可得出傳輸線的延遲時間;

1.1.2??系統同步約束案例

?????? 如圖所示:假設時鐘信號在板級做等長處理,那么可以采用簡化的延遲時間計算公式:

? ? ? ?max_input_delay = Tco_max?+ Tbd_max? = 2 + 0.4 = 2.4ns

? ? ? ?min_input_delay = Tco_min?+ Tbd_min?? = 1 + 0.3 = 1.3ns

?????? 然后就可以對input 做出如下約束:

第一步約束主時鐘:

? ? ? ? create_clock -period 10.000 -name clk -waveform {0.000 5.000} [get_ports clk]

第二步輸入端口延遲約束:

? ? ? ? set_input_delay -clock clk -max 2.4 [get_ports din]

? ? ? ? set_input_delay -clock clk -min 1.3 [get_ports din]

? ? ? ? 這樣就完成一個對系統同步輸入端口的延遲約束; 如果始終信號在板級沒有做等長處理則就需要考慮時鐘的歪斜帶來的延遲。

1.2?同步方式 之 源同步方式

?????? 分析輸入端口到FPGA內部時序單元的路徑時,當destination clock來自外部芯片,即與數據輸入同源,稱為源同步輸入(source synchronous input)。

? ? ? ?Tcd:表示外部芯片時鐘輸出到FPGA輸入端口的延時;

? ? ? ?Tco:表示外部芯片Tco時間;

? ? ? ?Tbd:表示外部芯片輸出端口到FPGA芯片的板上延時;

? ? ? ? max_input_delay = Tbd_max?+ Tco_max?- Tcd_min

? ? ? ? min_input_delay = Tbd_min?+ Tco_min?- Tcd_max

?????? 通常在硬件設計時會將隨路時鐘和數據線進行等長處理,即Tbd = Tcd,即可得出簡化的延遲時間計算公式:

? ? ? ?max_input_delay = Tco_max?

? ? ? ? min_input_delay = Tco_min

? ? ? ? 做約束時只需關注上游芯片的Tco時間即可,但前提是時鐘線做了等長處理;

? ? ? ? 源同步相對于系統同步更為復雜一些,由于時鐘和與數據的相位關系,分為邊緣對齊和中心對齊兩種;然后數據采集的方式又分為兩種SDR和DDR兩種情況,下面分兩種方式來對約束進行講解。

1.2.1 SDR

(1)Center Aligned 中心對齊

?????? 中心對齊是指時鐘和數據到達后級時序單元時,時鐘沿在數據中心,在這種情況下可以直接使用時鐘采集數據。

?????? 中心對齊輸入延遲約束案例

?????? 如圖所示,假設時鐘和數據走線做了等長處理,其中:

? ? ? ?Tcko max = max_input_delay = Tco_max?= 3ns

? ? ? ?Tcko min = min_input_delay = Tco_min? = 2ns?

然后就可以對input 做出如下約束:

第一步約束隨路時鐘:

? ? ? ? create_clock -period 5.000 -name SRCCLK -waveform {0.000 2.500} [get_ports SRCCLK]

? ? ? ?源同步所約束的源時鐘一定是隨路時鐘,這里一定要注意;

第二步輸入端口延遲約束:

? ? ? ?set_input_delay -clock SRCCLK -max 3 [get_ports din]

? ? ? ?set_input_delay -clock SRCCLK -min 2 [get_ports din

(2)Edge Aligned 邊沿對齊

?????? 邊緣對齊是指時鐘和數據到達后級時序單元時,時鐘沿與數據變化沿重合,如圖所示,由于是隨路時鐘的關系,時鐘和數據極有可能同時達到FPGA的輸入端口,這樣很明顯不能滿足目的端寄存器的時序要求,通常的做法是通過邏輯或鎖相環對時鐘和數據的關系進行相位調整,這樣就能正確采集數據了,之后在以調整后的相位進行時序約束即可;

??????

邊緣對齊輸入延遲約束案例:

?????? 如圖所示,數據data和時鐘Clock的關系是邊緣對齊,案例中使用MMCM將隨路時鐘相移了90°,使數據和采樣時鐘的關系變成了中心對齊,因此可以得到如下約束:

??????

第一步約束隨路時鐘:

? ? ? ? ? create_clock ?-period?clk_period -name?CLKB –waveform {0.000? clk_period/2} [get_ports?{CLKB}]

第二步約束隨路時鐘的生成時鐘:

? ? ? ? ? create_generated_clock -name?CLKB_90?-source?[get_clocks?CLKB]?-phase?90 [get_pins{MMCM|co[0]}]??? //該約束僅僅適用于Altera,不適用于XILINX

第三步輸入端口延遲約束:

? ? ? ? ? set_input_delay -clock SRCCLK -max max_input_delay [get_ports data]

? ? ? ? ?set_input_delay -clock SRCCLK -min min_input_delay [get_ports data]

1.2.2?DDR

(1)Center Aligned 中心對齊

?????? 如圖所示,DDR的中心對齊;

? ? ? ?這里直接給出案例來講解約束的方法,如圖所示:

第一步約束隨路時鐘:

? ? ? ? ? create_clock -period 10.000 -name clk -waveform {0.000 5.000} [get_ports clk]

第二步輸入端口延遲約束:

? ? ? ? ? ?set_input_delay -clock clk -max 4.3 [get_ports data]?

(max = period/2 – dv_bfe)

? ? ? ? ? set_input_delay -clock clk -min 0.6 [get_ports data]

? ? ? ? ? set_input_delay -clock clk -max 4.6 [get_ports data] –clock_fall –add_delay

(max = period/2 – dv_bre)

? ? ? ? ?set_input_delay -clock clk –min 0.2 [get_ports data] –clock_fall –add_delay

(2)Edge Aligned 邊沿對齊

?????? 邊沿對齊的情況,可通過如下約束:

第一步約束隨路時鐘:

? ? ? ?create_clock -period 10.000 -name clk -waveform {0.000 5.000} [get_ports clk]

第二步輸入端口延遲約束:

? ? ? ?set_input_delay -clock clk -max 0.4 [get_ports data]?

? ? ? ?set_input_delay -clock clk -min -0.6 [get_ports data]

? ? ? ?set_input_delay -clock clk -max 0.7 [get_ports data] –clock_fall –add_delay

? ? ? ?set_input_delay -clock clk –min -0.3 [get_ports data] –clock_fall –add_delay

?????? 通常這樣約束以后也很難達到理想的效果,一般采用和SDR中邊沿對齊的方式相同,將時鐘經過一個MMCM/PLL 做一定的相移,從而把邊沿對齊變成中心對齊,然后使用相移的時鐘進行采樣和約束;

本系列博客對應的完整《時序約束手冊》傳送在此,點擊下方下載鏈接一:

https://download.csdn.net/download/qq_33486907/19846182

或點擊下載鏈接二:https://item.taobao.com/item.htm?spm=a1z38n.10677092.0.0.22131debncNwzA&id=588531553802

推薦使用鏈接一,鏈接二即將停止服務

總結

以上是生活随笔為你收集整理的TIMING_06 VIVADO环境下的时序约束 之 输入延迟约束的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。