2.6.1 用同步復位進行設計


上面兩個電路功能一樣,但是下面的電路如果load信號為X,觸發器便會停在不定態,可以使用編譯指令告訴指定的信號為復位信號,綜合工具就會使該信號盡可能接近觸發器,防止初始化的問題發生,(將這些指令加入RTL代碼中以避免重新綜合)
2.6.1.1 使用同步復位的優點,
保證電路100%同步,
同步復位會綜合為更小的觸發器,特別是復位信號被觸發器輸入邏輯門控(如上圖),
確保復位只發生在有效時鐘沿,過濾掉毛刺,
一些設計中復位由內部產生,這樣的設計中使用同步復位信號,可以將時鐘間的復位毛刺過濾掉,
2.6.1.2 缺點
不是所有ASIC庫中都帶有內置的同步復位觸發器,很容易把復位邏輯綜合到觸發器本身之外,
可能需要一個脈沖展寬器,保證復位信號出現在時鐘有效沿,多時鐘設計中必須考慮這個問題,
復位經過組合邏輯產生就會存在潛在的問題,
在復位信號發出時,時鐘可能關閉,這時只能使用異步復位,并在時鐘恢復前移除復位信號,

有三態就需要oe立即動作適合使用異步復位,下面同步復位信號也可以直接做到立即撤銷使能,且可以簡化時序分析,
2.6.2 使用異步復位進行設計
異步復位沒有額外的路徑,比同步復位更簡單,

2.6.2.1 使用異步復位的優點
1、器件庫有帶異步復位的觸發器,就能保證資料路徑上是干凈的,不會引入額外的邏輯門和額外的延時,保證了沒有任何復位信號加在資料路徑上,
2、不管有沒有時鐘都能復位,綜合工具能自動判斷異步復位無需加入任何綜合引數,
2.6.2.2 異步復位的缺點
1、DFT時,異步復位引腳若不能直接被IO驅動,就必須將異步復位電路和復位驅動器斷開保證DFT的正確,
2、在觸發器時鐘有效沿附近釋放,觸發器就會進入亞穩態,復位狀態就會丟失,
3、復位信號毛刺會引發偽復位,需要設計毛刺過濾器,這個問題可以考慮使用同步復位,
4、復位樹應是時間可控的,以保證復位能在一個時鐘周期內釋放,解決方法:使用分布式異步復位同步觸發器(這種異步復位方法將復位同步器放置在設計的每個層次結構中,)

2.6.3 帶異步復位和異步置位的觸發器

這段代碼能正確地綜合成實際的器件,但是在仿真時會有問題,因為always事件會只在敏感事件的有效邊沿觸發,

圖中只對1和2時間觸發,3和4由于不是敏感事件所以不會觸發,

正確的仿真模型應該在set_n在rst_n前面撤走時將輸出置為1,
2.6.4 移除異步復位的問題
移除系統中的異步復位會使芯片進入不穩定的未知狀態,同步復位時,復位信號的前沿和尾沿必須遠離時鐘的有效邊沿,

兩個問題:
1、違背復位恢復時間,復位恢復時間類似于建立時間,復位信號撤離應在時鐘有效沿前一段時間到達,否則可能導致暫存器資料輸出出現信號完整性問題或者亞穩態問題,
2、復位移除會在不同時序元件的不同周期內發生,異步復位移除傳播延遲可能導致某些暫存器或者觸發器提前退出復位狀態,
2.6.5 復位同步器
這是確保正確移除復位最常使用的方法,沒有復位同步器,即使仿真時復位能正常作業,最終系統中的異步復位信號仍然是無效的,

復位撤銷后,典型情況下需要兩個時鐘上升沿來同步移除主復位信號,兩級的主要目的就是為了消除亞穩態,
第一級可能的亞穩態是因為不滿足復位恢復時間,
第二個觸發器不會出現恢復亞穩態問題,因為移除復位時,觸發器輸入輸出都為低電平,
總的復位分布時間:

2.6.6 過濾復位毛刺
異步復位對毛刺很敏感,
可以將復位信號和延遲后的復位信號相或過濾毛刺,

