1. 同步電路
1.1同步電路的定義
所謂同步電路,即電路中所有受時鍾控制的單元,如觸發器(Flip Flop)或寄存器(Register),全部由一個統一的全局時鍾控制。
如圖所示,觸發器R1和R2都由一個統一的時鍾clk來控制時序,在R1和R2之間有一堆組合邏輯,這就是一個最簡單的同步電路。
1.2同步電路的收斂問題
時序電路的一個首要問題是觸發器的時序收斂問題。觸發器的時序收斂保證了觸發器輸入端的數據在時鍾信號的有效沿來臨之前達到穩定。即滿足了觸發器的建立時間(Setup Time),同樣也保證了觸發器輸入端數據在時鍾有效沿過后的一段時間內保持穩定,即滿足觸發器的保持時間(Hold Time)。

第1級觸發器R1的輸出Q1在時鍾上升沿后得到新值,Q1值經過一段組合邏輯后輸出連接到下一級觸發 器R2的輸入端D2,經過這段組合邏輯必然要有一段延時 Tdelay輸出才能最終穩定。假設觸發器R2的建立時間為Tsetup2,所謂滿足時序收斂首先要滿足時鍾周期T≥Tsetup2+ Tdelay, 可以看出同步電路的最大工作速度是由最長的組合邏輯路徑延時決定的。同樣為了保證D2在T時刻的值能夠被無誤地鎖存,其值必須在保持時間Thold內保持穩定。這樣整個同步電路就可以可靠無誤地運行下去了。
1.3同步電路的優點與缺陷
優點:
在同步設計中,EDA工具可以保證電路系統的時序收斂,有效避免了電路設計中競爭冒險現象;
由於觸發器只有在時鍾邊緣才改變取值,很大限度減少了整個電路受毛刺和噪聲的影響的可能。
缺陷:
同步設計中最主要的問題是時鍾偏斜(Clock Skew)及功耗的問題。
由於版圖上達到每個觸發器時鍾端口的連線長度不同,驅動單元的負載不同等原因,如果沒有經過處理,全局時鍾線到達各個時序邏輯單元的時鍾端口的時間就不可能相同。這種時鍾到達在空間上的差別稱為時鍾偏斜(Clock Skew)。

時鍾偏斜如上圖所示,時鍾偏斜的后果是非常嚴重的,試想如果clk2早於clk1到達,會造成數據到達R2的建立時間不夠,如果要保證電路正常工作就只能降低電路的工作頻率。反之,clk2晚於clk1到達,會不滿足保持時間的時序要求,從而產生競爭冒險現象。目前解決上述問題的方法是采用EDA工具進行時鍾樹綜合。它的原理是根據最長時鍾路徑來平衡其他時鍾路徑,這就需要加入大量的延遲單元,使得電路的面積和功耗增加。
除了時鍾偏斜,同步電路還受到時鍾抖動(Clock Jitter)的影響。所謂時鍾抖動指的是,芯片某一給定點上時鍾信號的間歇性變化,即時鍾周期在不同的時間段長短不一。
2.全異步電路設計
全異步設計和同步設計最大的不同就是它的電路中的數據傳輸可以在任何時候發生,電路中沒有一個全局的或局部的控制時鍾。

如圖所示,觸發器R1由時鍾clk1控制,觸發器R2由時鍾clk2控制,R1的輸出端Q1通過組合邏輯連接到R2的輸入端D2。D2的輸入端的數據值的跳變並不在clk2的控制之下,它可能在時鍾clk2的任意時間點發生跳變。在全異步設計中,原來同步設計中可避免競爭冒險現象、減少噪聲影響的優點全沒有了。
2.1自定時方法
為了保證電路在任何操作條件和輸入序列下都能正確工作,需要一套可靠的技術解決電路中可能碰到的時序問題,這就是自定時方法。區別於同步設計的全局時鍾,它是一種局部解決時序問題的方法。

如上圖所示,自定時方法要求每個邏輯單元,都能通過一個開始(Start)信號來啟動,從而開始對輸入的數據進行計算,一旦計算完畢,它又會產生一個完成(Done)信號。自定時方法工作方式描述如下:
首先,一個輸入字節到達,F1的Req信號上升,如果F1此時沒有運行,輸入緩沖器R1接收數據,HS發出Ack,激活發出輸入字的前級模塊,然后,Start信號上升,F1開始運行。一段延遲后,Done信號升高,表明運算完成,接着,F1的HS模塊向F2發出Req信號,由此,數據一步一步向下傳播,實現了流水功能。
2.2握手協議自同步方法的實現離不開握手協議的支持,否則會出現競爭現象。

如圖所示,二相位握手協議在Req和Ack的任何一對跳變沿組合處可實現一次數據信息,相應地,四相位握手協議卻只能實現一次數據傳輸,它只有在Req和Ack固定的電平組合下(圖中為Req和Ack均為高時)才能實現數據傳輸,且在開始新的一組數據前Req和Ack必須回到無效電平。顯然,二相位握手協議比四相位握手協議效率要高,但會造成電路死鎖,其穩定性要遠遠低於四相位握手協議,所以四相位握手協議是大多數自定時電路的首選實現方法。
2.3異步設計電路的優點與缺陷
優點:
模塊化特性突出,對信號的延遲不敏感,沒有時鍾偏斜問題,有潛在的高性能特性,好的電子兼容性,具有低功耗的特性。
缺陷:
設計復雜,缺少相應的EDA軟件支持。
摘抄自《Soc設計方法與實現》---
