亞穩態&MTBF&同步器&AFIFO


因為分析時理想化了輸出特性曲線,認為0到1的翻轉瞬間完成“突變”,但實際上變化有一個過程。高於VH才算1,低於VL才算0,中間的既不是1也不是0。如果輸入信號剛好在寄存器不能判斷的區間,那么輸出就不能判斷是0還是1,即亞穩態。(邊沿采樣邊沿,數據不滿足建立時間or保持時間)。

MTBFmean time between failure 平均故障間隔時間:從問題出現並導致故障的兩個事件的之間的平均時間。越高越穩定。

不考慮器件本身的影響,對同一個觸發器,數據變化頻率越小,采樣時鍾越低,MTBF越大。

減少亞穩態的方法:

1.2級同步器

2.降低頻率

3.避免變化過快或頻繁的信號進行跨時鍾域采樣

4.采用更快的觸發器(需要的建立時間和保持時間更短)

 

兩級同步器無法避免亞穩態傳播的情況:

兩級同步器能夠起作用的原因是:亞穩態在第二個周期最終會穩定下來,如果:

1.暫穩態維持時間不止一個周期,在下一個時鍾上升沿的建立時間之前沒有穩定,則第二級的觸發器也會進入亞穩態。這種情況的概率是:1/MTBF

2.第一級亞穩態在下一個時鍾上升沿之前穩定但是穩定為錯誤的值(比如要傳遞1,結果穩定為0),則亞穩態雖然不會傳播下去但是引起了采樣錯誤。

 

采用同步器的另外一個要求:

需要跨時鍾域的信號,需要是源時鍾域的寄存器輸出,中間不能有組合邏輯。

組合邏輯毛刺變化太快,減小MTBF,這會增加亞穩態出現的概率

 

異步fifo:

介紹fifo可以從幾個block下手,雙端口RAM(隨機存取存儲器),寫邏輯負責產生寫信號和地址,讀邏輯負責產生讀信號和地址,地址比較負責產生空滿標志。

空滿判斷:在寫時鍾域的地址比較用於產生寫滿信號,在讀時鍾域的地址比較用於產生讀空信號。

地址傳遞要將二進制轉換為格雷碼進行傳遞,因為格雷碼相鄰兩個只有一位發生變化能夠避免亞穩態的傳播。

二進制轉格雷碼:將二進制數向右移動一位再與原來的二進制數按位異或

格雷碼轉二進制碼:最簡單是使用loop的形式。

for(i=0,i<格雷碼位數,i=i--)

bin[i] = ^(gray[格雷碼位數,i])

 

 地址的比較:通常fifo為了防止讀寫溢出,一般都會增加一個額外的MSB,為了判斷地址是否經過回卷。

通過比較地址判斷空滿,如果是二進制地址,地址每一位都相同表示讀空;如果最高位不同,低3位相同表示寫滿。

如果是格雷碼地址,格雷碼地址發生回卷后,最高兩位恰好是不回卷的反;根據這個特點,如果地址的每一位都相同表示讀空,如果讀地址的最高兩位取反后和寫地址相同表示寫滿。

 

 將空和將滿:實質上是更加保守的空信號和滿信號。當讀寫地址之間的間隔小於等於某一個間隔值就產生將空將滿信號。

此時要注意格雷碼地址不能用於計算間隔,所以要將格雷碼轉換成二進制碼。

寫地址減去讀地址的差值小於等於間隔就表示將空。讀時鍾域產生將空信號。

對於將滿信號,最高位相同,低3位讀地址減去寫地址再加上fifo深度 小於等於間隔產生將滿信號

         最高位不同,低3位讀地址減去寫地址 小於等於間隔產生將滿信號

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM