SDRAM技术手册阅读总结-基于IS42S16400J

13 篇文章 7 订阅

  基于FPGA的DDR相关知识导航界面,点击查看。


  阅读SDRAM手册的意义并不是为了写SDRAM的控制器,在实际使用中SDRAM基本已经被DDR所取代。但是如果想要了解DDR的工作原理,建议读一遍SDRAM手册和使用Verilog HDL完成SDRAM控制器。原因在于DDR只是SDRAM的升级版本,将单沿采样变成双沿采样,为了达到读写提升效果,在硬件和接口上做了一些优化,但工作本质还是与SDRAM一致。

  在工作中很少会让你去写DDR的控制器(除非IP的速率不够或者控制方式达不到目的),大多直接调用IP。我觉得不管使用任何IP,如果知道IP的工作原理,那将事半功倍。如果连硬件原理都不知道,调用IP还要去搞清楚接口时序,真的很难。因为像SDRAM这种控制器读写方式其实很多,IP基本上都会包括这些读写方式,想使用其中一种读写方式,又要去看IP的手册,然后发现也与SDRAM的工作原理相关,然后又回到起点。或者是直接在网上找调IP的资料,如果能直接调试通过还好,如果调不通,估计就没法了。

  本文是两年前看SDRAM手册时留下的文档,以为搞丢了,结果在U盘里找到了,发公众号上就不会丢了,本文并不是为了写一个SDRAM控制器而写的,而是为了了解SDRAM的各种工作方式,方便以后需要,如果写简单控制器完全用不到大多数时序。这篇之后就DDR了吧,DDR目前还不准备手写控制器(没时间)。

1、封装及芯片管脚

  SDRAM主要就TSSOP54封装和BGA封装,其中TSSOP54是最常见的。

在这里插入图片描述

图1 芯片管脚分布

表1 芯片管脚
管脚名管脚号管脚方向管脚类型及作用
A0~A1123,26,29,34,22,35输入地址线
BA0,BA120,21输入Bank地址线
CAS#17输入列地址选通命令
CKE37输入时钟使能
CLK38输入时钟线
CS#19输入片选信号
QD0~DQ152,4,5,7,8,10,11,13,42,44,45,47,48,50,51,53双向数据线
LDQM,UDQM15.39输入高低字节数据掩膜信号
RAS#18输入行地址选通命令
WE#16输入写启用
VDDQ3,9,43,49输出缓冲电源
VDD1,14,27设备内部电源
GNDQ6,12,46,52输出缓冲接地
GND28,41,54设备内部接地

  上表只是管脚的一个说明,下面对这些引脚功能做一下补充说明:

  1. 地址管脚A0A11的功能:①读写时A0A11作为行地址线,A0~A7作为列地址输入;②预充电时A10高电平表示对所有BANK进行预充电,低电平表示对某个BANK进行预充电;③在配置SDRAM工作状态时发送对应指令;
  2. BANK地址线BA0~BA1的功能:在读写激活模式时用于选择读写激活的BANK,此SDRAM共4个BANK,所以需要2根BANK地址线;
  3. 时钟使能信号CKE:确定CLK输入是否启用。CLK信号的下一个上升沿在CKE高时有效,在低时无效。当CKE低时,设备将处于断电模式、时钟暂停模式或自刷新模式,正常工作时为高电平。CKE是一种异步输入。
  4. 数据掩膜信号LDQM和UDQM:控制I/O缓冲区的低位字节和高位字节。在读取模式下,LDQM和UDQM控制输出缓冲区。当LDQM或UDQM为低时,相应的缓冲区字节被启用,而当LDQM或UDQM为高时,相应的缓冲区字节被禁用。当LDQM/UDQM高时,输出变为高阻抗状态。此功能对应于传统DRAM中的OE。在写入模式下,LDQM和UDQM控制输入缓冲区。当LDQM或UDQM为低时,相应的缓冲区字节被启用,数据可以写入设备。当LDQM或UDQM为高时,输入数据被屏蔽,无法写入设备;可以理解为数据线为16位,一次读写两个字节数据,可以用此信号控制数据线上的两个字节的数据是否是有效的。
  5. CS#,RAS#,CAS#,WE#:这四个信号组成指令,用于控制SDRAM的工作状态,包括自刷新、预充电、激活、读、写、配置SDRAM等模式,具体指令见后面表格;
  6. 此SDRAM的容量,一个SDRAM有4个BANK,一个BANK有12根行地址和8根列地址线,一个单元的数据位宽为16位,所以此SDRAM的容量为4 * (2^12) * (2^8) * 16 / 1024 / 1024Mb = 64 * 16Mb = 64MB;

