Chinaunix首页 | 论坛 | 博客
  • 博客访问: 480554
  • 博文数量: 98
  • 博客积分: 3265
  • 博客等级: 中校
  • 技术积分: 1227
  • 用 户 组: 普通用户
  • 注册时间: 2010-10-23 00:29
文章分类

全部博文(98)

文章存档

2012年(6)

2011年(83)

2010年(9)

分类: LINUX

2010-11-03 14:38:30

S3C2440有27根地址线ADDR[26:0],8根片选信号ngcs0-ngcs7,对应bank0-bank7,当访问bankx的地址空间,ngcsx引脚为低电平,选中外设。

2^27=2^7 * 2^10 * 2^10 = 128Mbyte

8*128Mbyte = 1Gbyte

所以S3C2440总的寻址空间是1Gbyte。

市面上很少有32位宽度的单片SDRAM,一般选择2片16位SDRAM扩展得到32位SDRAM.

选择的SDARM是HY57V561620F,4Mbit * 4bank *16,共16Mbyte?(后面有解释)

两块HY57V561620F并接,构成64M×32bit的SDRAM

首先了解下SDRAM的寻址原理。

SDRAM内部是一个存储阵列。可以把它想象成一个表格。和表格的检索原理一样,先指定行,再指定列,就可以准确找到所需要的存储单元。这个表格称为逻辑BANK。目前的SDRAM基本都是4个BANK。寻址的流程就是先指定BANK地址,再指定行地址,最后指定列地址。这就是SDRAM的寻址原理。存储阵列示意图如下:

查看HY57V561620F的资料,这个SDRAM有

13根行地址线   RA0-RA12

9根列地址线    CA0-CA8

2根BANK选择线 BA0-BA1(4个bank的选择)

SDRAM的地址引脚是复用的,在读写SDRAM存储单元时,操作过程是将读写的地址分两次输入到芯片中,每一次都由同一组地址线输入。两次送到芯片上去的地址分别称为行地址和列地址。它们被锁存到芯片内部的行地址锁存器和列地址锁存器。

/RAS是行地址锁存信号,该信号将行地址锁存在芯片内部的行地址锁存器中;

/CAS是列地址锁存信号,该信号将列地址锁存在芯片内部的列地址锁存器中。

NSCS接到bank6上,决定了SDRAM的物理地址是0x30000000

地址连线如下图:

lnSCS0脚接了nGCS6,即接在了bank6上,所以,nand的物理地址从0X30000000开始

为啥LADDR2接A0呢?

@CPU的寻址空间中,仍然是按8bit一个字节为单位操作的

@由于SDRAM并接成了32位,即4个字节,这样接使得SDRAM的最小单位是4个字节,方便32位的读写操作吧


为啥LADDR24/25接BA0/1?

@ BA1:BA0是SDRAM的最高位,组合选择4个bank中的哪一个

@ LADDR0~LADDR25,总共26根地址线,可寻址(2的26次方)64MB


为啥一个bank4MB,而容量不是4mb×4bank=16MB是8×4=32MB?

@ 13根行地址线+9根列地址线 = 22根(4MB)。另外HY57V561620F一个存储单元是2个字节(本身是16位的),相当于有了23根地址线

NORFLASH中A0接CPU的LADDR1,那么,norflash的最小寻址单元为2个字节(16位),事实上只有A0~A19是有效的,因为该nor本身才有2MB,2的20次方=1MB,加上nor本身是16位的(2个字节),所以1MB×2就是nor的大小

@ 26脚接了nGCS0,即接在了bank0上,所以,nor的物理地址从0X00000000开始

从接线上可以看出NAND有点特殊,他并没有通过CPU的地址线访问,这就回答了为啥可以接1GB的NAND,当然他也没有接bank选择线,自然不存在物理地址了,由此我猜想NAND是由硬件本身识别的,即OM开关选择是NOR还是NAND启动,这似乎也验证了数据手册上这两种启动方式的映射图,NAND的启动方式可参考前面的日志

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