a一级爱做片免费观看欧美,久久国产一区二区,日本一二三区免费,久草视频手机在线观看

新聞中心

EEPW首頁 > EDA/PCB > 設計應用 > 基于Verilog HDL語言的32X8 FIFO設計

基于Verilog HDL語言的32X8 FIFO設計

作者: 時間:2012-09-03 來源:網絡 收藏

摘要:介紹了的基本概念、設計方法和步驟,采用了一種新穎的讀、寫地址寄存器和雙體存儲器的交替讀、寫機制,實現了的基本功能,同時使本 擁有可同時讀、寫的能力,完全基于 語言實現了電路功能并應用Synopsys公司的DesignCompiler和VCS對其進行綜合、仿真。

本文引用地址:http://www.j9360.com/article/189963.htm

對基于單體存儲器的FIFO,作為一種數據緩沖器,其數據存放結構和RAM是一致的,只是存取方式有所不同。因RAM中的各存儲單元可被隨機讀寫,故FIFO的隊首位置及隊列長度均可浮動。為此,需要用兩個地址寄存器,分別存儲讀地址(即隊首元素地址)和寫地址(即隊尾元素地址加1)。在讀寫過程中FIFO所存儲的信息并不移動,而是通過改變讀地址或寫地址來指示隊首隊尾。

FIFO的設計,采用了雙體存儲器的交替讀寫機制,使得在對其中一個存儲器寫操作的同時可以對另一個存儲器進行讀操作;對其中一個存儲器讀操作的同時可以對另一個存儲器進行寫操作。實現了高速數據緩沖,速度比單體存儲器的FIFO提高了一倍。

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

空/滿標志的產生是FIFO的核心部分。如何正確設計此部分的邏輯,直接影響到FIFO的性能。

對于同步FIFO,讀寫指針都指向一個內存的初始位置,每進行一次讀寫操作,相應的指針就遞增一次,指向下一個內存位置。當指針移動到了內存的最后一個位置時,它又重新跳回初始位置。在FIFO非滿或非空的情況下,這個過程將隨著讀寫控制信號的變化一直進行下去。如果FIFO處于空的狀態,下一個讀動作將會導致向下溢出(underflow),一個無效的數據被讀出;同樣,對于一個滿了的FIFO,進行寫動作將會導致向上溢出(overflow),一個有用的數據被新寫入的數據覆蓋。這兩種情況都屬于誤動作,因此需要設置滿和空兩個信號,對滿信號置位表示FIFO處于滿狀態,對滿信號復位表示FIFO非滿,還有空間可以寫入數據;對空信號置位表示FIFO處于空狀態,對空信號復位表示FIFO非空,還有有效的數據可以讀出。當讀指針和寫指針相等也就是指向同一個內存位置的時候,FIFO可能處于滿或空兩種狀態??梢酝ㄟ^不同的方法判斷或區分FIFO究竟是處于滿狀態還是空狀態,也就是究竟是寫指針從后趕上了讀指針,還是讀指針從后趕上了寫指針。

本文所應用的方法是分別將讀、寫地址寄存器擴展一位,將最高位設置為狀態位,其余低位作為地址位,指針由地址位以及狀態位組成。巧妙地應用地址位和狀態位的結合實現對空、滿標志位的控制。當讀寫指針的地址位和狀態位全部吻合的時候,讀寫指針經歷了相同次數的循環移動,也就是說,FIFO處于空狀態(圖1(a));如果讀寫指針的地址位相同而狀態位相反,寫指針比讀指針多循環一次,標志FIFO處于滿狀態(圖1(b))。


圖1 FIFO處于的狀態


上一頁 1 2 3 下一頁

關鍵詞: Verilog 32X8 FIFO HDL

評論


相關推薦

技術專區

關閉