時鐘和復位

2022-09-10 16:33:24 字數 3254 閱讀 6339

這一章主要講了同步電路設計要注意的一些事項以及時鐘和復位的問題。首先是要避免的一些寫法

所謂的行波計數器指的就是用觸發器來驅動後續的觸發器的時鐘輸入端了,電路結構如下

這種設計主要存在的問題就是觸發器存在時鐘-資料延遲,這種結構會累加這種延遲,相當於增加了時鐘偏移,使電路出現錯誤

同樣也是會導致時鐘偏移,特別是門控時鐘和非門控時鐘在乙個時鐘線上。畢竟比別的觸發器多了一層邏輯門,自然要慢一些。

指的是同時使用上公升沿和下降沿進行取樣

這種不是不能用,而是會導致一些問題。

這種設計導致第二級觸發器的輸出受時鐘和第一級觸發器的輸出影響。

組合環路指的是組合邏輯形成乙個環路,這樣可能會導致死迴圈,正確的方法是環路中間插入暫存器,或者避免出現組合環路。書中提到有的綜合工具會對這種**報錯,這一點我沒有試驗過。還有一種情況值得注意,如下圖

如果乙個帶非同步復位的觸發器的輸出經過組合邏輯後驅動本觸發器的非同步復位端同樣也會產生組合環路。

延遲鏈(delay chains)指的是用兩個或多個單扇入單扇出的節點來產生延時。這種延遲鏈的延遲時間依賴於工作環境,是不可取的。常用的做法是用反相器串聯來增加延遲。(這裡我也有問題,反相器不就是單扇入單扇出的嗎?)

有兩種常見的非同步脈衝產生器

這兩種方法第一種用了延遲鏈,第二種可能會產生組合環路,總之就是不能使用這種效能未知並且會隨環境產生變化的延遲鏈。書中提了一種同步脈衝產生電路如下

其實這個電路更像是上公升沿檢測電路

不規範的**風格容易在設計中引入鎖存器。鎖存器對電平敏感並且在使能狀態下輸入輸出是透明的,這樣也加大了毛刺傳輸的概率,並且鎖存器也不利於時序分析。如果乙個變數未能在 always 語句的所有可能執行條件下被賦值就會形成鎖存器,因為沒有被賦值暗含著「需要保持值」這層意思。

雙沿時鐘可以在給定的時鐘下達到兩倍的資料吞吐率,但是也會伴隨著一些問題,例如

還是重新強調,不是不能用,而是用的時候要謹慎。

時鐘是同步電路最重要的全域性訊號,設計時要特別注意時鐘的問題。這一節說了一些時鐘的相關問題。

盡量不要使用內部時鐘。所謂的內部時鐘就是有內部的電路產生的時鐘,這種時鐘可能會有毛刺等問題使得電路的功能產生錯誤。

還是一句話,優先使用 pll 時鐘而不是內部時鐘。使用分頻器也要由暫存器進行輸出。

簡單來說就是某個電路有多個時鐘接入,通過 mux 進行選擇使用哪乙個

這種電路其實也是在時鐘線上引入了組合邏輯,但是在一些特定的情況下是可以使用的

門控時鐘就是在電路不需要工作時關閉時鐘。這一節主要說了一些門控時鐘的種類

這種門控時鐘指的是直接用與門或者或門(取決有有效沿)來產生門控時鐘。這種門控時鐘要求使能訊號從時鐘活躍沿到不活躍沿之間必須要保持常量,即不能把正在工作的時鐘截斷,如下圖所示

在門控時鐘中加入鎖存器可以防止時鐘工作時使能訊號關閉。這種門控時鐘的電路如下所示

這個電路產生的時鐘是高電平有效的。當 clk 是低電平時,gated_clk 自然是低電平,此時鎖存器是透明的。假設當 clk 上公升沿到來時 en 仍處於有效狀態,則此有效狀態將被保持,也就是說即使 en 又拉低了此時門控時鐘依也是處於使能狀態,波形圖如下

注意如果需要的時鐘是下降沿有效則鎖存器應該改為高電平使能並且邏輯門也要換成或門

復位訊號的作用是使電路在上電後能進入乙個復位狀態以繼續工作。使用同步復位還是非同步復位,是否所有的觸發器都新增復位訊號等都是要考慮的問題。

同步復位就是復位訊號只有在時鐘沿到來時才起作用。例如下面的電路

同步復位可能存在的乙個問題就是綜合工具無法分辨復位訊號和其他資料訊號,因為從功能上看確實是沒有去別的,導致綜合出我們不想要的結果,例如下面的電路

從邏輯功能上看這兩個電路都是一樣的,但是問題是如果 load 訊號為 x 的話,第二個電路將出現未知態並且此時復位訊號也會失去作用而第乙個電路不會。兩者間的區別就是第二個電路的復位訊號「遠離」了暫存器。這一點可以通過新增綜合命令來指定綜合工具盡量將復位訊號拉近暫存器(綜合命令我還沒有去查,總之就是一些會被綜合工具識別的注釋)。

同步復位的優點是

當然同步復位也有缺點

非同步復位就是復位訊號有效時直接重置暫存器,復位端直接接到暫存器上。使用非同步復位具有很多優點

但是使用非同步復位也有一些問題

非同步復位的釋放會有很多的問題

為了解決非同步復位訊號的釋放問題,書中提到了下面的復位訊號同步器

假設復位訊號是低電平有效。當復位訊號拉低時自然有第二級暫存器輸出 0 到復位樹使系統處於復位狀態,假設在任意時刻復位訊號釋放,則高電平需要兩個時鐘週期後才會到達復位樹,並且第二級一開始 d 和 q 端都是 0,因此不存在亞穩態的問題。

時鐘偏移指的是時鐘到達不同的暫存器之間的時間差,如下圖所示

首先說一下短路徑(short path)問題,短路徑問題發生的原因是兩級暫存器之間資料的傳遞延時小於兩者間的是時鐘偏移,如下圖所示

由於 clk2 和 clk1 間的偏移太大,當 clk2 的上公升沿到來時第一級暫存器當前週期的取樣值已經到達,這樣就導致了資料的丟失。這一段的時序分析圖如下

當\[t_+t_>t_+t_

\]時就會產生短路徑問題。解決段路徑問題最好的方法就是減小時鐘偏移,初次之外書中還介紹了幾種降低短路徑問題的方法,但是在平常的設計裡我沒有見過類似的應用,這裡就不寫了。

時鐘和復位

經驗表明,對asic的時域控制最安全的方法就是同步設計。時鐘線上的門控單元會導致時鐘偏移,並會引入尖峰脈衝作用於觸發器。會為使用同步復位和插入掃瞄鏈等測試方法帶來麻煩,並且增加確定關鍵訊號路徑的難度。在同步設計中,所有的反饋迴路都應包含暫存器。組合環路會導致無休止的迴圈運算。用兩個或多個帶有單扇入和...

時鐘復位篇

外部時鐘 時鐘訊號的 在fpga晶元外部,通常的,外部時鐘對於fpga來說是必需的,因為fpga內部沒有供內部邏輯使用的時鐘和激勵電路。2內部時鐘 再生時鐘 再生時鐘是以乙個輸入時鐘作為參考,在此基礎上通過調整其頻率和相位產生的新時鐘,fpga中產生再生時鐘訊號的模組只有pll和dcm 注意,兩者都...

電源域,時鐘域,復位域

許多新的soc設計必須整合很多功能並消耗非常低的功耗,即設計可能會有很多時鐘域,電源域和復位域。例如,我們最近分析的乙個設計具有接近20個電源域,超過200個時鐘域和最多32個復位域。標準驗證工具和方法沒有提供可靠的方法來分析不同的域並全面驗證其互操作性。因此,開發多域驗證 mdv 以解決這一領域的...