SDRAM内部结构
1.逻辑Bank与芯片位宽
这里主要的概念就是逻辑Bank。简单地说,SDRAM的内部就是一个存储阵列。SDRAM并不像SRAM,可以在一个Cycle内完成一个Access,SDRAM的内部就是一个存储阵列。SDRAM并不像SRAM的Access过程分做几个Command,而且通常要3——7个左右的CYCLE才能完成,我们需要执行一连串的动作才能开始读写:
1.初始化RAM内的寄存器和存储单元。
2.SDRAM Controller接收到Data,分析Address,用高位的Address(Row address)进行Active的动作。
3.SDRAM Controller用低位Address(Column address)进行WRITE或READ。
SDRAM根据Row address 和 Column address完成读写操作。
由于SDRAM的电气特性,每隔一段时间存储单元的信息就会衰减到无法辨认,所以一段时间之内,要执行Refresh的动作,以确保信息的正确性。而执行这两个动作是依靠Selfresh和Auto refresh两个Command来完成的。
下面具体讲每个操作的特点及时序:
1.芯片初始化
在SDRAM芯片内部还有一个逻辑控制单元,并且有一个模式寄存器为其提供控制参数。因此,每次上电时(开机时)SDRAM都要先对这个控制逻辑核心进行初始化。包括预充电和刷新等等步骤,关键的阶段就在于模式寄存器的设置(MRS),寄存器的信息由地址线来提供。
初始化阶段分为四个步骤:
1.输入稳定期
2.所有L-Bank预充电
3.8个刷新周期
4.模式寄存器设置(MRS)
在设置到MR之后,就开始进入正常的工作状态。
2.行有效
初始哈完成后,想要对一个L-BANk中的阵列进行寻址,首先要确定行(Row),使之处于活动状态(Active),然后再确定列。虽然之前要进行片选和B-BANK的定址,但它们与行有效可以同时进行。
3.列读写
行地址确定之后,就要对列地址进行寻址了。在SDRAM中,行地址与列地址线是共用的。因为没有一个信号是发送或写的明确命令的,而是通过芯片的可写状态的控制来达到读/写的目的。显然WE#信号就是一个关键。WE#无效时,当然就是读取命令。
在发送列读写命令时必须要与行有效命令有一个间隔,这个间隔被定义为tRCD,即RAS to CAS Delay,大家也可以理解为行选通周期,这应该是根据芯片存储阵列电子元件响应时间(从一个状态到另一个状态变化的过程)所制定的延迟。tRCD是SDRAM的一个很重要的时序参数,可以通过主板BIOS经过北桥芯片进行调整,但不能超过厂商的预定范围。广义的tRCD以时钟数为单位,比如tRCD=2,就代表延迟周期为两个时钟周期。
4.数据输出(读)
在选定列地址后,就已经确定了具体的存储单元,剩下的事情就是数据通过DQs输出到内存总线上了。但是在CAS发出之后,仍要经过一定的时间才能有数据输出,从CAS与读取命令发出到第一笔数据输出的这段时间,被定义为CL(CASLatency,CAS潜伏期)。由于CL只在读取时出现,所以CL又称为读取潜伏期,CL的单位与tRCD一样,为时钟周期数,具体耗时由时钟率决定。
预充电:
由于SDRAM的寻址具有独占性,所以在进行完读写操作后,如果要对同一L-Bank的另一行进行寻址,就要将原来有效(工作)的行关闭,重新发送行/列地址。L-Bank关闭现有工作行,准备打开新行的操作就是预充电(precharge)。预充电可以通过命令控制,也可以通过辅助设定让芯片在每次读写操作之后自动进行预充电。 我们看看读写操作时的命令时序图,从中可以发现地址线A10控制着是否进行在读写之后对当前L-BANK自动进行预充电,这就是上面所说的“辅助设定”。而在单独的预充电命令中,A10则控制着是对指定的L-BANK还是所有的L-BANK(当有多个L-BANK处于有效/活动状态时)进行充电,前者(对指定的L-BANK)需要提供L-BANK的地址,后者(对所有的L-BANK)只需将A10信号至于高电平。在发出预充电命令后,需经过一段时间才能允许发送RAS行有效命令打开新的工作行,这个间隔被称为tRP(Precharge command Period,预充电有效周期)。和tRCD、CL一样,tRP的单位也是时钟周期数,具体视时钟频率而定。
刷新:
之所以称为DRAM,就是因为它要不断的进行刷新(Refresh)才能保留住数据,因此它是DRAM最重要的操作。刷新操作与预充电中重写的操作一样,都是用S-AMP先读在写。但为啥有预充电操作还要进行刷新呢?因为预充电是对一个或所有BL-BANK中工作行进行操作,并且是不定期的,而刷新则是由固定周期的,依次对所有行进行操作,以保留那些久久没有经历重写的存储体中的数据。 刷新操作分为两种:自刷新(AutoRefresh,简称AR)与自刷新(selrefresh,简称SR)。不论何种刷新方式,都不需要外部提供行地址信息,因为这是一个内部的操作。 SR则主要用于休眠模式下低功耗状态下的数据保存,这方面最著名的应用就是STR(suspendram,休眠挂起于内存)。在发出AR命令时,将CKE置于无效状态,就进入了SR模式,此时不再依靠系统时钟工作,而是依靠内部的时钟进行刷新操作。在SR期间除了CKE之外的所有的信号都是无效的(无需提供刷新指令),只有重新使CKE有效才能退出自刷新模式并进入正常操作状态。
数据掩码:
在讲述读/写操作时,我们谈到了突发长度。如果BL=4,那么就是说一次就传送4x64bit的数据,但是如果其中的第二笔数据是不要的,怎么办?还都传送吗?为了屏蔽不需要的数据,人们采用了数据掩码(DATA I/O Mask,简称DQM)技术通过DQM,内存可以控制I/O端口取消哪些输出或输入的数据。对于8位芯片每个芯片占用一个DQM信号,而对于16位的芯片。则需要两个DQM引脚。
SDRAM官方规定,在读取时DQM发出两个时钟周期后生效,而写入时,DQM与写入命令一样是立即生效。
DDR SDRAM全称为Double Data Rate SDRAM,中文名为“双倍数据流SDRAM”。DDR SDRAM在原有的基础上改进而来。也正因为如此,DDR能够凭借着转产成本优势来打败昔日的对手RDRAM,成为当今的主流。DDR相对于SDRAM而言多了两个两个信号:CLK#与DQS。CLK#与正常CLK时钟相位相反,形成差分时钟信号。而数据的传输在CLK与CLK#的交叉点进行,可见在CLK的上升与下降沿都有数据被触发,从而实现DDR。
DQS是DDR SDRAM中的重要功能,它的功能主要用来在一个时钟周期内准确的区分出每个传输周期,并便于接收方准确接收数据。每个芯片都有一个DQS信号线,它是双向的,在写入时它用来传送由北桥发来的DQS信号,读取时,则由芯片生成DQS向北桥发送。完全可以说,它就是是数据的同步信号。
1.逻辑Bank与芯片位宽
这里主要的概念就是逻辑Bank。简单地说,SDRAM的内部就是一个存储阵列。SDRAM并不像SRAM,可以在一个Cycle内完成一个Access,SDRAM的内部就是一个存储阵列。SDRAM并不像SRAM的Access过程分做几个Command,而且通常要3——7个左右的CYCLE才能完成,我们需要执行一连串的动作才能开始读写:
1.初始化RAM内的寄存器和存储单元。
2.SDRAM Controller接收到Data,分析Address,用高位的Address(Row address)进行Active的动作。
3.SDRAM Controller用低位Address(Column address)进行WRITE或READ。
SDRAM根据Row address 和 Column address完成读写操作。
由于SDRAM的电气特性,每隔一段时间存储单元的信息就会衰减到无法辨认,所以一段时间之内,要执行Refresh的动作,以确保信息的正确性。而执行这两个动作是依靠Selfresh和Auto refresh两个Command来完成的。
下面具体讲每个操作的特点及时序:
1.芯片初始化
在SDRAM芯片内部还有一个逻辑控制单元,并且有一个模式寄存器为其提供控制参数。因此,每次上电时(开机时)SDRAM都要先对这个控制逻辑核心进行初始化。包括预充电和刷新等等步骤,关键的阶段就在于模式寄存器的设置(MRS),寄存器的信息由地址线来提供。
初始化阶段分为四个步骤:
1.输入稳定期
2.所有L-Bank预充电
3.8个刷新周期
4.模式寄存器设置(MRS)
在设置到MR之后,就开始进入正常的工作状态。
2.行有效
初始哈完成后,想要对一个L-BANk中的阵列进行寻址,首先要确定行(Row),使之处于活动状态(Active),然后再确定列。虽然之前要进行片选和B-BANK的定址,但它们与行有效可以同时进行。
3.列读写
行地址确定之后,就要对列地址进行寻址了。在SDRAM中,行地址与列地址线是共用的。因为没有一个信号是发送或写的明确命令的,而是通过芯片的可写状态的控制来达到读/写的目的。显然WE#信号就是一个关键。WE#无效时,当然就是读取命令。
在发送列读写命令时必须要与行有效命令有一个间隔,这个间隔被定义为tRCD,即RAS to CAS Delay,大家也可以理解为行选通周期,这应该是根据芯片存储阵列电子元件响应时间(从一个状态到另一个状态变化的过程)所制定的延迟。tRCD是SDRAM的一个很重要的时序参数,可以通过主板BIOS经过北桥芯片进行调整,但不能超过厂商的预定范围。广义的tRCD以时钟数为单位,比如tRCD=2,就代表延迟周期为两个时钟周期。
4.数据输出(读)
在选定列地址后,就已经确定了具体的存储单元,剩下的事情就是数据通过DQs输出到内存总线上了。但是在CAS发出之后,仍要经过一定的时间才能有数据输出,从CAS与读取命令发出到第一笔数据输出的这段时间,被定义为CL(CASLatency,CAS潜伏期)。由于CL只在读取时出现,所以CL又称为读取潜伏期,CL的单位与tRCD一样,为时钟周期数,具体耗时由时钟率决定。
预充电:
由于SDRAM的寻址具有独占性,所以在进行完读写操作后,如果要对同一L-Bank的另一行进行寻址,就要将原来有效(工作)的行关闭,重新发送行/列地址。L-Bank关闭现有工作行,准备打开新行的操作就是预充电(precharge)。预充电可以通过命令控制,也可以通过辅助设定让芯片在每次读写操作之后自动进行预充电。 我们看看读写操作时的命令时序图,从中可以发现地址线A10控制着是否进行在读写之后对当前L-BANK自动进行预充电,这就是上面所说的“辅助设定”。而在单独的预充电命令中,A10则控制着是对指定的L-BANK还是所有的L-BANK(当有多个L-BANK处于有效/活动状态时)进行充电,前者(对指定的L-BANK)需要提供L-BANK的地址,后者(对所有的L-BANK)只需将A10信号至于高电平。在发出预充电命令后,需经过一段时间才能允许发送RAS行有效命令打开新的工作行,这个间隔被称为tRP(Precharge command Period,预充电有效周期)。和tRCD、CL一样,tRP的单位也是时钟周期数,具体视时钟频率而定。
刷新:
之所以称为DRAM,就是因为它要不断的进行刷新(Refresh)才能保留住数据,因此它是DRAM最重要的操作。刷新操作与预充电中重写的操作一样,都是用S-AMP先读在写。但为啥有预充电操作还要进行刷新呢?因为预充电是对一个或所有BL-BANK中工作行进行操作,并且是不定期的,而刷新则是由固定周期的,依次对所有行进行操作,以保留那些久久没有经历重写的存储体中的数据。 刷新操作分为两种:自刷新(AutoRefresh,简称AR)与自刷新(selrefresh,简称SR)。不论何种刷新方式,都不需要外部提供行地址信息,因为这是一个内部的操作。 SR则主要用于休眠模式下低功耗状态下的数据保存,这方面最著名的应用就是STR(suspendram,休眠挂起于内存)。在发出AR命令时,将CKE置于无效状态,就进入了SR模式,此时不再依靠系统时钟工作,而是依靠内部的时钟进行刷新操作。在SR期间除了CKE之外的所有的信号都是无效的(无需提供刷新指令),只有重新使CKE有效才能退出自刷新模式并进入正常操作状态。
数据掩码:
在讲述读/写操作时,我们谈到了突发长度。如果BL=4,那么就是说一次就传送4x64bit的数据,但是如果其中的第二笔数据是不要的,怎么办?还都传送吗?为了屏蔽不需要的数据,人们采用了数据掩码(DATA I/O Mask,简称DQM)技术通过DQM,内存可以控制I/O端口取消哪些输出或输入的数据。对于8位芯片每个芯片占用一个DQM信号,而对于16位的芯片。则需要两个DQM引脚。
SDRAM官方规定,在读取时DQM发出两个时钟周期后生效,而写入时,DQM与写入命令一样是立即生效。
DDR SDRAM全称为Double Data Rate SDRAM,中文名为“双倍数据流SDRAM”。DDR SDRAM在原有的基础上改进而来。也正因为如此,DDR能够凭借着转产成本优势来打败昔日的对手RDRAM,成为当今的主流。DDR相对于SDRAM而言多了两个两个信号:CLK#与DQS。CLK#与正常CLK时钟相位相反,形成差分时钟信号。而数据的传输在CLK与CLK#的交叉点进行,可见在CLK的上升与下降沿都有数据被触发,从而实现DDR。
DQS是DDR SDRAM中的重要功能,它的功能主要用来在一个时钟周期内准确的区分出每个传输周期,并便于接收方准确接收数据。每个芯片都有一个DQS信号线,它是双向的,在写入时它用来传送由北桥发来的DQS信号,读取时,则由芯片生成DQS向北桥发送。完全可以说,它就是是数据的同步信号。