硬件架構的藝術(一)

亞穩態

亞穩態的概念

亞穩態:由於違背了觸發器的建立和保持時間而產生的,在時鐘上升沿這段時間窗口內,數據輸入信號必須保持穩定。如果數據在這段時間發生了變化,則輸出爲“亞穩態”,輸出會產生毛刺,或者需要較長時間才能回到穩定狀態。
建立時間:即時鐘信號上升沿到來以前,數據穩定不變的時間,如果建立時間不夠,數據將不能在這個時鐘上升沿被打入觸發器。
保持時間:即指在觸發器的時鐘信號上升沿到來以後,數據穩定不變的時間,如果保持時間不夠,數據同樣不能被打入觸發器。
亞穩態時序參數本來經過一定的延時值tco之後就會輸出正確的穩定的電平值;由於產生了亞穩態,亞穩態持續了tMET時長後,恢復到穩定的電平狀態(穩定,但不一定是正確的!),這段持續的時間叫做亞穩態的恢復時間,一般情況下這段時間不會超過一個或者兩個時鐘週期(取決於觸發器的性能)。如果亞穩態持續時間過長(超過一個或者兩個時鐘週期),就有可能被下一級的觸發器捕獲,導致下一級觸發器也處於亞穩態,這就是亞穩態的傳播現象。
觸發器中的亞穩態值得注意的是,進入亞穩態後,亞穩態持續時間是不確定的。

亞穩態窗口

亞穩態窗口具有特定的時間長度,在這段時間內輸入信號和時鐘都應該保持不變(亞穩態窗口的概念我沒有找到)。建立時間和保持時間共同決定亞穩態窗口的寬度,(在這段時間內輸入信號和時鐘都應該保持不變,如果發生變化,則輸出可能變爲亞穩態);窗口越大,進入亞穩態的概率越高。較新的邏輯器件有更小亞穩態窗口。
亞穩態窗口

MTBF

當系統的故障率恆定時,MTBF(Mean/Average Time Between Failures,平均無故障時間),故障率的倒數。
MTBF的計算公式
其中:
W-亞穩態窗口寬度,以及觸發器的亞穩態時間常數於電氣特性有關,會根據工藝技術而改變
τ-觸發器的亞穩態時間常數
tr-允許超出器件正常傳輸延遲時間的解析時間。
fc-時鐘頻率
fd-異步信號邊沿頻率
τ的計算公式是:
τ計算公式根據公式1.1和1.2可以計算出兩級同步器的MTBF:
兩級同步器的MTBF計算公式

以下情況可能會發生亞穩態:

(1)輸入信號是異步信號
(2)時鐘偏移/擺動高於容限值
(3)信號在不同頻率或者相同頻率但相位和偏移不同的時鐘域下跨時鐘域工作
(4)組合延遲使觸發器的數據輸入在亞穩態窗口發生變化

減小亞穩態發生的概率的方法:

  1. 最簡單的方法:確保時鐘週期足夠長避免亞穩態,即確保fc比較小,能夠使得故障率降低。
  2. 使用多級同步器:允許輸出出現的亞穩態可以長達一個週期,在這個週期內,亞穩態特性減弱。在第二個時鐘沿到來時,第二級同步器採樣,之後才把該信號傳遞到內部邏輯中去。第二級輸出是穩定且已被同步了的。如果在第二級採樣時保持時間不夠,第一級的輸出仍然處於很強的亞穩態,將會導致第二級同步器也進入亞穩態,但這種故障出現的概率比較小。正如MTBF(1.3)公式所示,加入二級同步器能夠增加MTBF的值,即降低故障率。

多級同步器

  1. 使用時鐘倍頻的多級同步器。由於多級同步器的一個侷限就是系統需要花費較長的時間去響應異步輸入(即亞穩態不需要一個時鐘週期,即可穩定),但使用倍頻時鐘降低MTBF能讓系統在一個系統時鐘週期內響應一個異步輸入。

倍頻的多級同步器
值得注意的是,這幾種方法都不能保證阻止亞穩態傳播,僅僅減小了亞穩態發生的概率。

亞穩態測試電路

使用上升沿D觸發器,輸入一個異步信號;再下降沿D觸發器(增加亞穩態的概率),將D觸發器的輸出Q端分別輸入D觸發器和經過一個非門輸入D觸發器,之後輸出兩個D觸發器同或,如果輸出爲1,則說明發生了亞穩態。
亞穩態測試電路

