Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1380224
  • 博文数量: 860
  • 博客积分: 425
  • 博客等级: 下士
  • 技术积分: 1464
  • 用 户 组: 普通用户
  • 注册时间: 2011-08-20 19:57
个人简介

对技术执着

文章分类

全部博文(860)

文章存档

2019年(16)

2018年(12)

2015年(732)

2013年(85)

2012年(15)

我的朋友

分类: 嵌入式

2015-03-14 14:28:38

原文地址:SDRAM/DDR/DDR2学习笔记 作者:mutes

http://pctanyicheng.blog.163.com/blog/static/173820242010689367285/

      在说明初始化之前先了解一下SDRAM的一些基础知识吧. 

      SDRAM (Synchronous Dynamic Random Access Memory),同步动态随机存储器。同步是指其时钟频率与CPU的前端总线的系统时间频率相同,并且他的内部命令的发送与数据的传输都是以这个时钟为基准的,动态是指存储阵列需要不断的刷新才能保证数据的不丢失。随机是指数据不是线性存储的,是可以自由指定地址进行数据读写。

      位宽:是指内存一次数据传输的数据量就是位宽,以位为单位。

SDRAM的内部结构:
    SDRAM相当于一个excel,一个工作溥中有几个工作表,每个工作表里有行列。
    SDRAM中的一个bank就相当于excel中的一个工作表, SDRAM中的行(Column)与列(Row)相当于工作于中的行与列,我们对内存的读写就是根据bank 号 Column 、Row来准确的找到所需要的单元格(存储阵列)。
    由于技术、成本等原因,不可能只做一个全容量的Bank,而且最重要的是,由于SDRAM的工作原理限制,单一的Bank将会造成非常严重的寻址冲突,大大降低了内存的效率,所以把SDRAM内部分割成多个Bank,较早以前是2个,目前市面上大多都是4个Bank的,

SDRAM容量的计算。
   SDRAM容量 =  单元格的总数(地址总数) X  位宽
        单元格的总数 = Bank数 X Column数 X ROW数

       如果要以字节为单位的话,刚需要将SDRAM容量(bit) / 8(bit)

   型号为:HY57V641620E的为64Mbit (8M字节)位宽为16bit 的SDRAM,内部结构为4个Bank,Column数为 8(CA0-CA7),Row数为12(RA0- RA11),SDRAM的行地址线和列地址线是分时复用的,即地址要分两次送出,先送出行地址,再送出列地址。这样,可以大幅度减少地址线的数目。

       计算方法为:每个bank的容量为: 2 Row 次方 X 2 的Column X 16(bit) = 256 X4096  X 16  /1024 =  16384 bit = 16 Mbit = 2 M字节,再乘以bank 数就是64 Mbit (8M字节了),更简单的方法是行列加起了相当于20根地址线,所以每个bank能访问的地址空间是 2 的20次方 =  1048576 bit =  1M字节,但由于第次传输的数据位宽是16位,所以每个bank的空量是 16 Mbit ,总共有4个bank ,所以就有64Bbit的容量,换成字节单位就是8M字节。


初始化:

上电后,等到VDD和VDDQ稳定后并且CKE设为高电平时。

1.将SDRAM的一些特性写入配置寄存中,如,同步时间 ,列数,行数,CAS延时等,还有需要将数据线宽度写入模式寄存器,这个数据宽度是要根据实妹的硬件接口宽度的。

2.  等待一个最少200us 的延时,这个根据不同的SDRAM可能不同

3.  向SDRAM 发一个NOP命令:应用程序需要把模式模式寄存器写为模式1并写一个数到任意地址

4. 设置所有Bank 预冲电(precharge):应用程序需要将模式寄存器设置为模式2并下任意地址写入数据,可能需要延时.

     实际上,预充电是一种对工作行中所有存储体进行数据重写,并对行地址进行复位,同时释放S-SMP(重新加入比较电压,一般是电容电压的1/2,以有助于判断读取数据的逻辑电平,,S-AMP是通过一个参考电压与存储体的电压比较来判断逻辑值的),以用来准备新的工作。

