利用 IDDR 簡(jiǎn)化亞穩態(tài)
如果在具有多個(gè)時(shí)鐘的非同步系統中使用FPGA,或者系統中的時(shí)鐘頻率或相位與FPGA所使用時(shí)鐘頻率或相位不同,那么設計就會(huì )遇到亞穩態(tài)問(wèn)題。不幸的是,如果設計遇到上述情況,是沒(méi)有辦法完全解決亞穩態(tài)問(wèn)題的,不過(guò)還是有一些方法可降低系統出現亞穩態(tài)問(wèn)題的幾率。
本文引用地址:http://dyxdggzs.com/article/191462.htm
先來(lái)深入研究一下引起亞穩態(tài)的原因,再談?wù)動(dòng)媚男┓椒右詰獙Α?/p>
什么是亞穩態(tài)
在FPGA等同步邏輯數字器件中,所有器件的寄存器單元都需要預定義信號時(shí)序以使器件正確地捕獲數據,進(jìn)而產(chǎn)生可靠的輸出信號。當另一器件將數據發(fā)送給FPGA時(shí),FPGA的輸入寄存器必須在時(shí)鐘脈沖邊沿前保證最短的建立時(shí)間和時(shí)鐘脈沖邊沿后的保持時(shí)間,從而確保正常完整地 接收信號。
在一定的延遲后,寄存器輸出端隨后將信號發(fā)送到FPGA的其他部分。不過(guò),如果信號傳輸違反了指定時(shí)間要求,那么輸出寄存器可能就會(huì )進(jìn)入所謂的亞穩態(tài),這就導致寄存器輸出值會(huì )在高低狀態(tài)之間波動(dòng),且這種狀態(tài)的時(shí)間不確定,從而使穩定輸出狀態(tài)無(wú)法達到寄存器指定的時(shí)間,進(jìn)而造成性能略有延遲或邏輯行為的副效應。
解決問(wèn)題
一般來(lái)說(shuō),將FPGA連接到另一個(gè)具有不同時(shí)鐘域的數字器件時(shí),必須給FPGA的輸入部分添加一級同步,使FPGA時(shí)鐘域中的第一個(gè)寄存器充當同步寄存器。為了實(shí)現這一目的,可在FPGA器件的輸入級中使用一系列寄存器或同步寄存器鏈。該鏈可在輸入寄存器將信號發(fā)送到FPGA的其他區域之前,允許 能有更多的時(shí)間解決潛在的亞穩態(tài)信號問(wèn)題。亞穩態(tài)信號的穩定時(shí)間通常比一個(gè)時(shí)鐘周期要短得多,因此即便延遲半個(gè)時(shí)鐘周期,亞穩態(tài)出現的概率也會(huì )按數量級減少。
為了降低亞穩態(tài)問(wèn)題的出現概率,在設計中實(shí)現的一系列寄存器(連接成移位寄存器)必須滿(mǎn)足以下標準要求:
所有寄存器必須由同一時(shí)鐘,或與同一時(shí)鐘相位相關(guān)的時(shí)鐘控制。
鏈中每個(gè)寄存器的扇出都僅針對相鄰的寄存器。
由于不能完全消除亞穩態(tài)問(wèn)題,因此必須做好解決問(wèn)題的準備。為此,設計人員采用平均故障間隔時(shí)間(MTBF)這個(gè)指標來(lái)估算從問(wèn)題出現并導致故障的兩個(gè)事件間的平均時(shí)間。MTBF值越高,說(shuō)明設計的穩定性越高。如果發(fā)生了“故障”,只是說(shuō)明沒(méi)有解決亞穩態(tài)問(wèn)題,并不是系統本身真的出現了故障。
如欲了解測量亞穩態(tài)的方法,敬請訪(fǎng)問(wèn):http://www.xilinx.com/support/documentation/application_notes/xapp094.pdf,查閱賽靈思應用指南XAPP094。
可用以下方程式計算出寄存器的MTBF:
在本例中,C1和C2代表寄存器技術(shù)相關(guān)常數,tMET代表亞穩態(tài)的穩定時(shí)間。
可根據每個(gè)寄存器的MTBF,確定總的MTBF值。同步器的故障率為1/MTBF,則將每個(gè)同步器的故障率相加,就能計算出整個(gè)設計的故障率:
從上式可以明顯看出,通過(guò)改進(jìn)寄存器單元的架構,優(yōu)化設計以延長(cháng)同步寄存器的tMET,甚至增加鏈中寄存器的數量等多種方法來(lái)改進(jìn)MTBF。
高層代碼與布局圖
如果發(fā)現輸入信號存在潛在的亞穩態(tài)問(wèn)題,只需創(chuàng )建與同一時(shí)鐘有相位關(guān)系的時(shí)鐘驅動(dòng)的寄存器鏈就能解決此問(wèn)題。這需要提供如圖1所示的電路。
評論