1首先介紹一下建立時間和保持時間的基本概念: 1.1建立時間和保持時間: 圖1.1 tsh:建立時間,th:保持時間 建立時間:是指時鐘觸發(fā)器上升沿到來之前,數(shù)據(jù)穩(wěn)定不變的時間。如果建立時間不夠,則數(shù)據(jù)不能在這個時鐘進(jìn)入觸發(fā)器。 保持時間:是指時鐘觸發(fā)器上升沿到來之后,數(shù)據(jù)保持不變的時間。如果保持時間不夠,則數(shù)據(jù)同樣不能被打入觸發(fā)器。 由于PCB走線時,存在分布電感和電容,所以幾納秒的毛刺將被自然濾除,而在PLD內(nèi)部決無分布電感和電容,所以在PLD/FPGA設(shè)計中,競爭和冒險問題將變的較為突出。 2關(guān)于毛刺的基本概念: 信號在FPGA內(nèi)通過連線和邏輯單元時,都會產(chǎn)生延時。延時產(chǎn)生的原因:①:連線的長短和邏輯單元的數(shù)目 ,②:受器件的制造工藝、工作電壓、溫度等條件的影響, 所 以在信號變化的瞬間,組合邏輯的輸出有先后順序,往往會產(chǎn)生一些尖峰的信號,這些信號稱為毛刺。如果有毛刺,該電路稱為冒險電路。只由內(nèi)部電路決定。 看下面的例子: 我們可以看到,A,B,C,D四個輸入信號,最后導(dǎo)致輸出出現(xiàn)毛刺。原因是A,B,C,D信號輸入不是同時發(fā)生。(即使同時發(fā)生,它們各自由于連線和邏輯單元的原因,到達(dá)門電路的時間也不同。)所以可以說,只要輸入信號同時發(fā)生變化,由于走線的原因,必將產(chǎn)生毛刺。所以我們不能直接將其輸出,要進(jìn)行一些措施。 方法一:格雷碼代替二進(jìn)制計數(shù)器,由于格雷碼每次只有一位進(jìn)行變化,不滿足產(chǎn)生毛刺的條件。所以可以減小錯誤 方法二:另一種更常見的方法是利用D觸發(fā)器的D輸入端對毛刺信號不敏感的特點,在輸出信號的保持時間內(nèi),用觸發(fā)器讀取組合邏輯的輸出信號,這種方法類似于將異步電路轉(zhuǎn)化為同步電路。如圖: 由于異步輸入不是總能滿足所饋送的觸發(fā)器滿足建立時間和保持時間,所以常常會產(chǎn)生亞穩(wěn)態(tài)。 3關(guān)于亞穩(wěn)態(tài)知識的基本概念 圖1.2:采用一個時鐘同步下的模型 其中:tco為觸發(fā)器數(shù)據(jù)輸出延時;Tdelay=Tcomb 為經(jīng)過組合邏輯的延時 ;Tsetup(tsu)為建立時間;Tpd為時鐘延時,一般時鐘延時可以忽略。 1.1亞穩(wěn)態(tài)的特點: ①增加觸發(fā)器進(jìn)入穩(wěn)態(tài)的時間: 如圖 ,如果滿足正常建立時間和保持時間,則Tco為觸發(fā)器的延時。如果違反觸發(fā)器的時序要求:則會在延時后出現(xiàn)亞穩(wěn)態(tài)時間tR。 ②:可能輸出毛刺,震蕩,或中間電平 經(jīng)過一段時間后,亞穩(wěn)態(tài)會處于穩(wěn)定狀態(tài),有可能是高電平,也有可能是低電平。與數(shù)據(jù)無關(guān),與電路有關(guān)。且在亞穩(wěn)態(tài)狀態(tài)時,會出現(xiàn)毛刺,震蕩或者輸出中間電平。 如例: F1 <= local_2m輸入,F(xiàn)0 <= local_2m輸入,local_2m和cdr_2m都是2MHz的方波信號,被一個50MHz的異步時鐘作同步化處理。Verilog代碼為: always @(posedge clk_50m) if(sel==1)begin clk2m_oa <= cdr_2m ; clk2m_ob <= cdr_2m ; end else begin clk2m_oa <= local_2m ; clk2m_ob <= local_2m ; end 分析出現(xiàn)亞穩(wěn)態(tài)的原因:首先,2MHZ被50MHZ處理,一定會出現(xiàn)亞穩(wěn)態(tài),在震蕩期間出現(xiàn)高電平,然后為低電平。這個毛刺產(chǎn)生的原因是因為門電路的原因。 ③:亞穩(wěn)態(tài)返回到哪一個穩(wěn)定態(tài)是不可預(yù)測的,而且和輸入數(shù)據(jù)無關(guān)。 1.2亞穩(wěn)態(tài)的危害: 目前FPGA都是基于同步設(shè)計的思想,一個良好的子模塊設(shè)計都是基于同一時鐘下設(shè)計的。當(dāng)不同時鐘域進(jìn)行通信時,就可能產(chǎn)生亞穩(wěn)態(tài)。(如異步FIFO) ①:理論上如果亞穩(wěn)態(tài)一個周期內(nèi)不能正確恢復(fù)成穩(wěn)定狀態(tài),則目的寄存器也會發(fā)生亞穩(wěn)態(tài),這就是亞穩(wěn)態(tài)的傳播。 ②:亞穩(wěn)態(tài)的毛刺直接輸出可能會導(dǎo)致系統(tǒng)錯誤,如送錯中斷。 ③:采樣到錯誤的電平,導(dǎo)致功能錯誤。在狀態(tài)機內(nèi),如果狀態(tài)機的正常功能狀態(tài)為 2.4.6.8,由于產(chǎn)生產(chǎn)生亞穩(wěn)態(tài)導(dǎo)致狀態(tài)機進(jìn)入1.3.5.7的狀態(tài),會使?fàn)顟B(tài)機掛死在非法狀態(tài)。 ④:在異步讀取RAM時,讀寫時鐘不一致,如果出現(xiàn)亞穩(wěn)態(tài),會導(dǎo)致數(shù)據(jù)讀錯,(或者漏讀,或者漏寫)。 1.3亞穩(wěn)態(tài)的處理: 一般來說,只要是異步信號同步化,都會產(chǎn)生亞穩(wěn)態(tài),只要等待一定的時間,都能恢復(fù)成穩(wěn)定狀態(tài),等待的時間取決于MTBF和期間本身。 MTBF (平均無故障時間)與可靠性如果一個設(shè)計中包含同步組件,無論是否愿意它都會出現(xiàn)亞穩(wěn)態(tài)。亞穩(wěn)態(tài)無法徹底消除,因此我們所做的就是計算錯誤概率以及在時間上來描述它。讓我們來看一下,假設(shè)這里有一個物理系統(tǒng)亞穩(wěn)態(tài)錯誤發(fā)生的概率為 1/1000。換句話說,每一千次采樣就會因為亞穩(wěn)態(tài)發(fā)生一次錯誤。這也意味著,每一千次,輸出就會在下一個時鐘沿到來時,無法變化。如果時鐘頻率為 1KHz,那么每秒都會有一次錯誤出現(xiàn),MTBF 值就為 1 秒。當(dāng)然,這個假設(shè)過于簡單;MTBF 是一種故障概率的統(tǒng)計度量,并且需要更為復(fù)雜、經(jīng)驗化、實驗化的數(shù)據(jù)來計算。對于觸發(fā)器來說,這種關(guān)系依賴于電路自身的物理常數(shù)和時鐘頻率,記住亞穩(wěn)態(tài)本身與時鐘沒有任何關(guān)系,但是它和 MTBF 相關(guān)。自然的,我們會說一個可靠性好的電路具有很高的 MTBF 值。 ①:經(jīng)典的處理方法為多拍 異步信號經(jīng)過第一個寄存器,如果發(fā)生了亞穩(wěn)態(tài),2nS(假設(shè)MTBF=1000Y)左右返回到穩(wěn)定態(tài),如果時鐘周期大于2ns(時鐘頻率小于500MHz), 那么顯然第二個寄存器就沒有亞穩(wěn)態(tài)發(fā)生了。此時亞穩(wěn)態(tài)的唯一影響就是不能在最準(zhǔn)確的時刻識別到異步信號,有可能早一拍,或者晚一拍識別。 ②: 降低亞穩(wěn)態(tài)帶來的危害。 一個良好的設(shè)計必須有好的容錯能力,讓設(shè)計對亞穩(wěn)態(tài)不敏感。如果亞穩(wěn)態(tài)出現(xiàn),至少要有能力恢復(fù)。 歡迎通信工程師和FPGA工程師關(guān)注公眾號 FPGA微信技術(shù)群 歡迎大家加入全國FPGA微信技術(shù)群,這里有一群熱愛技術(shù)的工程師,在這里可以一起交流討論技術(shù)! 用手指按住就可以加入FPGA全國技術(shù)群哦 FPGA IP核服務(wù):各類優(yōu)質(zhì)IP核服務(wù)商,服務(wù)到位,有保障!有需求的可以直接聯(lián)系群主! |
|