ARM中SDRAM的控制(以AT91Sam9260为例)

 

SDRAM即同步动态RAM :所有输入信号均在时钟上升沿被采样,需要动态刷新保持数据

1、重要的连接信号:

a、  RAS:行地址锁存

b、  CAS:列地址锁存

c、  WE:写使能

d、  DQ0-DQ15:数据总线

e、  DQMLDQMH:数据I/O屏蔽,读模式下屏蔽输出缓冲,写模式下屏蔽输入缓冲,DQML控制DQ0-DQ7DQMH控制DQ8DQ15

f、   A10连接自动放电

 

2、扩展方式:

使用双片级联,将16位数据线扩展为32位,从而与32CPU匹配,优化SDRAM性能。扩展后一个地址对应32位,从而一个地址单元以4Byte进行数据访问时,内存会忽略A0A1,故SDRAMA0CPU数据线的A2。如果需要访问地址偏移为01的单个字节,通过DQMLDQMH信号进行帮助。

 

3SDRAMburst mode:一种利用内部列地址发生器来工作的高速读写模式,只要设置最开始的列地址,后面的地址就可以通过内部的列地址发生器来自动生成。

 

4SDRAM的初始化:

SDRAM上电后使用前必须要经过一段初始化操作才可以使用。这个操作过程是标准的过程。这个过程如下:

a、  放电(precharge):关闭存储单元,使存储单元无效。

b、  自动刷新(auto-refresh

c、  加载模式寄存器(Load Mode Register

d、  正常读写

在输入precharge命令后,因为必须是对所有BANK进行Precharge,所以A10这个管脚要设置成高,因此在Precharge后面要做一个读的操作,这个操作最主要的是在SDRAM的寻址空间里设置的地址必须是A10是高的。在输入Auto-refresh命令后,一般要跟几句空操作或者读什么之类的,反正要达到延迟的目的,以使得SDRAM有时间来完成refresh。之后就是要设置SDRAM的模式寄存器,这个寄存器里一般设置了burst长度,CASburst类型,操作模式,还有是设置SDRAM是工作在单个读写操作还是burst操作下。而这个寄存器的设置也是通过地址线来设置的,所以在发出Load Mode Register命令后要做一个操作可是使得在SDRAM的地址线上出线的值就是你要设置的值。这里很有必要提醒的一下的是,这个操作是8位的操作。设置完模式寄存器后就进入正常操作模式。

 

5、基本的读写操作:

SDRAM的基本读操作需要控制线和地址线相配合地发出一系列命令来完成。先发出BANK激活命令(ACTIVE),并锁存相应的BANK地址(BA0BA1给出)和行地址(A0A12给出)。BANK激活命令后必须等待大于tRCD(SDRAMRASCAS的延迟指标)时间后,发出读命令字。CLCAS延迟值)个工作时钟后,读出数据依次出现在数据总线上。在读操作的最后,要向SDRAM发出预充电(PRECHARGE)命令,以关闭已经激活的页。等待tRP时间(PRECHARGE)命令,以关闭已经激活的页。等待tRP时间(PRECHAREG命令后,相隔tRP时间,才可再次访问该行)后,可以开始下一次的读、写操作。SDRAM的读操作只有突发模式(Burst Mode),突发长度为1248可选。SDRAM的基本写操作也需要控制线和地址线相配合地发出一系列命令来完成。先发出BANK激活命令(ACTIVE),并锁存相应的BANK地址(BA0BA1给出)和行地址(A0A12给出)。BANK激活命令后必须等待大于tRCD的时间后,发出写命令字。写命令可以立即写入,需写入数据依次送到DQ(数据线)上。在最后一个数据写入后延迟tWR时间。发出预充电命令,关闭已经激活的页。等待tRP时间后,可以展开下一次操作。写操作可以有突发写和非突发写两种。突发长度同读操作。

6AT91sam9260 SDRAM

型号MT48LC16M16A2,为4MB*4*16bit=32MB,采用双片级联构成3264MBSDRAMSDRAM采用地址信号线复用。行寻址使用A0-A12,寻址范围8K字节;列寻址使用A0-A8,寻址范围512字节;bank寻址使用BA0-BA1,寻址四个bank。使用额外的四根信号线连接两片SDRAMBA[1:0]

AT91SAM9260使用SDRAMC初始化SDRAM初始化顺序如下:

a、  设置配置寄存器SDRAMC_CR,填入寄存器中的值单位均为时钟周期:

NC Number of Column Bits9

NR Number of Row Bits,13

NB:   Number of banks4

CAS CAS Latency2-3

DBW:数据位宽32

tWRWrite Recover Time14ns

tRC Row Cycle Delay 默认值7

tRP Row Precharge Delay,默认值3

tRCDRow To Column Delay15-20ns

tRASActive To Precharge Delay37-44ns

tXSRExit Self Refresh To Active Delay67-75ns

b、  在存储设备寄存器(SDRAMC_MDR)中设置存储类型为SDRAM

c、  提供200us的延迟

d、  SDRAM设备发出NOP命令:设置SDRAM 模式寄存器中设置模式为1,向SDRAM任意地址执行写操作。

e、  SDRAM设备发出放电命令:设置SDRAM 模式寄存器中设置模式为2,向SDRAM任意地址执行写操作。

f、   提供8个自动刷新周期:设置SDRAM 模式寄存器中设置模式为4,向SDRAM任意地址执行写操作。

g、  发出模式寄存器设置周期,配置SDRAM模式寄存器参数,尤其是CAS Latencyburst length。程序必须设置模式寄存器为模式3,对SDRAM执行写访问,地址中BA[1:0]必须为0

h、  进入正常模式:设置SDRAM 模式寄存器中设置模式为0,向SDRAM任意地址执行写操作。

SDRAMC Rfresh Timer寄存器的count字段中写入刷新率,刷新率为刷新周期间的延迟,自动刷新周期7.81us*100MHz=781

你可能感兴趣的:(timer,工作,存储,扩展,byte,delay)