2、SDRAM各指令含义

首先是自刷新指令(AUTO REFRESH COMMAND)

  对于DRAM大家都知道是使用电容存储电荷的,优势是使用的元器件较少,有得必有失,结果就是电容会放电,过一段时间电容存储的电荷会丢失,为了防止电容存储的电荷丢失,就是在电容存储器还没有丢失的时候把他存储的数据读出来,在重新写进去,这样电容存储的电荷又可以保存这样一段时间了,这个操作就被称为自刷新;自刷新操作不需要指定行列地址,芯片内会对地址自动替换,每次刷新一行,目前认为64ms电容的数据就会丢失,所以需要保证在64ms内对bank内所有单元均完成一次自刷新;此SDRAM一个bank有4096行,所以需要64ms/4096发送一个自刷新指令;

②激活指令(ACTIVE COMMAND)

  在读写操作之前,一般要进行激活操作,这是因为SDRAM的行列地址线是同一组地址线,分时复用,读写操作发送的是列地址,所以在此之前需要确定读写操作的行地址以及bank,这就是激活操作,在告知SDRAM行地址之后,SDRAM还需要tRCD时间才能把改行打开,之后就可以对该行数据进行读写操作了;激活命令时,BA0、BA1输入选择要访问的bank,A0~A11上的地址输入选择该行。在向bank发出预充电命令之前,该行将保持打开状态以供访问。

③预充电指令(PRECHARGE)

  与激活模式相反,在读写操作完成后,所在行仍处于打开状态,此时需要使用预充电命令关闭所在行;才能使用激活命令打开其它行进行读写操作;预充电命令用于停用特定bank中的空行或所有bank中的空行。BA0、BA1可用于选择预充电的bank或被视为“不在乎”。

  A10决定是否对一个或所有bank进行预充电。执行此命令后,所选bank的下一个命令将在经过时段tRP(bank预充电所需的时段)后执行。一旦某个bank已预充电,它将处于空闲状态,并且必须在向该bank发出任何读或写命令之前激活。

④自动预充电命令(AUTO PRECHARGE)

  自动预充电功能可确保在脉冲串内最早的有效阶段启动预充电。此功能允许单个bank预充电,而无需显式命令。A10可与特定读取或写入命令一起用于启用自动预充电功能。对于每个单独的读或写命令,启用或禁用自动预充电。除非在整页突发模式下,否则自动预充电不适用。读或写突发完成后,将自动(不需要发送预充电指令)对寻址的bank/行进行预充电。

⑤读指令(READ)

  读命令从BA0、BA1输入中选择bank,并启动对活动行的突发读取访问。输入A0-A7提供起始列位置。当A10高时,该命令作为自动预充电命令运行。当选择自动预充电时,正在访问的行将在读突发结束时预充电。未选择自动预充电时,该行将保持打开状态,以便后续访问。发送写指令之后,SDRAM会经过2~3个时钟周期才会给出数据,这段时间称为潜伏期,具体时间可以设置,后面细讲。

  DQ的读取数据受两个时钟之前(与潜伏期无关)DQM输入上的逻辑电平的影响,如下面时序图所示。当给定的DQM信号被记录为高电平时,相应的DQ将在两个时钟后变为高阻态。当DQM信号记录为低时,DQ将提供有效数据。
在这里插入图片描述

图2 读指令时序

