S3C2440 SDRAM内存驱动
时间:11-20
来源:互联网
点击:
外接设备 | 起始地址 | 结束地址 |
存储控制器 | 0x48000000 | 0x48000030 |
USB Host控制器 | 0x49000000 | 0x49000058 |
中断控制器 | 0x4A000000 | 0x4A00001C |
DMA | 0x4B000000 | 0x4B0000E0 |
时钟和电源管理 | 0x4C000000 | 0x4C000014 |
LCD控制器 | 0x4D000000 | 0x4D000060 |
NAND FLASH控制器 | 0x4E000000 | 0x4E000014 |
摄像头接口 | 0x4F000000 | 0x4F0000A0 |
UART | 0x50000000 | 0x50008028 |
脉宽调制计时器 | 0x51000000 | 0x51000040 |
USB设备 | 0x52000140 | 0x5200026F |
WATCHDOG计时器 | 0x53000000 | 0x53000008 |
IIC控制器 | 0x54000000 | 0x5400000C |
IIS控制器 | 0x55000000 | 0x55000012 |
I/O端口 | 0x56000000 | 0x560000B0 |
实时时钟RTC | 0x57000040 | 0x5700008B |
A/D转换器 | 0x58000000 | 0x58000010 |
SPI | 0x59000000 | 0x59000034 |
SD接口 | 0x5A000000 | 0x5A000040 |
AC97音频编码接口 | 0x5B000000 | 0x5B00001C |
1.1.2SDRAM内存工作原理
SDRAM的内部是一个存储阵列。阵列就如同表格一样,将数据“填”进去。在数据读写时和表格的检索原理一样,先指定一个行(Row),再指定一个列(Column),我们就可以准确地找到所需要的单元格,这就是内存芯片寻址的基本原理,如图2-49所示。图2-49内存行,列地址寻址示意图
这个单元格(存储阵列)就叫逻辑Bank(Logical Bank,下文简称L-Bank)。由于技术、成本等原因,不可能只做一个全容量的L-Bank,而且最重要的是,由于SDRAM的工作原理限制,单一的L-Ban k将会造成非常严重的寻址冲突,大幅降低内存效率。所以人们在SDRAM内部分割成多个L-Bank,目前基本都是4个(这也是SDRAM规范中的最高L-Bank数量),由此可见,在进行寻址时就要先确定是哪个L-Bank,然后在这个选定的L-Bank中选择相应的行与列进行寻址。因此对内存的访问,一次只能是一个L-Bank工作。如图2-50:
图2-50内存存储单元
当对内存进行操作时(见下图),先要确定操作L-Bank,因此要对L-Bank进行选择。在内存芯片的外部管脚上多出了两个管脚BA0, BA1,用来片选4个L-Bank。如前所述,32位的地址长度由于其存储结构特点,分成了行地址和列地址。通过下面的内存结构图可知,内存外接管脚地址线只有13根地址线A0~A12,它最多只能寻址8M内存空间,到底使用什么机制来实现对64M内存空间进行寻址的呢?SDRAM的行地址线和列地址线是分时复用的,即地址要分两次送出,先送出行地址(nSRAS行有效操作),再送出列地址(nSCAS列有效操作)。这样,可以大幅度减少地址线的数目,提高器件的性能和制作工艺复杂度。但寻址过程也会因此而变得复杂。实际上,现在的SDRAM一般都以L-Bank为基本寻址对象的。由L-Bank地址线BAn控制L-Bank间的选择,行地址线和列地址线贯穿连接所有的L-Bank,每个L-Bank的数据的宽度和整个存储器的宽度相同,这样,可以加快数据的存储速度。同时,BAn还可以使未被选中的L-Bank工作于低功耗的模式下,从而降低器件的功耗。
图2-51 HY57561620内部结构图
开发板内存控制器管脚接线(以MINI2440开发板为例):
(1)确定BA0、BA1的接线
表2-15 BA0、BA1接线
Bank Size:外接内存容量大小(HY57561620是4Mbit*16bit*4Bank*2Chips/8=64MB)
Bus Width:总线宽度 (两片16位HY57561620,并联成32位)
Base Component:单个芯片容量(bit)(256Mb)
Memory Configration:内存配置((4M*16*4banks)*2Chips )
由硬件手册Bank Address管脚连接配置表可知,使用A[25:24]两根地址线作为Bank片选信号,正好两根接线可以片选每个存储单元的4个BANKS。
(2)确定其它接线
SDRAM内存是焊接在BANK6~BANK7上的,其焊接管脚,如图2-52:
图2-52 S3C2440 16位宽内存芯片
上图是S3C2440提供的两片16位芯片并联连接示意图,An是CPU地址总线,其中A2~A14为内存芯片寻址总线,之所以地址寻址总线从A2开始是因为内存地址都是按字节对齐的,,A24,A25为L-Bank片选信号,Dn为CPU数据总线,其它为对应控制信号线。
表2-16内存芯片各管脚说明
外接管脚名 | 内接管脚名 | 全称 | 描述 |
A2~A14 | A0~A12 | Address | 地址线 |
D0 ~D31 | DQ0~DQ31 | Data Input/Output | 数据线 |
A24,A25 | BA0,BA1 | Bank Address | L-BANK片选信号 |
DQM0~DQM3 | LDQM, UDQM | Data Input/Output Mask | 高,低字节数据掩码信号 |
SCKE | SCKE | Clock Enable | 输入时钟有效信号 |
SCLK | SCLK | Clock | 输入时钟 |
nSCS0 | nSCS | General Chip Select | 片选信号(它与nGCS6是同一管脚的两个功能) |
nSRAS | nSRAS | Row Address Strobe | 行地址选通信号 |
nSCAS | nSCAS | Column Address Strobe | 列地址选通信号 |
nWE | newnWE | Write Enable | 写入有效信号 |