<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          關(guān) 閉

          新聞中心

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

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

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

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

          本文引用地址:http://www.ex-cimer.com/article/160587.htm

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

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

          隨著信息技術(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è)計(jì)中最常用的基本器件, 內(nèi)部包含兩個(gè)雙穩(wěn)態(tài)元件, 其特性曲線如圖1 所示。除了兩個(gè)穩(wěn)定狀態(tài)0 和1 外, 還有一個(gè)狀態(tài)也滿足雙穩(wěn)態(tài)元件的方程,即當(dāng)兩個(gè)反相器都處于中間值的第3 種半穩(wěn)定態(tài)----- 亞穩(wěn)態(tài), 反相器在非值范圍的反饋系數(shù)是相當(dāng)大的, 一旦因干擾或噪音離開(kāi)了這個(gè)中心點(diǎn), 就會(huì)很快地進(jìn)入值范圍( 穩(wěn)態(tài)) 。

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

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

          圖2  setup-hold 時(shí)間
          圖2 setup-hold 時(shí)間

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

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

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

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

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

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

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

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

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

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

          2) 結(jié)繩法

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

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

          3) 異步FIFO

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

          4) 格雷編碼法

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

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

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

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

          2. 1 半拍錯(cuò)位同步法原理

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

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

          圖4  半拍錯(cuò)位同步法的電路和時(shí)序波形圖
          圖4 半拍錯(cuò)位同步法的電路和時(shí)序波形圖

          時(shí)序如下:

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

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

          3) 高頻時(shí)鐘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 的時(shí)鐘端CP 保持0, a_ck_o= 1;

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

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

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

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

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

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

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

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

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

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

          以圖3( a) 電路為例說(shuō)明半拍錯(cuò)位同步法在異步觸發(fā)電路中的應(yīng)用, 將半拍錯(cuò)位同步電路串行接入圖3 的異步觸發(fā)電路, 給同步電路引入一高頻時(shí)鐘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é)的分析知, 給原電路串入半拍錯(cuò)位同步電路后, 由于a_ck_o 和b_ck_o 在時(shí)間上錯(cuò)開(kāi)半個(gè)h_ck 周期, 其后的觸發(fā)電路中不會(huì)再發(fā)生亞穩(wěn)態(tài)。

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

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

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

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

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

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

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

          3 結(jié)論

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

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




          評(píng)論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();