sdram基础知识总结

sdram基础知识总结,第1张

  SDRAM

  SDRAM:Synchronous Dynamic Random Access Memory,同步动态随机存储器,同步是指内存工作需要同步时钟,内部的命令的发送与数据的传输都以它为基准;动态是指存储阵列需要不断的刷新来保证数据不丢失;随机是指数据不是线性依次存储,而是自由指定地址进行数据读写。

  所谓的影响性能是并不是指SDRAM的带宽,频率与位宽固定后,带宽也就不可更改了。但这是理想的情况,在内存的工作周期内,不可能总处于数据传输的状态,因为要有命令、寻址等必要的过程。但这些 *** 作占用的时间越短,内存工作的效率越高,性能也就越好。

  非数据传输时间的主要组成部分就是各种延迟与潜伏期。通过上文的讲述,大家应该很明显看出有三个参数对内存的性能影响至关重要,它们是tRCD、CL和tRP。每条正规的内存模组都会在标识上注明这三个参数值,可见它们对性能的敏感性。

  以内存最主要的 *** 作——读取为例。tRCD决定了行寻址(有效)至列寻址(读/写命令)之间的间隔,CL决定了列寻址到数据进行真正被读取所花费的时间,tRP则决定了相同L-Bank中不同工作行转换的速度。现在可以想象一下读取时可能遇到的几种情况(分析写入 *** 作时不用考虑CL即可):

  1.要寻址的行与L-Bank是空闲的。也就是说该L-Bank的所有行是关闭的,此时可直接发送行有效命令,数据读取前的总耗时为tRCD+CL,这种情况我们称之为页命中(PH,Page Hit)。

  2.要寻址的行正好是前一个 *** 作的工作行,也就是说要寻址的行已经处于选通有效状态,此时可直接发送列寻址命令,数据读取前的总耗时仅为CL,这就是所谓的背靠背(Back to Back)寻址,我们称之为页快速命中(PFH,Page Fast Hit)或页直接命中(PDH,Page Direct Hit)。

  3.要寻址的行所在的L-Bank中已经有一个行处于活动状态(未关闭),这种现象就被称作寻址冲突,此时就必须要进行预充电来关闭工作行,再对新行发送行有效命令。结果,总耗时就是tRP+tRCD+CL,这种情况我们称之为页错失(PM,Page Miss)。

  

  显然,PFH是最理想的寻址情况,PM则是最糟糕的寻址情况。上述三种情况发生的机率各自简称为PHR——PH Rate、PFHR——PFH Rate、PMR——PM Rate。因此,系统设计人员(包括内存与北桥芯片)都尽量想提高PHR与PFHR,同时减少PMR,以达到提高内存工作效率的目的。

  SDRAM 基本知识

  SDRAM只有一组地址线,一组数据线,其中地址线分为行地址和列地址,它通过RAS行地址锁存器和CAS列地址锁存器来实现行列。很多人可能会跟我一样,算一下它的容量不符合自己板子,下面就是计算容量的公式。这也是公司比较正规的表示方法:

  2,097,152-WORDS X 4BANKS X 16-Bits

  4,194,304-WORDS X 4BANKS X 8-Bits

  8,388,608-WORDS X 4BANKS X 4-Bits

  SDRAM即同步动态RAM :所有输入信号均在时钟上升沿被采样,需要动态刷新保持数据

  1、重要的连接信号:

  a、 RAS:行地址锁存

  b、 CAS:列地址锁存

  c、 WE:写使能

  d、 DQ0-DQ15:数据总线

  f、 A10连接自动放电

  2、扩展方式:

  使用双片级联,将16位数据线扩展为32位,从而与32位CPU匹配,优化SDRAM性能。扩展后一个地址对应32位,从而一个地址单元以4Byte进行数据访问时,内存会忽略A0和A1,故SDRAM的A0接CPU数据线的A2。如果需要访问地址偏移为01的单个字节,通过DQML和DQMH信号进行帮助。

  3、SDRAM的burst mode:一种利用内部列地址发生器来工作的高速读写模式,只要设置最开始的列地址,后面的地址就可以通过内部的列地址发生器来自动生成。

  4、SDRAM的初始化:

  SDRAM上电后使用前必须要经过一段初始化 *** 作才可以使用。这个 *** 作过程是标准的过程。这个过程如下:

  a、 放电(precharge):关闭存储单元,使存储单元无效。

  b、 自动刷新(auto-refresh)

  c、 加载模式寄存器(Load Mode Register)

  d、 正常读写

  

  在输入precharge命令后,因为必须是对所有BANK进行Precharge,所以A10这个管脚要设置成高,因此在Precharge后面要做一个读的 *** 作,这个 *** 作最主要的是在SDRAM的寻址空间里设置的地址必须是A10是高的。在输入Auto-refresh命令后,一般要跟几句空 *** 作或者读什么之类的,反正要达到延迟的目的,以使得SDRAM有时间来完成refresh。之后就是要设置SDRAM的模式寄存器,这个寄存器里一般设置了burst长度,CAS,burst类型, *** 作模式,还有是设置SDRAM是工作在单个读写 *** 作还是burst *** 作下。而这个寄存器的设置也是通过地址线来设置的,所以在发出Load Mode Register命令后要做一个 *** 作可是使得在SDRAM的地址线上出线的值就是你要设置的值。这里很有必要提醒的一下的是,这个 *** 作是8位的 *** 作。设置完模式寄存器后就进入正常 *** 作模式。

  5、基本的读写 *** 作:

  SDRAM的基本读 *** 作需要控制线和地址线相配合地发出一系列命令来完成。先发出BANK激活命令(ACTIVE),并锁存相应的BANK地址(BA0、BA1给出)和行地址(A0~A12给出)。BANK激活命令后必须等待大于tRCD(SDRAM的RAS到CAS的延迟指标)时间后,发出读命令字。CL(CAS延迟值)个工作时钟后,读出数据依次出现在数据总线上。

  在读 *** 作的最后,要向SDRAM发出预充电(PRECHARGE)命令,以关闭已经激活的页。等待tRP时间(PRECHARGE)命令,以关闭已经激活的页。等待tRP时间(PRECHAREG命令后,相隔tRP时间,才可再次访问该行)后,可以开始下一次的读、写 *** 作。SDRAM的读 *** 作只有突发模式(Burst Mode),突发长度为1、2、4、8可选。SDRAM的基本写 *** 作也需要控制线和地址线相配合地发出一系列命令来完成。先发出BANK激活命令(ACTIVE),并锁存相应的BANK地址(BA0、BA1给出)和行地址(A0~A12给出)。

  BANK激活命令后必须等待大于tRCD的时间后,发出写命令字。写命令可以立即写入,需写入数据依次送到DQ(数据线)上。在最后一个数据写入后延迟tWR时间。发出预充电命令,关闭已经激活的页。等待tRP时间后,可以展开下一次 *** 作。写 *** 作可以有突发写和非突发写两种。突发长度同读 *** 作。

  :

  6、AT91sam9260 SDRAM

  型号MT48LC16M16A2,为4MB*4*16bit=32MB,采用双片级联构成32位64MB的SDRAM。SDRAM采用地址信号线复用。行寻址使用A0-A12,寻址范围8K字节;列寻址使用A0-A8,寻址范围512字节;bank寻址使用BA0-BA1,寻址四个bank。使用额外的四根信号线连接两片SDRAM的BA[1:0]。

  AT91SAM9260使用SDRAMC初始化SDRAM初始化顺序如下:

  a、 设置配置寄存器SDRAMC_CR,填入寄存器中的值单位均为时钟周期:

  NC: Number of Column Bits,9

  NR: Number of Row Bits,13

  NB: Number of banks,4

  CAS: CAS Latency,2-3

  DBW:数据位宽32位

  tWR:Write Recover TIme,14ns

  tRC: Row Cycle Delay, 默认值7

  tRP: Row Precharge Delay,默认值3

  tRCD:Row To Column Delay,15-20ns

  tRAS:AcTIve To Precharge Delay,37-44ns

  tXSR:Exit Self Refresh To Active Delay,67-75ns

  b、 在存储设备寄存器(SDRAMC_MDR)中设置存储类型为SDRAM

  c、 提供200us的延迟

  d、 向SDRAM设备发出NOP命令:设置SDRAM 模式寄存器中设置模式为1,向SDRAM任意地址执行写 *** 作。

  e、 向SDRAM设备发出放电命令:设置SDRAM 模式寄存器中设置模式为2,向SDRAM任意地址执行写 *** 作。

  f、 提供8个自动刷新周期:设置SDRAM 模式寄存器中设置模式为4,向SDRAM任意地址执行写 *** 作。

  g、 发出模式寄存器设置周期,配置SDRAM模式寄存器参数,尤其是CAS Latency和burst length。程序必须设置模式寄存器为模式3,对SDRAM执行写访问,地址中BA[1:0]必须为0

  h、 进入正常模式:设置SDRAM 模式寄存器中设置模式为0,向SDRAM任意地址执行写 *** 作。

  在SDRAMC Rfresh Timer寄存器的count字段中写入刷新率,刷新率为刷新周期间的延迟,自动刷新周期7.81us*100MHz=781

  SDRAM(Synchronous DRAM),因为Synchronous,所以所有信号都是和时钟信号同步。可以把SDRAM看成是EXCEL电子表格,通过行地址和列地址就唯一的锁定了一个单元格的内容,一般的SDRAM都有2个或者两个以上的Bank,就像一个EXCEL文档有2个或者两个以上的sheet,每个sheet又由行号和列号锁定单元格内容。

  在实际工作中,bank地址和行地址一起发出,这个命令叫做行激活(Row Active),此后列地址和 *** 作指令(读或写)也一起发出,这两组信号之间有个延迟。根据行业标准,定义此时间为从行有效到读/写命令发出之间的间隔tRCD,即RAS to CAS Delay(RAS至CAS延迟,RAS就是行地址选通脉冲,CAS就是列地址选通脉冲)。这是SDRAM一个很重要时序参数,Uboot初始化时候要配置。在列地址被选中后,数据传输过程被触发,但在这之前有个数据准备时间,即CL(CAS Latency),它也是一个重要的SDRAM参数,但该时间只是针对读 *** 作,写 *** 作没有这一时延。

  SDRAM的数据传输基本上都是连续的,所以SDRAM中有突发传输的概念,突发(Burst)是指在同一行中相邻的存储单元连续进行数据传输的方式,连续传输的周期数就是突发长度(Burst Lengths,简称BL),在初始化之前要通过寄存器定义。 在进行突发传输时,只要指定起始列地址与突发长度,SDRAM就会依次地自动对后面相应数量的存储单元进行读/写 *** 作而不再需要控制器连续地提供列地址这样,除了第一笔数据的传输需要若干个周期(主要是之前的延迟,一般的是tRCD+CL)外,其后每个数据只需一个周期的即可获得。

  在数据读取完之后,为了腾出读出放大器以供同一L-Bank内其他行的寻址并传输数据,SDRAM芯片将进行预充电(precharge)的 *** 作来关闭当前工作行。从开始关闭现有的工作行,到可以打开新的工作行之间的间隔就是tRP(Row Precharge command Period,行预充电有效周期)。

  大家可以计算一下,三个规格的容量都是128M,大家可以参照一下。(因为行列复用,所以地址线的数目一般是算双倍)

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/2478405.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-04
下一篇 2022-08-04

发表评论

登录后才能评论

评论列表(0条)

保存