找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 3247|回复: 8

2440与SDRAM连接的几点理解(转)

[复制链接]

379

主题

518

回帖

3780

积分

管理员

积分
3780
发表于 2014-3-20 09:46:04 | 显示全部楼层 |阅读模式

高速电路PCB网,专注于嵌入式方案,信号完整性和电源完整性仿真分析,高速电路PCB设计,各种EDA工具(Cadence\Mentor\\AD\\CAM\ANSYS HFSS)交流学习。

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

×
最近在分析uboot中关于6410的 cpu_init.s,这是对DDR的配置,由于DDR是SDRAM的升级,所以就先看了一下SDRAM,以下是最近的总结。
看下图:
这是64M(32M+32M),SDRAM的原理图
1、为什么2440或2410中地址线都是从ADDR2中开始连接的?
2440或2410中地址线都是从ADDR2中开始连接的,即A0-ADDR2、An- ADDR(n+2)、这是因为ARM是32位处理器所以它一次处
理数据都是以32位为单位的,也就是说它读或者写数据时,地址只能为0x0、0x04、0x08、。。。即4字节对齐,因为一般DDR
的数据线都为16位,所以为了得到32位的数据,一般都是将2个DDR连在一起,它们的地址相同,所以对已DDR而言是一个地址
对应4个字节(因为一个DDR对应2个字节,两个DDR就对因4个字节),但是对于CPU而言一个地址只对应1个字节,所以这里
就存在一个地址转换问题,即使CPU的0~3地址里的数据对应DDR的0地址数据,CPU的4~7地址的数据对应DDR的1地址的数据
,所以CPU的0地址对应DDR的0地址,0X04地址对应DDR中1地址,0x08地址对应DDR中2地址,可以看出,DDR的地址刚好是
CPU寻址向右移动两位,所以2440或2410中地址线都是从ADDR2开始连接的。
  2、为什么寻 32M只用了13根地址线?
要想了解这个首先的从DRAM的结构说起,下图是关于DRAM的内部结构图:
可以看到一片DRAM其实是由4片4Mx16的存储块组成,其中4M指的是4Mbit个存储单元,16指的是每个存储单元存储的
位数,即2个字节,由此可知,bank0和bank1就是用来选择4片存储块的,bank0和bank1是用来确定是那个存储块,在
K4S561632C中有4个bank,00代表bank0, 01代表bank1, 10代表bank2, 11代表bank3,需要知道的是这4片存储块是相互
独立的,并且每个存储块都是阵列结构,所谓阵列结构指的是它是由行列组成的,行列是什么请看下图:
我们可以把一个bank看做是由一个个方格组成的存储块,而方格的个数就是4Mbit,每个方格的容量则为16bit,你要想
确定一个方格的地址首先要确定它的行地址,再确定它的列地址,两线相交确定一点,这一点就是你要的地址。
一般SDRAM的地址线都采用分时复用原则,即先送行地址,再送列地址,K4S561632C这款芯片Row address
: RA0 ~ RA12, Column address : CA 0 ~ CA8,即前9个地址线是复用的。
所以寻址的时候先发送RA0 ~ RA12行地址,在发送CA 0 ~ CA8列地址,而RA0 ~ RA8和CA 0 ~ CA8用的其实是同一个
管脚,按照行地址13个,列地址9个,算,最多能寻址2^22,即4194304个地址,换算成Mbit刚好是4Mbit,即一个bank的
大小,这就是为什么寻32M只用了13根地址线的原因。
3、为什么bank0和bank1与2440的ADDR24和ADDR25连接?
前面我们已经了解到bank0和bank1是用来选择存储块的,32M的空间需要25根地址线寻址,但是对于K4S561632C只需
要24根,因为它每个存储单元存储2个字节,我们来分一下,这24根地址线的前13根行地址,紧接着的9根为列地址,那么最
后两根是干嘛?显而易见它是bank地址,用来选择存储块,所以BANK0接23, BANK1接24,但是由于我们是从ADDR2开始
连得原因前面已经解释过了,所以每个地址加2.最后的地址连接方法,就是ADDR2~ ADDR14对应行地址, ADDR15~ ADDR23
对应列地址,(由于管脚的分时复用其实是DDR2~ ADDR14对应行地址, ADDR2~ ADDR10对应列地址)ADDR24~ ADDR25
对应BANK0~ BANK1,这就是bank0和bank1与2440的ADDR24和ADDR25连接的原因。
补充:可以看到最上面那副图,是由两片K4S561632C组合在一起的,这样做的效果是什么?
我们已经知道1片K4S561632C有4个bank,两片K4S561632C就有8个bank了,当连接一个K4S561632C时,一个地址对应2个
字节,现在连接了两片K4S561632C那么,一个地址就对应4个字节了,即一个字,总共64MB,当一个地址存放1个字节,我们需
要64Mbit个地址才能达到64MB的容量,现在容量不变,每个地址里存放的字节数增多了,那么必然需要的地址数就减少了,
根据存储容量(BYTE)=地址数*每个地址能存的字节数,可知当每个地址里存放的字节数增大4倍时,我们的地址数会变
为原来的1/4, 当一个地址存放4个字节,我们只需要16Mbit个地址就能达到64MB的容量,16Mbit代表24根地址线
(2^24=16Mbit=16*1024*1024),但是对于2440而言,一个地址只能对应1个字节,即是以BYTE为单位的,比如现在定义一个
数组并对它进行初始化:uchar a[]={0,1,2,3};假设0存放在地址a处,那么1就存放在a+1处, 2就存放在a+2处, 3就存放
在a+3处,也就是说对于2440而言每个地址只存放一个字节, ,所以对于2440而言,寻址64MB的内存需要26根地址线,如果
我们把这4个字节存放进上面的SDRAM中,其实他们都是存放在一个地址里的,0和1存放在左边的K4S561632C中,2和3
存放在右边的K4S561632C中,存放的地址都相同,可以看出2440寻址64MB的SDRAM时用到了26根线(最高两位刚好
是25~24印证了问题3),但是这64MB的SDRAM实际只需要24根线就可以寻完(因为2440中的4个地址相当于SDRAM中的
1个地址),所以2440中最后两根地址线就没什么用了(印证了问题1)。