5. 自动刷新(auto refresh). 提供8个自动刷新时序。将模式寄存器切换到 第四种方式,并向任意地址写一个数据,重复8次。

    刷新说明,因为SDRAM需要不断的进行刷新,所在称作为动态内存-DRAM,刷新操作有两种,一种是Auto Reresh,简称AR,另一种是Self Refresh ,简称是SR,但不管是哪种刷新方法,都不需要外部提供行地址住处,因为他们都是内部的自动操作。结于AR,SDRAM有一个行地址生成器(也称亻刷新计数器)用来自动依次生成行地址。由于刷新是针对一行中所有存储单无际是行的,所以无需列寻址,或都说CAS在RAS之前,所以AR在有的地方叫作 CBR(意思是CAS Before RAS)式刷新。

      刷新时间,目前公认的标准是,存储单元中电容的数据有效保存上限是64ms(1000ms = 1 s),也就是说每一行新的循环周期是64ms,我们在有的内存上看这样样的参数4096 Refresh Cycles/64ms之类的信息,从中可以看出,这个内存的行是 

 12行,相当于每一行就行地址的扫描时间是64ms / 4096 = 15.625us(1000us = 1ms)。

 

6. 设置CAS延时与突发长度。数据将模式寄存器设置为第三种模式,然后向写入任意数据。

     空发时间Burst  Length :空发长度是什么呢,如果突发长度(BL)为4,那就是每次传输的的是4 X W(数据宽度)的数据,这样就可能造成第二笔数据是不需要的,这就引入了数据掩码(DQM)技术,通过DQM,,内存可以控制I/O数据取消哪些输出或输入的数据。

7,设置为正常工作模式,然后向SDRAM写入任意

8.将刷新率写入SDRAM的刷新计数器中,刷新率=刷新周期之间的延迟。

以上初始化的基于MCU是at91sram7se,SDRAM是HY57V641620XXX  



内存颗粒识别

  看看如今CPU的发展,频率一再冲高,二级缓存也一路飙升。但是CPU速度越来越快,是不是整个系统的性能提升了吗?当然不是!如果把整个系统 比喻成一个木水桶,它性能就好比是水桶的盛水量,那系统的各个配件就是组成水桶的木板。如果其中一片木板短了一截,整个水桶的盛水量就会跟着降下来。换言 之,要使整个电脑系统的每个配件都发挥全部功效,那就要求配件之间不存在所谓的“瓶劲”。在众多的瓶劲中,内存方面的瓶劲尤为突出。如何挑选适合自己的内 存条,成为很多DIYer们考虑的重要问题。

  首先,你要了解自己的CPU到底是个什么“样子”。这里的样子就是CPU自己的带宽大小。比如说P43.0c的外频是200MHz,前端总线频 率高达800MHz,而它提供的前端总线带宽是64位总线位宽×200 MHz系统外频×4倍/8=6400MB/s。要让系统不会出现瓶劲,那我们就要让内存的带宽也要达到6400MB/s。如果是在以前,这在技术上根本就 不可能,不过电脑厂商们从另外一个方面解决了这个问题,那就是内存的双通道DDR技术!所谓双通道,它是相对于以前的单通道来说的。在单通道时代,无论你 插上几根内存条,内存总带宽就是单条内存的带宽,就算是现在,除了I850E支持的Rambus PC1066规范外,根本没有内存可以满足处理器的需要。而双通道DDR技术,是一种可以让2条DDR内存共同使用,数据并行传输的技术。双通道DDR技 术的优势在于,它可以让内存带宽在原来的基础上增加一倍,这对于P4处理器来说,可谓最佳搭配。不过要说明一点,双通道DDR技术并不只是针对P4的超线 程技术而言的。就拿FSB533MHz的P4处理器来说,其本身带宽达到4.3G/s,而一条DDR333的带宽仅仅有2.7G/s,就算是现在当红的 DDR400的带宽也就3.2G/s。所以说双通道DDR技术的出现,在很大程度上解决了CPU“好汉使不出力”的情况,使主板、CPU、内存之间的传输 速率达到更好的协调。

  其次,对内存本身的选择,主要注意以下几个方面:

