基于S3C2440的存储器接口设计与初始化分析

2016-03-30 23:01黄飞翔蔡启仲
科技视界 2016年1期
关键词:存储器

黄飞翔 蔡启仲

【摘 要】在嵌入式系统设计中,SDRAM的工作原理、控制时序及相关寄存器配置方法,相对较难。本文基于三星公司的S3C2440微处理器,设计外接美光内存芯片MT48LC16M16A2,并详细分析了初始化代码,目的是加深初学者对SDRAM的基础知识的了解,能有助于今后的嵌入式学习以及设计提供参考。

【关键词】SDRAM;存储器;S3C2440

0 引言

制造商所生产的MCU片内存储器空间往往不可能完全满足所有的嵌入式系统应用设计,例如,AT89S51单片机的内部RAM大小为128字节。因此,对于需要较大片内存储空间的应用设计来说,扩展片内存储器空间是非常重要的。

1 硬件设计

1.1 三星S3C2440微处理器

1.1.1 S3C2440硬件资源

S3C2440是三星公司开发的一款基于ARM920T内核的16/32位RISC微处理器,集成的系统外设和接口有:1.8V内核电压,3.3V存储电压,3.3V I/O电压;16KB的指令高速缓存、16KB的数据高速缓存和存储管理单元;外部的存储控制器(SDRAM控制器和片选逻辑);LCD控制器,包括一个LCD DMA;4个带外部请求管脚的DMA;3个UART,2个SPI;1个I2C总线控制器,1个I2S-BUS控制器;SD主机接口;4个PWM时钟和1个内部时钟;看门狗时钟;117个GPIO,24个外部中断源; 8路10位 ADC和触摸屏接口;带ALARM功能的RTC;带PLL的片上时钟发生器;NAND Flash控制器。

1.1.2 存储器系统

ARM存储器系统由各种类型的存储器按照一定的层次结构组合成[3],如图1所示。

SDRAM在存储结构中用做程序的运行空间,它在响应控制输入前会等待一个时钟周期,将CPU和RAM之间的速度进行匹配,加快了数据传输速度。

1.1.3 S3C2440的地址空间

S3C2440是一款具有32位的地址总线和数据总线宽度的CPU,实际上只指引出了27根地址线,最大寻址空间为128MB。8个Bank分别对应S3C2440的8个片选信号线nGCS0~ nGCS7相互区别,可以做到总的寻址空间为8*128Mb=1GB。

S3C2440地址空间[4]如图2所示,SDRAM需接在S3C2440的Bank6或Bank7上。

1.2 SDRAM存储器MT48LC16M16A2

1.2.1 MT48LC16M16A2概述及特性[5]

MT48LC16M16A2是一款256Mb高速CMOS SDRAM,容量为256Mb,结构为4 x 4M x 16bits,16位位宽,兼容PC100、PC133,3.3V供电电压,自动预充电,刷新时间为8192/64ms。

1.2.2 SDRAM读写时序

S3C2440对SDRAM的基本读操作和写操作均需要控制线与地址线相互配合。

SDRAM基本读操作过程如下:

(1)发出Bank激活命令(必须大于RAS到CAS的延迟指标Trcd),并锁存响应Bank的行地址与列地址;

(2)CL(CAS延迟值)个时钟周期后,先指定行地址再指定列地址数据即可出现在数据总线上;

(3)向SDRAM预充电命令(PRECHAREG)以关闭激活页,等待Trp时间,即可进行下一次读、写操作。

SDRAM基本写操作过程如下:

(1)发出Bank激活命令(要求同前),并锁存响应Bank的行地址与列地址;

(2)写入数据依次出现在数据总线上;

(3)写入最后一数据后延时Twr时间,向SDRAM预充电命令(PRECHAREG)以关闭激活页,等待Trp时间后即可进行下一次读、写操作。

1.3 接口电路设计

采用两片MT48LC16M16A2并联组成32位的位宽,它们与S3C2440的接口电路设计如图3所示。

2 寄存器配置及SDRAM初始化分析

2.1 寄存器配置

