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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

FPGA时序约束建立时间与保持时间概念

發(fā)布時間:2023/12/14 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 FPGA时序约束建立时间与保持时间概念 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

建立時間(setup time)是指在觸發(fā)器的時鐘信號上升沿到來以前,數(shù)據(jù)穩(wěn)定不變的時間,如果建立時間不夠,數(shù)據(jù)將不能在這個時鐘上升沿被打入觸發(fā)器;

保持時間(hold time)是指在觸發(fā)器的時鐘信號上升沿到來以后,數(shù)據(jù)穩(wěn)定不變的時間,
如果保持時間不夠,數(shù)據(jù)同樣不能被打入觸發(fā)器。

建立時間不滿足,只能重新綜合設(shè)計,并以違例路徑為目標(biāo)進(jìn)行優(yōu)化,以及對涉及到違例的組合邏輯以及子模塊加緊約束。

保持時間不滿足,可在布圖前或者布圖后再修改這些違例,通常布圖后再修改。因為布圖前綜合,時序分析采用統(tǒng)計線載模型,在布局前修正保持時間違例可能會導(dǎo)致布圖后建立時間違例。

1、setup time的意義:為什么Data需要在Clock到達(dá)之前到達(dá)?
? ???其實在實際的問題中,setuptime并不一定是大于零的,因為Clock到達(dá)時刻并不等同于latch的傳輸門A關(guān)閉的時刻(更何況這種關(guān)閉并不是絕對的和瞬間完成的),這之間有一個未知的延遲時間。
????為使問題簡化,假設(shè)Clock的到達(dá)時刻為傳輸門A關(guān)閉、傳輸們B打開的時刻。如果Data沒有在這之前足夠早的時刻到達(dá),那么很有可能內(nèi)部的feedback線路上的電壓還沒有達(dá)到足夠使得inv1翻轉(zhuǎn)的地步(因為inv0有延時,Data有slope,傳輸門B打開后原來的Q值將通過inv2迫使feedback保持原來的值)。如果這種競爭的情況發(fā)生,Q的舊值將有可能獲勝,使Q不能夠寄存住正確的Data值;當(dāng)然如果feedback上的電壓已經(jīng)達(dá)到了足夠大的程度也有可能在競爭中取勝,使得Q能夠正確輸出。
? ???如果inv0、inv1和inv2的延時較大(Data的變化影響feedback和Q的時間越長),那么為了保證正確性就需要更大的setuptime。所以在實際測量setup time的時候,需要選取工藝中最慢的corner進(jìn)行仿真測量。

2、hold time的意義:為什么Data在Clock到達(dá)之后仍然要保持一段時間?
? ???和setuptime的情況不一樣,因為Clock到達(dá)時刻并不等同于latch的傳輸門A完全關(guān)閉的時刻。所以如果Data沒有在Clock到達(dá)之后保持足夠長的時間,那么很有可能在傳輸門A完全關(guān)閉之前Data就已經(jīng)變化了,并且引起了feedback的變化。如果這種變化足夠大、時間足夠長的話,很有可能將feedback從原本正確的低電壓拉到較高電壓的電壓。甚至如果這種錯誤足夠劇烈,導(dǎo)致了inv1和inv2組成的keeper發(fā)生了翻轉(zhuǎn),從而徹底改變了Q的正確值,就會導(dǎo)致輸出不正確。當(dāng)然,如果這種錯誤電壓不是足夠大到能夠改變keeper的值,就不會影響到Q的正確輸出。
? ???如果inv0、inv1和inv2的延時較小(Data的變化影響feedback和Q的時間越短),那么為了保證正確性,就需要更大的holdtime。所以在實際測量holdtime的時候,需要選取工藝中最快的corner進(jìn)行仿真測量。

?

時鐘周期為T,觸發(fā)器D1的時鐘沿到來到觸發(fā)器Q變化的時間Tco(CLK--Q)最大為T1max,最小為T1min,邏輯組合電路的延遲時間最大為T2max,最小為T2min,問觸發(fā)器D2的建立時間和保持時間。