首先是内存的做工和用料。

 内存的做工和用料的好坏主要体现在PCB板质量、.布线设计是否合理、.使用的内存颗粒的质量等级和品牌自由品质控制。随着电脑芯片的频率增加, 稳定性也越来越重要,所以现在品牌内存大多采用6层板,目的就是为了设计具有完整的电源层和其他层,且完善的过滤杂波,来保证内存稳定的高速运转。而内存 颗粒的品质,一般人较难辨别,不过名牌内存条一般都会采用A级内存颗粒,质量绝对有保障,所以在这里向大家推荐买内存条的时候最好选名牌,这已经不仅仅是 钱的问题了,一不小心搞到一条差的内存条,轻侧让你身心疲惫,重则还要多花上几百块钱重新购买,真是欲哭无泪呀~~~(现在市场上主流的名牌内存 有:KINGSTONE,KINGMAX,金邦,三星金条等)

此外还要注意内存的remark!!

  提起remark,实在是让我们这些消费者深恶痛绝。俗话说,诚信第一,但那些JS就是要摆你一道,稍微不留神就要被“黑”。本人少说也帮人装 过几十台电脑,对电脑硬件还算略知一二,去年帮一哥们装机,就遇到被JS黑内存的状况。所以一气之下,回家上网收集了一下识别内存编号的文章,在这里拿出 来给大家分享一下:

三星颗粒 

  一、三星颗粒一般以KM开头 

  二、内存颗粒类型:4表示DDR SDRAM 

  三、芯片输出的数据位宽:40、80、16、32分别代表4位、8位、16位和32位 

  四、工作电压:H=DDR SDRAM,3.3V、L=DDR SDRAM,2.5V 

  五、内存颗粒位数:4:4Mbit、8:8 Mbit、16:16 Mbit、32:32 Mbit、64:64 Mbit、12:128 Mbit、25:256 Mbit、51:512 Mbit 

  六、芯片容量及刷新速度:0:64m /4K [15.6μs]、1:32m/2K [15.6μs]、2:128m/8K [15.6μs]、3:64m/8K [7.8μs]、4:128m/16K [7.8μs] 

  七、内存BANK:3:4排、4:8排

  八、电压:混合接口LVTTL+SSTL3(3.3V)、1:SSTL2(2.5V) 

  九、封装类型:T:66针TSOP II、B:BGA、C:微型BGA(CSP) 

  十、工作频率:0:10ns、100MHz(200Mbps);8:8ns、125MHz(250Mbps);Z:7.5ns、 133MHz(266Mbps);Y:6.7ns、150MHz(300Mbps);6:6ns、166MHz(333Mbps);5:5ns、 200MHz(400Mbps)

HYUNDAI

  一、HY是现代颗粒的标志

  二、内存颗粒类型:(57=SDRAM,5D=DDR SDRAM); 

  三、工作电压:空白=5V,V=3.3V,U=2.5V  

  四、芯片容量和刷新速率:16=16Mbits、4K Ref;64=64Mbits、8K Ref;65=64Mbits、4K Ref=128Mbits、8K Ref;129=128Mbits、4K Ref;256=256Mbits、16K Ref;257=256Mbits、8K Ref

  五、芯片输出的数据位宽:40、80、16、32分别代表4位、8位、16位和32位 

  六、内存BANK:1、2、3分别代表2个、4个和8个Bank,是2的幂次关系 

  七、电压代表:1:SSTL_3、2:SSTL_2 

  八、芯片版本:可以为空白或A、B、C、D等字母,越往后代表内核越新 

  九、功耗:L=低功耗芯片,空白=普通芯片 

  十、封装类型:JC=400mil SOJ,TC=400mil TSOP-Ⅱ,TD=13mm TSOP-Ⅱ,T TG=16mm TSOP-Ⅱ  

  十一、工作频率:55 :183MHZ、5 :200MHZ、45 :222MHZ、43 :233MHZ、4 :250MHZ、33 :300NHZ、L :DDR200、H :DDR266B、K :DDR266A


