为什么2440与SDRAM地址线错两位相连?

为什么2440与SDRAM地址线错两位相连?
网上说,错两位是为了32位对齐(地址为8位数据地址,2440位宽为32,错两位,一次跳4byte)。
下面是听南方大哥的教程时记录的:
由于两个内存合起来“数据位宽”是32位。32时,地址总线的地址LADDR0和LADDR1不需要使用。
内存是32位数据宽度,2440的 LADDR0和LADDR1就不用接,从LARRD2开始接到内存的A0一直往下接。     内存是16位数据宽度,2440的LADDR0不用接,从LADDR1开始接到内存的A0一直往下接。     内存是8位数据宽度,2440就从LADDR0开如接到8位位宽的内存的A0一直往下接。
原因:2440的地址单位是“字节”。如果内存芯片位宽是32位(即读或写内存一次都是得到4字节),这时CPU发出0,1,2,3这4个地址,都是访问到这个内存芯片的同一个单元,返回则都是返回同一个4字节的数据(CPU访问内存某些地址上的数据,访问内存上某地址后取到地址上的数据)。这样CPU发出的0,1,2,3这4个地址就对应了内存上的同一块。      CPU发出0~3这4个地址去访问内存中数据,而内存只能够以32位来访问,返回的永远是4字节,接收的也永远是4字节。这样对于CPU发出的0~3这4个地址,都是返回4个字节给CPU。而CPU如何处理返回的数据则是CPU 的事情,假如CPU其实只是想要返回4字节中的1个字节,则这就要CPU内部的存储管理器去把返回4字节中想要的1字节挑出来。那去“硬件连线”上来看就是把0,1这两个地址(LADDR0-1)忽略掉,因为不管LADDR0和 LADDR1如何变化,访问到32位位宽内存的都是同一个地址,起作用的都是LADDR2之后的地址。 只是我不知道如何计算,这里 忽略 LADDR0-1,是如何计算出来的?
 

回复:为什么2440与SDRAM地址线错两位相连?

你把一个地址代进去试试看,比如CPU发出0X10000、0X10001这两个地址,ADDR1、ADDR0分别为00、01,但是由于ADDR0、ADDR1不接到外部的芯片上,所以访问到的都是芯片上第(0x10000 >> 2)个单元
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值