<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > FPGA跨時(shí)鐘域異步時(shí)鐘設計的幾種同步策略

FPGA跨時(shí)鐘域異步時(shí)鐘設計的幾種同步策略

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

1 引言

基于的數字系統設計中大都推薦采用的設計,也就是單時(shí)鐘系統。但是實(shí)際的工程中,純粹單時(shí)鐘系統設計的情況很少,特別是設計模塊與外圍芯片的通信中,的情況經(jīng)常不可避免。如果對帶來(lái)的亞穩態(tài)、采樣丟失、潛在邏輯錯誤等等一系列問(wèn)題處理不當,將導致系統無(wú)法運行。本文總結出了幾種同步策略來(lái)解決問(wèn)題。

  2 異步設計中的亞穩態(tài)

觸發(fā)器是設計中最常用的基本器件。觸發(fā)器工作過(guò)程中存在數據的建立(setup)和保持(hold)時(shí)間。對于使用上升沿觸發(fā)的觸發(fā)器來(lái)說(shuō),建立時(shí)間就是在時(shí)鐘上升沿到來(lái)之前,觸發(fā)器數據端數據保持穩定的最小時(shí)間。而保持時(shí)間是時(shí)鐘上升沿到來(lái)之后,觸發(fā)器數據端數據還應該繼續保持穩定的最小時(shí)間。我們把這段時(shí)間成為setup-hold時(shí)間(如圖1所示)。在這個(gè)時(shí)間參數內,輸入信號在時(shí)鐘的上升沿是不允許發(fā)生變化的。如果輸入信號在這段時(shí)間內發(fā)生了變化,輸出結果將是不可知的,即亞穩態(tài) (Metastability)。
  
一個(gè)信號在過(guò)渡到另一個(gè)時(shí)鐘域時(shí),如果僅僅用一個(gè)觸發(fā)器將其鎖存,那么采樣的結果將可能是亞穩態(tài)。這也就是信號在跨時(shí)鐘域時(shí)應該注意的問(wèn)題。如圖2所示。
  
信號dat經(jīng)過(guò)一個(gè)鎖存器的輸出數據為a_dat。用時(shí)鐘b_clk進(jìn)行采樣的時(shí)候,如果a_dat正好在b_clk的setup-hold時(shí)間內發(fā)生變化,此時(shí)b_ dat就既不是邏輯“1”,也不是邏輯“0”,而是處于中間狀態(tài)。經(jīng)過(guò)一段時(shí)間之后,有可能回升到高電平,也有可能降低到低電平。輸出信號處于中間狀態(tài)到恢復為邏輯“1”或邏輯“0”的這段時(shí)間,我們稱(chēng)之為亞穩態(tài)時(shí)間。

觸發(fā)器進(jìn)入亞穩態(tài)的時(shí)間可以用參數MTBF(Mean Time Between Failures)來(lái)描述,MTBF即觸發(fā)器采樣失敗的時(shí)間間隔,表示為:
  
其中fclock表示系統時(shí)鐘頻率,fdata代表異步輸入信號的頻率,tmet代表不會(huì )引起故障的最長(cháng)亞穩態(tài)時(shí)間,C1和C2分別為與器件特性相關(guān)的常數。如果MTBF很大,就認為這個(gè)設計在實(shí)際工作中是能夠正常運行的,不會(huì )因為亞穩態(tài)導致整個(gè)系統的失效。當觸發(fā)器處于亞穩態(tài),且處于亞穩態(tài)的時(shí)間超過(guò)了一個(gè)時(shí)鐘周期,這種不確定的狀態(tài)還會(huì )影響到下一級的觸發(fā)器,最終導致連鎖反應,從而使整個(gè)系統功能失常。

  3 同步策略

在異步設計中,完全避免亞穩態(tài)是不可能的。因此,設計的基本思路應該是:首先盡可能減少出現亞穩態(tài)的可能性,其次是盡可能減少出現亞穩態(tài)并給系統帶來(lái)危害的可能性。以下是根據實(shí)際工作總結出來(lái)的幾種同步策略。

3.1 雙鎖存器法

