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。也就是2N次方。

 

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

3. Memory Bank

 

多个Memory Array合并在一起构成一个Bank。上图的bank4Memory 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.mzph.cn/news/432160.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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…