找回密码
 注册
关于网站域名变更的通知
查看: 408|回复: 1
打印 上一主题 下一主题

S3C2440与SDRAM与NAND与NOR的地址连线分析

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-10-27 11:13 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
本帖最后由 uqHZau 于 2020-10-27 13:16 编辑 * P% |0 h* a# \, }& Y

5 F8 C  K2 i. X5 L
S3C2440有27根地址线ADDR[26:0],8根片选信号nGCSO-nGCS7,对应bankO-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根行地址线RAO-RA12
9根列地址线CAO-CA8
2根BANK选择线BAO-BA1(4个bank的选择)
SDRAM的地址引脚是复用的,在读写SDRAM存储单元时,操作过程是将读写的地址分两次输入到芯片中,每一次都由同一组地址线输入。两次送到芯片上去的地址分别称为行地址和列地址。它们被锁存到芯片内部的行地址锁存器和列地址锁存器。
/RAS是行地址锁存信号,该信号将行地址锁存在芯片内部的行地址锁存器中;
/CAS是列地址锁存信号,该信号将列地址锁存在芯片内部的列地址锁存器中。
NSCS接到bank6上,决定了SDRAM的物理地址是0x30000000
地址连线如下图:

. P) [* f0 N: T4 c; h3 c
" \# U1 v0 M0 |% ^+ ?7 t( {5 C9 [; \! p9 \
5 B, Z0 Z8 K' R/ r+ W! K) ]

8 L3 Q$ X9 \6 d0 T( I
/ h( |( m: a9 W# w4 l9 H" P) |4 V
1 I* W, g+ v1 ?* \+ R; p$ N7 L 9 w8 W& d2 p6 y" Q$ v1 x
4 _) ?, l1 x5 F/ v
LnSCSO脚接了nGCS6,即接在了bank6上,所以SDRAM的物理地址从0X30000000开, s( ~* g/ k$ Z& o

* v$ V: D' u. a9 ^3 `# Q
为啥LADDR2接A0呢?
@CPU的寻址空间中,仍然是按8bit—个字节为单位操作的
@由于SDRAM并接成了32位,即4个字节,这样接使得SDRAM的最小单位是4个字节,方便32位的读写操作吧
为啥LADDR24/25接BAO/1?
@ BA1:BA0是SDRAM的最高位,组合选择4个bank中的哪一个
LADDRO~LADDR25,总共26根地址线,可寻址(2的26次方)64MB
为啥一个bank4MB,而容量不是4mb×4bank=16MB是8×4=32MB?
@13根行地址线+9根列地址线=22根(4MB)。另外HY57V561620F一个存储单元是2个字节(本身是16位的),相当于有了23根地址线。
6 B: _9 H5 i7 p( q7 E. l

- E2 t* r1 Z. T
NORFLASH中A0接CPU的LADDR1,那么,norflash的最小寻址单元为2个字节(16位),事实上只有A0~A19是有效的,因为该nor本身才有2MB,2的20次方=1MB,加上nor本身是16位的(2个字节),所以1MB×2就是nor的大小
@26脚接了nGCS0,即接在了bankO上,所以,nor的物理地址从OX00000000开始
! d' I! w( Y4 s! G; i, G! l
, L) T+ e( g: d0 F5 B& u" f3 h$ o
# h! n! b) Y, ]( M
从接线上可以看出NAND有点特殊,他并没有通过CPU的地址线访问,这就回答了为啥可以接1GB的NAND,当然他也没有接bank选择线,自然不存在物理地址了,由此我猜想NAND是由硬件本身识别的,即OM开关选择是NOR还是NAND启动,这似乎也验证了数据手册上这两种启动方式的映射图,NAND的启动方式可参考前面的日志
Ox4000_0000-Ox4000_Offf2 Q  R6 |1 f1 }5 Q
-----这4K字节的就是前面说的stepingstone的啦。0x4000_0fff_0x4800_0000是没用到的。
Ox4800_0000-Ox6000_0000
-----这空间是特殊功能寄存器的.你发现,所有的寄存器都是在这个范围内的。
0x6000_0000——OXffff_ffff
-----还是未用到的。
理论上可以寻址的空间为(2的32次方,32根地址线)4GB,但其中有3GB的空间都预留给处理器内部的寄存器和其他设备了,留给外部可寻址的空间只有1GB,也就是
ox00000000~0X3FFFFFFF,总共应该有30根地址线。这1GB的空间,2440处理器又根据所支持的设备的特点将它分为了8份,每份空间有128MB,这每一份的空间又称为一个BANK。为方便操作,2440独立地给了每个BANK一个片选信号(nGCS7~nGCS0)。其实这8个片选信号可以看作是2440处理器内部30根地址线的最高三位所做的地址译码的结果。正因为这3根地址线所代表的地址信息已经由8个片选信号来传递了,因此2410处理器最后输出的实际地址线就只有A26~AO
: B' m7 ^, G# _/ j
nandflash由于其自身的特点,不具备运行程序的功能。但s3c2440通过称为“Steppingstone”的内部SRAM缓存,实现了可以运行存储在外部nandflash中的启动代码的功能。它的机制是:当检测到是由nandflash启动时,系统会自动把nandflash中的前4k字节的数据加载到Steppingstone中,然后把该Steppingstone映射为Bank0,因此系统会从Steppingstone开始运行程序,从而实现了s3c2440的nandflash自启动的功能。这一过程是由系统自动完成的,无需人为干预。在系统启动以后,Steppingstone所在的SRAM就可以用作其他用途了。
( L1 d  r" y: j# T* W8 B9 K
. `% s! f3 H/ z' @: F) h
% M: G% s4 D0 E2 n' G

' a0 k) c. L: U  I: z+ y* [/ P

该用户从未签到

2#
发表于 2020-10-27 13:11 | 只看该作者
两次送到芯片上去的地址分别称为行地址和列地址。它们被锁存到芯片内部的行地址锁存器和列地址锁存器。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-24 20:47 , Processed in 0.171875 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表