為了避免進(jìn)入亞穩態(tài),應當使參數MTBF盡可能大。通常采用的方法是雙鎖存器法,即在一個(gè)信號進(jìn)入另一個(gè)時(shí)鐘域之前,將該信號用兩個(gè)鎖存器連續鎖存兩次(如圖3所示)。理論研究表明這種設計可以將出現亞穩態(tài)的幾率降低到一個(gè)很小的程度,但這種方法同時(shí)帶來(lái)了對輸入信號的一級延時(shí),需要在設計時(shí)鐘的時(shí)候加以注意。
  
對于上面的雙鎖存器法,如果a_clk的頻率比b_clk的頻率高,將可能出現因為dat變化太快,而使b_clk無(wú)法采樣的問(wèn)題。即在信號從快時(shí)鐘域向慢時(shí)鐘域過(guò)渡的時(shí)候,如果信號變化太快,慢時(shí)鐘將可能無(wú)法對該信號進(jìn)行正確的采樣,所以在使用雙鎖存器法的時(shí)候,應該使原始信號保持足夠長(cháng)的時(shí)間,以便另一個(gè)時(shí)鐘域的鎖存器可以正確地對其進(jìn)行采樣。

3.2 結繩法

由于雙鎖存器法在快時(shí)鐘域向慢時(shí)鐘域過(guò)渡中可能存在采樣失效的問(wèn)題,我們引入了一種安全的跨時(shí)鐘域的方法:結繩法。結繩法適合任何時(shí)鐘域的過(guò)渡(clk1,clk2的頻率和相位關(guān)系可以任意選定),如圖4所示。

圖4中的_clk1表示該信號屬于clk1時(shí)鐘域,_clk2的信號表示該信號屬于clk2時(shí)鐘域。在兩次src_req_clk1之間被src_vld_clk1結繩(Pluse2Toggle)。將src_vld—clk1用雙鎖存器同步以后,該信號轉換為dst_req_clk2(Toggle2Pluse)。同理,用dst_vld_clk2將dat_req_clk2結繩,dst_vld_clk2表明在clk2時(shí)鐘域中,src_dat_clk1已經(jīng)可以進(jìn)行正確的采樣了。最后將dst_vld_clk2轉換為dst_ack_clk1(Synchronizer and Toggle2Pluse)。dst_ack_clk表明src_dat_clk1已經(jīng)被clk2正確采樣了,此后clk1時(shí)鐘域就可以安全地傳輸下一個(gè)數據了??梢钥闯?,結繩法的關(guān)鍵是將信號結繩以后,使其保持足夠長(cháng)的時(shí)間,以便另一個(gè)時(shí)鐘可以正確采樣。圖5描述了結繩法的具體實(shí)現,主要包括3個(gè)基本單元:Pluse2Toggle、Synchronizer和Toggle2Pluse。

Pluse2Toggle模塊負責將兩個(gè)脈沖信號結繩,即將單脈沖信號延長(cháng);Synchronizer模塊用雙鎖存器法將得到的信號過(guò)渡到另一個(gè)時(shí)鐘域;Toggle2Pluse模塊與Pluse2Toggle功能相對,即將延長(cháng)的脈沖信號還原為單脈沖,這里用到了異或門(mén)。整體的設計思想就是用Pluse2Toggle將信號延長(cháng),用Synchronizer過(guò)渡,再用Toggle2Pluse還原,以保證另一個(gè)時(shí)鐘域可以正確采樣,而接收方用相反的流程送回響應信號。

結繩法可以解決快時(shí)鐘域向慢時(shí)鐘域過(guò)渡的問(wèn)題,且適用的范圍很廣。但是結繩法實(shí)現較復雜,在設計要求較高的場(chǎng)合應該慎用。

  4 結束語(yǔ)

本文主要把異步時(shí)鐘設計中產(chǎn)生的問(wèn)題,原因以及解決問(wèn)題所采用的同步策略做了詳細的分析。其中雙鎖存器法比較適用于只有少數信號跨時(shí)鐘域;結繩法比較適用快時(shí)鐘域向慢時(shí)鐘過(guò)渡的情況。所以,在實(shí)際的應用中,應根據自身設計的特點(diǎn)選擇適當的同步策略。

本文引用地址:http://dyxdggzs.com/article/201706/349110.htm


評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>