本文將詳細(xì)介紹輸出延時(output delay)的概念、場景分類、約束參數(shù)獲取方法以及約束方法。
圖1 output delay約束類型
如上圖1所示:輸出延時(output delay)約束與輸入延時(input delay)約束相似,輸出延時亦分成系統(tǒng)同步和源同步兩大情形。
其中源同步根據(jù)時鐘特性,又可以細(xì)分成SDR和DDR兩種情況。根據(jù)數(shù)據(jù)和時鐘的相位關(guān)系,DDR可以分成中心對齊和邊沿兩種。本文將詳細(xì)討論各種情況下的約束方法。
第1節(jié) 輸出延時約束的目的
在詳細(xì)討論輸出延時約束之前,明確為什么要做輸出延時約束,通過該約束可以解決什么問題?
第2節(jié) 輸出延時概念
設(shè)置輸出延時的目標(biāo):讓FPGA調(diào)整自身輸出的時序,使輸出的時序滿足下游器件寄存器的建立時間和保持時間要求,來使得下游器件能夠正確的捕獲數(shù)據(jù)。
2.1 輸出延時的max與min
2.1.1 max
max的意思是最大延時時間,用于考慮建立時間:一般為正數(shù),表示數(shù)據(jù)在時鐘采樣沿之前就到達(dá)。
最大延時時間公式:最大板級延時+TSU。TSU為下游器件要求的建立時間。假如板級延時為0,則max就是下游器件的“TSU”。
2.1.2 min
min的意思為最小延時時間,用于考慮保持時間:一般為負(fù)數(shù),表示數(shù)據(jù)在時鐘采樣沿之后還保持了一段時間 。
公式:最小板級延時-TH。TH為下游器件要求的保持時間。假如板級延時為0,min則是下游器件的“-Th”。
第3節(jié) 輸出延時的兩種測量方法
3.1 下游器件的參數(shù)(推薦)
第一種是根據(jù)下游器件的參數(shù)來設(shè)置建立時間和保持時間,通過下游器件的數(shù)據(jù)手冊,可以得知下游器件寄存器的建立時間和保持時間的要求。在得知下游器件的建立時間和保持時間之后,就可以進(jìn)行相應(yīng)的設(shè)置,從而實現(xiàn)時序約束。
3.2 示波器測量
第二種方法是用示波器測量下游器件的一個輸入端口,來得到它的時序信息。 比如說它的延時這種信息。但這種方法一般不常用。本書推薦使用第一種方法,因為第二種方法要求硬件做的比較規(guī)范,不能出現(xiàn)延時不斷抖動的情況。
第4節(jié) 各應(yīng)用場景下的約束方法
接下來討論各種不同情況下輸出接口的時序約束方式。
4.1 系統(tǒng)同步
如圖2所示,系統(tǒng)同步就是FPGA和下游器件共用一個時鐘,可以認(rèn)為這個時鐘的延時等于零。但實際上,F(xiàn)PGA把數(shù)據(jù)送給下游器件,是有一定延時的。
一般下游器件的寄存器會有一個建立時間和保持時間參數(shù)。可以從數(shù)據(jù)手冊中得到下游器件相應(yīng)的參數(shù),比如說它的建立時間是2ns,保持時間是1ns。而FPGA的延時可能符合一個抖動的情況,通過示波器測量或者計算方式可以得到FPGA的板級延時。比如說它的板級延時最大是0.5ns,板級延時最小是0.3ns。
圖2 系統(tǒng)同步接口示意圖
當(dāng)測量得到板級延時之后,下一步便可以進(jìn)行配置了。比如說最大的輸出延時為最大的板級延時加上建立時間要求,即2ns+0.5ns=2.5ns。最小板級延時為輸出最小延遲時間減去下游芯片寄存器保持時間,即0.3ns–1ns=-0.7ns。使用TCL語句實現(xiàn)以上約束的代碼如下所示:
上面約束語句首先是通過creat_clock創(chuàng)建了一個生成時鐘,輸出給下游芯片作為時鐘信號(需要注意該信號本身是存在的,只是通過創(chuàng)建生成時鐘的方式告知quartus、vivado等綜合軟件該信號是時鐘信號)。然后,set_output_delay –clock sysclk -max 2.5 [get_ports DOUT]的含義就是輸出信號DOUT相對生成時鐘sysclk的最大延遲是2.5ns。而set_output_delay –clock sysclk -min -0.7 [get_ports DOUT] 的含義就是輸出信號DOUT相對生成時鐘sysclk的最小延遲是-0.7ns。
這是系統(tǒng)同步的情況,系統(tǒng)同步就是FPGA和下游器件共用一個時鐘信號。
4.2 源同步SDR
接下來看一下源同步,如圖3所示,F(xiàn)PGA輸出數(shù)據(jù)給下游器件同時,也會與數(shù)據(jù)同步輸出一個時鐘信號給下游器件,時鐘和數(shù)據(jù)一起傳輸。其中分為SDR和DDR。SDR是指使用時鐘上升沿去采樣數(shù)據(jù),DDR是指上升沿和下降沿都去采樣數(shù)據(jù)。
圖3 SDR傳輸示意圖
上圖3為典型的SDR傳輸示意圖,SDR使用上升沿對數(shù)據(jù)進(jìn)行采樣。SDR的原理、方法與系統(tǒng)同步都是一樣的,也是通過查數(shù)據(jù)手冊得到下游器件寄存器的建立時間、保持時間。它保持的要求也能知道我的這個延時的抖動是多少啊。在測量之后得到最大抖動和最小抖動,就能根據(jù)公式計算出最大延遲時間和最小延遲時間。根據(jù)公式,最大延時時間是指板級傳輸延時最大值加上下游器件建立時間要求,而最小延遲是指板級傳輸延遲最小值減去下游器件保持時間。
MP801開發(fā)板提供了兩路高速DAC,AD9709時鐘頻率最高支持125MHz,輸出也是符合SDR要求的,通過閱讀手冊獲取該芯片寄存器的建立時間和保持時間。如下圖4是AD9709芯片的接口時序圖,CLK2是時鐘信號,WRT2是類似寫使能的信號,一般與時鐘CLK保持一致即可,DATA IN是FPGA個AD9709芯片的八位數(shù)字信號,而IOUTA OR IOUTB是DAC芯片的兩路模擬輸出信號,與本次時序分析無關(guān)。建立時間是指數(shù)據(jù)必須在時鐘上升沿之前到達(dá)的一段時間,所以下圖中ts就是AD9709接口寄存器建立時間。保持時間是指數(shù)據(jù)必須在時鐘上升沿之后保持的一段時間,所以下圖中tH就是AD9709接口寄存器的保持時間。
圖4 AD9709接口時序圖
在根據(jù)芯片手冊的數(shù)據(jù)表查的上圖4中對應(yīng)的時間,如下圖5所示,tS的最小值為2.0ns,故建立時間為2.0ns,保持時間tH為1.5ns。能夠?qū)Ω拍罾斫猓还苁鞘裁葱酒伎梢愿鶕?jù)芯片手冊的接口時序圖得知接口寄存器的建立時間和保持時間,后續(xù)時序約束可以直接使用該參數(shù)。
圖5 AD9709芯片時間參數(shù)
4.3 源同步-DDR(查手冊方法)
DDR其實就是SDRAM的升級版,為了提高數(shù)據(jù)傳輸效率,DDR在時鐘的上升沿和下降沿都對數(shù)據(jù)采樣。同樣可以查手冊得到接口寄存器的建立時間、保持時間,由于在時鐘上升沿和下降沿都在采集數(shù)據(jù),在這兩個邊沿都會存在建立時間和保持時間的要求,例如:
圖6 DDR接口示意圖
如上圖6要求上升沿建立時間tsu_r為0.7ns,上升沿的保持時間thd_r為0.3ns,下降沿的建立時間tsu_f為0.6ns,下降沿的保持時間thd_f為0.4ns。進(jìn)行IO約束之前,一般都會先約束一個生成時鐘,目的在于告訴綜合軟件該接口信號以哪個時鐘信號為標(biāo)準(zhǔn),便于后續(xù)約束直接使用。根據(jù)理論知識,如果時鐘線與數(shù)據(jù)信號線的PCB走線做了等長處理,那么源同步的最大延遲為下游器件的建立時間,最小延遲為0減去下游器件的保持時間。所以該DDR上升沿最大延遲0.7ns,最小延遲為0-0.3ns=0.3ns,下降沿最大延遲0.6ns,最小延遲是-0.4ns。上述約束轉(zhuǎn)換成TCL代碼如下所示:
注意這個clock_for下降沿的時候,要加上-add_delay。上面的六句約束中的前面兩句時鐘約束不是一定存在的,這兩句與前面的時鐘約束方式是一樣的,后面四句set_output_delay用于約束輸出接口信號所對應(yīng)的最大和最小輸出延遲,帶有clock for的表示以時鐘的下降沿作為參考點,從而完成對DDR輸出接口信號的約束。
有的讀者會注意到input delay 有個什么叫中心對齊的,為什么這里就沒有了?因為 input delay 是靠測量的方式去得到的,而output delay是查數(shù)據(jù)手冊的方式獲得的數(shù)據(jù)。那么他的邊緣這個點的時候,就不不可能會抖動。在下降沿的時候,在之前會穩(wěn)定,穩(wěn)定多久,之后會穩(wěn)定多久,因此他一定是這么穩(wěn)這樣一個情況的啊,他會把這個實際參數(shù)要求給你啊,所以沒有什么邊緣對齊和中心對齊的情況。我們從查數(shù)據(jù)手冊就會查到這幾個參數(shù),然后進(jìn)行配置就可以了啊。還有一點就是對于我們的板級延時的一般情況下呢,如果我們硬件做的好的板,這件事是不需要考慮的。也就是說我們的output delay 一般呢就是設(shè)置它的鑒定時間啊,就是從手冊里面得到它鑒定時間和保質(zhì)時間這兩個參數(shù)。然后根據(jù)它公式直接就是配置就可以了啊,所以它output delay 的方式相對比較簡單。
第5節(jié) 總結(jié)與建議
根據(jù)經(jīng)驗,按照順序去索引,找到對應(yīng)的情況,按要求進(jìn)行約束。比如說這個端口是屬于上面三種情況中的哪一種,就按照那一種進(jìn)行配置,進(jìn)行約束就可以了。
input delay 、output delay就是告訴綜合工具現(xiàn)在的實際情況。告訴綜合軟件FPGA下游器件的情況、要求是什么,綜合軟件得知這些參數(shù)后,結(jié)合自身的參數(shù),在對設(shè)計進(jìn)行布局、布線時就會去考慮滿足下游器件的建立時間和保持時間要求。如果延遲時間過長,可以通過減小內(nèi)部走線的延遲,或者采用更加接近芯片管腳的觸發(fā)器去實現(xiàn)設(shè)計,減小輸出延遲來達(dá)到目的。如果延遲過短導(dǎo)致下游器件保持時間不滿足,綜合軟件可以通過增加走線延遲等增大輸出延遲時間的方式滿足下游器件保持時間的要求??傊?,只要添加合理的約束,告知綜合軟件下游器件的延遲要求,綜合軟件就可以通過調(diào)節(jié)內(nèi)部觸發(fā)器的布局、走線來滿足下游器件的建立時間和保持時間的要求,從而達(dá)到約束的目的。這就是 output delay 一個配置方式,相對比較簡單。
審核編輯:湯梓紅
-
dac
+關(guān)注
關(guān)注
43文章
2304瀏覽量
191274 -
時鐘
+關(guān)注
關(guān)注
11文章
1740瀏覽量
131633 -
時序約束
+關(guān)注
關(guān)注
1文章
115瀏覽量
13433
發(fā)布評論請先 登錄
相關(guān)推薦
評論