块[6~7]的配置描述
|
Bank |
支持的配置 |
不支持的配置 |
|
Bank6 |
SROM |
DRAM |
SDRAM |
SROM |
SDRAM |
DRAM |
|
Bank7 |
DRAM |
SROM |
SROM |
SDRAM |
DRAM |
SDRAM |
参数配置寄存器
|
寄存器 |
地址 |
R/W |
描述 |
复位状态 |
|
REFRESH |
0X01C80024 |
R/W |
DRAM/SDRAM刷新控制寄存器 |
0Xac0000 |
|
REFRESN |
BIT |
描述 |
InitialState |
|
REFEN |
[23] |
DRAM/SDRAM 刷新允许位
0 =不能 1=能(self or CBR/auto refresh) |
1 |
|
TREFMD |
[22] |
DRAM/SDRAM 刷新模式
0 = CBR/Auto Refresh 1 = Self Refresh
在self-refresh 时, DRAM/SDRAM 控制信号为适当电平驱动。 |
0 |
|
Trp |
[21:20] |
DRAM/SDRAM RAS 预充电时间
DRAM :
00 = 1.5 clocks 01 = 2.5 clocks
10 = 3.5 clocks 11 = 4.5 clocks
SDRAM :
00 = 2 clocks 01 = 3 clocks
10 = 4 clocks 11 = Not support |
10 |
|
Trc |
[19:18] |
SDRAM RAS和CAS 最小时间
00 = 4 clocks 01 = 5 clocks
10 = 6 clocks 11 = 7 clocks |
11 |
|
Tchr |
[17:16] |
CAS Hold Time(DRAM)
00 = 1 clock 01 = 2 clocks
10 = 3 clocks 11 = 4 clocks |
00 |
|
Reserved |
[15:11] |
Not use |
0000 |
|
RefreshCounter |
[10:0] |
DRAM/SDRAM 刷新计数值
刷新周期计算公式:
Refresh period = (2^11-refresh_count+1)/MCLK
如果刷新周期是15.6 us和 MCLK 是60 MHz,
refresh count 如下计算:
refresh count = 2^11 + 1 - 60x15.6 = 1113 |
0 |
块大小寄存器
|
寄存器 |
地址 |
R/W |
描述 |
复位置 |
|
BANKSIZE |
0x01C80028 |
R/W |
块大小寄存器 |
0x0 |
|
BANKSIZE |
Bit |
Description |
Initial State |
|
SCLKEN |
[4] |
设置为1,则SCLK仅在SDRAM存取周期产生,这个特征将使功耗减少,推荐设置为1
0 = normal SCLK 1 = SCLK |
0 |
|
Reserved |
[3] |
Not use |
0 |
|
BK76MAP |
[2:0] |
BANK6/7 存储器映射
000 = 32M/32M 100 = 2M/2M 101 = 4M/4M
110 = 8M/8M 111 = 16M/16M |
000 |
SDRAM 模式设置寄存器 (MRSR)
|
寄存器 |
Address |
R/W |
Description |
Reset Value |
|
MRSRB6 |
0x01C8002C |
R/W |
Mode 寄存器 set 寄存器 bank6 |
xxx |
|
MRSRB7 |
0x01C80030 |
R/W |
Mode 寄存器 set 寄存器 bank7 |
xxx |
|
MRSR |
Bit |
Description |
Initial State |
|
Reserved |
[11:10] |
Not use |
– |
|
WBL |
[9] |
写突发脉冲长度 |
x |
|
TM |
[8:7] |
测试模式
00:测试模式, 01, 10, 11:保留 |
xx |
|
CL |
[6:4] |
CAS 突发响应时间
000 = 1 clock, 010 = 2 clocks, 011=3 clocks
其它 = 保留 |
xxx |
|
BT |
[3] |
突发类型
0:连续 1: N/A |
x |
|
BL |
[2:0] |
突发长度
000: 1
其他:N/A |
xxx |
注:
a) 当程序在SDRAM运行时该寄存器不必重新配置
b) 所有的存储控制寄存器必须使用STMIA指令设置
c) 在停止和SL_IDLE DRAM/SDRAM必须进入自刷新模式。
观察上面寄存器介绍中的寄存器地址可以发现,13个寄存器分布在从0x01c80000 开始的连续地址空间,所以上面的程序可以利用指令“stmia r0, {r1-r13}”实现将设定好的寄存器的值依次写入到相应的寄存器中。内存(SROM/DRAM/SDRAM)地址线连接如表所示,数据宽度不同,连接方式也不同。
|
存储器地址引脚 |
8位数据总线 |
16位数据总线 |
32位数据总线 |
|
A0 |
A0 |
A1 |
A2 |
|
A1 |
A1 |
A2 |
A3 |
|
A2 |
A2 |
A3 |
A4 |
|
A3 |
A3 |
A4 |
A5 |
|
A4 |
A4 |
A5 |
A6 |
|
… |
… |
… |
… |
芯片选择信号设定
|
芯片选择信号 |
与存储体接口 |
|
NGCS0 |
FLASH |
|
NGCS6/NSCS0 |
SDRAM |
|
NGCS1 |
USB接口 |
|
|
LCD显示 |
|
NGCS3 |
以太网 |
|
NGCS2 |
IDE(IOR/W) |
|
NGCS4 |
IDE(KEY) |
|
NGCS5 |
IDE(PDIAG) |
实验板上的存储系统包括一片1M × 16bit 的Flash (SST29VF160)和一片4M×16bit 的SDRAM(HY57V65160B)。如图Flash 连接电路所示,处理器是通过芯片选择nGCS0 与外部Flash 芯片连接。由于是16bit 的Flash,所以用CPU 的地址线A1-A20 来分别和Flash 的地址线A0-A19连接。Flash 的地址空间是从0x00000000∼0x00200000 约为2M byte。

S3C44B0X FLASH
FLASH和S3C44B0X的连接
如图SDRAM 连接电路所示,SDRAM 分成4 个BANK,每个BANK 的空量为1M×16bit。BANK 的地址由BA1、BA0 决定,00 对应BANK0,01 对应BANK1,10 对应BANK2,11 对应BANK3。在每个BANK 中,分别用行地址脉冲选择RAS 和列地址脉冲选择CAS 进行寻址。本实验板还设定跳线, 可以为使用者升级内存容量至4×2M×16bit。具体方法为使SDRAM 的BA0、BA1 分别接至CPU 的A22,A23 脚。SDRAM 由MCU 专用SDRAM 芯片选择信号nSCS0 选择,地址空间从0x0C000000∼0x0C8000000。

SDRAM和S3C44B0X的接口