×
单片机 > 单片机程序设计 > 详情

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

发布时间:2020-05-23 发布时间:
|

为什么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)个单元


关键字:2440  SDRAM  地址线 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
Keil(MDK-ARM)系列教程(七)_菜单