⑥写指令(WRITE)

  使用写命令启动对活动行的突发写入访问。BA0、BA1输入选择bank,起始列位置由输入A0-A7提供。是否使用自动预充电由A10决定。如果选择了自动预充电,则正在访问的行将在写入突发结束时预充电。如果未选择自动预充电,则该行将保持打开状态,以便后续访问。写入内存阵列时,DQ和DQM输入逻辑级上的相应输入数据同时出现,如下面时序图所示。当DQM信号低时,数据将写入存储器。当DQM为高时,将忽略相应的数据输入,并且不会对该字节/列位置执行写入操作。
在这里插入图片描述

图3 写指令时序

⑦加载模式寄存器指令(LOAD MODE REGISTER)

  在加载模式寄存器命令期间,模式寄存器从A0-A11加载。此命令只能在所有bank闲置时发出。

⑧突发终止命令(BURST TERMINATE)

  突发终断命令通过截断固定长度或整页突发以及突发终断之前最近注册的读或写命令,强制终止突发读和写操作,可以通过此命令结合全页读写模式实现任意长度的读写操作;

⑨命令禁止执行新命令(COMMAND INHIBIT)

  除CLK信号是否启用外,正在进行的操作不受影响;与空指令(NO OPERATION)效果差不多:NOP无操作当CS低时,NOP命令可防止在空闲或等待状态下注册不需要的命令。

表2 CS#、RAS#、CAS#、WE#信号构成的指令
指令种类CS#RAS#CAS#WE#DQMADDRDQS
命令禁止指令HXXXXXX
NOP空指令LHHHXXX
ACTIVE激活指令LLHHXBank/rowX
READ读指令LHLHL/HBank/colX
WRITE写指令LHLLL/HBank/colvalid
BURST突发中断指令LHHLXXactive
PRECHARGE预充电指令LLHLXcodeX
REFRESH自刷新指令LLLHXXX
MODE加载模式寄存器指令LLLLXOp-codeX
写入启用/输出启用----L-active
写抑制/输出高阻态----H-High-Z

说明:
  1. 自刷新有AUTO REFRESH o和SELF REFRESH两种,前一种是CKE为高电平时使用,后一种是CKE处于低电平时使用;
  2. CKE除了在SELF REFRESH自刷新时为低电平外,其余时间均为高电平;
  3. A0-A11定义写入模式寄存器的操作码。
  4. 内部刷新计数器控制行寻址;除CKE外,所有输入和I/O均为“不关心”。
  5. 在写入(零时钟延迟)和读取(两个时钟延迟)期间激活或停用DQ。

3、初始化操作以及配置模式寄存器

模式寄存器包括单个/突发、突发长度、潜伏期、顺序/交错读写模式设置对SDRAM进行读写,首先应该对齐进行初始化。

1、初始化(Initialization)

  SDRAM必须以预定义的方式通电和初始化。64Mb SDRAM在Vdd和Vddq(同时)通电后初始化,并且时钟在DQM高和CKE高时稳定。在发出命令禁止或NOP以外的任何命令之前,需要100µs延迟。禁止或NOP命令可在100µs期间应用,并应至少持续到该期间结束。至少应用了一个命令禁止或NOP命令,一旦满足100µs延迟,应用预充电命令。所有bank都必须预充电。这将使所有bank处于空闲状态,之后必须执行至少两个自动刷新周期。自动刷新周期完成后,SDRAM即可进行模式寄存器编程。模式寄存器应在应用任何操作命令之前加载,因为它将在未知状态下通电。在加载模式寄存器命令之后,必须在任何命令之前至少发送一个NOP命令。下图为初始化时序图:
在这里插入图片描述

图4 初始化指令时序

说明:
  ①如果CS在时钟高电平时为高电平,则应用的所有命令均为NOP。

  ②如果需要,可在自动刷新周期之前加载模式寄存器。

  ③JEDEC和PC100指定三个时钟。

  ④命令发出后,输出保证为高阻态。

