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

【開源騷客】《輕松設(shè)計SDRAM控制器》第九講—解密讀寫FIFO
Gowin SDRAM控制器的參考設(shè)計
使用Verilog實現(xiàn)基于FPGA的SDRAM控制器
SDRAM控制器簡易化設(shè)計

SDRAM控制器的設(shè)計

FPGA讀寫SDRAM的實例和SDRAM的相關(guān)文章及一些SDRAM控制器設(shè)計論文

如何使用FPGA設(shè)計SDRAM控制器

基于SDRAM控制器軟核的Verilog設(shè)計

Gowin SDRAM控制器用戶指南

異步FIFO之Verilog代碼實現(xiàn)案例
PIC32系列參考手冊之DDR SDRAM控制器

評論