《電子技術應用》
您所在的位置:首頁 > 模擬設計 > 設計應用 > 數字信號在不同時鐘域間同步電路的設計
數字信號在不同時鐘域間同步電路的設計
摘要: 隨著系統(tǒng)應用需求的不斷增多和集成電路技術的快速發(fā)展,大規(guī)模數字電路中常包含多個時鐘域,,設計中不可避免地要完成數字信號在不同時鐘域間的傳遞,這時,如何保持系統(tǒng)的穩(wěn)定,順利完成控制信號和數據通路的傳輸就變得至關重要,這也是電路設計中最為棘手的問題之一,。如果不采取一定的措施,控制信號和數據通路的接收方極易產生亞穩(wěn)態(tài)信號,,從而造成電路的同步出錯,。本文討論了控制信號和數據通路的同步,提出了解決方案,。
Abstract:
Key words :
  隨著系統(tǒng)應用需求的不斷增多和集成電路技術的快速發(fā)展,,大規(guī)模數字電路中常包含多個時鐘域,設計中不可避免地要完成數字信號在不同時鐘域間的傳遞,,這時,,如何保持系統(tǒng)的穩(wěn)定,順利完成控制信號和數據通路的傳輸就變得至關重要,,這也是電路設計中最為棘手的問題之一,。如果不采取一定的措施,控制信號和數據通路的接收方極易產生亞穩(wěn)態(tài)信號,,從而造成電路的同步出錯,。本文討論了控制信號和數據通路的同步,提出了解決方案,。

  1 控制信號的同步技術

  控制信號的同步分從快時鐘域到慢時鐘域,、從慢時鐘域到快時鐘域的轉換和異步輸入控制信號的同步三種情況。分別采用直接鎖存法和鎖存反饋法來實現(xiàn),。

  1.1 直接鎖存法

  控制信號從慢時鐘域到快時鐘域轉換時,,由于控制信號的有效寬度為慢時鐘域周期,需要做特殊處理,,保證跨時鐘域后有效寬度為一個快時鐘周期,否則信號轉換到快時鐘域后可能被誤解釋為連續(xù)的多個控制信號,。同步電路如圖1所示,,在快時鐘域對控制信號進行兩級鎖存,由于第二和第三個觸發(fā)器的輸出延遲一個快時鐘周期,,將它們做一個邏輯運算,,就可以得到有效一個快時鐘周期的控制信號。

a.JPG

  1.2 鎖存反饋法

  鎖定反饋法主要解決信號從快時鐘域向慢時鐘域過渡時,,如果信號寬度不滿一個慢時鐘周期,,慢時鐘可無法對信號進行正確采樣的問題,也可用于處理異步輸入信號的同步,。如圖2所示,,同步裝置由三級觸發(fā)器組成,,第一級觸發(fā)器,數據輸入端為電源,,時鐘輸入端為控制信號,,隨后兩級觸發(fā)器由接收方時鐘觸發(fā)。發(fā)送方時鐘域的控制信號到達后,,第一級觸發(fā)器的輸出為高電平,,在接收方時鐘域對信號進行兩級鎖存后,若第三級觸發(fā)器輸出為高電平,,就將第一級觸發(fā)器清零,。由于二三級觸發(fā)器的輸出延遲一個慢時鐘周期,將它們做一個邏輯運算,,就可以得到有效一個接收方時鐘周期的控制信號,。

b.JPG

  圖1、圖2所示的電路,,在接收方的時鐘域采用兩級觸發(fā)器,,大大增加了同步器的平均失效時間MTF(mean time to failure),MTF的有關計算公式在文獻中給出,。計算表明,,對于大多數的應用,兩級鎖存器同步失效的概率很小,,足以消除可能出現(xiàn)的亞穩(wěn)態(tài)情況,。

  2 數據通路的同步

  數據在不同時鐘域之間的傳遞,一般不采用上述的同步器,,因為多位數據的同時變化會使同步器的采樣錯誤率大大增加,。本文采用異步FIFO實現(xiàn)數據通路的同步。

  2.1 異步FIFO

  異步FIFO是一種先進先出的電路,,發(fā)送方時鐘域先把數據存儲到RAM,,穩(wěn)定后再讀取到接受方時鐘域,從而實現(xiàn)異步數據的可靠傳輸,。一般由讀,、寫電路和FIFO存儲體組成,如圖3所示,。

