FPGA與外部存儲設備的接口實(shí)現
DRAM性能簡(jiǎn)介
DRAM與SRAM不同,它只能將數據保持很短的時(shí)間。為了保持數據,DRAM 必須隔一段時(shí)間刷新一次,如果存儲單元沒(méi)有刷新,數據就會(huì )丟失。SRAM雖不需刷新,但斷電后會(huì )丟失數據。SRAM的數據傳輸速率從10 ns到30 ns不等,DRAM要比它慢30 ns左右。因此,SRAM通常用于高速緩沖存儲器,而DRAM通常用來(lái)存儲較大的數據。HY57V281620HC(L/S)T是4Banks 2M 16bit的同步動(dòng)態(tài)存儲器,性能特點(diǎn)包括:
1.工作在3.3 0.3V電壓下;
2.所有器件管腳都與LVTTL接口兼容;
3.所有的輸入和輸出操作都是在時(shí)鐘CLK上升沿的作用下進(jìn)行;
4.通過(guò)UDQM或者LDQM來(lái)實(shí)現數據延時(shí)功能;
5.內部有四個(gè)bank可以進(jìn)行操作;
6.自刷新功能,刷新周期為4096;
7.可編程的猝發(fā)類(lèi)型、猝發(fā)長(cháng)度;
8.可編程的的CAS延遲為2或3個(gè)時(shí)鐘周期。
由上面的特性可知,DARM的讀寫(xiě)操作與SRAM有較大的不同。根據HY57V281620HC(L/S)T的讀寫(xiě)狀態(tài)的時(shí)序要求,其讀寫(xiě)時(shí)序狀態(tài)如圖2所示:
![]() |
設計實(shí)現
當設計FPGA與SRAM的接口時(shí),由于它的傳輸速度較快,所以只需著(zhù)重考慮如何保證存儲數據的正確性,而不需要考慮用其它方式來(lái)提高SRAM的存儲速度。本設計的做法是一次性寫(xiě)滿(mǎn)128k數據后,再一次性讀出128k數據。為了保證數據的正確性,要求在寫(xiě)數據時(shí)不能讀數據,而在讀數據時(shí)不能寫(xiě)數據。
當設計FPGA與DRAM的接口時(shí),為了能滿(mǎn)足各種系統的使用要求,本設計創(chuàng )建了時(shí)鐘頻率、猝發(fā)長(cháng)度、延時(shí)節拍等可編程參數。在具體操作DRAM時(shí),首先,必須進(jìn)行初始化配置,即寫(xiě)模式寄存器,以便確定DRAM列選延遲節拍數、猝發(fā)類(lèi)型、猝發(fā)長(cháng)度等工作模式。然后通過(guò)ACT命令激活對應地址的組,同時(shí)輸入行地址。最后,通過(guò)RD或WR命令輸入列地址,將相應數據讀出或寫(xiě)入到對應的地址。操作完成后,用相關(guān)命令中止讀或寫(xiě)操作。在沒(méi)有操作的時(shí)候,每64ms必須對所有存儲單元刷新一遍,防止數據丟失。
下面本文將指出在設計實(shí)現中需要特別注意的幾個(gè)問(wèn)題,并給出了相應的解決方法 。
首先,是如何控制SRAM的讀寫(xiě)功能。這就需要與IS63LV1024讀寫(xiě)時(shí)序要求和真值表的描述相配合。本設計為了避免連讀或連寫(xiě)數據時(shí)出錯,考慮了一種通過(guò)讀寫(xiě)數據請求的方法來(lái)盡量避免讀或寫(xiě)數據出錯的可能。即每寫(xiě)完或讀完一個(gè)數據后都要先進(jìn)行請求,然后才能繼續讀或寫(xiě)數據。ASRAM的狀態(tài)轉移圖如圖3所示:
下面給出了圖3中各個(gè)狀態(tài)所表示的意思:
DOREAD表示讀數據的請求;
DOWRITE表示寫(xiě)數據的請求;
STIDLE表示存儲器處于空閑狀態(tài);
STWRITE1表示存儲器處于寫(xiě)準備狀態(tài),準備寫(xiě)數據;
STWRITE2表示存儲器處于寫(xiě)狀態(tài),開(kāi)始寫(xiě)數據;
STREAD1表示存儲器處于讀準備狀態(tài),準備讀數據;
STREAD2表示存儲器處于讀狀態(tài),開(kāi)始讀數據。
只有當系統時(shí)鐘的上升沿到來(lái)時(shí),才會(huì )觸發(fā)這個(gè)狀態(tài)機改變一次當前狀態(tài)。
剛開(kāi)始時(shí),存儲器的初始狀態(tài)為空閑狀態(tài),當有請求來(lái)時(shí)才判斷是讀或寫(xiě)請求,如果沒(méi)有請求就一直保持空閑狀態(tài)。虛線(xiàn)表示自動(dòng)按順序進(jìn)入下一個(gè)狀態(tài)。
評論