2、模式寄存器

  用于定义SDRAM的特定操作模式。模式寄存器通过加载模式寄存器命令进行编程,并将保留存储的信息,直到再次编程或设备断电。模式寄存器位M0-M2指定突发长度,M3指定突发类型(顺序或交错),M4-M6指定CAS延迟,M7和M8指定操作模式,M9指定写入突发模式,M10和M11保留供将来使用。当所有bank空闲时,必须加载模式寄存器,并且控制器必须在启动后续操作之前等待指定的时间。违反这些要求之一将导致未指定的操作,模式寄存器定义如下图所示:之后将结合时序图逐个分析这些模式;
在这里插入图片描述

图5 模式寄存器格式

⑴突发长度

  SDRAM的读和写访问是面向突发的,突发长度可编程,如模式寄存器定义所示。突发长度确定给定读或写命令可访问的最大列位置数。1、2、4或8个位置的突发长度可用于顺序突发类型和交错突发类型,且整页突发仅可用于顺序类型。

  整页突发与突发中断TERMINA TE命令结合使用,以生成任意突发长度。不应使用保留状态,因为可能会导致未知操作或与未来版本不兼容。当发出读或写命令时,将有效地选择等于突发长度的列块。该突发的所有访问都发生在该块内,这意味着如果到达边界,突发将在该块内包裹。

  当突发长度设置为2时,由A1-A7(x16)唯一选择块;当突发长度设置为4时,通过A2-A7(x16);当突发长度设置为8时,通过A3-A7(x16)。剩余(最低有效)地址位用于选择块内的起始位置。如果达到边界,整页将在页面内换行;通过下图结合突发类型便可以清楚的理解;

⑵突发类型

  给定突发内的突发类型访问可编程为连续或交错;这称为突发类型,通过位M3选择。突发内的访问顺序由突发长度、突发类型和起始列地址决定,如突发定义表所示。
在这里插入图片描述

图6 突发类型

  个人关于交错突发地址读写顺序的理解:

⑶CAS潜伏期

  CAS延迟是读命令输入与第一个输出数据可用性之间的延迟,以时钟周期为单位。延迟可以设置为两个或三个时钟。如果在时钟边缘n处输入读取命令,且延迟为m个时钟,则数据将在时钟边缘n+m处可用。由于时钟边缘提前一个周期(n+m-1),DQ将开始驱动,并且如果满足相关访问时间,数据将在时钟边缘n+m前有效。

  例如,假设时钟周期时间满足所有相关访问时间,如果在T0输入读取命令,并且延迟编程为两个时钟,则DQ将在T1之后开始驱动,并且数据将在T2之前有效,如CAS延迟图所示。允许的工作频率表指明了每个CAS延迟设置可以使用的工作频率。不应将保留状态用作未知操作,否则可能导致与未来版本不兼容。
在这里插入图片描述

图7 潜伏期与工作时钟频率的关系
在这里插入图片描述
图8 潜伏期的时序

⑷写入突发模式设置

  当M9=0时,通过M0-M2编程的突发长度适用于读突发和写突发;当M9=1时,编程的突发长度适用于读突发,但写访问是单位置(非突发)访问。

4、预充电、自刷新、读写、模式寄存器指令配置时序分析

㈠、激活命令

  1、操作bank/行激活在向SDRAM中的bank发出任何读或写命令之前,必须“打开”该bank中的一行。这是通过激活命令完成的,该命令选择要激活的bank和行,激活指令发出时序如下:
在这里插入图片描述

图9 激活指令时序图

  2、在打开一行(发出活动命令)后,可以根据trcd规范向该行发出读或写命令。最小trcd应除以时钟周期,并向上舍入到下一个整数,以确定激活命令后最早的时钟边缘,可以输入读或写命令。
例如,trcd规格为20ns,时钟频率为125MHz(周期为8ns),结果为2.5个时钟,四舍五入到3。这反映在以下示例中,该示例涵盖了2<[trcd(MIN)/tck]≤ 3的任何情况(相同的程序用于将其他规格限制从时间单位转换为时钟周期)。时序图如下所示:
在这里插入图片描述