c.JPG

  異步FIFO的設計主要有兩個難點,,一是如何實現(xiàn)兩種異步信號的同步化問題以及如何消除由此產生的壓穩(wěn)態(tài),二是如何正確的判斷存儲器空和滿的狀態(tài),。

  為了提高FIFO的利用率,,本文把FIFO組織成環(huán)形隊列的形式。寫指針始終指向下一個要寫的字,,讀指針始終指向下一個要讀的字,。為了方便判斷雙端口存儲器的空滿/狀態(tài),,給讀寫指針的最高位增加一個冗余位,把讀寫指針定義為『log2N:0』,,只有后log2N位是存儲器地址,。當FIFO第一次被完全寫滿的時候,寫指針的值為N,,而不是全零,,所以可以根據讀寫指針方便的判斷存儲器的空滿。當讀寫地址的存儲器地址和冗余位都相等時,,說明讀指針追趕上寫指針,,即可認為FIFO為空:當存儲器地址相等而冗余位不相等,即可認為FIFO是滿的,。

  在異步FIFO的設計中,,讀寫指針是在不同的時鐘域里面產生的,只有同步到一個時鐘域里才能進行比較,。然而,,把一個二進制計數器同步到另外一個時鐘域里會面臨很大的困難。這是因為自然二進制計數器的序列中一半的加1操作需要兩個或者更多的計數器位的翻轉,。由于電路的固有延遲等原因,,這些數據位的翻轉不一定同時進行,那么就有可能在不同時鐘域之間造成同步出錯,,從而導致讀寫指針的比較結果出錯,。

  2.2 用格雷碼實現(xiàn)讀寫指針

  有效的解決指針跨時鐘域傳遞的一個方法是格雷碼技術,格雷碼的特點是相鄰的兩個編碼之間只有1位不同,,消除了在同一個時鐘沿多位編碼同時變化所帶來的問題,。格雷碼由二進制自然碼右移一位后與原二進制碼進行異或操作得到,運算關系為:

d.JPG

  其中,,N為n1位二進制自然碼,,G為n1位格雷碼。

  格雷碼到二進制碼的轉變關系為:

e.JPG

  其中,,N『m』為二進制碼的第m位,,G『m』為格雷碼的第m位。

  格雷碼和自然碼的對應關系示例如圖4所示,,可以看出,直接采用格雷碼進行空滿判斷有些不方便,,n1位格雷碼的上下半區(qū)是一個對稱的結構,,因為當寫指針追趕上讀指針時,讀寫指針的G『n-1:0』并不相等,,無法進行滿判斷,。本文采用修改后的編碼,,如圖4所示,修改后的格雷碼MG『n-1:0』上下半區(qū)是一個相等的結構,,修改后的編碼只有第n-1位和格雷碼不同,,第n-1位按如下方式產生:

f.JPG

  其中,MG『n-1』為格雷碼的第n位,,MG『n-1』為修改后的編碼的第n-1位,。

  需要注意的是,修改后的編碼最壞情況下,,相鄰的兩個編碼有兩位不同,,因此在跨時鐘域的時候仍然采用格雷碼,只有在跨時鐘域結束后,,進行空滿判斷的時候才對格雷碼作修改,。采用修改后的格雷碼進行空滿判斷,比將格雷碼轉換到自然二進制進行判斷節(jié)省運算量,。例如,,n1位的格雷碼轉換到自然二進制碼時,需要(n2n)/2次異或操作,,而轉換為修改后的格雷碼,,只需n1次異或操作,節(jié)省(n2-n-2)/2次異或操作(n>1),。

  3 結束語

  信號在不同時鐘域之間的轉換是復雜數字電路設計中不可缺少的一部分,,直接鎖存法和鎖存反饋法可處理控制信號的同步,異步FIFO在跨時鐘的數據交換方面具有高效的優(yōu)勢,,本文設計的修改后的格雷碼可以節(jié)省運算量,,在具體設計時,需要在編碼方法,、跨時鐘域的信號同步等關鍵問題上謹慎處理,。



 

此內容為AET網站原創(chuàng),未經授權禁止轉載,。