s3C2440 Memory controller

发布时间:
来源: 电子工程世界

硬件设计篇

 

首先是BANK0 的选择, 如果是把BANK0 选择连接NAND Flash,需要引脚OM1 和OM0的状态 如果是都设置成0 是NAND FLASH 模式。。 NANDFlash 模式会自动的

NANDFLASH前4MB的内容拷贝到内存中来。


其次是S3C2440 的SDRAM的引脚如下:

nSRAS: SDRAM行选择引脚 

nSCAS: SDRAM 列选择引脚

nSCS: 片选信号

DQM[3:0]: 掩码,就是为了屏蔽不需要的位, 比如一个连接了32位的芯片需要写入一个8bit的数据,那么其他的的位就会被掩码屏蔽

SCLK:时钟

SCKE: 时钟使能

nBE[3:0]:DATA mask。 因为每次SDRAM只能从内核提取8bit的数据,这个DQM是为了当用户选择了32位 16位数据的时候 区分高八位和第八位用的。 一般连接SDRAM的 LDQM和HDQM上面。LDQM连接DQM0 HDQM连接DQM1(只是对于16bit的SRAM)


nWBE: Write Byte Enable


其中nBE 、 nWBE,还有 DQM共用一个引脚阵列 他们的关系如下:

如果连接ROM 则 nWBE 需要连接在芯片的nWE引脚。  byte enable

如果要是连接SRAM 则 nWE连接芯片上面的nWE引脚 SRAM上面的UB和LB分别连接在BE0和BE1上面

如果连接在SDRAM上面则 DQM0 需要连接芯片上面的LDQM DQM1需要连接到UDQM上面。

 

下面看芯片手册:

1. CLK 接连芯片的SDRAM CLK上面

2. CKE: Clock enable

3. BA0 和BA1 这两个形成了一个选择器可以选择SDRAM里面四个BANK (0,1,2,3)

5 CS: 片选

6. CAS:列地址选择

7. RAS: 行地址选择

8. WE: 写使能

9. LDQM 和UDQM 掩码。。

 

时序的操作

根据手册来确定程序和时序的走向:

1. 我们用的SDRAM是EM63A165TS 

2. 首先来看BWSCON: 由于我们把SDRAM设置到了bank 6 上面所以我们要看的寄存器是:

ST6: 是否用了UB 和LB 由于是SDRAM只是用到了DQM而不是UB/LB故为0

WS6:等待。 由于没有用到等待所以为0 (SDRAM没有等待的引脚)

DW6: 位宽 选择16位   

3. 设置BANKCON6 由于是SDRAM 所以MT设置成11

Tac : 片选之前地址建立的时间  由于HCLK为100M 所以为此位可以位0

cos 由于时间很短可以设置成0

最后一位SCAN:由于手册上面列是9 所以是选择01

4. 设置refresh 寄存器:

22 23位都是1 来刷新SDRAM

Trp手册是21ns HCLK是100M(10ns)所以应该是01 3个时钟周期(10*3 》 21ns)

刷新频率: 手册上面频率是8192 刷新64ms 代入公式 Refresh period = (2^11-refresh_count+1)/HCLK

为1267 

5 bank Size: 使用突发模式 第七位设置为1

第五位: SDRAM可以进入休眠状态

第四位:SCLK只是在进入SDRAM访问的时候才执行

第2:0位:选择64M

6:  MRSRB6 : 0x20 

                                                             


文章来源于: 电子工程世界 原文链接

本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。