同步器的類型:

模式A:

當異步輸入信號比時鐘週期大得多最有效,不能用於異步輸入信號的寬度小於時鐘週期的情況)模式A 如果輸入與輸出不同,則CLR=1;
同步器
兩級採樣的同步器 與一級同步相比,兩級同步能夠更可靠地避免亞穩態的出現,而三級以上同步器的效果並不能提高多少。
如果clk1<clk2, 時鐘域2中採用同步器模式A,否則則採用同步器模式B

模式B:

第一級觸發器的輸入D與VCC連,輸入時鐘是異步輸入信號。
兩級同步器

綜上:減小亞穩態發生概率

(1)採用多級同步器
(2)採用響應更快的觸發器(減小亞穩態窗口)
(3)減小採樣速率
(4)避免使用dV/dt 低的輸入信號**

時鐘與復位

同步設計

避免使用行波計數器(即輸出是下一級寄存器的時鐘信號)

由於使用了更多的觸發器,延遲會累積增加。常常使用行波計數器對時鐘進行冪爲2的分頻(在功耗較高的系統中能大量降低由邏輯或SOC引起的峯值功耗)
行波計數器

門控時鐘

時鐘線上的門控單元會導致時鐘偏移並對毛刺敏感,並引入尖峯脈衝作用作用於觸發器。含有門控時鐘的設計在仿真時可能正常工作,但是在綜合時就會出現問題
門控時鐘線同步時鐘使能
門控時鐘是減少功耗的有力手段。在時鐘被門控關閉後,該時鐘網絡和其中的寄存器都將停止翻轉。而使用同步時鐘使能,時鐘樹一直保持翻轉而且每個觸發器的內部電路保持活躍(觸發器的輸出沒有改變),無法降低功耗。

功耗組成

在傳統的同步設計風格中,系統時鐘連接到每個寄存器的時鐘端。動態功耗主要由三個部分組成:
(1)在每個時鐘沿變化的組合邏輯所產生的功耗(由於觸發器驅動這些組合邏輯)
(2)由觸發器產生的功耗
(3)時鐘樹產生的功耗(幾乎消耗了芯片功耗的一半)

不含鎖存器的門控時鐘電路

不含鎖存器的門控時鐘電路(使用一個簡單的與門 或 或門實現,取決於觸發器使用哪個邊沿)爲避免過早截斷時鐘脈衝或誤產生多個時鐘脈衝,應使使能信號從時鐘的上升沿起到時鐘的下降沿止一直保持不變。
不含鎖存器的時鐘門控電路

基於鎖存器的門控時鐘電路

基於鎖存器的門控時鐘電路加入一個電平敏感鎖存器,無需依靠門控自身滿足上述條件,使能信號只需在時鐘上升沿附近保持穩定。但必須特別注意時鐘的佔空比以及產生使能信號邏輯的延遲,因爲使能信號必須在半時鐘週期時產生。
基於鎖存器的時鐘門控電路加入控制信號,該信號可以再鎖存器前先與使能信號進行一次或操作。
標準時鍾門控單元

門控信號

解碼器輸入端會導致大量門翻轉,可以用使能或選擇信號阻止切換行爲的傳播。
使能端的解碼器

雙邊沿或混合邊沿時鐘

兩個觸發器由兩個相位相反的時鐘信號控制。這會爲使用同步復位和使用插入掃描鏈困難,同時也會增加確定關鍵信號的路徑的難度。

相比於雙倍同步時鐘的優點
(1)性能的提高
(2)功耗的降低 (優先使用雙倍同步時鐘)
雙邊沿時鐘

用觸發器驅動另一個觸發器的異步復位端

用觸發器驅動另一個觸發器的異步復位端

推薦的設計技術

避免在設計中使用組合環路