图10 trcd参数含义

  3、只有在上一个激活行“关闭”(预充电)后,才能向同一bank中的另一行发出后续激活命令。tRC定义了向同一bank发送连续激活命令之间的最小时间间隔。在访问第一个bank时,可以向另一个bank发出后续的活动命令,从而减少总的行访问开销。发送到不同bank的连续激活命令之间的最小时间间隔由tRRD定义;时序图见下图交替bank读访问;
在这里插入图片描述

图11 交替访问bank时序图

㈡、两种自刷新指令(AUTO-REFRESH CYCLE OR SELF-REFRESH CYCLE)时序

  AUTO-REFRESH CYCLE时序图如下所示:
在这里插入图片描述

图12 AUTO-REFRESH CYCLE时序图

  SELF-REFRESH CYCLE时序图如下所示:
在这里插入图片描述

图13 SELF-REFRESH CYCLE时序图

㈢、读命令

  1. 如读取命令的时序图如下图所示所示,通过读取命令启动读取突发。起始列和bank地址随读命令一起提供,并且A10决定自动预充电对于该突发访问是启用或禁用的。如果启用了自动预充电,则在突发完成时对正在访问的行进行预充电。对于下图中使用的通用读取命令,禁用自动预充电。
在这里插入图片描述

图14 读时序图

  2、在读突发期间,起始列地址中的有效数据输出元素将在读命令后的CAS延迟后可用。每个后续数据输出元素将在下一个正时钟边缘有效。CAS延迟图显示了每个可能的CAS延迟设置的一般定时。
在这里插入图片描述

图15 CAS延迟

  3、突发完成后,假设没有启动其他命令,DQ将变为高阻态。整页突发将继续,直到终止。(在页面末尾,它将换行到第0列并继续。)

  4、来自任何读取突发的数据可以用后续读取命令截断,来自固定长度读取突发的数据可以紧接着来自读取命令的数据。无论哪种情况,都可以保持连续的数据流。新突发的第一个数据元素位于已完成突发的最后一个元素之后,或者位于正在被截断的较长突发的最后一个所需数据元素之后。

  5、新的读取命令应在最后一个所需数据元素有效的时钟边缘之前x个周期发出,其中x等于CAS延迟减1。这在CAS延迟为2和3的连续读突发中显示;数据元素n+3要么是四个突发中的最后一个,要么是更长突发中的最后一个。64Mb SDRAM使用流水线架构,因此不需要与预取架构相关联的2n规则。时序如下图:
在这里插入图片描述

图16 连续突发读时序

  6、读命令可以在前一个读命令之后的任何时钟周期上启动。可以对同一个bank执行全速随机读取访问,如随机读取访问中所示,或者可以对不同的bank执行每个后续读取。同一个bank随机读取时序如下图:
在这里插入图片描述

图17 全速随机读写

  7、来自任何读突发的数据可能会被后续写命令截断,来自固定长度读突发的数据可能会紧跟着来自写命令的数据(受总线周转限制)。如果可以避免I/O争用,则可以在紧接着来自读突发的最后(或最后期望的)数据元素之后的时钟边缘上启动写突发。在给定的系统设计中,驱动输入数据的设备可能在SDRAM DQ变为高阻态之前变为低阻态。在这种情况下,在最后一次读取数据和写入命令之间至少应间隔一个周期延迟。DQM输入用于避免I/O争用,如图RW1和RW2所示。DQM信号必须在写入命令之前至少三个时钟(DQM延迟是输出缓冲区的两个时钟)断言(拉高),以抑制从SDRAM中输出读取的数据,让数据总线处于空闲状态。否则,第二次写入无效。

  例如,如果DQM在图RW2中的T4拉低,则T5和T7处的写入将有效,而T6处的写入将无效。DQM信号必须在写入命令之前取消断言(DQM延迟是输入缓冲区的零时钟),以确保写入数据未被屏蔽;时序如下图:
在这里插入图片描述

