(一) 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
是这个原因吗
【LV4】巴黎街头的黎明(1140225089) 9:23:49
是的
【LV3】忙碌的身影(1078097537) 9:23:50
15根不就是32M吗
【LV4】止不住の漂泊(603172921) 9:24:30
。。。。好像是的
【LV3】忙碌的身影(1078097537) 9:24:37
【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 ...
随机推荐
- Delphi中对BCD码的直接支持 (转)
最近在Delphi下写软件,需要将数据转换为BCD码和将BCD码转换为其它数据类型,从网上搜索了一下,没有发现好的函数,于是就想自定义函数来完成BCD与其它格式的数据转换功能.但最终没有动手写,先查查 ...
- light oj 1047 - Neighbor House 动态规划
题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=87730#problem/C 题目: Description The peopl ...
- select在各个浏览器中的兼容性问题
我们知道select标签在各个浏览器中的属性和各浏览器的支持各有些不同,从而造成select选择框在各浏览器的显示有不同. 下面我们通过对主要CSS属性的支持,打造全兼容select. 对select ...
- 详解CALayer 和 UIView的区别和联系
详解CALayer 和 UIView的区别和联系 前言 前面发了一篇iOS 面试的文章,在说到 UIView 和 CALayer 的区别和联系的时候,被喵神指出没有切中要点,所以这里就 CALay ...
- [LintCode] Shape Factory 形状工厂
Factory is a design pattern in common usage. Implement a ShapeFactory that can generate correct shap ...
- vs2013打开 2010项目时: 请确认 <Import> 声明中的路径正确,且磁盘上存在该文件
错误原因:原来2010项目中使用的路径是 v11.0,但是我的 C:\Program Files (x86)\MSBuild\12.0\ 是 12.0,所以该成 12.0 解决办法:将项目文件(.cs ...
- Rocky4.2下安装金仓v7数据库(KingbaseES)
1.准备操作系统 1.1 系统登录界面 1.2 操作系统版本信息 jdbh:~ # uname -ra Linux jdbh -x86_64 # SMP Fri Dec :: CST x86_64 G ...
- PHP中文函数顺序排列一数组且其序数不变
函数Abs() 描述: mixed abs (mixed number); Returns the absolute value of number. If the argument number i ...
- Android课程---环境配置很重要
- IOS第13天(3,私人通讯录,登陆状态数据存储,数据缓存, cell的滑动删除,进入编辑模式,单个位置刷新 )
*****联系人的界面的优化 HMContactsTableViewController.m #import "HMContactsTableViewController.h" # ...