關(guān) 閉

新聞中心

EEPW首頁 > 工控自動化 > 設(shè)計應(yīng)用 > 一種消除異步電路亞穩(wěn)態(tài)的邏輯控制方法

一種消除異步電路亞穩(wěn)態(tài)的邏輯控制方法

作者: 時間:2012-05-18 來源:網(wǎng)絡(luò) 收藏

當(dāng)今的數(shù)字系統(tǒng)往往是圍繞CPLD/ FPGA 進行設(shè)計的, 首選的方案是采用同步時序設(shè)計 , 也稱作單時鐘系統(tǒng), 中所有觸發(fā)器的時鐘輸入端共享同一個時鐘, 每個觸發(fā)器的狀態(tài)變化都是在時鐘的上升沿( 或下降沿) 完成的, 與時鐘脈沖信號同步。

本文引用地址:http://www.butianyuan.cn/article/160587.htm

但在實際的工程應(yīng)用中, 純粹單時鐘系統(tǒng)設(shè)計不能完成數(shù)據(jù)在不同時鐘域間的傳遞, 跨時鐘域的時序設(shè)計不可避免。時序中有多個獨立的時鐘源, 不同時鐘源存在頻率和相位的差異, 當(dāng)數(shù)據(jù)信號通過兩個時鐘域的交界處時, 將會分別由這兩個時鐘來信號的值。此時如果兩時鐘信號的敏感沿非常接近并超過了允許的額度, 則將出現(xiàn)數(shù)據(jù)信號的不穩(wěn)定, 即電路陷入, 也稱為同步失敗。

電路設(shè)計的關(guān)鍵就是把數(shù)據(jù)或信號正確地進行跨時鐘域傳輸, 同時防止亞的出現(xiàn)。如果對跨時鐘域帶來的亞、采樣丟失等問題處理不當(dāng), 將導(dǎo)致系統(tǒng)無法正常運行。

隨著信息技術(shù)的飛速發(fā)展, 航天航空、軍事應(yīng)用領(lǐng)域?qū)?shù)據(jù)異步傳輸?shù)目煽啃蕴岢隽烁叩囊? 如果不徹底亞穩(wěn)態(tài)隱患, 將可能導(dǎo)致災(zāi)難性的后果。

1 亞穩(wěn)態(tài)的產(chǎn)生 

1. 1 單觸發(fā)器的亞穩(wěn)態(tài) 

觸發(fā)器是數(shù)字電路設(shè)計中最常用的基本器件, 內(nèi)部包含兩個雙穩(wěn)態(tài)元件, 其特性曲線如圖1 所示。除了兩個穩(wěn)定狀態(tài)0 和1 外, 還有一個狀態(tài)也滿足雙穩(wěn)態(tài)元件的方程,即當(dāng)兩個反相器都處于中間值的第3 種半穩(wěn)定態(tài)----- 亞穩(wěn)態(tài), 反相器在非值范圍的反饋系數(shù)是相當(dāng)大的, 一旦因干擾或噪音離開了這個中心點, 就會很快地進入值范圍( 穩(wěn)態(tài)) 。

圖1: 亞穩(wěn)態(tài)問題
圖1:亞穩(wěn)態(tài)問題

觸發(fā)器工作過程中要滿足數(shù)據(jù)建立( setup ) / 保持( hold) 的時間要求, 輸入信號在時鐘的上升沿前后是不允許發(fā)生變化的。對于使用上升沿觸發(fā)的觸發(fā)器來說,建立時間就是在時鐘上升沿到來之前, 觸發(fā)器輸入端數(shù)據(jù)必須保持穩(wěn)定不變的最小時間; 而保持時間是時鐘上升沿到來之后, 觸發(fā)器輸入端數(shù)據(jù)還應(yīng)該繼續(xù)保持穩(wěn)定不變的最小時間。建立( setup) / 保持( hold) 時間與時鐘跳變沿的關(guān)系如圖2 所示。

圖2  setup-hold 時間
圖2 setup-hold 時間

因為觸發(fā)器內(nèi)部數(shù)據(jù)的形成需要一定的時間, 如果不滿足建立和保持時間, 觸發(fā)器將進入亞穩(wěn)態(tài), 其輸出在經(jīng)過一段時間的不確定狀態(tài)后才能隨機地穩(wěn)定到0 或1。在穩(wěn)定期間, 觸發(fā)器輸出一些中間級電平, 或者可能處于振蕩狀態(tài), 并且這種無用的輸出電平可以沿信號通道上的各個觸發(fā)器級聯(lián)傳播下去, 導(dǎo)致其他數(shù)字部件的混亂。

1. 2 異步時鐘造成的亞穩(wěn)態(tài)

