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