發(fā)生亞穩(wěn)態(tài)的原因是信號在傳輸?shù)倪^程中不能滿足觸發(fā)器的建立時間和保持時間。發(fā)生亞穩(wěn)態(tài)時,觸發(fā)器的輸出是個中間態(tài),也是x態(tài),不能確定為0或1,而且這個亞穩(wěn)態(tài)還會往后傳遞至更多的組合邏輯和時序邏輯電路。
所謂建立時間,就是在clk有效邊沿到來之前輸入信號需要保持穩(wěn)定的最小時間;所謂保持時間,就是在clk有效邊沿到來之后輸入信號還需要保持穩(wěn)定的最小時間。
為了簡便分析,將一個觸發(fā)器的結(jié)構(gòu)簡化為下圖:
一個觸發(fā)器等效為兩個觸發(fā)電平不一樣的鎖存器的信號鏈;鎖存器的特性為:
- 當(dāng)clk為有效電平時,鎖存器是透傳模式,Q隨著D的變化而變化;
- 當(dāng)clk為無效電平時,鎖存器在鎖存模式,Q為之前保存的值,D輸入值不會對Q有影響。
所以,如上圖,當(dāng)clk為低電平的時候, L1為透明傳輸模式,輸入信號in透傳至Q1,但是L2是鎖存模式,Q2并不會受到Q1的影響;
而當(dāng)clk翻轉(zhuǎn)至高電平時,L1將會進(jìn)入鎖存模式,這個過程需要一段時間完成。L2會進(jìn)入透傳模式,而此時L1可能還處于透傳模式。那么在clk翻轉(zhuǎn)之前的一段時間到L1完成進(jìn)入鎖存,L2進(jìn)入透傳模式這段時間內(nèi),輸入信號in都是不可以變化的,否則可能導(dǎo)致Q1傳導(dǎo)中間值,進(jìn)而Q2也傳輸x態(tài),也就是所謂的亞穩(wěn)態(tài)。
圖來自百度百科
再探討一些異步信號同步的方法原理。對于單bit信號來說,我們都知道一般用兩個DFF觸發(fā)器來做同步,當(dāng)然這不是一定的,具體幾個DFF需要根據(jù)兩個時鐘域的頻率做計(jì)算。但本文分析以兩個DFF觸發(fā)器為例。
值得一提的是,多個DFF觸發(fā)器解決異步信號同步的亞穩(wěn)態(tài)方案,并不能完全地消除亞穩(wěn)態(tài),只是極大地降低了亞穩(wěn)態(tài)發(fā)生的概率。有一個MTBF的平均無故障時間公式計(jì)算,公式跟芯片工藝的PVT,接收數(shù)據(jù)時鐘頻率,接收數(shù)據(jù)的翻轉(zhuǎn)率有關(guān)。如果我們的MTBF時間大于產(chǎn)品的保質(zhì)期,可以視為沒問題(保修期的作用之一)
圖來自百度百科
那么,為什么加兩個觸發(fā)器就能降低亞穩(wěn)態(tài)的概率呢?從電路上分析來說,雖然觸發(fā)器的輸出是中間值,但是現(xiàn)實(shí)世界中是存在噪聲的,那么一定會導(dǎo)致信號會偏向某個固定值0或1。但這個過程是需要一定時間的,所以通過加兩級觸發(fā)器,讓這個趨向確定值的過程在觸發(fā)器傳遞過程中完成,那么最后觸發(fā)器的輸出就是一個確定值了。
當(dāng)然,也會發(fā)生某些情況下,這個趨向確定值的過程會很漫長,所以說只能降低發(fā)生的概率而不能消除。
那么對于多bit信號的同步呢,在我看來,方案是讓把多bit信號轉(zhuǎn)換為單bit信號同步(格雷碼),或者讓多bit信號保持穩(wěn)定,只要能夠保證在接收數(shù)據(jù)時鐘域內(nèi),信號一直穩(wěn)定不變,就不會產(chǎn)生亞穩(wěn)態(tài)。大家可以想想諸如FIFO,D-MUX,握手等方法是不是等待多bit信號穩(wěn)定后再去采樣。
-
鎖存器
+關(guān)注
關(guān)注
8文章
906瀏覽量
41523 -
觸發(fā)器
+關(guān)注
關(guān)注
14文章
2000瀏覽量
61169 -
FIFO存儲
+關(guān)注
關(guān)注
0文章
103瀏覽量
5990 -
CLK
+關(guān)注
關(guān)注
0文章
127瀏覽量
17175 -
dff
+關(guān)注
關(guān)注
0文章
26瀏覽量
3421
發(fā)布評論請先 登錄
相關(guān)推薦
評論