图18 写命令截断读命令

  8、固定长度的读突发可以在对同一bank的预充电命令之后或通过预充电命令截断(前提是未激活自动预充电),而整页突发可以通过对同一bank的预充电命令截断。预充电命令应在最后所需数据元素有效的时钟边缘之前x个周期发出,其中x等于CAS延迟减1。这在每个可能的CAS延迟的读取到预充电图中显示;数据元素n+3要么是四个突发中的最后一个,要么是更长突发中的最后一个。在预充电命令之后,在满足trp之前,无法向同一bank发出后续命令。请注意,在访问最后一个数据元素期间,部分行预充电时间是隐藏的。时序如下图:
在这里插入图片描述

图19 使用预充电指令截断读指令

  9、在执行定长脉冲串直至完成的情况下,在最佳时间(如上所述)发出的预充电命令提供与自动预充电相同定长脉冲串产生的相同操作。预充电命令的缺点是,它要求命令和地址总线在发出命令的适当时间可用;预充电(PRECHARGE)命令的优点是,它可以用来截断固定长度或整页突发;带自动预充电突发读取时序如下图:
在这里插入图片描述

图20 带自动预充电突发读时序

  不带自动预充电突发读取时序图如下:
在这里插入图片描述

图21 不带自动预充电突发读取时序

  带自动预充电随机单个读取时序如下图:
在这里插入图片描述

图22 带自动预充电随机单个读时序

  不带自动预充电随机单个读取时序如下图:
在这里插入图片描述

图23 不带自动预充电随机单个读时序

  10、可以使用BURST TERMINA TE命令截断整页读突发,如果未激活自动预充电,则可以使用BURST TERMINA TE命令截断固定长度的读突发。应在最后一个所需数据元素有效的时钟边缘之前x个周期发出突发终止命令,其中x等于CAS延迟减1。这在每个可能的CAS延迟的读突发终止图中显示;数据元素n+3是较长突发的最后所需数据元素。整页突发读中断时序如下图:
在这里插入图片描述

图24 整页突发读中断时序

  全页读时序如下图所示:
在这里插入图片描述

图25 全页读时序

㈣、写命令

  1、写命令提供起始列和bank地址,并为该访问启用或禁用自动预充电。如果启用了自动预充电,则在突发完成时对正在访问的行进行预充电。对于下面的写命令标题之下的时序图中使用的通用写入命令,禁用自动预充电。
在这里插入图片描述

图26 写命令时序

  2、在写入突发期间,元素中的第一个有效数据将与写入命令同时输入。随后的数据元素将记录在每个连续的正时钟边缘上。在完成固定长度突发后,假设没有启动其他命令,DQ将保持高阻态,并且任何额外的输入数据将被忽略(参见写入突发)。整页突发将继续,直到终止(在页面末尾,它将换行到第0列并继续),时序如下图:
在这里插入图片描述

图27 写突发时序

  3、任何突发写入的数据都可以用后续写入命令截断,固定长度写入突发的数据可以紧跟写入命令的数据。新的写入命令可以在前一个写入命令之后的任何时钟上发出,并且与新命令同时提供的数据适用于新命令。一个例子显示在WRITE-to-WRITE图中。数据n+1要么是两个突发中的最后一个突发,要么是更长突发中的最后一个所需突发。64Mb SDRAM使用流水线架构,因此不需要与预取架构相关联的2n规则。时序如下图:
在这里插入图片描述

图28 用写命令截断突发写入命令

  4、写入命令可以在前一个写入命令之后的任何时钟周期上启动。页面内的全速随机写入访问可以对同一个bank执行,如随机写入周期所示,或者可以对不同的bank执行每个后续写入。时序如下图:
在这里插入图片描述

图29 全速随机写时序

  5、任何写入突发的数据都可以用读取命令截断,固定长度写入突发的数据可以紧跟着读取命令。一旦READ命令被写入,数据输入将被忽略,写入将不被执行。下图显示在写指令之后发送读指令,数据n+1要么是两个突发中的最后一个突发,要么是更长突发中的最后一个所需突发。:
在这里插入图片描述

