Chinaunix首页 | 论坛 | 博客
  • 博客访问: 126475
  • 博文数量: 59
  • 博客积分: 275
  • 博客等级: 二等列兵
  • 技术积分: 345
  • 用 户 组: 普通用户
  • 注册时间: 2012-09-28 21:46
文章存档

2012年(59)

我的朋友

分类:

2012-11-04 09:47:43

原文地址:S3C2440 MEMORY CONTROLLER详解 作者:lee213

特点:

软件可编程的大小端模式;

       地址空间:每个BANK可寻址128MB(总共8BANK 1GB空间);

       可编程的访问位宽:BANK01632位,其他BANK81632位;

       8个存储器BANK,其中6个用于ROM或者SRAM2个用于ROMSRAM或者SDRAM

       BANK0~BANK6的起始地址固定;

       BANK7的起始地址和大小可编程;

       所有存储器BANK的访问周期可编程;

       外部wait信号可延长总线周期;

       支持SDRAM的自刷新和掉电模式。

       BANK0总线宽度由OM[1:0]引脚决定,当OM[1:0]=01时,booting ROM data width16位,当[1:0]=10时,booting ROM data width32位,当OM[1:0]=00时,从NAND FLASH启动。在友善之臂S3C2440开发板上,OM1引脚直接接地。
       依据这张表,可以查找到SDRAMBANK选择引脚连接方式,比如,我们使用的SDRAM2HYNIXHY57V561620(L)T,它的规格是4*4M*16bit(使用两片是为了配置成32位的总线宽度),BANK大小是4M*16=64MB,总线宽度是32位,器件大小是4*BANK大小=256Mb,寄存器配置就是(4M*16*4B*2,根据上面的表格,SDRAM上的BANK地址引脚(BA[1:0])与S3C2440A[25:24]相连。

       上表是寄存器控制地址总线连接方式,我们使用2SDRAM配置成32位的总线宽度,所以SDRAM上的A[12:0]接到S3C2440A[14:2]引脚。

       具体的S3C2440与两片SDRAM接线方式如下图所示:

       SDRAM的工作时序作为ARM工程师了解即可,具体的读写控制由寄存器控制器完成,作为FPGA工程师则需要详细了解SDRAM工作原理与时序,在此不再赘述。作为ARM工程师,最重要的是准确配置与SDRAM相关的寄存器。

 

在系统使用SDRAM之前,需要对S3C2440的存储器控制器进行初始化。其中对与SDRAMBank6)相关的寄存器进行了特殊的设置,以使SDRAM能够正常工作。由于C语言程序使用的数据空间和堆栈空间都定位在SDRAM上,因此,如果没有对SDRAMBank6)的正确初始化,系统就无法正确启动。下面介绍与SDRAM相关的寄存器设置。

1、  总线宽度&等待控制寄存器(BWSCON0x48000000

在这个寄存器中,可以配置BANK1~BANK7DWWSSTDW决定了数据总线宽度;WS是等待状态是否使能,如果此位为1WAIT信号可以用于延长nOE信号的有效时间;ST决定是否使用UB/LB(SRAM相关)。此寄存器还可以读取(不能写)BANK0的数据总线宽度。

对于SDRAM,只需要设置BANK6BANK7DW相关位,此处设置为32位。BWSCON(0x48000000)=0x22xxxxxx,后面的24位设置和FLASH有关,一个例子是设置为0x22111120。

2、  BANK控制寄存器(BANKCONN

BANK0~BANK5的控制寄存器相同,复位值均为0x0700。包括对Tacs(nGCSn前的地址建立时间)Tcos(nOE信号有效前的片选建立时间)Tacc(访问周期,当WAIT使能时,Tacc必须大于等于4个时钟周期)Tcoh(nOE后的片选保持时间)Tcah(nGCSn后的地址保持时间)Tacp(Page模式下的访问周期)PMC(Page模式配置)

BANK6BANK7的控制寄存器相同。如果存储器类型为ROM或者SRAM,情况与BANK0~BANK5类似,如果存储器类型为SDRAM,则需要设置Trcd(RASCAS的延时)SCAN(列地址位数),根据我们使用的SDRAM以及S3C2440HCLKSDRAM时钟由系统的HCLK提供)时钟情况,Trcd3个时钟,列地址位数是9,则BANKCON6(0x4800001C)=0x00018005BANKCON7(0x48000020)=0x00018005

3、  SDRAM刷新控制寄存器(REFRESH)

包括REFEN(刷新使能),此位一般设置为1TREFMD位(SDRAM刷新模式),初始值为0TrpSDRAM RAS预充电时间),此位需要根据时钟HCLK与选用的SDRAM芯片决定,一般设置为23个时钟;Tsrc位(SDRAM半行周期时间),由Trc-Trp得到,TrcTrp的值由时钟和SDRAM芯片决定;REFRESH COUNTER位(SDRAM刷新计数值),刷新计数值=2^11+1-HCLK*SDRAM刷新时间(刷新时间参考S3C2440SDRAM技术手册)。

4、  BANK SIZE寄存器(BANKSIZE

BURST_EN位是ARM核突发模式使能位,设为01均可,为了提高效率,此处可以设为1SCKE_ENSDRAM掉电模式使能控制,设为1SCLK_EN,设为1SCLK仅在访问周期才被激活;BK76MAPBANK6BANK7的内存映射,我们使用24B*4M*16bitSDRAM组成32256MB存储器,而且BANK6BANK7大小要相等,所以此处设为2,即128MB/128MBBANKSIZE(0x48000028)=0x00000032

5、  SDRAM模式寄存器集合寄存器(MRSR

WBL位,突发写长度,一般设为0,突发写长度固定;TM位,测试模式,一般设为00,模式寄存器集合(固定);CL位,CAS延时,根据SDRAM芯片和HCLK时钟计算;BT位,突发类型,一般设为0,连续的(固定);BL位,突发长度,一般设为000(固定的)。MRSR(0x4800002C)=0x00000030(0x48000030)=0x00000030。

阅读(1540) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~