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