为什么2440与SDRAM地址线错两位相连?
出处:eefocus 引用地址://www.eeworld.com.cn/mcu/2018/i 发布于:2018-07-24 14:14:55
为什么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字节),这时发出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)个单元
版权与免责声明
凡本网注明“出处:维库电子市场网”的所有作品,版权均属于维库电子市场网,转载请必须注明维库电子市场网,//domainnameq.cn,违反者本网将追究相关法律责任。
本网转载并注明自其它出处的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品出处,并自负版权等法律责任。
如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。
- 揭秘嵌入式 MCU:浮点数据处理难点及应对策略2025/6/20 15:19:07
- 嵌入式通信 UART 大揭秘:经典面试题深度剖析2025/6/12 16:35:20
- 深度解析:STM32 ADC 自身误差来源大揭秘2025/6/6 16:08:32
- 嵌入式数模电中 MOS 管经典知识2025/5/26 16:26:08
- EMMC和NAND闪存的区别2025/4/30 16:52:00