SDRAM工作原理及S3C2410 SDRAM控制器配置方法華清遠見 2009-10-23 10:22
作者:劉洪濤,華清遠見嵌入式學院講師。 SDRAM的工作原理、控制時序、及相關控制器的配置方法一直是嵌入式系統(tǒng)學習、開發(fā)過程中的一個難點。掌握SDRAM的知識對硬件設計、編寫系統(tǒng)啟動代碼、提高系統(tǒng)存取效率、電源管理都有一定的意義。本文想通過: 1.SDRAM的工作原理。 這5個方面來幫助初學者了解SDRAM。文章分為2篇,第1篇講解前3個知識點,第2篇講解后2個。 一、SDRAM的工作原理 SDRAM之所以成為DRARM就是因為它要不斷進行刷新(Refresh)才能保留住數(shù)據(jù),因此它是DRAM最重要的操作。 那么要隔多長時間重復一次刷新呢?目前公認的標準是,存儲體中電容的數(shù)據(jù)有效保存期上限是64ms(毫秒,1/1000 秒),也就是說每一行刷新的循環(huán)周期是64ms。這樣刷新速度就是:行數(shù)量/64ms。我們在看內(nèi)存規(guī)格時,經(jīng)常會看到4096 Refresh Cycles/64ms或8192 Refresh Cycles/64ms的標識,這里的4096與8192就代表這個芯片中每個Bank的行數(shù)。刷新命令一次對一行有效,發(fā)送間隔也是隨總行數(shù)而變化,4096行時為15.625μs(微秒,1/1000毫秒),8192行時就為7.8125μs。HY57V561620為8192 refresh cycles / 64ms。 SDRAM是多Bank結構,例如在一個具有兩個Bank的SDRAM的模組中,其中一個Bank在進行預充電期間,另一個Bank卻馬上可以被讀取,這樣當進行一次讀取后,又馬上去讀取已經(jīng)預充電Bank的數(shù)據(jù)時,就無需等待而是可以直接讀取了,這也就大大提高了存儲器的訪問速度。 (1)控制信號:包括片選、時鐘、時鐘使能、行列地址選擇、讀寫有效及數(shù)據(jù)有效。 SDRAM的所有操作都同步于時鐘。根據(jù)時鐘上升沿控制管腳和地址輸入的狀態(tài),可以產(chǎn)生多種輸入命令。 模式寄存器設置命令。 根據(jù)輸入命令,SDRAM狀態(tài)在內(nèi)部狀態(tài)間轉移。內(nèi)部狀態(tài)包括模式寄存器設置狀態(tài)、激活狀態(tài)、預充狀態(tài)、寫狀態(tài)、讀狀態(tài)、預充讀狀態(tài)、預充寫狀態(tài)、自動刷新狀態(tài)及自我刷新狀態(tài)。 1、行激活 行激活命令選擇處于空閑狀態(tài)存儲體的任意一個行,使之進入準備讀/寫狀態(tài)。從體激活到允許輸入讀/寫命令的間隔時鐘節(jié)拍數(shù)取決于內(nèi)部特征延時和時鐘頻率。HY57V561620內(nèi)部有4個體,為了減少器件門數(shù),4個體之間的部分電路是公用的,因此它們不能同時被激活,而且從一個體的激活過渡到另一個體的激活也必須保證有一定的時間間隔。 2、預充電 預充電命令用于對已激活的行進行預充電即結束活動狀態(tài)。預充電命令可以作用于單個體,也可以同時作用于所有體(通過所有體預充電命令)。對于猝發(fā)寫操作必須保證在寫入預充電命令前寫操作已經(jīng)完成,并使用DQM禁止繼續(xù)寫入數(shù)據(jù)。預充電結束后回到空閑狀態(tài),也可以再次被激活,此時也可以輸入進入低功耗、自動刷新、自刷新和模式設置等操作命令。 預充電中重寫的操作與刷新操作一樣,只不過預充電不是定期的,而只是在讀操作以后執(zhí)行的。因為讀取操作會破壞內(nèi)存中的電荷。因此,內(nèi)存不但要每64ms刷新一次,而且每次讀操作之后還要刷新一次。 3、自動預充電 如果在猝發(fā)讀或猝發(fā)寫命令中,A10/AP位置為“1”,在讀寫操作完成后自動附加一個預充電動作。操作行結束活動狀態(tài),但在內(nèi)部狀態(tài)機回到空閑態(tài)之前不能給器件發(fā)送新的操作命令。 4、猝發(fā)讀 猝發(fā)讀命令允許某個體中的一行被激活后,連續(xù)讀出若干個數(shù)據(jù)。第一個數(shù)據(jù)在經(jīng)過指定的CAS延時節(jié)拍后呈現(xiàn)在數(shù)據(jù)線上,以后每個時鐘節(jié)拍都會讀出一個新的數(shù)據(jù)。猝發(fā)讀操作可以被同體或不同體的新的猝發(fā)讀/寫命令或同一體的預充電命令及猝發(fā)停止命令中止。 5、猝發(fā)寫 猝發(fā)寫命令與猝發(fā)讀命令類似,允許某個體中的一行被激活后,連續(xù)寫入若干個數(shù)據(jù)。第一個寫數(shù)據(jù)與猝發(fā)寫命令同時在數(shù)據(jù)線上給出,以后每個時鐘節(jié)拍給出一個新的數(shù)據(jù),輸入緩沖在猝發(fā)數(shù)據(jù)量滿足要求后停止接受數(shù)據(jù)。猝發(fā)寫操作可以被猝發(fā)讀/寫命令或DQM數(shù)據(jù)輸入屏蔽命令和預充電命令或猝發(fā)停止命令中止。 6、自動刷新 由于動態(tài)存儲器存儲單元存在漏電現(xiàn)象,為了保持每個存儲單元數(shù)據(jù)的正確性,HY57V561620必須保證在64ms內(nèi)對所有的存儲單元刷新一遍。一個自動刷新周期只能刷新存儲單元的一個行,每次刷新操作后內(nèi)部刷新地址計數(shù)器自動加“1”。只有在所有體都空閑(因為4個體的對應行同時刷新)并且未處于低功耗模式時才能啟動自動刷新操作,刷新操作執(zhí)行期間只能輸入空操作,刷新操作執(zhí)行完畢后所有體都進入空閑狀態(tài)。該器件可以每間隔7.8μs執(zhí)行一次自動刷新命令,也可以在64ms內(nèi)的某個時間段對所有單元集中刷新一遍。 7、自刷新 自刷新是動態(tài)存儲器的另一種刷新方式,通常用于在低功耗模式下保持SDRAM的數(shù)據(jù)。在自刷新方式下,SDRAM禁止所有的內(nèi)部時鐘和輸入緩沖(CKE除外)。為了降低功耗,刷新地址和刷新時間全部由器件內(nèi)部產(chǎn)生。一旦進入自刷新方式只有通過CKE變低才能激活,其他的任何輸入都將不起作用。給出退出自刷新方式命令后必須保持一定節(jié)拍的空操作輸入,以保證器件完成從自刷新方式的退出。如果在正常工作期間采用集中式自動刷新方式,則在退出自刷新模式后必須進行一遍(對于HY57V561620來說,8192個)集中的自動刷新操作。 8、時鐘和時鐘屏蔽 時鐘信號是所有操作的同步信號,上升沿有效。時鐘屏蔽信號CKE決定是否把時鐘輸入施加到內(nèi)部電路。在讀寫操作期間,CKE變低后的下一個節(jié)拍凍結輸出狀態(tài)和猝發(fā)地址,直到CKE變高為止。在所有的體都處于空閑狀態(tài)時,CKE變低后的下一個節(jié)拍SDRAM進入低功耗模式并一直保持到CKE變高為止。 9、DQM操作 DQM用于屏蔽輸入輸出操作,對于輸出相當于開門信號,對于輸入禁止把總線上的數(shù)據(jù)寫入存儲單元。對讀操作DQM延遲2個時鐘周期開始起作用,對寫操作則是當拍有效。 HY57V561620命令表如下圖所示: 二、HY57V561620 SDRAM介紹 1、HY57V561620的結構 HY57V561620存儲容量為4M×4bank×16位(32M字節(jié)),工作電壓為3.3V,常見封裝為54腳TSOP,兼容LVTTL接口,支持自動刷新(Auto-Refresh)和自刷新(Self-Refresh),16位數(shù)據(jù)寬度。 HY57V561620引腳分布如圖2-1所示。 HY57V561620引腳信號描述 更具體的內(nèi)容可參考HY57V561620的用戶手冊。 三、S3C2410和HY57V561620的接線方法 1、確定BA0、BA1的接線 在S3C2410的Table 5-2. SDRAM Bank Address Configuration給出了SDRAM接線的參考方法。 上表中各段含義及和我們平臺的對應: Bank Size: 每個Bank的大小 (HY57561620是4M*16=64MB)Bus Width: 總線寬度 (兩顆HY57561620,32位) 所以Bank Address對應A[25:24],此處確定了HY57561620的BA0和BA1和S3C2410之間的接線。 2、確定其它接線 上圖是S3C2410手冊中給出的參考接線,通過這個圖可以確定HY57561620和S3C2410之間除BA0、BA1的所有其它接線。本例中,詳細的接線方法如“接線原理圖”小節(jié)。 3、接線原理圖
引腳描述如下: nSRAS:SDRAM行地址選通信號 ADDR[25:24]:bank選擇線
|
|