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

  1 控制信號的同步技術(shù)

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

  1.1 直接鎖存法

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

a.JPG

  1.2 鎖存反饋法

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

b.JPG

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

  2 數(shù)據(jù)通路的同步

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

  2.1 異步FIFO

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

c.JPG

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

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

  在異步FIFO的設(shè)計中,讀寫指針是在不同的時鐘域里面產(chǎn)生的,只有同步到一個時鐘域里才能進(jìn)行比較。然而,把一個二進(jìn)制計數(shù)器同步到另外一個時鐘域里會面臨很大的困難。這是因?yàn)樽匀欢M(jìn)制計數(shù)器的序列中一半的加1操作需要兩個或者更多的計數(shù)器位的翻轉(zhuǎn)。由于電路的固有延遲等原因,這些數(shù)據(jù)位的翻轉(zhuǎn)不一定同時進(jìn)行,那么就有可能在不同時鐘域之間造成同步出錯,從而導(dǎo)致讀寫指針的比較結(jié)果出錯。

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

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

d.JPG

  其中,N為n1位二進(jìn)制自然碼,G為n1位格雷碼。

  格雷碼到二進(jìn)制碼的轉(zhuǎn)變關(guān)系為:

e.JPG

  其中,N『m』為二進(jìn)制碼的第m位,G『m』為格雷碼的第m位。

  格雷碼和自然碼的對應(yīng)關(guān)系示例如圖4所示,可以看出,直接采用格雷碼進(jìn)行空滿判斷有些不方便,n1位格雷碼的上下半?yún)^(qū)是一個對稱的結(jié)構(gòu),因?yàn)楫?dāng)寫指針追趕上讀指針時,讀寫指針的G『n-1:0』并不相等,無法進(jìn)行滿判斷。本文采用修改后的編碼,如圖4所示,修改后的格雷碼MG『n-1:0』上下半?yún)^(qū)是一個相等的結(jié)構(gòu),修改后的編碼只有第n-1位和格雷碼不同,第n-1位按如下方式產(chǎn)生:

f.JPG

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

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

  3 結(jié)束語

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



 

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。