基于ram的fifo

基于ram的fifo

ID:37396748

大小:135.50 KB

頁數:9頁

時間:2019-05-23

基于ram的fifo_第1頁
基于ram的fifo_第2頁
基于ram的fifo_第3頁
基于ram的fifo_第4頁
基于ram的fifo_第5頁
資源描述:

《基于ram的fifo》由會員上傳分享,免費在線閱讀,更多相關內容在教育資源-天天文庫。

1、利用verilog實現FIFO摘要:本文先介紹了一下關于FIFO的基本概念,工作原理,功能,同步與異步的分類等。然后基于RAM實現了一個同步FIFO。該FIFO通過巧妙地應用地址位和狀態(tài)位的結合實現對空、滿標志位的控制。從而減小了設計的復雜度。關鍵詞:FIFO,同步,仿真,quartus。1.FIFO簡介FIFO(FirstInputFirstOutput)一種先進先出的數據緩存器,先進入的數據先從FIFO緩存器中讀出,與RAM相比沒有外部讀寫地址線,使用比較簡單,但只能順序寫入數據,順序的讀出數據,不能像普通存儲器那樣可以由地址線決定讀取或寫入某個指定的地址。1.1FI

2、FO的工作原理對于FIFO,讀寫指針都指向一個存儲器的初始位置,每進行一次讀寫操作,相應的指針就遞增一次,指向下一個存儲器位置。當指針移動到了存儲器的最后一個位置時,它又重新跳回初始位置。在FIFO非滿或非空的情況下,這個過程將隨著讀寫控制信號的變化一直進行下去。如果FIFO處于空的狀態(tài),下一個讀動作將會導致向下溢(underflow),一個無效的數據被讀人;同樣,對于一個滿了的FIFO,進行寫動作將會導致向上溢出(overflow),一個有用的數據被新寫入的數據覆蓋。這兩種情況都屬于誤動作,因此需要設置滿和空兩個信號,對滿信號置位表示FIFO處于滿狀態(tài),對滿信號復位表示

3、FIFO非滿,還有空間可以寫入數據;對空信號置位表示FIFO處于空狀態(tài),對空信號復位表示FIFO非空,還有有效的數據可以讀出。FIFO設計的難點在于怎樣判斷FIFO的空/滿狀態(tài)。為了保證數據正確的寫入或讀出,而不發(fā)生溢出或讀空的狀態(tài)出現,必須保證FIFO在滿的情況下,不能進行寫操作。在空的狀態(tài)下不能進行讀操作。1.2FIFO的一些重要參數FIFO的寬度:也就是英文資料里??吹降腡HEWIDTH,它指的是FIFO一次讀寫操作的數據位,就像MCU有8位和16位,ARM32位等等。FIFO的深度:THEDEEPTH,它指的是FIFO可以存儲多少個N位的數據(如果寬度為N)。如一

4、個8位的FIFO,若深度為8,它可以存儲8個8位的數據,深度為12,就可以存儲12個8位的數據。滿標志:FIFO已滿或將要滿時由FIFO的狀態(tài)電路送出的一個信號,以阻止FIFO的寫操作繼續(xù)向FIFO中寫數據而造成溢出(overflow)。空標志:FIFO已空或將要空時由FIFO的狀態(tài)電路送出的一個信號,以阻止FIFO的讀操作繼續(xù)從FIFO中讀出數據而造成無效數據的讀出(underflow)?!∽x指針:指向下一個讀出地址。讀完后自動加1?!懼羔槪褐赶蛳乱粋€要寫入的地址的,寫完自動加1。FIFO讀時鐘:讀操作所遵循的時鐘,在每個時鐘沿來臨時讀數據。FIFO寫時鐘:寫操作所遵

5、循的時鐘,在每個時鐘沿來臨時寫數據。1.3FIFO的功能FIFO作為一種先進先出的緩存,適合于對連續(xù)的數據流進行緩存??蓪祿Υ婕衅饋?。減少頻繁的總線操作。減少CPU的負擔。FIFO一般用于不同時鐘域之間的數據傳輸。比如FIFO的一端是AD數據采集,另一端為PCI總線,那么在兩個不同的時鐘域間就可以采用FIFO來作為數據緩沖。另外對于不同寬度的數據接口也可以用FIFO,例如單片機位8位數據輸出,而DSP可能是16位數據輸入,在單片機與DSP連接時就可以使用FIFO來達到數據匹配的目的。2.FIFO的分類根均FIFO工作的時鐘域,可以將FIFO分為同步FIFO和異步FI

6、FO。同步FIFO是指讀時鐘和寫時鐘為同一個時鐘。在時鐘沿來臨時同時發(fā)生讀寫操作。異步FIFO是指讀寫時鐘不一致,讀寫時鐘是互相獨立的。對于異步FIFO一般有兩種理解,一種是讀寫操作不使用時鐘,而是直接采用wr_en(WriteEnabled)和rd_en(ReadEnabled)來進行控制;另一種,是指在FPGA和ASIC設計中,異步FIFO具有兩個時鐘的雙口FIFO,讀些操作在各自的時鐘延上進行,在兩個不同時鐘下,可以同時進行讀或寫。異步FIFO在FPGA設計匯總占用的資源比同步FIFO大很多,所以盡量采用同步FIFO設計。而當物理系統(tǒng)中存在多個時鐘信號,并且需要在這

7、幾個時鐘域之間傳輸數據的時候,寄存器會由于時鐘信號的頻率不匹配而產生數據丟失等情況,這個時候需要用異步FIFO來進行緩存,保證數據能夠正確傳輸。所以異步FIFO功能更強。所以,對于一些常用的嵌入式環(huán)境中,如ARM系統(tǒng)內絕大部分外設接口都是異步FIFO。由于異步FIFO的實現復雜。本文將實現的為同步FIFO。3.同步FIFO的實現FIFO存儲器的實現目前主要是分為基于移位寄存器的類型和基于RAM的類型。本文要實現的是基于RAM的FIFO寄存器。3.1用verilog實現RAM本文編寫了一個具有通用性的RAM的verilog代碼。

當前文檔最多預覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數學公式或PPT動畫的文件,查看預覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內容,確認文檔內容符合您的需求后進行下載,若出現內容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網絡波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。