|
SDRAM工作原理及S3C2410 SDRAM控制器配置方法(2) 作者:劉洪濤,華清遠見嵌入式學(xué)院講師。 四、S3C2410 SDRAM控制器的配置方法 在系統(tǒng)使用SDRAM之前,需要對S3C2410X的存儲器控制器進行初始化。其中對與 SDRAM(Bank6)相關(guān)的寄存器進行了特殊的設(shè)置,以使SDRAM能夠正常工作。由于C語言程序使用的數(shù)據(jù)空間和堆??臻g都定位在SDRAM上,因 此,如果沒有對SDRAM(Bank6)的正確初始化,系統(tǒng)就無法正確啟動。下面介紹與SDRAM相關(guān)的寄存器設(shè)置。 1、BWSCON寄存器 BWSCON寄存器主要用來設(shè)置外接存儲器的總線寬度和等待狀態(tài)。在BWSCON中,除了Bank0, 其他7個bank都各對應(yīng)4個相關(guān)位的設(shè)置,分別為STn,WSn和DWn。這里只需要對DWn進行設(shè)置,例如SDRAM(Bank6)采用32位總線寬 度,因此,DW6=10,其他2位采用缺省值。BWSCON寄存器在Bank6上的位定義如表4-1所示。 表4-1 BWSCON寄存器在Bank6上的位定義
2、BANKCONn寄存器的設(shè)置 S3C2410X有8個BANKCONn寄存器,分別對應(yīng)著Bank0~Bank7。由于 Bank6~Bank7可以作為FP/EDO/SDRAM等類型存儲器的映射空間,因此與其他bank的相應(yīng)寄存器有所不同,其中MT位定義了存儲器的類 型。BANKCONn寄存器在Bank6和Bank7上的位定義如表4-2所示。 表4-2 BANKCONn寄存器在Bank6和Bank7上的位定義
MT的取值又定義該寄存器余下幾位的作用。當(dāng)MT=11(即SDRAM型存儲器)時,BANKCONn寄存器余下的幾位定義如表4-3所示。 表4-3 BANKCONn寄存器在MT=11時的相關(guān)位定義
Trcd是從行使能到列使能的延遲,根據(jù)S3C2410X的HCLK頻率(100M)及HY57V561620T-H的特性(見下圖),此項取01,即3CLKS。SCAN為列地址線數(shù)量,此項根據(jù)HY57V561620特性取01,即9位(A0~A8)。 3、REFRESH寄存器 REFRESH寄存器是DRAM/SDRAM的刷新控制器。位定義如表4-4所示。 表4-4 REFRESH寄存器位定義
4.BANKSIZE寄存器 表4-5 BANKSIZE寄存器定義
初始化時,BURST_EN可以取0或1,為了提高效率,最好設(shè)置為1。SCKE_EN設(shè)置為1。SCLK_EN設(shè)置為1。BK76MAP設(shè)置為2。 5、MRSR寄存器 MRSR寄存器有2個,分別對應(yīng)MRSRB6和MRSRB7,對應(yīng)著Bank6和Bank7。見表4-6。 表4-6 MRSRn寄存器定義
此寄存器S3C2410只允許CL可以設(shè)置,參照HY57V561620T-H手冊,取011,即3CLKs。 猝發(fā)長度的具體值在程序中沒有給出,根據(jù)后面觸發(fā)時序猜測應(yīng)該是8,HY57V561620T支持1、2、4、8、page猝發(fā)長度。 參照前面的HY57V561620命令表,寫Mode寄存器用的是Mode register命令。其中的OP CODE參照下圖:
注意:當(dāng)代碼在SDRAM中運行時,絕不能夠重新配置MRSR寄存器。 五、SDRAM的控制時序分析 下面列出SDRAM的狀態(tài)機及幾種SDARM控制命令的時序。大家掌握了以后可以試著分析其它的命令時序。 1、SDRAM的狀態(tài)機 SDRAM的完整狀態(tài)機由多個狀態(tài)構(gòu)成,且狀態(tài)轉(zhuǎn)移是非隨機的(如圖5-1所示)。 正是如此眾多的狀態(tài)及其復(fù)雜的轉(zhuǎn)換關(guān)系,導(dǎo)致SDRAM的控制較為復(fù)雜。通常FPGA開發(fā)人員在設(shè)計SDRAM控制器IP時需要詳細(xì)了解這些狀態(tài)機的過程。而一般開發(fā)人員以了解為主。
圖5-1 SDRAM狀態(tài)機 下面將結(jié)合上圖及SDRAM的指令來分析SDRAM的控制時序 2、SDRAM single模式讀時序 SDRAM初始化主要是由設(shè)置S3C2410 SDRAM控制器的模式寄存器(MRSR)完成的。主要設(shè)定了SDRAM的burst長度、CAS延時時間、突發(fā)類型等。然后就可以進行讀寫操作了。 下圖是S3C2410以single方式讀SDRAM時的時序。
對照HY57V5620的命令表,列出single read 命令實現(xiàn)過程。
3、SDRAM burst模式讀時序
對照HY57V5620的命令表,列出burst read 命令實現(xiàn)過程。
4、SDRAM Self Refresh時序 SDRAM 的Self Refresh功能在電源電源管理時經(jīng)常使用,如:在主控器進入sleep狀態(tài)時,會先讓SDRAM工作在Self Refresh狀態(tài)。下圖為S3C2410發(fā)出Self Refresh命令時的時序圖。
對照HY57V5620的命令表,列出進入Self Refresh的過程。
5、S3C2410 BUS Request時SDRAM控制時序 我以前在做一個項目時涉及到兩個主控器共享一個SDRAM的情 況?,F(xiàn)象是另一個主控器可以通過BUS Request功能獲取到總線的控制權(quán)。當(dāng)S3C2410的總線控制權(quán)被獲取后,SDRAM控制不會再發(fā)出控制時鐘信號。但SDRAM并沒有因為失去時鐘 而丟失數(shù)據(jù)。猜想一定是S3C2410在BUS Request時讓SDRAM進入自刷新狀態(tài)(就和S3C2410睡眠前要讓SDRAM進入自刷新狀態(tài)一樣)、POWER DOWN狀態(tài)、或者SUSPEND狀態(tài)。下面就根據(jù)S3C2410 BUS Request時SDRAM控制時序圖去確認(rèn)一下到底是哪種。
對照HY57V5620的命令表,列出S3C2410 BUS Request時SDRAM時序過程。
Note1:在第10個時鐘周期時,SKE從1變?yōu)?#8217;HZ’(高阻)。我想此時SCKE從1變?yōu)楦咦鑼?
于SDRAM來說相當(dāng)于從1->0吧,看了一遍HY57V5620手冊,這個想法沒有得到確認(rèn)。但也只能這么理解了,不然后面都說不通了。我想之所
以變?yōu)楦咦瓒皇堑碗娖?,是因為S3C2410要放棄自己對總線控制。 下圖是CKE Enable(CKE) 真值表。
在第10個時鐘周期時,SDRAM處于行激活狀態(tài)。此時SCKE由1->0, 根據(jù)真值表可以得出系統(tǒng)會進入Clock suspend狀態(tài) 六、總結(jié) 本文分析了SDRAM的工作原理、介紹了HY57V561620及其與S3C2410的接線原理、S3C2410 SDRAM控制器的配置方法、及部分SDRAM的控制時序分析。有些地方理解的不夠深刻,歡迎大家指正。 |
|
|