图30 写指令后输入读指令

  6、固定长度写入突发的数据可以在对同一个bank的预充电命令之后或用预充电命令截断(前提是未激活自动预充电),而整页写入突发可以用对同一个bank的预充电命令截断。预充电命令应在记录最后一个所需输入数据元素的时钟边缘之后twr发出。自动预充电模式要求twr至少为一个时钟加上时间,无论频率如何。此外,在截断写入突发时,必须使用DQM信号屏蔽预充电命令之前以及与预充电命令一致的时钟边缘的输入数据。写入预充电图中显示了一个示例。数据n+1要么是两个突发中的最后一个突发,要么是更长突发中的最后一个所需突发。在预充电命令之后,在满足tRP之前,无法向同一bank发出后续命令。时序如下图:
在这里插入图片描述

图31 使用预充电命令截断写指令(潜伏期为2)
在这里插入图片描述
图32 使用预充电命令截断写指令(潜伏期为3)

  7、在执行定长脉冲串直至完成的情况下,在最佳时间(如上所述)发出的预充电命令提供与自动预充电相同定长脉冲串产生的相同操作。预充电命令的缺点是,它要求命令和地址总线在发出命令的适当时间可用。预充电(PRECHARGE)命令的优点是,它可以用来截断固定长度或整页突发,有自动预充电的突发写时序如下图:
在这里插入图片描述

图33 有自动预充电的突发写时序

  无自动预充电的突发写时序如下图:
在这里插入图片描述

图34 无自动预充电的突发写时序

  有自动预充电的单个写时序如下图:
在这里插入图片描述

图35 有自动预充电的单个写时序

  无自动预充电的单个写时序如下图:
在这里插入图片描述

图36 无自动预充电的单个写时序

  8、使用突发中断(BURST TERMINA TE)命令可以截断固定长度或整页写入突发。截断写入突发时,与突发中断(TERMINA TE)命令同时应用的输入数据将被忽略。最后写入的数据(前提是DQM当时较低)将是应用于突发终止指令前一个时钟的输入数据。这在写突发终止中显示,其中数据n是较长突发的最后所需数据元素。时序如下图:
在这里插入图片描述

图37 突发中断截断突发写时序

  全页突发写时序如下:
在这里插入图片描述

图38 全页突发时序

㈤、预充电命令

  1、预充电预充电命令(见图39)用于停用特定bank中的空行或所有bank中的空行。在发出预充电命令后的某个指定时间(trp),该bank将可用于后续行访问。输入A10确定是否对一个或所有bank进行预充电,如果只对一个bank进行预充电,输入BA0、BA1选择bank。当所有bank都要预充电时,输入BA0、BA1被视为“不在乎”。一旦bank已预充电,它将处于空闲状态,并且必须在向该bank出任何读或写命令之前激活。

在这里插入图片描述

图39 预充电指令时序

㈥、电源休眠

  如果CKE被注册为低电平,并且在没有进行访问时与NOP或命令禁止一致,则会发生断电。如果在所有bank空闲时发生断电,此模式称为预充电断电;如果在任一bank中有一行处于活动状态时发生断电,则此模式称为活动断电。输入掉电将停用输入和输出缓冲区(不包括CKE),以便在待机状态下最大程度地节省功率。由于在此模式下不执行刷新操作,因此设备可能不会在超过刷新周期(64ms)的时间内保持断电状态。通过在所需时钟边缘(满足TCK)输入NOP或命令禁止和CKE高,退出掉电状态。见下图。
在这里插入图片描述

图40 电源休眠时序

  断电模式循环的时序图如下图所示:
在这里插入图片描述

图41 断电模式循环时序

㈦、时钟挂起模式

  时钟挂起模式在列访问/突发正在进行且CKE记录为低时发生。在时钟暂停模式下,内部时钟被停用,“冻结”同步逻辑。

  对于CKE采样为低的每个时钟上升沿,下一个内部时钟上升沿暂停。在暂停内部时钟边缘时,输入引脚上存在的任何命令或数据被忽略;DQ引脚上的任何数据保持驱动状态;只要时钟挂起,突发计数器就不会递增。通过输入CKE高电平退出时钟挂起模式,内部时钟和相关操作将在随后的时钟上升沿恢复。
在这里插入图片描述

图42 时钟挂起模式后写突发时序

在这里插入图片描述

