多端口SDRAM控制器的設計與實(shí)現
1.2 SDRAM 的基本讀寫(xiě)操作
讀寫(xiě)操作主要完成與SDRAM 的數據交換??梢苑譃榉峭话l(fā)連續操作模式和突發(fā)連續操作模式, 非突發(fā)指的是傳送數據和地址必須是相對應一個(gè)一個(gè)的傳輸, 突發(fā)模式則是地址控制信號只需要給出首地址信息, 而數據實(shí)現連續傳輸過(guò)程, 突發(fā)數據的長(cháng)度可以為1, 2,4, 8 和全頁(yè)。
1.3 刷新操作
動(dòng)態(tài)存儲器都存在刷新問(wèn)題。SDRAM 的刷新方式有自動(dòng)刷新和自主刷新, 這里主要采用自動(dòng)刷新方式, 每隔一段時(shí)間向SDRAM 發(fā)一條刷新命令。
設計中選用的FPGA 是Altera 公司生產(chǎn)的CycloneII 系列中的EP2C35,選用的SDRAM 是ISSI 推出的64-MBIT 的IS42S16400B ,它是以1MWords X 16Bits X 4Banks 為組織結構的同步動(dòng)態(tài)隨機存儲器,最高時(shí)鐘頻率可達143MHz[4]。
視頻數據實(shí)時(shí)顯示系統的基本構成如圖1 所示[5]:
SDRAM 作為幀緩沖器,它的上一級數據輸入是25MHz 的視頻數據采集模塊,所得到的數據經(jīng)處理以后是每個(gè)像素點(diǎn)30 位數據,下一級是VGA 顯示器以25MHz 的時(shí)鐘進(jìn)行數據輸出,也要求是每個(gè)像素點(diǎn)30 位,而SDRAM 的數據寬度是16 位,因而每當存入和讀取一個(gè)像素點(diǎn)的數據時(shí),各需要進(jìn)行兩次傳輸。本款芯片SDRAM 的工作頻率雖然可設置為100MHz ,但是如果不加緩存的話(huà),就不能使用頁(yè)突發(fā)模式來(lái)有效利用帶寬,而且SDRAM 內部其他操作也需要占用一定的時(shí)間,不能達到實(shí)時(shí)顯示的效果。本文在研究有關(guān)文獻的基礎上,利用FPGA 的片上資源開(kāi)辟4 個(gè)FIFO 緩存,將SDRAM 的數據端口仿真成四個(gè)虛擬端口(兩個(gè)寫(xiě)端口+兩個(gè)讀端口),每個(gè)端口的數據寬度都是16位,深度是兩頁(yè)SDRAM 的大小。且按照一致的規則將30 位采集和顯示的數據分成兩組與緩存進(jìn)行存取,相應的,在SDRAM 上使用兩個(gè)Bank 來(lái)分別存取每組數據。控制器根據緩存FIFO 的狀態(tài)對SDRAM 發(fā)出讀寫(xiě)請求,采用頁(yè)模式突發(fā)傳輸和Bank 切換的方式來(lái)匹配時(shí)序要求。
SDRAM 控制器的內部結構如圖2 所示:
各功能模塊描述如下:
2.1 多端口讀寫(xiě)控制模塊
該模塊是與外設交換數據的接口,并且根據緩存FIFO 的狀態(tài),自動(dòng)生成對SDRAM 的讀寫(xiě)請求以及數據緩沖處理。它是本設計的核心。下面著(zhù)重描述一下讀寫(xiě)請求產(chǎn)生的設計過(guò)程和簡(jiǎn)要代碼。
評論