本案例為何需要引入FIFO
為了加深讀者對 FPGA 端控制架構的印象,在數據讀取的控制部分,首先我們可以將SDRAM 想作是一個自來水廠,清水得先送至用戶樓上的水塔中存放,在家里轉開水龍頭要用水時,才能及時供應,相同的原理,要讀取 SDRAM 中的數據來處理時, FPGA 端的控制架構中一定要有相當于水塔功能的“讀出數據緩沖器”,在數據的處理上才會流暢。
而在使用自來水時,自來水廠會補充清水至水塔中,用戶才可以連續的使用,同樣保存著從 SDRAM 讀出數據的緩沖器,當數據量下降到某個程度時也必須要補充,在數據的處理上才不會中斷。
接著在數據寫入的控制部分,我們可以將 SDRAM 想作是一個銀行,相信當你身上有零錢時會順手存進存錢罐,而不會費時的跑一趟銀行去存錢,相同的原理,要將數據寫入SDRAM 時, FPGA 端的控制架構中一定要有相當于存錢罐功能的“寫入數據緩沖器”,才不會降低 SDRAM 存取的使用效率。只有在存錢罐存到一個程度時,我們才會取出錢拿去銀行存放,同樣保存著要寫入 SDRAM 數據的緩沖器,當數據量上升到某個程度時也必須要取出放進 SDRAM,才不會造成數據的遺失。
FIFO IP核簡介
FIFO 本質是RAM,其作用主要是作為緩存。
RAM和ROM的讀寫都是根據地址來的,而FIFO( First In First Out)讀寫不需要提供讀地址和寫地址,其數據讀寫按照先入先出的方式。所以FIFO的讀寫非常簡單,但靈活性稍差,不能做到靈活讀寫。
FIFO分兩種:同步FIFO和異步FIFO。同步FIFO讀寫時鐘是一個。異步FIFO的讀時鐘和寫時鐘是分開的。
同步FIFO和異步FIFO常應用在同步時鐘系統和異步時鐘系統中。異步FIFO應用場景如多比特數據做跨時鐘域處理、前后帶寬不同步等。
本案例中用到的是異步FIFO。異步FIFO IP模塊接口如下圖:
異步FIFO IP模塊信號描述如下:
*注意:FIFO復位信號是高電平有效。
打開FIFO IP 設置界面可以找到FIFO文檔鏈接:
閱讀FIFO文檔可知異步FIFO寫操作的各個信號在寫時鐘下進行工作,讀操作的各個信號在讀時鐘下進行工作:
Sdram_Control.v文件里面例化了兩個FIFO模塊,一個是異步FIFO寫模塊,用于緩存要寫入SDRAM器件的數據。異步FIFO寫模塊的數據寫入在27MHz時鐘下進行,數據的讀出在100MHz時鐘下進行。
Sdram_Control.v文件例化的另一個FIFO模塊是異步FIFO讀模塊,用于緩存從SDRAM器件讀出的數據。異步FIFO讀模塊的數據寫入在100MHz時鐘下進行,數據的讀出在27MHz時鐘下進行。
FIFO IP 設置
異步FIFO寫模塊的IP設置如下:
FIFO數據位寬是16bit,與SDRAM位寬保持一致。
FIFO存儲深度設置512字,雖然實際存儲255個數據,但一般深度都設置大一點。
勾選讀寫時鐘分開的選項。
勾選讀端口的rdusedw接口,用來生成寫SDRAM器件的請求信號。
其他選項可以選擇默認。
異步FIFO讀模塊的IP設置如下:
FIFO數據位寬是16bit,與SDRAM位寬保持一致。
FIFO存儲深度設置512字,雖然實際存儲127個數據,但一般深度都設置大一點。
勾選讀寫時鐘分開的選項。
勾選寫入端口的wrusedw接口,用來生成讀SDRAM器件的請求信號。
其他選項可以選擇默認。
-
FPGA
+關注
關注
1643文章
21956瀏覽量
614015 -
控制器
+關注
關注
114文章
16960瀏覽量
182881 -
SDRAM
+關注
關注
7文章
441瀏覽量
56019 -
fifo
+關注
關注
3文章
400瀏覽量
44612
原文標題:06-SDRAM控制器的設計——異步FIFO的調用
文章出處:【微信號:友晶FPGA,微信公眾號:友晶FPGA】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
SDRAM控制器的設計——Sdram_Control.v代碼解析(異步FIFO讀寫模塊、讀寫SDRAM過程)

【開源騷客】《輕松設計SDRAM控制器》第九講—解密讀寫FIFO
Gowin SDRAM控制器的參考設計
使用Verilog實現基于FPGA的SDRAM控制器
SDRAM控制器的設計

FPGA讀寫SDRAM的實例和SDRAM的相關文章及一些SDRAM控制器設計論文

如何使用FPGA設計SDRAM控制器

Gowin SDRAM控制器用戶指南

評論