该帖已经同步到电子微博网 易阳的微博
www.yanfa.tech 站长 ,交流微信QQ 276556668

0

主题

14

回帖

67

积分

版主

积分
67
发表于 2014-7-30 11:34:27 | 显示全部楼层
易阳,好文章!但是我想问下在这个SDRAM里面为了布线的方便,地址线与地址线之间,数据线与数据线之间可以交换不?比如LADDR2和LADDR6交换。DATA5和DATA11相互交换!

159

主题

160

回帖

1907

积分

管理员

积分
1907
发表于 2014-7-30 21:25:50 | 显示全部楼层
5566 发表于 2014-7-30 03:34
易阳,好文章!但是我想问下在这个SDRAM里面为了布线的方便,地址线与地址线之间,数据线与数据线之间可以 ...

可以不可以交换一般看主芯片的要求,有的主芯片会对8个bit内的最低位做固定,其余七个bit可以互换,以便更好的走线。
高速电路PCB网管理员。www.gaosupcb.com

0

主题

14

回帖

67

积分

版主

积分
67
发表于 2014-7-30 21:30:53 | 显示全部楼层
那意思就是在主CPU允许情况下是可以调整顺序的,避免绕线!

159

主题

160

回帖

1907

积分

管理员

积分
1907
发表于 2014-7-30 21:36:20 | 显示全部楼层
5566 发表于 2014-7-30 13:30
那意思就是在主CPU允许情况下是可以调整顺序的,避免绕线!

是避免交叉而导致要打过孔。
高速电路PCB网管理员。www.gaosupcb.com

159

主题

160

回帖

1907

积分

管理员

积分
1907
发表于 2014-7-30 21:36:26 | 显示全部楼层
5566 发表于 2014-7-30 13:30
那意思就是在主CPU允许情况下是可以调整顺序的,避免绕线!

是避免交叉而导致要打过孔。
高速电路PCB网管理员。www.gaosupcb.com

0

主题

14

回帖

67

积分

版主

积分
67
发表于 2014-7-30 21:39:24 | 显示全部楼层
这种交换是整个数据总线内或者地址总线内,还是分组内的?

159

主题

160

回帖

1907

积分

管理员

积分
1907
发表于 2014-7-30 21:46:12 | 显示全部楼层
5566 发表于 2014-7-30 13:39
这种交换是整个数据总线内或者地址总线内,还是分组内的?

前面我有说过是8bit内,那当然就是分组内的意思。
高速电路PCB网管理员。www.gaosupcb.com

159

主题

160

回帖

1907

积分

管理员

积分
1907
发表于 2014-7-30 21:46:16 | 显示全部楼层
5566 发表于 2014-7-30 13:39
这种交换是整个数据总线内或者地址总线内,还是分组内的?

前面我有说过是8bit内,那当然就是分组内的意思。
高速电路PCB网管理员。www.gaosupcb.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

内容正在加载中,请稍候……

QQ|Archiver|手机版|小黑屋|TechAIRD(gaosupcb Inc.)

GMT+8, 2026-8-24 07:43 PM , Processed in 0.054853 second(s), 24 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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