問(wèn):如何操作SDRAM的自刷新命令而不影響正常讀寫操作?
眾所周知,SDRAM從開(kāi)始工作伊始,一直伴隨著64ms刷新一遍的最基本規(guī)定(假設(shè)該SDRAM有4096行,那么必須大約15us的時(shí)間就要發(fā)出一次自刷新命令),這是為了保持SDRAM內(nèi)數(shù)據(jù)能夠在上電以后一直保持的原因,具體原因就不多解釋了,我們還是以實(shí)際操作為主。
正常情況下,我們要不斷地對(duì)SDRAM進(jìn)行讀或者寫操作,這樣才能實(shí)現(xiàn)fpga和SDRAM之間的數(shù)據(jù)交流傳遞。假如我們?cè)谶M(jìn)行寫操作時(shí),15us的時(shí)間計(jì)時(shí)已經(jīng)到了,發(fā)出了自刷新使能信號(hào),這時(shí)候難道我們要打斷寫操作嗎?顯然這是不文明的野蠻的,理想的操作就是等待本次的寫操作完成,SDRAM的內(nèi)部狀態(tài)機(jī)進(jìn)入到了休閑狀態(tài),這時(shí)候才正式發(fā)出自刷新命令。
可能大家會(huì)認(rèn)為這樣實(shí)際經(jīng)過(guò)的時(shí)間是超過(guò)15us的,假如4096次每次都是超過(guò)15us的話,那么總時(shí)間豈不是超過(guò)64ms了,現(xiàn)在想起來(lái)感覺(jué)當(dāng)初自己的問(wèn)題真傻。因?yàn)閷?shí)際上每發(fā)出一次刷新命令的周期是64ms/4096=15.625us,當(dāng)初設(shè)置15us為周期就已經(jīng)考慮到了這個(gè)余量,而一個(gè)寫周期(假如突發(fā)長(zhǎng)度=4)本身的時(shí)間遠(yuǎn)遠(yuǎn)小于0.625us,所以這樣設(shè)計(jì)是合理的。
但是,如果突發(fā)寫長(zhǎng)度是全頁(yè)的話,要考慮SDRAM的工作頻率、突發(fā)長(zhǎng)度重新計(jì)算這個(gè)寫周期時(shí)間,那么設(shè)置15us的計(jì)時(shí)時(shí)間是有問(wèn)題的,應(yīng)該調(diào)的更小一點(diǎn)。
總結(jié):自刷新要保證64ms內(nèi)一遍,合理設(shè)置自刷新周期計(jì)時(shí)器,考慮讀寫一個(gè)周期所花的時(shí)間,使得在發(fā)出自刷新信號(hào)的時(shí)候,等待本次正在進(jìn)行的讀寫周期完成后,再寫入自刷新命令。
以上內(nèi)容是我如何對(duì)自刷新操作和讀寫操作進(jìn)行合理安排的一種解決方案,后來(lái)細(xì)想其實(shí)可以更加的合理,微調(diào)后的方案::15us的定時(shí)計(jì)數(shù)器不斷地進(jìn)行,沒(méi)計(jì)到15us發(fā)出刷新請(qǐng)求信號(hào),同時(shí)計(jì)數(shù)器重新計(jì)數(shù)(上個(gè)方案是等到正式發(fā)出刷新命令以后才開(kāi)始重新計(jì)數(shù)),本次微調(diào)的技巧應(yīng)該更加理想些(因?yàn)樽x寫周期即使是全頁(yè)的,也就是10us以內(nèi)完全在15us的范圍以內(nèi))。
-
SDRAM
+關(guān)注
關(guān)注
7文章
440瀏覽量
55923
發(fā)布評(píng)論請(qǐng)先 登錄
評(píng)論