信號在跨時鐘域時應(yīng)特別注意亞穩(wěn)態(tài)問題。一個信號在過渡到另一個時鐘域時, 如果僅僅用一個觸發(fā)器將其鎖存, 那么采樣的結(jié)果將可能是亞穩(wěn)態(tài)。圖3 所示為異步時鐘和亞穩(wěn)態(tài), 圖中a_ck 和b_ck 為異步時鐘。

圖3  觸發(fā)器產(chǎn)生亞穩(wěn)態(tài)
圖3 觸發(fā)器產(chǎn)生亞穩(wěn)態(tài)

信號dat 經(jīng)過一個鎖存器的輸出數(shù)據(jù)為a_dat。用時鐘b_ck 進行采樣的時候, 如果a_dat 正好在b_ck 的set up??hold 時間內(nèi)發(fā)生變化, 此時b_dat 就既不是邏輯1, 也不是邏輯0, 而是處于中間狀態(tài)。輸出信號處于中間狀態(tài)到恢復(fù)為邏輯1 或0 的這段時間, 稱為亞穩(wěn)態(tài)時間。當(dāng)觸發(fā)器的亞穩(wěn)態(tài)時間超過一個時鐘周期時, 這種不確定狀態(tài)將會影響下一級的觸發(fā)器, 最終導(dǎo)致連鎖反應(yīng)使整個系統(tǒng)功能失常。

1. 3 降低亞穩(wěn)態(tài)的現(xiàn)有

常用于降低異步電路中亞穩(wěn)態(tài)發(fā)生概率的有:

1) 兩級觸發(fā)器法

兩級觸發(fā)器法就是在一個信號進入另一個時鐘域之前, 將該信號用兩個觸發(fā)器連續(xù)鎖存兩次, 也稱為雙鎖存器法。這樣做可以防止由于異步輸入信號對于本級時鐘可能不滿足建立保持時間而使本級觸發(fā)器產(chǎn)生的亞穩(wěn)態(tài)傳播到后面邏輯中。理論研究表明這種設(shè)計可以將出現(xiàn)亞穩(wěn)態(tài)的幾率降低到一個很小的程度, 但這種同時帶來了對輸入信號的一級延時。

兩級觸發(fā)器法在2 個異步時鐘周期相差不大的情況下比較適合。在信號從快時鐘域向慢時鐘域過渡的時候,如果信號變化太快, 慢時鐘將可能無法對該信號進行正確的采樣, 導(dǎo)致采樣失敗。使用兩級觸發(fā)器法時, 應(yīng)使原始信號保持足夠長的時間, 以便另一個時鐘域的觸發(fā)器可以正確地對其采樣。

2) 結(jié)繩法

針對雙鎖存器法在快時鐘域向慢時鐘域過渡中可能存在采樣失效的問題, 一般采用結(jié)繩法 進行設(shè)計, 通過分頻方式將慢時鐘信號的周期增長, 經(jīng)雙鎖存采樣后再使其恢復(fù)原來的時鐘周期。即用結(jié)繩 將信號延長, 用同步實現(xiàn)雙鎖存采樣, 用解繩還原為原來的時鐘, 保證另一個時鐘域也可以正確采樣, 而接收方用相反的流程送回響應(yīng)信號。

結(jié)繩法是一種安全的跨時鐘域的方法, 可以解決快時鐘域向慢時鐘域過渡的問題, 適用的范圍也很廣。但是結(jié)繩法實現(xiàn)較為復(fù)雜, 特別是其頻率不高, 所以在對設(shè)計性能要求較高的場合,應(yīng)該慎用。

3) 異步FIFO

在有大量的數(shù)據(jù)需要進行跨時鐘域傳輸且對數(shù)據(jù)傳輸速度要求比較高的場合, 一般采用異步FIFO, 異步FIFO 即用一種時鐘寫入數(shù)據(jù), 而用另外一種時鐘讀出數(shù)據(jù), 其中這兩個讀寫時鐘是異步的。

4) 格雷編碼法

由實踐可知, 同步多個輸入信號出現(xiàn)亞穩(wěn)態(tài)的概率遠大于同步1 個異步信號的概率。由于格雷碼每次只變化1位, 因此異步FIFO 的讀寫地址使用格雷碼計數(shù)器可以有效地減少亞穩(wěn)態(tài)的產(chǎn)生, 特別是在地址位比較多的情況下能更好地解決亞穩(wěn)態(tài)的問題。

2 外部邏輯方法亞穩(wěn)態(tài)

傳統(tǒng)的觀點認為: 只要系統(tǒng)中有異步元件, 亞穩(wěn)態(tài)就是無法避免的。