復位輸入引腳也必須是施密特觸發器引腳才有助于毛刺過濾,(施密特觸發器:即滯回比較器,有兩個判決電平,起到了減小毛刺的作用)
延時使用提供的宏單元或者在優化后的已綜合設計中手動加入延時,如加多個較慢的緩沖器,缺點:延遲會隨溫度電壓工藝變化,需要保證在所有PVT環境中都能滿足設計要求,
2.7 控制時鐘偏移(Skew)
時鐘偏移:整個芯片中時鐘到達時間的差異,

兩個相鄰暫存器的時鐘相差較大,就會有違背時序的潛在風險,
兩個順序相鄰觸發器和一個等電位時鐘分布網路的時鐘偏移:

兩個T分別是時鐘源到兩個觸發器的延遲,
2.7.1 短路徑問題
當資料傳播路徑比時鐘偏移還短,資料就會提前傳到第二個觸發器輸出,如下圖,正常情況下,資料傳播延遲應該大于時鐘延遲,第二個觸發器應該首先采的是第一個觸發器上個周期的值,

2.7.2 時鐘偏移和短路徑分析


滿足下列式子就會出現明顯的短路徑問題,注意區分短路徑問題和亞穩態,短路徑并不一定會造成亞穩態,如上圖情況b;當SK>T1-H且SK<T1時會出現亞穩態,同時也是短路徑,如圖c,
短路徑可能不會亞穩態且采到一個穩定的值,但這個值是第一個觸發器本時鐘沿輸出的值,會與預期功能不一致,

2.7.3 使時鐘偏移最小化
將時鐘偏移減到最小值是解決短路徑問題的最好方式,
2.7.3.1 在資料路徑上加入延遲
如圖2.44,在資料路徑上增加延遲使整個資料路徑的延遲大于時鐘偏移,可以消除短路徑問題,
2.7.3.2 時鐘反轉
感覺這里翻譯的也有問題,一開始還以為這里是要對時鐘做一個反向,看英文原文發現意思應該是讓時鐘傳播方向(右到左)和資料傳播方向(左到右)相反,這樣自然就可以消除時鐘偏移了,

延遲足夠時,可以使接收觸發器比源觸發器先接收到時鐘有效沿,這是一種犧牲建立時間為代價提高保持時間的方法,

不難看出時鐘反轉就增大了Tlaunch減小了Tcapture,使得建立時間更難滿足,
該方法對于約翰遜計數器和新型反饋移位暫存器這樣的環路結構并不是很有效,因為起點觸發器和終點觸發器還是連在一起,還是會存在短路徑問題,

2.7.3.3 交替相位時鐘

交替使用時鐘沿,順序相鄰的觸發器使用相反的時鐘沿觸發,為時鐘偏移提供了約半個時鐘周期的短路徑時鐘偏移余量,

從時序圖可以看到如果沒有中間的一級下降沿觸發器,第一級輸出直接到第三級輸入,第三個觸發器就會直接采集到第一個觸發器觸發后的值,與預期的邏輯不相符,中間加了一級下降沿觸發器之后,中間的觸發器會首先鎖存上一個周期的值,此時第三個觸發器會鎖存這個值;CLK2下降沿之后,觸發器2的輸出才發生變化,此時輸出的才是觸發器1變化后的值,與預期邏輯相符,

交替使用時鐘相位,原理同上一種方法,

行波時鐘結構,每個觸發器的輸出驅動下一個觸發器的時鐘端,由于觸發器不在同一個時鐘,這樣就消除了時鐘偏移,上圖為Ripple-down計數器,Ripple-up只需要把時鐘改為下降沿即可,
2.7.3.4 平衡線路長度
設計者應保持所有時鐘線長度相等,也應保證各終端負載相同,
設計應遵守的一些指南:

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/536238.html
標籤:其他
上一篇:家庭實驗室系列文章-如何遷移樹莓派系統到更大的 SD 卡?
下一篇:RNN的PyTorch實作