最終答案:T3setup
maxbird:D2的保持時間就是時鐘沿到來之后,D2的數(shù)據(jù)輸入端要保持?jǐn)?shù)據(jù)不變的時間,這個時間是由D1和D2之間的組合邏輯時延決定的。例如:假設(shè)D1和D2之間的組合邏輯時延為2ns,時鐘周期為10ns,這意味著在時鐘沿來到后,D1輸出的新數(shù)據(jù)要過2ns才會到達(dá)D2的數(shù)據(jù)輸入端,那么在這2ns內(nèi),D2的數(shù)據(jù)輸入端保持的還是上一次的舊數(shù)據(jù),其值不會立即更新,假設(shè)D2的最小保持時間為3ns,這意味時鐘沿到來后,D2的數(shù)據(jù)輸入端的值在3ns內(nèi)不能有變化,回到問題的關(guān)鍵,由于D1在時鐘沿到來后的輸出結(jié)果,經(jīng)過2ns的組合邏輯延時便到達(dá)了D2的輸入端,而D2要求在時鐘沿到來后的3ns內(nèi)其輸入端的值不能改變,這樣D2的保持時間就得不到滿足,所以D2的保持時間必須小于等于2ns。至于說T2min為0時的情況,其實T2min是永遠(yuǎn)不能為0的,即使是一根導(dǎo)線其時延也是不可能為0的,這就是為什么移位寄存器的兩個觸發(fā)器之間連的只是一根導(dǎo)線,導(dǎo)線后端觸發(fā)器的保持時間卻還是可以滿足的原因,其實移位寄存器中觸發(fā)器的保持時間可以看成是小于等于其間導(dǎo)線的時延。
建立時間:觸發(fā)器在時鐘沿來到前,其數(shù)據(jù)輸入端的數(shù)據(jù)必須保持不變的時間;保持時間:觸發(fā)器在時鐘沿來到后,其數(shù)據(jù)輸入端的數(shù)據(jù)必須保持不變的時間。
因為觸發(fā)器內(nèi)部數(shù)據(jù)的形成是需要一定的時間的,如果不滿足建立和保持時間,觸發(fā)器將進(jìn)入亞穩(wěn)態(tài),進(jìn)入亞穩(wěn)態(tài)后觸發(fā)器的輸出將不穩(wěn)定,在0和1之間變化,這時需要經(jīng)過一個恢復(fù)時間,其輸出才能穩(wěn)定,但穩(wěn)定后的值并不一定是你的輸入值。這就是為什么要用兩級觸發(fā)器來同步異步輸入信號。這樣做可以防止由于異步輸入信號對于本級時鐘可能不滿足建立保持時間而使本級觸發(fā)器產(chǎn)生的亞穩(wěn)態(tài)傳播到后面邏輯中,導(dǎo)致亞穩(wěn)態(tài)的傳播。兩級觸發(fā)器可防止亞穩(wěn)態(tài)傳播的原理:假設(shè)第一級觸發(fā)器的輸入不滿足其建立保持時間,它在第一個脈沖沿到來后輸出的數(shù)據(jù)就為亞穩(wěn)態(tài),那么在下一個脈沖沿到來之前,其輸出的亞穩(wěn)態(tài)數(shù)據(jù)在一段恢復(fù)時間后必須穩(wěn)定下來,而且穩(wěn)定的數(shù)據(jù)必須滿足第二級觸發(fā)器的建立時間,如果都滿足了,在下一個脈沖沿到來時,第二級觸發(fā)器將不會出現(xiàn)亞穩(wěn)態(tài),因為其輸入端的數(shù)據(jù)滿足其建立保持時間。同步器有效的條件:第一級觸發(fā)器進(jìn)入亞穩(wěn)態(tài)后的恢復(fù)時間 + 第二級觸發(fā)器的建立時間 < =時鐘周期。(編者注:maxbird在該部分詳細(xì)說明了建立時間和保持時間的概念,以及如果不滿足二者可能導(dǎo)致的亞穩(wěn)態(tài)的傳播。注意這里說的建立時間和保持時間都是針對時鐘而言的,在進(jìn)行時序約束時所指的就是這種,而很多網(wǎng)友以前學(xué)習(xí)的建立時間保持時間的概念是針對信號而言的,所指的對象不同,分析出來的結(jié)論完全相反,一定注意不要混淆。)

保持時間和建立時間

**保持時間和建立時間** ?
在描述保持時間和建立時間之前我們首先需要了解為什么需要保持時間和建立時間,通俗的說就是在時鐘信號來臨之前,傳輸給寄存器的信號必須保持穩(wěn)定,有效,才可以打入觸發(fā)器,稱為建立時間;時鐘沿來了之后,信號必須維持穩(wěn)定一段時間,使得信號能夠正確被打入觸發(fā)器; ? ?

