FPGA时序约束建立时间与保持时间概念
建立時(shí)間(setup time)是指在觸發(fā)器的時(shí)鐘信號(hào)上升沿到來(lái)以前,數(shù)據(jù)穩(wěn)定不變的時(shí)間,如果建立時(shí)間不夠,數(shù)據(jù)將不能在這個(gè)時(shí)鐘上升沿被打入觸發(fā)器;
保持時(shí)間(hold time)是指在觸發(fā)器的時(shí)鐘信號(hào)上升沿到來(lái)以后,數(shù)據(jù)穩(wěn)定不變的時(shí)間,
如果保持時(shí)間不夠,數(shù)據(jù)同樣不能被打入觸發(fā)器。
建立時(shí)間不滿(mǎn)足,只能重新綜合設(shè)計(jì),并以違例路徑為目標(biāo)進(jìn)行優(yōu)化,以及對(duì)涉及到違例的組合邏輯以及子模塊加緊約束。
保持時(shí)間不滿(mǎn)足,可在布圖前或者布圖后再修改這些違例,通常布圖后再修改。因?yàn)椴紙D前綜合,時(shí)序分析采用統(tǒng)計(jì)線(xiàn)載模型,在布局前修正保持時(shí)間違例可能會(huì)導(dǎo)致布圖后建立時(shí)間違例。
1、setup time的意義:為什么Data需要在Clock到達(dá)之前到達(dá)?
? ???其實(shí)在實(shí)際的問(wèn)題中,setuptime并不一定是大于零的,因?yàn)镃lock到達(dá)時(shí)刻并不等同于latch的傳輸門(mén)A關(guān)閉的時(shí)刻(更何況這種關(guān)閉并不是絕對(duì)的和瞬間完成的),這之間有一個(gè)未知的延遲時(shí)間。
????為使問(wèn)題簡(jiǎn)化,假設(shè)Clock的到達(dá)時(shí)刻為傳輸門(mén)A關(guān)閉、傳輸們B打開(kāi)的時(shí)刻。如果Data沒(méi)有在這之前足夠早的時(shí)刻到達(dá),那么很有可能內(nèi)部的feedback線(xiàn)路上的電壓還沒(méi)有達(dá)到足夠使得inv1翻轉(zhuǎn)的地步(因?yàn)閕nv0有延時(shí),Data有slope,傳輸門(mén)B打開(kāi)后原來(lái)的Q值將通過(guò)inv2迫使feedback保持原來(lái)的值)。如果這種競(jìng)爭(zhēng)的情況發(fā)生,Q的舊值將有可能獲勝,使Q不能夠寄存住正確的Data值;當(dāng)然如果feedback上的電壓已經(jīng)達(dá)到了足夠大的程度也有可能在競(jìng)爭(zhēng)中取勝,使得Q能夠正確輸出。
? ???如果inv0、inv1和inv2的延時(shí)較大(Data的變化影響feedback和Q的時(shí)間越長(zhǎng)),那么為了保證正確性就需要更大的setuptime。所以在實(shí)際測(cè)量setup time的時(shí)候,需要選取工藝中最慢的corner進(jìn)行仿真測(cè)量。
2、hold time的意義:為什么Data在Clock到達(dá)之后仍然要保持一段時(shí)間?
? ???和setuptime的情況不一樣,因?yàn)镃lock到達(dá)時(shí)刻并不等同于latch的傳輸門(mén)A完全關(guān)閉的時(shí)刻。所以如果Data沒(méi)有在Clock到達(dá)之后保持足夠長(zhǎng)的時(shí)間,那么很有可能在傳輸門(mén)A完全關(guān)閉之前Data就已經(jīng)變化了,并且引起了feedback的變化。如果這種變化足夠大、時(shí)間足夠長(zhǎng)的話(huà),很有可能將feedback從原本正確的低電壓拉到較高電壓的電壓。甚至如果這種錯(cuò)誤足夠劇烈,導(dǎo)致了inv1和inv2組成的keeper發(fā)生了翻轉(zhuǎn),從而徹底改變了Q的正確值,就會(huì)導(dǎo)致輸出不正確。當(dāng)然,如果這種錯(cuò)誤電壓不是足夠大到能夠改變keeper的值,就不會(huì)影響到Q的正確輸出。
? ???如果inv0、inv1和inv2的延時(shí)較小(Data的變化影響feedback和Q的時(shí)間越短),那么為了保證正確性,就需要更大的holdtime。所以在實(shí)際測(cè)量holdtime的時(shí)候,需要選取工藝中最快的corner進(jìn)行仿真測(cè)量。
?
時(shí)鐘周期為T(mén),觸發(fā)器D1的時(shí)鐘沿到來(lái)到觸發(fā)器Q變化的時(shí)間Tco(CLK--Q)最大為T(mén)1max,最小為T(mén)1min,邏輯組合電路的延遲時(shí)間最大為T(mén)2max,最小為T(mén)2min,問(wèn)觸發(fā)器D2的建立時(shí)間和保持時(shí)間。
最終答案:T3setup
maxbird:D2的保持時(shí)間就是時(shí)鐘沿到來(lái)之后,D2的數(shù)據(jù)輸入端要保持?jǐn)?shù)據(jù)不變的時(shí)間,這個(gè)時(shí)間是由D1和D2之間的組合邏輯時(shí)延決定的。例如:假設(shè)D1和D2之間的組合邏輯時(shí)延為2ns,時(shí)鐘周期為10ns,這意味著在時(shí)鐘沿來(lái)到后,D1輸出的新數(shù)據(jù)要過(guò)2ns才會(huì)到達(dá)D2的數(shù)據(jù)輸入端,那么在這2ns內(nèi),D2的數(shù)據(jù)輸入端保持的還是上一次的舊數(shù)據(jù),其值不會(huì)立即更新,假設(shè)D2的最小保持時(shí)間為3ns,這意味時(shí)鐘沿到來(lái)后,D2的數(shù)據(jù)輸入端的值在3ns內(nèi)不能有變化,回到問(wèn)題的關(guān)鍵,由于D1在時(shí)鐘沿到來(lái)后的輸出結(jié)果,經(jīng)過(guò)2ns的組合邏輯延時(shí)便到達(dá)了D2的輸入端,而D2要求在時(shí)鐘沿到來(lái)后的3ns內(nèi)其輸入端的值不能改變,這樣D2的保持時(shí)間就得不到滿(mǎn)足,所以D2的保持時(shí)間必須小于等于2ns。至于說(shuō)T2min為0時(shí)的情況,其實(shí)T2min是永遠(yuǎn)不能為0的,即使是一根導(dǎo)線(xiàn)其時(shí)延也是不可能為0的,這就是為什么移位寄存器的兩個(gè)觸發(fā)器之間連的只是一根導(dǎo)線(xiàn),導(dǎo)線(xiàn)后端觸發(fā)器的保持時(shí)間卻還是可以滿(mǎn)足的原因,其實(shí)移位寄存器中觸發(fā)器的保持時(shí)間可以看成是小于等于其間導(dǎo)線(xiàn)的時(shí)延。
建立時(shí)間:觸發(fā)器在時(shí)鐘沿來(lái)到前,其數(shù)據(jù)輸入端的數(shù)據(jù)必須保持不變的時(shí)間;保持時(shí)間:觸發(fā)器在時(shí)鐘沿來(lái)到后,其數(shù)據(jù)輸入端的數(shù)據(jù)必須保持不變的時(shí)間。
因?yàn)橛|發(fā)器內(nèi)部數(shù)據(jù)的形成是需要一定的時(shí)間的,如果不滿(mǎn)足建立和保持時(shí)間,觸發(fā)器將進(jìn)入亞穩(wěn)態(tài),進(jìn)入亞穩(wěn)態(tài)后觸發(fā)器的輸出將不穩(wěn)定,在0和1之間變化,這時(shí)需要經(jīng)過(guò)一個(gè)恢復(fù)時(shí)間,其輸出才能穩(wěn)定,但穩(wěn)定后的值并不一定是你的輸入值。這就是為什么要用兩級(jí)觸發(fā)器來(lái)同步異步輸入信號(hào)。這樣做可以防止由于異步輸入信號(hào)對(duì)于本級(jí)時(shí)鐘可能不滿(mǎn)足建立保持時(shí)間而使本級(jí)觸發(fā)器產(chǎn)生的亞穩(wěn)態(tài)傳播到后面邏輯中,導(dǎo)致亞穩(wěn)態(tài)的傳播。兩級(jí)觸發(fā)器可防止亞穩(wěn)態(tài)傳播的原理:假設(shè)第一級(jí)觸發(fā)器的輸入不滿(mǎn)足其建立保持時(shí)間,它在第一個(gè)脈沖沿到來(lái)后輸出的數(shù)據(jù)就為亞穩(wěn)態(tài),那么在下一個(gè)脈沖沿到來(lái)之前,其輸出的亞穩(wěn)態(tài)數(shù)據(jù)在一段恢復(fù)時(shí)間后必須穩(wěn)定下來(lái),而且穩(wěn)定的數(shù)據(jù)必須滿(mǎn)足第二級(jí)觸發(fā)器的建立時(shí)間,如果都滿(mǎn)足了,在下一個(gè)脈沖沿到來(lái)時(shí),第二級(jí)觸發(fā)器將不會(huì)出現(xiàn)亞穩(wěn)態(tài),因?yàn)槠漭斎攵说臄?shù)據(jù)滿(mǎn)足其建立保持時(shí)間。同步器有效的條件:第一級(jí)觸發(fā)器進(jìn)入亞穩(wěn)態(tài)后的恢復(fù)時(shí)間 + 第二級(jí)觸發(fā)器的建立時(shí)間 < =時(shí)鐘周期。(編者注:maxbird在該部分詳細(xì)說(shuō)明了建立時(shí)間和保持時(shí)間的概念,以及如果不滿(mǎn)足二者可能導(dǎo)致的亞穩(wěn)態(tài)的傳播。注意這里說(shuō)的建立時(shí)間和保持時(shí)間都是針對(duì)時(shí)鐘而言的,在進(jìn)行時(shí)序約束時(shí)所指的就是這種,而很多網(wǎng)友以前學(xué)習(xí)的建立時(shí)間保持時(shí)間的概念是針對(duì)信號(hào)而言的,所指的對(duì)象不同,分析出來(lái)的結(jié)論完全相反,一定注意不要混淆。)
保持時(shí)間和建立時(shí)間
**保持時(shí)間和建立時(shí)間** ?在描述保持時(shí)間和建立時(shí)間之前我們首先需要了解為什么需要保持時(shí)間和建立時(shí)間,通俗的說(shuō)就是在時(shí)鐘信號(hào)來(lái)臨之前,傳輸給寄存器的信號(hào)必須保持穩(wěn)定,有效,才可以打入觸發(fā)器,稱(chēng)為建立時(shí)間;時(shí)鐘沿來(lái)了之后,信號(hào)必須維持穩(wěn)定一段時(shí)間,使得信號(hào)能夠正確被打入觸發(fā)器; ? ?
下面我們就經(jīng)典的D觸發(fā)器來(lái)解釋這一現(xiàn)象: ?
? ? ? ? ?當(dāng)CLK=1,D=0時(shí),則G6輸出為1,G5輸出為0,G3輸出為1,G4輸出為0,最后Q=0; ? ? ? 當(dāng)CLK=1,D=1時(shí),則G6輸出為0,G5輸出為1,G3輸出為0,G4輸出為1,最后Q=1; ?我們可以看到為了得到G3和G4的值,則在CLK =1,之前,必須先得出G5,G6的值,也就是說(shuō)在時(shí)鐘上升沿來(lái)臨之前,D值必須經(jīng)過(guò)G6,G5,也就是所謂的建立時(shí)間; ??
那么保持時(shí)間就是:在時(shí)鐘來(lái)臨之后,D值不能改變,必須維持原來(lái)的值,直到G4輸出值返回給G6的輸入端之后,D值才允許改變,此時(shí)即使D改變也不會(huì)影響G3,G4的輸出; ?以上描述是基于觸發(fā)器層面上的,下面我們?cè)谕ㄟ^(guò)寄存器層次來(lái)描述建立時(shí)間和保持時(shí)間; ? ?
首先先看一張同步設(shè)計(jì)的基本模型圖
我們假設(shè)T1,T2寄存器是一條路徑上的相連的兩個(gè)寄存器,數(shù)據(jù)輸入到T1經(jīng)過(guò)1個(gè)clk之后,傳輸?shù)絋2; ?Tco為經(jīng)過(guò)寄存器T1的傳輸延時(shí); Tdelay為經(jīng)過(guò)組合邏輯的傳輸延時(shí); Tsetup為T(mén)2的建立時(shí)間; ?Tpd為時(shí)鐘到T1和T2的偏差; 在一個(gè)時(shí)鐘周期T之內(nèi),數(shù)據(jù)從寄存器T1傳出,需要經(jīng)過(guò)延時(shí)Tco,然后經(jīng)過(guò)組合邏輯,需要經(jīng)過(guò)延時(shí)Tdelay,最后到達(dá)寄存器T2,然后在寄存器T2建立起來(lái),需要經(jīng)過(guò)延時(shí)Tsetup(這個(gè)延時(shí)我們?cè)谥耙呀?jīng)講解過(guò)為什么了),那么可以得出建立時(shí)間的要求: ? ?
?Tsetup <= Tpd+ T – Tco(max)-Tdelay(max);?
這里我們需要注意的是max,因?yàn)榻?jīng)過(guò)寄存器和組合邏輯有一個(gè)最大延遲和最小的延遲,對(duì)于建立時(shí)間來(lái)說(shuō),考慮到最?lèi)毫拥那闆r就是必須考慮到這些最大的延遲;之所以需要加上Tpd是因?yàn)闀r(shí)鐘也有可能存在著傳輸?shù)钠?#xff1b; ?
保持時(shí)間Thold,我們?cè)谏厦嬉呀?jīng)描述過(guò)了為什么需要保持時(shí)間,現(xiàn)在我們知道T2的輸入在時(shí)鐘上升沿來(lái)之后必須保持一段時(shí)間的穩(wěn)定,也就是說(shuō)輸入值不能發(fā)生改變,此時(shí)T1寄存器的值經(jīng)過(guò)Tco,經(jīng)過(guò)組合邏輯Tdelay,才到達(dá)T2,那么可以得出保持時(shí)間的要求: ? ?
Thold <= Tco(min) + Tdelay(min); ?
這里為什么是min,因?yàn)槲覀冃枰紤]到下一個(gè)信號(hào)最快傳輸?shù)絋2的情況,那么最小的延時(shí)也就是代表著最快的傳輸; ? ?
參考文獻(xiàn):?
?1. 數(shù)字電子技術(shù)基礎(chǔ).(閻石,第五版)
?2. ~~~建立時(shí)間與保持時(shí)間(兩個(gè)寄存器的詳細(xì)分析) - yuedx的個(gè)人空間 - 中國(guó)電子頂級(jí)開(kāi)發(fā)網(wǎng)(EETOP)-電子設(shè)計(jì)論壇、博客、超人氣的電子工程師資料分享平臺(tái) - Powered by X-Space.htm?
3. 建立時(shí)間和保持時(shí)間關(guān)系詳解 - Ethan的日志 - 網(wǎng)易博客.htm?
4. 建立時(shí)間、保持時(shí)間和時(shí)序約束條件 - 第1頁(yè) - 東大小小的數(shù)字世界 - EDN China電子設(shè)計(jì)技術(shù).htm
總結(jié)
以上是生活随笔為你收集整理的FPGA时序约束建立时间与保持时间概念的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 2013年10个稳赚行业曝光
- 下一篇: eset smart security