Bank7不仅可以像Bank0~Bank5一样支持ROM和SRAM,还可以外接SDRAM,因此除了需要像Bank0~Bank5一样设置相应的总线带宽\等待控制寄存器BWSCON和总线控制寄存器BANKCON7外,还需要根据MT48LC16M16A2数据手册中的参数(例如Trp、Trc、Trcd和Trp等)来对刷新控制寄存器、存储块大小控制寄存器和模式设置寄存器的相应位进行配置,从而使得内存控制器可以产生相应的时序。假设系统的HCLK为100MHz(即时钟周期为10ns),则各寄存器概述及根据SDRAM芯片时序的配置(未配置的位保持默认)如下:

(1)总线带宽\等待控制寄存器(BWSCON)各位如下:

ST 启动/禁止SDRAM的数据掩码引脚,对于SDRAM,该位置0;

WS 是否使用存储器的WAIT信号,通常置0为不使用;

DW 两位,设置位宽(00=8bit、01=16bit、10=32bit、11=保留)。

(2)总线控制寄存器BANKCON7各位如下:

MT([16:15]):配置为0x03将Bank7映射的物理内存为SDRAM;

Trcd([3:2]):行地址到列地址的延迟时间设置为0x0,因为Trcd[5]=20ns(即2倍时钟周期);

SCAN([1:0]):SDRAM列地址位数设置为0x01,因为本设计所采用MT48LC16M16A2的列地址数为9。

(3)刷新控制寄存器REFRESH

REFEN([23])设置为1,即启用SDRAM刷新功能;TREFMD([22])设置为0,即选用自刷新模式;TRP([21:20])根据Trp[5]=20ns设置为0x00,即两个时钟周期;Tsrc[19:18](SDRAM半行周期运行时间),SDRAM的行周期运行时间满足Trc=Tsrc+Trp,因为Trp[5]=20ns(2个时钟周期),Trc[5]=66ns(7个时钟周期),所以Tsrc为5个时钟周期,即将Tsr([19:18])设置为0x01;MT48LC16M16A2刷新8192行的总时间为64ms,则单行刷新时间为7.81μs(64ms/8192),再由公式(单行刷新时间=211-SDRAM工作频率(MHz)×刷新计数器值+1)计算得Refresh Counter([10:0])=0x4f4。

(4)存储块大小控制寄存器BANKSIZE

BK76MAP([2:0])配置为0x001,因为本设计外接64MB的SDRAM。

(5)SDRAM模式设置寄存器MRSRB7

CL[6:4] 配置为0x011,因为Tcl[5]=2.5ns(需3倍时钟周期)。

2.2 设计并分析SDRAM启动代码

首先在xxx.inc文件中对下列常量进行定义。

其次,初始化文件中包含了xxx.inc文件,就可以在其中使用上述变量了,如下:

通过以上部分代码,即可完成对SDRAM存储器的初始化。

3 总结

本次设计介绍了S3C2440与SDRAM硬件接口的设计及相关寄存器的配置过程,为嵌入式系统设计提供了一定的学习和设计参考。

【参考文献】

[1]王波波,王琤,等.ARM完全学习手册[M].北京:化学工业出版社,2012.

[2]黄智伟,邓月明,王彦.ARM9嵌入式系统设计基础教程[M].北京航空航天大学出版社,2008.

[3]奚海蛟,谌利,吕铁军.ARM体系结构与外设接口实战开发[M].北京航空航天大学出版社,2012.

[4]王小强,方鹏,粟思科.ARM处理器裸机开发实战—机制而非策略[M].电子工业出版社,2012.

[5]MT48LC16M16A2说明书[S].

[6]S3C2440数据手册[S].

[7]陈学立,邱兆坤,陈志勇.嵌入式处理器与SDRAM的接口设计与实现[J],现代电子技术,2010(2).

[责任编辑:汤静]

猜你喜欢
存储器
静态随机存储器在轨自检算法
Xilinx新型FPGA将存储器带宽提升20倍
任意2~k点存储器结构傅里叶处理器
非易失性纳米晶存储器的研究
构建基于24XX系列存储器通用函数库的研究
Altera演示FPGA中高性能DDR4存储器数据速率
高维固态量子存储器研制成功
存储器——安格尔(墨西哥)▲
基于Nand Flash的高速存储器结构设计
Buffalo推出四硬盘网络存储器 主打Soho一族