組合環路是數字設計中導致不穩定和不可靠的最常見因素。在同步設計中,所有反饋迴路都應包含寄存器。組合環路簡歷了不含寄存器的直接反饋迴路,這違背了同步設計原理。
1、組合邏輯違反了同步設計原則,很容易產生振盪,毛刺和時序違規。
2、組合邏輯實現的邏輯功能完全依賴於環路上的邏輯門延遲和佈線延遲,當延遲發生改變,原來的邏輯功能也同樣會發生變化,而且改變後的功能很難預測。
3、組合邏輯會設計軟件進入無盡的計算中,爲了完成計算,一些EDA工具會將環路割斷,而不同的EDA軟件對環路割斷處理的過程是不盡相同的,這種過程不但使電路的實現偏離了最初的設計意圖,而且使電路的實現呈現不確定性。
解決這個問題的方法:在組合環路中引入一個觸發器或寄存器
組合環路的例子
另一個是將寄存器的輸出端通過組合邏輯反饋到同一個寄存器的異步端(異步復位)
草擬過異步控制端口的組合環路

避免數字設計中的延時鏈

在用兩個或者多個帶有扇入和單扇出的連續節點產生延時是,就會形成延時鏈。通常將反相器鏈接在一起以增加延時,延時鏈通常出現在異步設計中,有時候解決其他組合邏輯導致的競爭條件
1、增加設計對操作環境的敏感性,降低設計的可靠度
2、增加設計移植到不同器件上的難度
解決方法:在設計中用同步技術取代異步技術

避免使用異步脈衝產生器

設計通常要求基於某些事件產生脈衝。設計人員有時會使用延時鏈產生單個脈衝或一系列脈衝。這些技術是純異步的,應該可能避免使用。

  1. 將同一個觸發信號接到兩個輸入與門的輸入端,但是對其中一個輸入端的信號取反或加入延遲鏈。
assign b=a&!a;
  1. 寄存器輸出經過延遲鏈後驅動同一個寄存器的異步復位端
always@(posedge clk or negedge rst_n)
begin
	if(!rst_n)
		q<=0;
	else
		q<=1;
end
	assign rst_n=~q;

解決方案:使用同步方案產生脈衝
下面的同步觸發器可以檢測輸入
同步脈衝觸發器

避免使用鎖存器

如果一個變量未能在always語句的所有可能執行條件下賦值,就會形成鎖存器。
1、上一級的毛刺會傳遞至下一級
2、鎖存器時序模糊
鎖存器的競爭條件

避免使用雙邊沿時鐘

使用雙邊沿時鐘能達到雙倍的吞吐率,但會有一系列的問題。
雙邊沿時鐘
使用雙邊沿遇到的問題
1、不對稱的時鐘佔空比會導致違背建立和保持時間
2、很難確定關鍵信號的路徑
3、插入掃描鏈要求所有寄存器使用同樣的時鐘邊沿(或者插入多路複用器保證在測試模式下使用單一時鐘)

時鐘方案

內部產生的時鐘

設計者應該儘可能避免在內部產生時鐘,因爲如果操作不當,它會導致設計功能和時序問題。由於組合邏輯搭建的時鐘會產生毛刺,使功能出現問題,比如時鐘毛刺會導致計數器誤增的情況。而且窄毛刺會違背寄存器的最小脈衝寬度要求。產生內部時鐘的組合邏輯也會增加時鐘線上的延時,如果時鐘偏移大於數據延遲,則違背寄存器的時序要求。
內部產生時鐘例子

always@(*)begin
 #50 clk1=~clk1;
 end

解決方案:在組合邏輯的輸出端增加一個寄存器,用寄存器的輸出作爲後面的時鐘信號,以防止組合邏輯所產生的毛刺

always@(posedge clk)
begin
#50 clk2<=clk1;
end

分頻時鐘

在設計中要保證大多數時鐘來自PLL。使用PLL避免異步時鐘分頻邏輯引起的許多問題,在對主時鐘進行分頻時,應該使用同步計數器或者狀態機。寄存器直接產生分頻時鐘信號,不要對計數器或狀態機的輸出進行解碼,然後產生時鐘信號,會導致毛刺和尖峯脈衝。

行波計數器

使用行波計數器對時鐘進行冪爲2的分頻,行爲使用的門數更少。
行波計數器在功耗較高的系統中很適合使用這種計數器,因爲這樣能大量降低由邏輯或SoC所引起的峯值功耗。

多路時鐘

時鐘多路器用於同一個邏輯功能具有不同的時鐘。
多路時鐘滿足以下標準,多路時鐘是可以接受的(否則必須採用同步設計):
(1)初始化後,多路時鐘邏輯不再改變
(2)在測試時,設計會選擇普通時鐘
(3)時鐘切換時,寄存器始終處於復位狀態
(4)時鐘切換時,產生的短暫錯誤沒有負面影響

