1. FPGA時序的基本概念
FPGA器件的需求取決于系統(tǒng)和上下游(upstream and downstrem)設(shè)備。我們的設(shè)計(jì)需要和其他的devices進(jìn)行數(shù)據(jù)的交互,其他的devices可能是FPGA外部的芯片,可能是FPGA內(nèi)部的硬核。

對于FPGA design來說,必須要關(guān)注在指定要求下,它能否正常工作。這個正常工作包括同步時序電路的工作頻率,以及輸入輸出設(shè)備的時序要求。在FPGA design內(nèi)部,都是同步時序電路,各處的延時等都能夠估計(jì)出來,但是FPGA內(nèi)部并不知道外部的設(shè)備的時序關(guān)系。所以,Timing constraints包括
輸入路徑(Input paths )
寄存器-寄存器路徑(Register-to-register paths )
輸出路徑(Output paths )
例外(Path specific exceptions )
這正好對應(yīng)了上圖中三個部分,Path specific exceptions 暫時不提。
Input paths對應(yīng)的是OFFSET IN約束,即輸入數(shù)據(jù)和時鐘之間的相位關(guān)系。針對不同的數(shù)據(jù)輸入方式(系統(tǒng)同步和源同步,SDR和DDR)有不同的分析結(jié)果。
Register-to-register paths 對應(yīng)的是整個FPGA design的工作時鐘。如果只有一個時鐘,那么只需要指定輸入的頻率即可。如果有多個時鐘,這些時鐘是通過DCM,MMCM,PLL生成的,那么顯然ISE知道這些時鐘之間的頻率、相位關(guān)系,所以也不需要我們指定。如果這些不同的時鐘是通過不同的引腳輸入的,ISE不知道其相位關(guān)系,所以指定其中一個為主時鐘,需要指定其間的相位關(guān)系。
Output paths對應(yīng)的是OFFSET OUT 約束,和OFFSET IN約束很類似,不過方向相反。
2.輸入時序約束
The input timing constraints cover the data path from the external pin or pad of the package of the? FPGA device to the internal synchronous element or register that captures that data.
輸入時序約束控制外部引腳到內(nèi)部模塊的路徑。采用OFFSET IN來指出輸入時序約束。也就是說OFFSET IN定義了時鐘沿河被采集數(shù)據(jù)的關(guān)系(相位)。這里我們關(guān)心兩類不同的輸入方式,系統(tǒng)同步輸入和源同步輸入。(對于SDR和DDR,即單數(shù)據(jù)速率和雙數(shù)據(jù)速率而言,區(qū)別只在于一個時鐘周期的采樣次數(shù),不做說明)
System Synchronous inputs
系統(tǒng)同步輸入,指由同一時鐘傳輸和捕獲數(shù)據(jù),如下圖所示。

上圖可以看出,F(xiàn)PGA和輸入源設(shè)備是同源的,共用一個系統(tǒng)時鐘。這一個系統(tǒng)時鐘在源設(shè)備觸發(fā)輸出數(shù)據(jù),同時還作為FPGA的時鐘接收輸入的數(shù)據(jù)。因此源設(shè)備只需要提供輸入的數(shù)據(jù)就可以了。
Source synchronous inputs
源同步如下圖所示(這里是DDR,同時在上升沿和下降沿采樣)

源同步和系統(tǒng)同步的最大區(qū)別在于源設(shè)備(Source Device)在輸出數(shù)據(jù)的同時,輸出了一路和數(shù)據(jù)同步的時鐘。FPGA采用這一路時鐘來進(jìn)行數(shù)據(jù)的采樣。
這兩種輸入方式看起來有很大的差別,但是OFFSET IN約束的寫法是一致的,后文將詳細(xì)明。
3.寄存器-寄存器的時序約束
寄存器-寄存器的約束,在同步時序電路中,就是周期的約束。對于完全采用一個時鐘的電路而言,對這一個clk指定周期約束即可。但是如果采用了多個時鐘,那么情況就復(fù)雜了。多個時鐘中的“多個”,可能由DCM等倍/分頻得到,也有可能FPGA外部就引入了兩個時鐘信號,還有可能是其他情況。這里Xilinx將其分成了以下幾類
自動相關(guān)同步時鐘域
手動相關(guān)同步時鐘域
異步時鐘域
自動相關(guān)同步時鐘域(DLL,DCM,PLL,MMCM)
因?yàn)樗亲詣拥?,從字面意思上看就是自動分析。?dāng)我們例化了一個DCM,DCM的輸入輸出信號之間的關(guān)系就已近確定了,譬如頻率關(guān)系和相位關(guān)系。當(dāng)指定了DCM輸入時鐘的頻率和相關(guān)信息之后,再去指定輸出的相對關(guān)系就有畫蛇添足的感覺了,因?yàn)檫@些關(guān)系以及在生成DCM的時候確定了。對于PLL,MMCM來說也是一樣的。
手動相關(guān)同步時鐘域
對應(yīng)上文的“自動”,這里的“手動”指需要人為指定時鐘之間的關(guān)系。在什么情況下,ISE套件無法知道時鐘之間的關(guān)系?如果兩組時鐘都是由FPGA外部引入的,那么它們之間的相位關(guān)系是未知的,需要認(rèn)為指定。時鐘之間的相位關(guān)系都是相對的,因此這個過程需要指定一個主時鐘,之后定義其他時鐘和主時鐘之間的相對相位關(guān)系。
NET “PrimaryClock” TNM_NET = “TNM_Primary”;
NET “RelatedClock” TNM_NET = “TNM_Related”;
TIMESPEC “TS_primary” = PERIOD “TNM_Primary” PeriodValue HIGH HighValue%;
TIMESPEC TS_related” = PERIOD “TNM_Related” TS_Primary_relation PHASE value;
異步時鐘域
xilinx無法分析,具體參考ug612。
4.輸出時序約束
輸出就是輸入的逆,因此分析的過程是類似的,分類也是類似的。針對時鐘的不同,有系統(tǒng)同步和源同步兩種。此處不再詳細(xì)說明。
系統(tǒng)同步SDR

源同步DDR(一般來說不給約束就可以)

5. 總結(jié)
時序收斂的目的是讓FPGA design 按預(yù)設(shè)的邏輯正常的工作。
為了使其正常工作,需要考慮至少三處:FPGA內(nèi)部的寄存器-寄存器時序要求,F(xiàn)PGA輸入數(shù)據(jù)的時序要求,F(xiàn)PGA輸出信號的要求。
電子發(fā)燒友App



















































評論