(一) ARM 内存SDRAM 讲解
2、SDRAM内存工作原理
上面产生的误解关于 Bank ,这个bank 不是 和 S3C2440 芯片有关系(RAM 自身有bank , SDRAM 自身也有bank ,就像书 有 好几章节一样)
所以人们在 SDRAM内部分割成多个 L-Bank,目前基本都是 4个(这也是SDRAM规范中的最高L-Bank数量),由此可见,在进行寻址时就要先确定是哪个 L-Bank,然后在这个选定的 L-Bank中选择相应的行与列进行寻址。因此对内存的访问,一次只能是一个 L-Bank工作。如图2-50
当对内存进行操作时(见下图),先要确定操作L-Bank,因此要对L-Bank进行选择。在内存芯片的外部管脚上多出了两个管脚BA0, BA1,用来片选4个L-Bank
内存外接管脚地址线只有13根地址线A0~A12,它最多只能寻址8KB内存空间,到底使用什么机制来实现对64M内存空间进行寻址的呢?
SDRAM的行地址线和列地址线是分时复用的,即地址要分两次送出,先送出行地址(nSRAS行有效操作),再送出列地址(nSCAS列有效操作)。这样,可以大幅度减少地址线的数目,提高器件的性能和制作工艺复杂度。
但寻址过程也会因此而变得复杂。实际上,现在的SDRAM一般都以L-Bank为基本寻址对象的。由L-Bank地址线BAn控制L-Bank间的选择,
行地址线和列地址线贯穿连接所有的L-Bank,每个L-Bank的数据的宽度和整个存储器的宽度相同,这样,可以加快数据的存储速度。同时,BAn还可以使未被选中的L-Bank工作于低功耗的模式下,从而降低器件的功耗。
开发板内存控制器管脚接线(以MINI2440开发板为例)-
上图是S3C2440提供的两片16位芯片并联连接示意图,An是CPU地址总线,其中A2~A14为内存芯片寻址总线,之所以地址寻址总线从A2开始是因为内存地址都是按字节对齐的,,A24,A25为L-Bank片选信号,Dn为CPU数据总线,其它为对应控制信号线。
通过S3C2440 16位宽内存芯片接线图可以看出,两片内存芯片只有两个地方不一样,LDQM, UDQM和数据总线DQn接线方式不一样。
{LDQM和UDQM}
由于存储芯片位宽为16位,一次可以进行两个字节的读取。但是,通常操作系统里最小寻址单位是1字节,因此内存控制器必须要保证可以访问内存里每一个字节。UDQM ,LDQM分别代表16位数据的高,低字节读取信号,当读取数据时,LDQM /UDQM分别用来控制16位数据中高低字节能否被读取,当LDQM /UDQM为低电平时,对应的高/低字节就可以被读取,如果LDQM /UDQM为高电平时,对应的高/低字节就不能被读取。当向内存里写入数据时,LDQM /UDQM控制数据能否被写入,当LDQM /UDQM为低电平时,对应的高/低字节就可以被写入,如果LDQM /UDQM为高电平时,对应的高/低字节就不能被写入。通过对LDQM /UDQM信号的控制可以控制对两个存储芯片存储数据,由于两个存储单元的地址线是通用的,他们都能接收到CPU发出的地址信号,但是,发给两个存储单元的LDQM /UDQM信号是不同的,以此来区分一个字的高低字节。
S3C2440A为32位CPU,也就是说其数据总线和地址总线宽度都是32位(可以理解为32根线一端连接CPU内部,另外一端连接向内存控制器),那么内存数据的输入/输出端也要保证是32位总线,MINI2440上采用两片16位宽总线内存芯片并联构成32位总线。其中一个芯片连接到CPU数据总线的低16位,另外一个芯片连接到数据总线上的高16位,并联成32位总线,因此两个芯片的输入/输出总线连接到CPU总线上的不同管脚上。
总结: 知道这些就可以了,至于读写操作,这些 都是大神干的事情,偶们并不需要完全理解,当然时间够的话,理解了是好事,这个SDRAM芯片的时序图懂了,看其他的 datasheet 基本也不会有什么问题。记住不要舍本求末。
____________________________________________________________________________________________________________________________________________________________________________________
再次总结: // 还是要感谢各位的,一下子明白 为什么是64M
地址线感觉 也就 13根 啊?
【LV4】巴黎街头的黎明(1140225089) 9:16:10
你不会自己算算嘛
64M
1m等于2的20次方
64等于2的6次方
【LV4】巴黎街头的黎明(1140225089) 9:17:17
所以64M等于2的26次方
也就是有26个一
【LV4】止不住の漂泊(603172921) 9:18:38
我知道啊 但是这个图好像也就 15根 ADDR[2:14] 和 ADDR[24] ADDR[25]
15个1啊 实在没法理解
【LV3】忙碌的身影(1078097537) 9:20:06
哎呀
【LV4】止不住の漂泊(603172921) 9:20:22
卡了好久了
【LV3】忙碌的身影(1078097537) 9:23:21
不是两片32M的吗
两个并接在一起的嘛
【LV4】止不住の漂泊(603172921) 9:23:36
嗯
【LV3】忙碌的身影(1078097537) 9:23:40
地址线就是15根
【LV4】止不住の漂泊(603172921) 9:23:43
是这个原因吗
DSC$T.png)
【LV4】巴黎街头的黎明(1140225089) 9:23:49
是的
【LV3】忙碌的身影(1078097537) 9:23:50
15根不就是32M吗
【LV4】止不住の漂泊(603172921) 9:24:30
。。。。好像是的
【LV3】忙碌的身影(1078097537) 9:24:37
W_[PKS_35XA~%$SQ0_SRK9.gif)
【LV4】巴黎街头的黎明(1140225089) 9:25:25
15跟不是32
m
【LV4】止不住の漂泊(603172921) 9:25:41
为啥
【LV4】巴黎街头的黎明(1140225089) 9:25:42
大兄弟
【LV4】止不住の漂泊(603172921) 9:26:15
好乱
【LV4】巴黎街头的黎明(1140225089) 9:27:55
1M=2的20次方
【LV3】忙碌的身影(1078097537) 9:28:01
哎呀
你们这些人啊
【LV4】巴黎街头的黎明(1140225089) 9:28:22
能不能说完好不
【LV3】忙碌的身影(1078097537) 9:28:25
地址线是行列复用的嘛
【LV4】止不住の漂泊(603172921) 9:28:40
2^10 1K
【LV3】忙碌的身影(1078097537) 9:28:48
bank0和bank1是行列复用的
都是用的addr[0:14]
算算
都是用的addr[2:14]
【LV4】巴黎街头的黎明(1140225089) 9:29:57
什么行列复用
【LV3】忙碌的身影(1078097537) 9:30:09
就是行地址和列地址
【LV4】巴黎街头的黎明(1140225089) 9:30:26
好吧
【LV3】忙碌的身影(1078097537) 9:31:32
Mini2440使用的SDRAM芯片是32M的HY57V561620,这是一个4Banks*4M*16bit的SDRAM,也就是由4个逻辑块(Logical Bank,简称L-Bank)组成,每个L-Bank有4M存储单元,每个单元是16bit。所有它的数据线是16根(DQ[15:0]);地址线有13根(A[12:0]),其中行地址13根(A[12:0]),列地址9根(A[8:0]);还有两根信号线(BA[1:0])用于选择L-Bank。
两个芯片(U6和U7)并接,就可以组成位宽32位的SDRAM,空间为64M,映射到nGCS6(BANK6),访问的地址空间为0x30000000~0x33ffffff。
这个里面有提到,部分地址线是行和列复用的
【LV3】忙碌的身影(1078097537) 9:33:11
所以不能简单的看地址线根数
【LV4】止不住の漂泊(603172921) 9:36:05
嗯 13+9=22 22根 4M 4*2*4=32 这样理解啊
【LV4】止不住の漂泊(603172921) 9:37:14
还是迷迷糊糊的
看来只能对自己说 不要在意细节了。。。。
【LV5】巴扎黑。(271526143) 9:46:36
哎
【LV5】巴扎黑。(271526143) 9:47:52

