inside uboot (五) DRAM的构成

DRAM(Dynamic Random Access Memory),即动态随机存取存储器.

1. Storage Cell

 

如上图,一个DRAM的基本存储单元由4个部分组成。

Storage Capacitor,即存储电容,它通过存储在其中的电荷的多和少,或者说电容两端电压差的高和低,来表示逻辑上的 1 和 0。

Access Transistor,即访问晶体管,一般是场效应管。它的导通和截止,决定了允许或禁止对Storage Capacitor 所存储的信息的读取和改写。

Wordline,即字线,也可以叫行地址线。它决定了 Access Transistor 的导通或者截止。

Bitline,即位线,也可以叫列地址线。它是外界访问 Storage Capacitor 的唯一通道,当 Access Transistor 导通后,外界可以通过 Bitline 对 Storage Capacitor 进行读取或者写入操作。

1. 读数据时,Wordline 设为逻辑高电平,打开 Access Transistor,然后读取 Bitline 上的状态

2. 写数据时,先把要写入的电平状态设定到 Bitline 上,然后打开 Access Transistor,通过Bitline 改变 Storage Capacitor 内部的状态。

2. Memory Array

 

 

如上图,多个存储单元就可以组成一个存储矩阵了。这个存储矩阵叫做Memory Array。

 

如上图,读写数据时,首先要激活Wordline。

 

然后从bitline上读写数据。

 

上图Memory Array表示了4根地址线(绿色,2根行地址线,2根列地址线),通过行列的解码器来访问16个内存存储单元的Memory Array。也就是2的N次方。

 

对上图的Memory Array来说,没有画出地址线,我们可以分析出这个MemoryArray需要行地址线3根来产生8种组合,列地址也一样。这样6根地址线,2的6次方为64,可以访问到上图中64个bit。

3. Memory Bank

 

多个Memory Array合并在一起构成一个Bank。上图的bank由4个Memory Array构成,也就是说我们给出一个确定地址,可以一次访问到4个 bit。

4. Memory Device

 

多个bank组成一个memory device,即内存芯片。因此我们在读写DRAM时,还要给出BANK地址,因此这时,内存地址由Memory Bank地址+Memory Array地址。

因为DRAM需要一直刷新来维持数据,因此我们在读写完一个BANK上的数据后,下次会读写另一个BANK上的数据,来给上一个BANK以刷新时间,提高的读写效率。

5. Memory Rank

多个Memory device可以组成一个RANK.

每个Memory device的数据线是排列在一起分别连接在内存控制器上,而地址线是共用。也就是说,如果有4个Memory device,并且每个Memory device里的Memory array是8位的话,每个Memory device中读出8个位,一次可以读出32位个bit。

6. 原理图分析

 

1) 数据线连接

从上面原理图和datasheet可以看到,原理图上用了两片K4T1G164QE,这两片K4是16个IO的,所以两片K4的数据线

并排连接到CPU的数据线上,因此可以一次读取到32位数据。

2) 地址线连接

两片K4的地址线和bank线是共用的,因此如果给出一个地址,那么这个地址前两个字节从第1片读出,后两个字节从第2片

中读出,因此构成4字节32位数据。

3) 容量计算

从芯片上可以看到是1Gb,也就是128MB。

从地址线可以算出,一个芯片上有13个行地址线,10个列地址线,3个bank线,一次能读取16位。

因此,一片的总大小是2的26次方再乘以2,也就是128MB。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.tpcf.cn/news/432160.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用json-lib进行Java和JSON之间的转换

转自http://www.cnblogs.com/mailingfeng/archive/2012/01/18/2325707.html 1. json-lib是一个java类库,提供将Java对象,包括beans, maps, collections, java arrays and XML等转换成JSON,或者反向转换的功能。 2. json-lib 主页 &#xff1a…

inside uboot (六) DRAM芯片的控制线及时序

Clock (差分信号,CLK和nCLK)为时钟信号 (同一个rank共用) CKE 时钟信号使能 (同一个rank共用) RAS 为行选…

MVC — 初步理解IIS工作流程

声明:本文只是自己的总结和积累。IIS7.x 目录 IIS流程及组成部分ASP.NET流程及组成部分IIS与ASP.NET MVC一、IIS流程及组成部分  1、Http.SYS:负责监听HTTP请求(它不属于IIS范畴,但是和IIS联系紧密) Http.SYS和IIS是…

卷积积分这样学!