Micron(美光)

  一、 MT是代表Micron的产品 

  二、内存颗粒类型:48=SDRAM、4=DRAM、46=DDR SDRAM、6=Rambus 

  三、工作电压:C=5V Vcc CMOS,LC=3.3V Vdd CMOS,V=2.5V Vdd CMOS 

  四、设备号码

  五、内存容量:无字母=Bits,K=Kilobits(KB),M=Megabits(MB),G=Gigabits(GB) 

  六、芯片输出的数据位宽:4、8、16、32分别代表4位、8位、16位和32位 

  七、代表封装:TG=TSOPⅡ封装,DJ=SOJ,DW=宽型SOJ,F=54针4行FBGA,FB=60 针8*16 FBGA,FC=60针11*13 FBGA,FP=反转芯片封装,FQ=反转芯片密封,F1=62针2行FBGA,F2=84针2行FBGA,LF=90针 FBGA,LG=TQFP,R1=62针2行微型FBGA,R2=84针2行微型FBGA,U=μ BGA 

  八、内存颗粒速度:分为四大类 DRAM SD RAMBUS DDR

  1、DRAM 

  -4=40ns,-5=50ns,-6=60ns,-7=70ns 

  2、SDRAM,x32 DDR SDRAM(时钟频率 @ CL3) 

  -15=66MHz,-12=83MHz,-10+=100MHz,-8x+=125MHz,-75+=133MHz,-7x+=143MHz,- 65=150MHz,-6=167MHz,-55=183MHz,-5=200MHz 

  3、DDR SDRAM(x4,x8,x16)时钟频率 @ CL=2.5 

  -8+=125MHz,-75+=133MHz,-7+=143MHz 

  4、Rambus(时钟频率) 

  -4D=400MHz 40ns,-4C=400MHz 45ns,-4B=400MHz 50ns,-3C=356MHz 45ns,-3B=356MHz 50ns,-3M=300MHz 53ns 

+的含义 

  -8E支持PC66和PC100(CL2和CL3) 

  -75支持PC66、PC100(CL2和CL3)、PC133(CL=3) 

  -7支持PC66、PC100(CL2和CL3)、PC133(CL2和CL3) 

  -7E支持PC66、PC100(CL2和CL3)、PC133(CL2+和CL3) 

  -8支持PC200(CL2) 

  -75支持PC200(CL2)和PC266B(CL=2.5) 

  -7支持PC200(CL2),PC266B(CL2),PC266A(CL=2.5)。 

  九、功耗:L=低耗,blank=普通

WINBOND(华邦)

  一、W表示内存颗粒是Winbond生产 

  二、内存类型:98为SDRAM,94为DDR RAM  

  三、内存的版本号:常见的版本号为B和H; 

  四、封装类型,H为TSOP封装,B为BGA封装,D为LQFP封装 

  五、工作时钟频率:0:10ns、100MHz;8:8ns、125MHz;Z:7.5ns、133MHz;Y:6.7ns、 150MHz;6:6ns、166MHz;5:5ns、200MHz 

  但现今有一部分内存条在内存颗粒表面覆盖上了散热金属片,那这就看不到颗粒上的编码。这时候我们可以用一款内存检测软件来识别,他就是最近走红的AIDA。通过它我们可以轻易地看到内存的真面目。

  最后,内存品牌并不是代表内存颗粒的品牌,这一点要十分注意。不是说散装HY内存颗粒的内存条就是HY原厂内存, 那些往往就是一些散户加工而成,质量总的来说没什么保障。同样的,作为世界第一大内存生产厂商的Kingston,其使用的内存颗粒确是五花八门,既有 Kingston自己颗粒的产品,更多的则是现代(Hynix)、华邦(Winbond)、三星(Samsung)、南亚(Nanya)、英飞凌 (Infinoen)、美光(Micron)等等众多厂商的内存颗粒。JS的骗人手法天天在变,所以我们也要用知识武装自己,买之前一定要先了解清楚,务 必打赢每一次DIY商战。


阅读(1327) | 评论(0) | 转发(0) |
0

上一篇:关于守护进程

下一篇:存储器

给主人留下些什么吧!~~