精品一区二区中文在线,无遮挡h肉动漫在线观看,国产99视频精品免视看9,成全免费高清大全

一種異步FIFO的設計方法

時間:2023-05-01 12:16:21 電子通信論文 我要投稿
  • 相關推薦

一種異步FIFO的設計方法

摘要:使用FIFO同步源自不同時鐘域的數據是在數字IC設計中經常使用的方法,設計功能正確的FUFO會遇到很多問題,探討了兩種不同的異步FIFO的設計思路。兩種思路都能夠實現功能正確的PIFO。

    關鍵詞:異步FIFO 握手 同步 二進制 格雷碼

本文所研究的FIFO,從硬件的觀點來看,就是一塊數據內存。它有兩個端口,一個用來寫數據,就是將數據存入FIFO;另一個用來讀數據,也就是將數據從FIFO當中取出。與FIFO操作相關的有兩個指針,寫指針指向要寫的內存部分,讀指針指向要讀的內存部分。FIFO控制器通過外部的讀寫信號控制這兩個指針移動,并由此產生FIFO空信號或滿信號。

對于異步FIFO而言,數據是由某一個時鐘域的控制信號寫入FIFO,而由另一個時鐘域的控制信號將數據讀出FIFO。也就是說,讀寫指針的變化動作是由不同的時鐘產生的。因此,對FIFO空或滿的判斷是跨時鐘域的。如何根據異步的指針信號對FIFO的滿狀態或空狀態進行正確的判斷是本文研究的重點。此外,設計過程中的一些細節問題也將在文中涉及到。

1 指針以及滿空信號的產生

為了更好地說明問題,先探討一下同步FIFO指針移動以及滿空信號的產生過程。對于同步FIFO,讀寫指針都指向一個內存的初始位置,每進行一次讀寫操作,相應的指針就遞增一次,指向下一個內存位置。當指針移動到了內存的最后一個位置時,它又重新跳回初始位置。在FIFO非滿或非空的情況下,這個過程將隨著讀寫控制信號的變化一直進行下去。如果FIFO處于空的狀態,下一個讀動作將會導致向下溢出(underflow),一個無效的數據被讀人;同樣,對于一個滿了的FIFO,進行寫動作將會導致向上溢出(overflow),一個有用的數據被新寫入的數據覆蓋。這兩種情況都屬于誤動作,因此需要設置滿和空兩個信號,對滿信號置位表示FIFO處于滿狀態,對滿信號復位表示FIFO非滿,還有空間可以寫入數據;對空信號置位表示FIFO處于空狀態,對空信號復位表示FIFO非空,還有有效的數據可以讀出。

    當讀指針和寫指針相等也就是指向同一個內存位置的時候,FIFO可能處于滿或空兩種狀態。可以通過不同的方法判斷或區分FIFO究竟是處于滿狀態還是空狀態,也就是究竟是寫指針從后趕上了讀指針,還是讀指針從后趕上了寫指針。本文所應用的方法是設置一個額外的狀態位,指針由它的地址位以及狀態位組成。地址位隨著相應的操作遞增,指針由內存的最后位置返回到初始位置的時候狀態位取反。因此,當讀寫指針的地址位和狀態位全部吻合的時候,讀寫指針經歷了相同次數的循環移動,也就是說,FIFO處于空狀態(圖1(a));如果讀寫指針的地址位相同而狀態位相反,寫指針比讀指針多循環一次,標志FIFO處于滿狀態(圖1(b))。

2 二進制指針和格雷碼指針的同步

二進制指針是由一位狀態位和若干位二進制編碼的地址位組成的(例如由三位地址和一位狀態位構成的指針的變化:0000→0001→0010→0011→0100→0101→0110→0111→1000→1001→1010→1011→1100→1101→1110→1111)。如果在不同的時鐘域內直接同步二進制指針,有可能產生問題。例如,當讀指針從0111向1000變化的時侯,指針所有的位都要變化,如果寫時鐘恰好在讀指針的變化時刻采樣,寫者得到的讀指針值有可能是從0000到1111中的任何一個。所以二進制指針不宜被直接同步,但可以通過一對握手信號同步二進制指針。

例如,讀指針被讀者存人一個寄存器時,讀者就發出一個就緒信號。當寫者看到就緒信號時,讀取讀指針,發出一個收到數據的確認信號。當讀

[1] [2] [3] 

【一種異步FIFO的設計方法】相關文章:

導航接收機的非對稱異步FIFO設計04-28

一種多任務導航星座設計方法04-30

一種橡膠減振器的虛擬設計方法04-30

一種存儲器容錯設計方法05-02

一種直接基于位移的抗震設計方法04-29

一種基于知識的并行設計綜合決策方法04-27

一種實用、高效的結構優化設計方法研究04-27

清除牙垢的十一種方法09-25

換一種方法04-27

一種無人攻擊機航路飛行仿真方法設計04-28