復位信號設計策略

復位最基本的目的:SOC進入一個能進入穩定操作的確定狀態,避免SOC在上電後進入隨機狀態而死機。
在系統沒有明確要求的情況下爲SOC每個觸發器提供復位信號;但在某些情況下(如流水線),應去掉某些寄存器的復位信號以使設計達到更高性能
復位

同步復位

同步復位的復位信號只有在時鐘的有效沿到來時才能影響或者觸發器的狀態。
由於復位樹的高扇出,復位延遲較時鐘週期高。

always@(posedge clk)
begin
	if(!rst_n)
		out<=1'b0;
	else if(load)
		out<=in;
end

同步復位
使用同步復位會出現一個問題是綜合工具無法分辨復位信號和其他信號的區別,可能會產生以下電路結構:
同步復位可能產生的電路結構同步復位的缺點:
(1)同步復位可能需要一個脈衝展寬器,以保證復位信號出現在時鐘有效沿處,增加了邏輯器件
(2)復位信號可能如上文一樣被標記爲x,被外部引腳控制
(3)如果使用門控時鐘,在復位信號發出時,時鐘可能關閉(只能使用異步復位)

同步復位的優點:
(1)確保電路同步
(2)會綜合爲更小的觸發器
(3)同步復位確保復位只發生在有效時鐘沿,時鐘可以作爲過濾毛刺的方法。

異步復位

異步復位觸發器在設計時加入一個復位引腳,當觸發器復位端觸發復位信號,進入復位狀態。
異步復位

always@(posedge clk or negedge rst_n)
begin
	if(!rst_n)
		out<=1'b0;
	else if(load)
		out<=in;
end

異步復位的缺點:
(1)異步復位不管產生或撤銷復位信號,都是一個異步過程。加入異步復位在觸發器時鐘有效沿附近釋放,輸出就會進入亞穩態
(2)復位電路源頭存在毛刺問題

異步復位的優點:
(1)只要庫有帶有異步復位的觸發器,能保證沒有任何復位信號加在數據路徑上,對於時序很緊的設計,無法承擔加入同步復位帶來的額外單元門和額外線路延遲。
(2)異步復位不管有沒有時鐘都可以進行復位

移除異步復位的問題

移除系統中的異步復位會使芯片進入不穩定的未知狀態。

(1)違背復位恢復時間(復位撤銷後和時鐘再一次置高之間的時間):可能會出現亞穩態問題
(2)復位移除可能會在不同時序元件的不同時鐘週期內發生消除異步復位的恢復時間問題針對移除異步復位,採用異步復位同步釋放的方案:
復位同步器模塊圖

always@(posedge clk or negedge rst_n)
begin
	if(!rst_n)
		begin 
			reg1<=0;
			reg2<=0;
		end
	else
		begin
			reg1<=1;
			reg2<=reg1;
		end
	end

過濾復位毛刺

異步復位對毛刺很迷幹,這就意味着任何滿足觸發器最小復位脈衝寬度的額輸入都能引發的輸入都能硬氣觸發器復位。
過濾復位毛刺的方法
(1)復位輸入引腳必須是施密特觸發器
(2)採用延遲復位信號與復位信號做與門,過濾掉毛刺信號
復位毛刺過濾

控制時鐘偏移

**時鐘偏移:**整個芯片時鐘信號到達時間的差異(如果順序相鄰且時鐘沿偏移較大的寄存器,就可能會有違背時序的問題)
Tskew=Tci-Tcj
時鐘偏移

短路徑問題

短路徑問題如何改善時鐘偏移(使其最小)

  1. 在數據路徑上加入延遲
  2. 時鐘反轉(在發送寄存器接受時鐘沿前,時鐘會先驅動接受觸發器讀入發送值) 時鐘反轉方法學
  3. 交替相位時鐘
    (1)交替使用時鐘沿:爲時鐘偏移提供半個時鐘週期的餘量。
    (2)交替使用時鐘相位:相鄰觸發器組有同一時鐘的兩個不同相位驅動。
    (3)行波時鐘:只有當上一個觸發器輸出翻轉,下一個觸發器發揮被時鐘驅動,避免了數據傳播延遲比時鐘偏移還短時。
    交替相位時鐘
  4. 平衡線路長度
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章