电竞比分网-中国电竞赛事及体育赛事平台

分享

SDRAM工作原理及S3C2410 SDRAM控制器配置方法--嵌入式學(xué)院(華清遠(yuǎn)見旗下品牌)

 ekylin 2011-02-14

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上的位定義

BWSCON

描述

初始化狀態(tài)

ST6

27

這個(gè)位決定SRAM在Bank6上是否采用UB/LB
        0:不采用UB/LB(引腳對(duì)應(yīng)nWBE[3:0 )
        1:采用UB/LB(引腳對(duì)應(yīng) nBE[3:0])

0

WS6

26

這個(gè)位決定Bank6的WAIT狀態(tài)
        0:WAIT禁止
        1:WAIT使能

0

DW6

25~24

這2位決定Bank6的數(shù)據(jù)總線寬度
        00:8位 01:16位 10:32位

0

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上的位定義

BANKCONn

描述

起始狀態(tài)

MT

16~15

這2位決定了Bank6和Bank7的存儲(chǔ)器類型
        00:ROM或SRAM 01:FP DRAM
        10:EDO DRAM 11:SDRAM

11

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寄存器定義

BANKSIZE

描述

初始狀態(tài)

BURST_EN

[7]

ARM 內(nèi)核猝發(fā)操作使能
        0 =禁止猝發(fā)操作
        1 =使能猝發(fā)操作

0

保留

[6]

不使用

0

SCKE_EN

[5]

SCKE 使能控制
        0 = SDRAM SCKE禁止
        1 = SDRAM SCKE使能

0

SCLK_EN

[4]

只有在SDRAM訪問周期期間,SCLK才使能,這樣
做是可以減少功耗。當(dāng)SDRAM不被訪問時(shí),SCLK
變成低電平
        0 = SCLK總是激活
        1 = SCLK只有在訪問期間(推薦的)激活

0

保留

[3]

未用

0

BK76MAP

[2:0]

BANK6/7的存儲(chǔ)空間分布
        010 = 128MB/128MB 001 = 64MB/64MB
        000 = 32M/32M 111 = 16M/16M
        110 = 8M/8M 101 = 4M/4M
        100 = 2M/2M

010

初始化時(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)過程。

CLK

SCKE

A10/AP

nGCSx

nSRAS

nSCAS

nWE

命令

備注

1

1

X

1

1

1

1

空操作(NOP)

 

2

1

0

0

0

1

0

預(yù)充電選定bank(PRE)

Trp=2

3

1

X

1

1

1

1

空操作

 

4

1

X

0

0

1

1

Bank激活命令(ACT)

Trcd=2

5

1

X

1

1

1

1

空操作

 

6

1

0

0

1

0

1

讀操作(READ)

Tcl=3

7

1

X

1

1

1

1

空操作

 

8

1

X

1

1

1

1

空操作

 

9

1

X

1

1

1

1

空操作

數(shù)據(jù)有效

3、SDRAM burst模式讀時(shí)序

對(duì)照HY57V5620的命令表,列出burst read 命令實(shí)現(xiàn)過程。

CLK

SCKE

A10/AP

nGCSx

nSRAS

nSCAS

nWE

命令

備注

1

1

X

1

1

1

1

空操作(NOP)

 

2

1

0

0

0

1

0

預(yù)充電選定bank(PRE)

Trp=2

3

1

X

1

1

1

1

空操作

 

4

1

X

0

0

1

1

Bank激活命令(ACT)

Trcd=2

5

1

X

1

1

1

1

空操作

 

6

1

0

0

1

0

1

讀操作(READ)

Tcl=2

7

1

0

0

1

0

1

讀操作(READ)

 

8~13

1

0

0

1

0

1

讀操作(READ)

數(shù)據(jù)有效

14~15

1

X

1

1

1

1

空操作

數(shù)據(jù)有效

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的過程。

CLK

SCKE

A10/AP

nGCSx

nSRAS

nSCAS

nWE

命令

備注

1

1

X

1

1

1

1

空操作(NOP)

 

2

1

1

0

0

1

0

預(yù)充電所有bank(PRE)

Trp=2

3

1

X

1

1

1

1

空操作

 

4

0

X

0

0

0

1

Self Refresh命令(REFS)

結(jié)合CKE的真值表

5

1

X

1

1

1

1

空操作

 

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í)序過程。

CLK

SCKE

A10/AP

nGCSx

nSRAS

nSCAS

nWE

命令

備注

1

1

X

1

1

1

1

空操作(NOP)

 

2

1

0

0

0

1

0

預(yù)充電(PRE)

Trp=2

3

1

X

1

1

1

1

空操作

 

4

1

X

0

0

1

1

Bank激活命令(ACT)

Trcd=2

5

1

X

1

1

1

1

空操作

 

6

1

0

0

1

0

1

讀操作(READ)

Tcl=2

7

1

X

1

1

1

1

空操作

 

8

1

X

1

1

1

1

空操作

 

9

1

X

1

1

1

1

空操作

 

10

HZ

HZ

HZ

HZ

HZ

HZ

進(jìn)入Clock suspend

Note 1

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ì)總線控制。
結(jié)合HY57V5620手冊(cè)分析一下此時(shí)SDRAM會(huì)進(jìn)入什么狀態(tài)。

下圖是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í)序分析。有些地方理解的不夠深刻,歡迎大家指正。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多