下面我們就經(jīng)典的D觸發(fā)器來解釋這一現(xiàn)象: ?


首先描述一下觸發(fā)器的原理,便于我們理解之后的說明; ?當(dāng)CLK=0時,圖5.7.4中G3,G4,輸出的都為1,則G5,G6,輸出分別為D,D’, G1,G2則維持原來的值保持不變,所以我們可以看出寄存器在時鐘上升沿到來之前所鎖存的值為上一次的值;
? ? ? ? ?當(dāng)CLK=1,D=0時,則G6輸出為1,G5輸出為0,G3輸出為1,G4輸出為0,最后Q=0; ? ? ? 當(dāng)CLK=1,D=1時,則G6輸出為0,G5輸出為1,G3輸出為0,G4輸出為1,最后Q=1; ?我們可以看到為了得到G3和G4的值,則在CLK =1,之前,必須先得出G5,G6的值,也就是說在時鐘上升沿來臨之前,D值必須經(jīng)過G6,G5,也就是所謂的建立時間; ??


那么保持時間就是:在時鐘來臨之后,D值不能改變,必須維持原來的值,直到G4輸出值返回給G6的輸入端之后,D值才允許改變,此時即使D改變也不會影響G3,G4的輸出; ?以上描述是基于觸發(fā)器層面上的,下面我們在通過寄存器層次來描述建立時間和保持時間; ? ?

首先先看一張同步設(shè)計的基本模型圖


我們假設(shè)T1,T2寄存器是一條路徑上的相連的兩個寄存器,數(shù)據(jù)輸入到T1經(jīng)過1個clk之后,傳輸?shù)絋2; ?Tco為經(jīng)過寄存器T1的傳輸延時; Tdelay為經(jīng)過組合邏輯的傳輸延時; Tsetup為T2的建立時間; ?Tpd為時鐘到T1和T2的偏差; 在一個時鐘周期T之內(nèi),數(shù)據(jù)從寄存器T1傳出,需要經(jīng)過延時Tco,然后經(jīng)過組合邏輯,需要經(jīng)過延時Tdelay,最后到達(dá)寄存器T2,然后在寄存器T2建立起來,需要經(jīng)過延時Tsetup(這個延時我們在之前已經(jīng)講解過為什么了),那么可以得出建立時間的要求: ? ?

?Tsetup <= Tpd+ T – Tco(max)-Tdelay(max);?

這里我們需要注意的是max,因為經(jīng)過寄存器和組合邏輯有一個最大延遲和最小的延遲,對于建立時間來說,考慮到最惡劣的情況就是必須考慮到這些最大的延遲;之所以需要加上Tpd是因為時鐘也有可能存在著傳輸?shù)钠?#xff1b; ?

保持時間Thold,我們在上面已經(jīng)描述過了為什么需要保持時間,現(xiàn)在我們知道T2的輸入在時鐘上升沿來之后必須保持一段時間的穩(wěn)定,也就是說輸入值不能發(fā)生改變,此時T1寄存器的值經(jīng)過Tco,經(jīng)過組合邏輯Tdelay,才到達(dá)T2,那么可以得出保持時間的要求: ? ?

Thold <= Tco(min) + Tdelay(min); ?

這里為什么是min,因為我們需要考慮到下一個信號最快傳輸?shù)絋2的情況,那么最小的延時也就是代表著最快的傳輸; ? ?



參考文獻(xiàn):?

?1. 數(shù)字電子技術(shù)基礎(chǔ).(閻石,第五版)

?2. ~~~建立時間與保持時間(兩個寄存器的詳細(xì)分析) - yuedx的個人空間 - 中國電子頂級開發(fā)網(wǎng)(EETOP)-電子設(shè)計論壇、博客、超人氣的電子工程師資料分享平臺 - Powered by X-Space.htm?

3. 建立時間和保持時間關(guān)系詳解 - Ethan的日志 - 網(wǎng)易博客.htm?

4. 建立時間、保持時間和時序約束條件 - 第1頁 - 東大小小的數(shù)字世界 - EDN China電子設(shè)計技術(shù).htm


總結(jié)

以上是生活随笔為你收集整理的FPGA时序约束建立时间与保持时间概念的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。