【LV4】止不住の漂泊(603172921) 9:50:38

好像是这样
这个更形象
【LV5】巴扎黑。(271526143) 9:51:25







(一) ARM 内存SDRAM 讲解的更多相关文章
- 【嵌入式开发】裸机引导操作系统和ARM 内存操作 ( DRAM SRAM 类型 简介 | Logical Bank | 内存地址空间介绍 | 内存芯片连接方式 | 内存初始化 | 汇编代码示例 )
[嵌入式开发]ARM 内存操作 ( DRAM SRAM 类型 简介 | Logical Bank | 内存地址空间介绍 | 内存芯片连接方式 | 内存初始化 | 汇编代码示例 ) 一. 内存 ...
- (三)内存 SDRAM 驱动实验 (杨铸 130 页)(勉强能懂个大概)
SDRAM 芯片讲解: 地址: 行地址 (A0-A12) 列地址 (A0-A8) 片选信号(BA0 BA1)(L-BANK)(因为SDRAM有 4片) 两片SDRAM 连线唯一区别在 UDQM ...
- JVM学习03_new对象的内存图讲解,以及引出static方法(转)
目录 -=-讲解对象创建过程中,-=-堆内存和栈内存的情况 -=-构造函数对类对象的成员变量的初始化过程 -=-构造函数出栈 -=-类的方法在不访问类对象的成员变量时造成的内存资源浪费怎么解决? -= ...
- 史上最详细JVM,Java内存区域讲解
本人免费整理了Java高级资料,一共30G,需要自己领取:传送门:https://mp.weixin.qq.com/s/JzddfH-7yNudmkjT0IRL8Q 运行时数据区域 JVM载执行Jav ...
- Java面试- JVM 内存模型讲解
经常有人会有这么一个疑惑,难道 Java 开发就一定要懂得 JVM 的原理吗?我不懂 JVM ,但我照样可以开发.确实,但如果懂得了 JVM ,可以让你在技术的这条路上走的更远一些. JVM 的重要性 ...
- 【java基础】(2)Java父类与子类的 内存引用讲解
从对象的内存角度来理解试试.假设现在有一个父类Father,它里面的变量需要占用1M内存.有一个它的子类Son,它里面的变量需要占用0.5M内存.现在通过代码来看看内存的分配情况:Father f = ...
- 最简单的 Java内存模型 讲解
前言 在网上看了很多文章,也看了好几本书中关于JMM的介绍,我发现JMM确实是Java中比较难以理解的概念.网上很多文章中关于JMM的介绍要么是照搬了一些书上的内容,要么就干脆介绍的就是错的.本文试着 ...
- 实验三——SDRAM
一.运行环境 开发板:jz2440 系统: ubuntu12.04 编译器:arm-linux-gcc 二.特殊寄存器 sdram的操作无需按照时序图来设置,只要设置好相关的13个寄存器,arm处理 ...
- 【嵌入式开发】 Bootloader 详解 ( 代码环境 | ARM 启动流程 | uboot 工作流程 | 架构设计)
作者 : 韩曙亮 博客地址 : http://blog.csdn.net/shulianghan/article/details/42462795 转载请著名出处 相关资源下载 : -- u-boo ...
随机推荐
- 常见 bug
1.发言时,输入框中输入多个空格.
- 定义 iOS 方法名等不错的规范
1.配置视图不应命名为 setxxxx, 而应叫做 showxxxx 2.让按钮高亮不应叫做 showxxx, 而应叫做 highlightedxxx. 3,弹出 toastView 可以用 show ...
- 《少有人走的路:心智成熟的旅程》--[美]M·斯科特·派克
<少有人走的路>,美国作家M·斯科特·派克所著 下面是我的书摘: * 归根到底,它告诉我们怎样找到真正的自我. * 人可以拒绝任何东西,但绝对不可以决绝成熟.决绝成熟,实际上就是在规避问题 ...
- C语言工具---Code::Blocks
Code::Blocks Code::Blocks 是一个开源的全功能的跨平台C/C++集成开发环境. Code::Blocks是开放源码软件.由纯粹的C++语言开发完成,它使用了著名的图形界面库wx ...
- Photoshop教您快速的制作标准一寸证件照教程
Photoshop教您快速的制作标准一寸证件照教程 对急需证件照的朋友,只要有一部相机,有电脑安装了PS软件,就可很快自己完成一寸照片的制作. 首先将相机卡里的照片存放在电脑硬盘里: 打开PS图片处理 ...
- 【周年版】Cnblogs for Android
前言 扒衣见君节刚过去但是炎热夏天还在继续: 自14年8月推出博客园Android客户端以来,断断续续发了十几个后续版本,期间出现过各种问题,由于接口等诸多因素,每个模块的功能都可能随着时间和博客园主 ...
- [zt]系统中常用MIPS指令
指令 功能 应用实例 LB 从存储器中读取一个字节的数据到寄存器中 LB R1, 0(R2) LH 从存储器中读取半个字的数据到寄存器中 LH R1, 0(R2) LW 从存储器中读取一个字的数据到寄 ...
- Neusoft(3)增加自己的内核模块
Linux版本 Ubuntu12.04LTS,内核版本为3.2.0-26-generic-ape 具体方法如下: 1.建立源文件,假设文件目录为path,文件名为hello.c源代码如下: #incl ...
- 【iCore3 双核心板_FPGA】例程十一:乘法器实验——乘法器使用
实验指导书及代码包下载: http://pan.baidu.com/s/1dEijBs1 iCore3 购买链接: https://item.taobao.com/item.htm?id=524229 ...
- Codeforces Round #350 (Div. 2) D2 二分
五一期间和然然打的团队赛..那时候用然然的号打一场掉一场...七出四..D1是个数据规模较小的题 写了一个暴力过了 面对数据如此大的D2无可奈何 现在回来看 一下子就知道解法了 二分就可以 二分能做多 ...