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