多時鐘域的異步電路系統(tǒng)中, 數(shù)據(jù)的建立和保持時間很難得到保證, 這時最好的方法是將所有非同源時鐘同步化[5] , 具體措施是使用帶復(fù)位端的D 觸發(fā)器, 并引入一個高頻時鐘( 頻率高于系統(tǒng)中的所有源時鐘) , 達到使系統(tǒng)中所有源時鐘同步的效果?;谶@種思想, 本文提出一種新的方法-----半拍錯位同步法!, 選擇適當(dāng)參數(shù)的邏輯器件, 便能徹底異步電路中的亞穩(wěn)態(tài)。

2. 1 半拍錯位同步法原理

半拍錯位同步法的思想是: 從外部引入一高頻時鐘h_ck 到異步電路中, 通過一定的邏輯和時序處理, 將異步時鐘a_ck 同步到高頻時鐘的上升沿, 同時將異步時鐘b_ck同步到高頻時鐘h_ ck 的下降沿, 這樣兩個完全獨立的異步時鐘經(jīng)過高頻時鐘h_ck 同步處理后, 時間上至少錯開時鐘h_ck 的半周期, 只要半周期滿足原電路中觸發(fā)器的建立時間要求, 便可徹底避免亞穩(wěn)態(tài)的發(fā)生。

半拍錯位同步法的電路和時序波形圖如圖4 所示, 電路包括兩個帶異步復(fù)位端的D 觸發(fā)器、兩個信號延遲環(huán)節(jié)、兩個2 輸入端或門、兩個3 輸入端與門、1 個反相器。異步時鐘a_ck 與其延遲信號a_ck_d 的或輸出接觸發(fā)器D_A 的數(shù)據(jù)端D 和異步復(fù)位端CLR, a_ck 和a_ck_d 的與用于選通高頻時鐘h_ck 進入觸發(fā)器D_A 的時鐘端CP( 要求延遲時間大于觸發(fā)器D_A 的建立時間) 。

圖4  半拍錯位同步法的電路和時序波形圖
圖4 半拍錯位同步法的電路和時序波形圖

時序如下:

1) a_ck= 0 時, 觸發(fā)器復(fù)位端CLR 有效, a_ck_o= 0;

2) 上升沿過后, a_ck= 1 穩(wěn)定作用在數(shù)據(jù)端D, 經(jīng)延遲環(huán)節(jié)a_d 的適當(dāng)延時后, a_ck 和a_ck_d 同時為1, 高頻時鐘h_ck 進入觸發(fā)器D_A 的時鐘端CP;

3) 高頻時鐘h_ ck 的上升沿將數(shù)據(jù)端D 的數(shù)據(jù)1 鎖存, 使輸出端a_ck_o= 1, a_ck_o 與h_ck 的上升沿同步;

4) a_ck 下降沿后a_ck= 0, 與門a_and 輸出0, 即觸發(fā)器D_A 的時鐘端CP 保持0, a_ck_o= 1;

5) a_ck 延時信號a_ck_d 下降沿后, 或門a_or 輸出0,觸發(fā)器復(fù)位使a_ck_o= 0。

異步時鐘b_ck 的時序情況與a_ck 類似, 唯一不同的是h_ck 的反相信號經(jīng)b_ck 和b_ck_d 的與選通后進入D_B 的時鐘端, b_ck_o 與h_ck 的下降沿同步。

由圖4 可見, 設(shè)信號a_ck 和b_ck 分別在極為接近的時刻1 和2 向上跳變, 其相應(yīng)輸出a_ck_o 和b _ck_o 的上升沿分別處于時刻3 和4, 時間上錯開了高頻時鐘的半周期, 同樣在時刻5 幾乎同時升上跳的信號a_ck 和b_ck, 輸出a_ck_o 和b_ck_o 的上升沿分別處于時刻7 和6, 也在時間上錯開了高頻時鐘的半周期。因此, 經(jīng)過上部電路的處理后, 原來時間上完全獨立的信號a_ ck 和b_ck 變成了時間上有一最小固定間隔的信號a_ck_o 和b_ck_o。

為了敘述方便, 規(guī)定電路中參數(shù)的符號表示為: 延遲環(huán)節(jié)的延遲時間為T d, 高頻時鐘h_ck 的周期為T hck, 同步電路中D 觸發(fā)器的建立時間為信號T set, 保持時間為信號T hold , a_ck 和b_ck 的高電平寬度為T H , 基于上述表示, 根據(jù)半拍錯位同步法的時序要求, 對電路的相關(guān)參數(shù)選擇原則總結(jié)如下:

1) T hck> T of f, T of f表示后面電路中對異步時鐘信號的時間分離或數(shù)據(jù)建立時間要求, 高頻時鐘應(yīng)在滿足此條件基礎(chǔ)上取較高的頻率;