图43 时钟挂起模式后读突发时序

  时钟暂停模式时序如下图所示:
在这里插入图片描述

图44 时钟暂停时序

㈧、突发读取/单次写入

  通过将模式寄存器中的写入突发模式位(M9)编程为逻辑1,进入突发读取/单次写入模式。在此模式下,无论编程的突发长度如何,所有写入命令都会导致访问单个列位置(一个突发)。读取命令根据编程的突发长度和顺序访问列,就像在正常操作模式(M9=0)中一样。

㈨、并行自动预充电(多个bank同时进行自动预充电)

  SDRAM不允许在执行启用自动预充电的访问命令时向另一bank发出访问命令(读或写),除非SDRAM支持并行自动预充电。ISSI SDRAM支持并行自动预充电,同时发生自动预充电的四种情况定义如下。

  1、自动预充电读取被不同bank的读取中断(带或不带自动预充电):对bank m的读取指令将在稍后中断对bank n的读取操作,CAS延迟。当对bank m的读取指令被输入时,对bank n的预充电将开始,时序如下图所示:
在这里插入图片描述

图45 自动预充电读取被不同bank的读指令中断时序

  2、自动预充电读取被不同bank的写入中断(带或不带自动预充电):对bank m的写入指令将在输入时中断对bank n的读取。DQM应在写入命令前两个时钟使用,以防止总线争用。对bank n的预充电将在对bank m的写入指令被输入时开始,时序如下图所示:
在这里插入图片描述

图46 自动预充电读取被不同bank的写指令中断时序

  3、自动预充电写入被不同bank的读取中断(带或不带自动预充电):对bank m的读取指令将在输入时中断对bank n的写入操作,数据输出将在稍后出现。在满足twr后,将开始对bank n进行预充电,其中,当对bank m的读取指令被输入时,twr开始。对bank n的最后一次有效写入将是在读取到bank m之前的一个时钟中输入的数据;时序如下图所示:
在这里插入图片描述

图47 自动预充电写入被不同bank的读指令中断时序

  4、自动预充电写入被不同bank的写入中断(带或不带自动预充电):对bank m的写入指令将在输入时中断对bank n的写入操作。在满足twr后,将开始对bank n进行预充电,其中twr在对bank m进行写入指令输入时开始。最后一次有效数据写入bank n将是在写入bank m前一个时钟记录的数据;时序如下图所示:
在这里插入图片描述

图48 自动预充电写入被不同bank的写指令中断时序

㈩、交替bank的读写操作

  SDRAM允许在对bank1进行读写时,激活其它bank进行读写操作,之后关闭激活成功,停止对bank1的读写,对激活bank的读写操作,但是在激活bank这些时钟期间,对于bank1来说相当于执行NOP指令,在此期间bank1的读写操作并不会停止。下图为交替bank的读时序,T2开始对bank0进行读操作,在T4时对bank3进行激活操作,从读出的数据得知T4、T5对bank1的激活操作,对于bank0的读操作并没有影响,在T6发出对bank3的读操作才开始转向对bank3的读操作。
在这里插入图片描述

图49 交替bank读时序

下图为交替bank的写时序
在这里插入图片描述

图50 交替bank写时序

5、各种时间参数

  该SDRAM芯片的各种参数如图51所示。

在这里插入图片描述

图51 各种时间参数

  SDRAM的接口时序和输出信号的连接如下图所示,可以分析得到,该SDRAM的接口寄存器的建立时间为tCMS,保持时间为tCMH。
在这里插入图片描述

图52 接口信号时序

  只于接口信号建立时间、保持时间的具体数值,可以通过下表得到,建立时间tCMS最小值为1.5ns,保持时间tCMH最小值为0.8ns。以及tRC、tREF参数如下表。
在这里插入图片描述

图53 各种时序参数


  如果对文章内容理解有疑惑或者对代码不理解,可以在评论区或者后台留言,看到后均会回复!

  如果本文对您有帮助,还请多多点赞👍、评论💬和收藏⭐!您的支持是我更新的最大动力!将持续更新工程!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

电路_fpga

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值