卷积积分是一种数学运算,那么既然是数学运算,那么就得有数学的特性——定义、性质、定理。 本文将从卷积积分的理论、案例、求解方法、知识图谱四方面介绍卷积积分! 一、【理论】卷积积分的理论 卷积积分定义: 卷积图解01 卷积…

Canvas应用绚烂效果-creatjs实现

js文件var content;//画布var stage;//舞台var spriteSheet;//精灵列表类var sprite;//精灵window.οnlοadfunction(){ //获取画布 contentdocument.getElementById_x_x_x_x_x_x("canvas"); //画布上创建舞台 stagenew createjs.Stage(content); //舞…

世界地图并不是世界的真实样貌!甚至误差非常大

现在所用的世界地图并不是世界的真实样貌,甚至误差大的离谱。 地球属于三维球体,想完整地表现到二维平面上是不可能的,必须牺牲一些真实属性。因为三维降到二维肯定存在扭曲失真,这是维度差异所决定的,不可避免。 我们…

error MSB6006: cmd.exe exited with code 3

利用vs2012和qt5.5.1,在编译例子时发生如下错误: C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\Microsoft.CppCommon.targets(172,5): error MSB6006: “cmd.exe”已退出,代码为 3。 图片如下: 解决办法如下&#x…

OSGI(面向Java的动态模型系统)

http://baike.baidu.com/subview/362847/6280632.htm?fraladdin 转载于:https://www.cnblogs.com/suifengbingzhu/p/4104109.html

JQuery方法

1、replace var str "I am a man"; str.replace(a,b); 说明:jquery的replace()函数默认替换第一项; var re new RegExp(a,g); str.replace(re,b); 说明:RegExp是正则表达式对象, g表示替换全部 2、json与对象的转换 v…

数学天才用5万字让你读懂:微积分!

前面接连发了三篇麦克斯韦方程组的文章(积分篇、微分篇和电磁波篇),从理论上来说,讲麦克斯韦方程组不讲微积分是不行的,因为人家本来就是一组积分方程和一组微分方程。 但是,为了让更多人,尤其是…

指定一个actor对pawn不可见

1. 把一个staticmesh作成一个actor 2. 给actor添加一个tag 3. 在pawn的beginPlay里面查找这个actor,并设置actor的owner为pawn,然后调用set owner no see

oracle中DECODE与CASE的用法区别

对于CASE与DECODE其实并没有太多的区别,他们都是用来实现逻辑判断。Oracle的DECODE函数功能很强,灵活运用的话可以避免多次扫描,从而提高查询的性能。而CASE是9i以后提供的语法,这个语法更加的灵活,提供了IF THEN ELSE…

error C4668: 没有将“_WIN32_WINNT_WIN10_TH2”定义为预处理器宏,用“0”替换“#if/#elif”

一般为Windows中的宏和UE4冲突所致,需要用如下头文件包裹冲突的头文件: #include "Windows/AllowWindowsPlatformTypes.h" #include "Windows/PreWindowsApi.h" #include "冲突的头文件" #include "Windows/PostWi…

Delphi XE7实现的任意位置弹出菜单

Delphi XE7中目前还没有弹出菜单组件,这个弹出菜单应用很普遍,在JAVA开发的安卓程序中很简单就可以用上了,应该说是一个标准控件。看了一些例子,但是都不能满足我想在任意位置弹出菜单需求,于是自己在网上找了一个例子…

计算曲线的长度

若一条平面曲线可表达成标准方程 那么它的长度就是: 其中a、b为x的上下限。 若平面曲线可表达成参数方程 那么它的长度就是:

MATLAB 求曲线长度

1. 求曲线长度积分公式 2. 已知曲线方程 3. 已知系数,曲线方程为 y 0.0001 * x 0.0005 * x 20 4. 已知曲线的x的起点和终点 -90.78 ,90.78 5. matlab中定义曲线方程 >> syms x; >> y 20 0.0005 * x ^ 2 0.0001 * x ^ 3; 6. matlab中…

C++调用matlab dll

1. 编写matlab函数 2. 命令行输入 mex -setup 选择 mex -setup C 3. 命令行输入 mbuild -setup 选择 mex -setup C -client MBUILD 4. 命令行输入 mcc -W cpplib:add -T link:lib add.m -C 第一个add为生成的dll名称,第二个add为m文件名称,m文…

java方法使用

1 在方法中可以调用同一个类中的方法和属性,但是不能定义方法。system.out语句只能在方法中 2 方法重载:(1)同一个类中 (2)方法名相同 (3)参数列表的类型不同或者个数不同 代码&am…