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