2) T d> T s , 確保D 觸發(fā)器的數(shù)據(jù)建立時間滿足要求;

3) T H+ T d> T set + T hold ;

4) T H> T d+ 2 # T hck。

2. 2 半拍錯位同步法的應(yīng)用

2. 2. 1 在異步觸發(fā)電路中的應(yīng)用

以圖3( a) 電路為例說明半拍錯位同步法在異步觸發(fā)電路中的應(yīng)用, 將半拍錯位同步電路串行接入圖3 的異步觸發(fā)電路, 給同步電路引入一高頻時鐘h _ck, 圖3( a) 電路中的a_ck 和b_ck 接同步電路的相應(yīng)觸發(fā)器, dat 連接關(guān)系不變, 同步電路輸出a_ck_ o 和b _ck_ o 分別代替a_ck 和

b_ck接入原電路相應(yīng)位置, 由2. 1 小節(jié)的分析知, 給原電路串入半拍錯位同步電路后, 由于a_ck_o 和b_ck_o 在時間上錯開半個h_ck 周期, 其后的觸發(fā)電路中不會再發(fā)生亞穩(wěn)態(tài)。

2. 2. 2 在異步FIFO 中的應(yīng)用

異步FIFO( First In First Out ) 為多時鐘域系統(tǒng)異步時鐘間接口設(shè)計提供了一種簡便、快捷的解決方案, 在網(wǎng)絡(luò)接口、圖像處理等方面, 得到了廣泛的應(yīng)用。

異步FIFO 是跨時鐘域設(shè)計方法的集中體現(xiàn), 體現(xiàn)了很多的方法。其中最重要的有兩點, 一個是亞穩(wěn)態(tài), 另一個就是和亞穩(wěn)態(tài)類似但不相同的------多個控制/ 狀態(tài)信號的跨時鐘傳遞。對于異步FIFO, 采用格雷碼進行讀寫地址計數(shù), 每次只變化1 個位, 大大減小了亞穩(wěn)態(tài)發(fā)生的概率。由于異步FIFO 的讀寫信號屬于不同的時間域, 因此set up/ hold 沖突和亞穩(wěn)態(tài)的發(fā)生是必然的, 數(shù)據(jù)的丟失概率不為零。

異步FIFO 產(chǎn)生亞穩(wěn)態(tài)的原因是讀寫信號屬于不同的時間域, 沒有確定的時間關(guān)系, 因此只要通過適當(dāng)?shù)耐獠窟壿媽⒆x寫信號在時間上產(chǎn)生間隔, 就能消除亞穩(wěn)態(tài), 解決異步FIFO 丟失數(shù)據(jù)問題。將半拍錯位同步法用于異步FIFO 的讀寫信號控制的電路如圖5 所示, 圖中虛線框內(nèi)是半拍錯位同步電路。給同步電路引入高頻時鐘h_ck, 外部獨立的讀R# 和寫W# 信號接在虛線框內(nèi)的同步器上,

同步電路的輸出R_O 和W_O 接FIFO 的讀寫管腳, 由2. 1小節(jié)的分析知, 給原電路串入半拍錯位同步電路后, 由于R_O和W_O 在時間上至少錯開半個h_ck 周期, 因此其后的異步FIFO 中不會發(fā)生亞穩(wěn)態(tài)造成數(shù)據(jù)丟失。

圖5  半拍錯位同步法在異步FIFO 中應(yīng)用
圖5 半拍錯位同步法在異步FIFO 中應(yīng)用

圖5 所示的電路是對異步FIFO 外加控制邏輯消除亞穩(wěn)態(tài)。半拍錯位同步法也可用于由異步FIFO 的FPGA 設(shè)計中。

3 結(jié)論

亞穩(wěn)態(tài)是異步電路和異步FIFO 設(shè)計中的常見問題,將異步信號同步化的幾種常用方法雖能大大將降低亞穩(wěn)態(tài)發(fā)生的概率, 但無法 根除! 亞穩(wěn)態(tài)的發(fā)生。本文提出的半拍錯位同步法!, 通過附加的帶異步復(fù)位端的D 觸發(fā)器和高頻時鐘, 將異步時鐘分別同步到高頻時鐘的上升沿和下降沿, 使得過于接近的異步時鐘在時間上拉開一定的間隔, 只要選擇適當(dāng)?shù)难舆t時間和高頻時鐘, 便能徹底消除亞穩(wěn)態(tài)的發(fā)生, 在航天航空、軍事等對要求高可靠數(shù)據(jù)傳遞的應(yīng)用領(lǐng)域具有廣闊的應(yīng)用前景。

DIY機械鍵盤相關(guān)社區(qū):機械鍵盤DIY




評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