DDR3 controller 之储存器介绍

DDR3 SDRAM 接口信号:特别重要,物理层的时序转化就得跟着它来;
在这里插入图片描述
DDR3操作流程:DDR3 SDRAM 操作流程
如图所示,是 DDR3 颗粒内部单个 Bank 的状态机命令跳转过程。由于 DRAM电容充放电读写数据的关系,每一个命令之间的跳转必须满足特定的时间参数,对DDR3 颗粒的读写就是要玩转这些时间参数,使 DDR3 颗粒内部的状态机运行起来。下图的实线箭头代表了状态之间通过命令使能进行跳转,虚线箭头代表状态机自动跳转。可以看到, DDR3 SDRAM 首先要经过上电复位和初始化过程,这个过程中完成ZQ 长校准和模式寄存器的配置,完成上电初始化后, DDR3 SDRAM 进入 IDLE 状态。随后可进行读操作、写操作、定时刷新、自刷新、 Power-Down 操作,以及 ZQ 短校准操作,在进行读/写操作前,要先进行激活(打开行)操作,读/写完成后要发送预充电(关闭)命令,具体命令在后面进行介绍。
在这里插入图片描述
DDR3 SDRAM有两种复位初始化过程,第一种是DDR3 SDRAM首次上电的过程,通常是DDR3 SDRAM开始供电的时候。第二种是DDR3 SDRAM在无电源中断的情况下进行初始化复位,通常是退出自刷新、 Power-Down 模式后进入正常工作状态,需要重新对DDR3进行初始化。如图2.12和图2.13所示,是两种初始化的时序图。
在这里插入图片描述
可以看到,这两种初始化模式都要经过复位等待、 CKE拉高、发送模式寄存器设置命令、发送ZQ长校准命令这几个过程,它们配置模式寄存器的顺序也是相同的,配置顺序依次为MR2、 MR3、 MR1、 MR0,每次初始化都需要重新配置模式寄
存器。不同点是首次上电初始化复位时间较长,需要200us,低功耗退出再初始化只需100ns的复位等待时间。
DDR 3命令
DDR3 的命令主要分为读、写、刷新、低功耗这四类,其他命令如模式寄存器设置、预充电、激活、 ZQ 长/短校准、空命令和取消命令配合这四类命令进行使用。读、写这两种主要的命令又分为读/写后无自动预充电和读/写后伴随自动预充电两种。刷新命令(即定时刷新)是为了防止 DDR3 电容漏电数据丢失而必须定时进行的命令。低功耗命令如自刷新、断电模式是为了使 DDR3 在无读写访问时挂起的命令, 表 列出了 DDR3 SDRAM 指令集。
在这里插入图片描述(1)激活命令
(2)预充电命令
(3)读操作
读命令(READ)可以支持单个读或连续读,只要满足不同情况的时间参数即可。由于DQ、 DQS总线是双向的,所以使用一段DQS前导码来区分读写数据,读前导码是一个周期的DQS低电平信号,时间参数为tRPRE,读后导码是BC4/BL8数据末尾半个周期的DQS低电平信号,时间参数为tRPST。 并且读DQS和读数据是边沿对齐的,如图所示。
在这里插入图片描述
在读命令期间使用地址A12选择BC4或BL8, A12=1设置为BL8, A12=0设置为BC4。 如图2.14,是一段完整的BL8读命令、读数据,而BC4是只读这段BL8的前半段,将后半段掩码,并不会节省DQ总线的周期,如图所示。
在这里插入图片描述
(4)写操作
写命令(WRITE)可以支持单个写或连续写,写前导码是一个周期的DQS翻转信号,写DQS的上升沿和第一个写DQ的中心对齐,之后的DQS上升沿、下降沿分别指向数据DQ的中心。同样,在写命令期间也可以使用地址A12选择BC4或BL8,和
读数据类似,单个BL8的写操作如图所示。
在这里插入图片描述
在这里插入图片描述
(5)刷新
每隔一段时间(tRFEFI)就发送一个刷新命令防止电容漏电数据丢失。
(6)自刷新
DDR3 SDRAM 的自刷新命令是用来保存存储阵列中的数据,无需外部时钟也可保留数据,是一种低功耗模式。进入自刷新后,仅关心 CKE 和 RESET#,但是所有的供电与地都需保持有效, DRAM 进入自刷新后会禁止内部时钟。在自刷新模式下
可以对时钟频率进行修改,并且在退出自刷新后初始化,重新设置模式寄存器的值。
(7)断电模式

存在的效率问题:(能够改善效率的措施)

(1)时间参数
DDR3 自身的特性决定了在各种命令之间切换是都要满足一定的时间参数,而这些时间参数,是 DDR3 读写效率的最大障碍。读操作时序:读命令之后, CL 时间之后,数据才出现在 DQ 总线上。如图 2.18,连续两次读,如果读命令间隔等于 tCCD 最小值(即 tCCD=4 tck),则数据会连起来,形成流水线返回。
在这里插入图片描述
如果两次读命令间隔大于 tCCD, 比如 tCCD=5 tck,则读数据则不能连续返回,两段 BL8 数据之间隔了一个周期。且命令线在发送两次命令间隔时,也未发送有效的命令,这样的间隔浪费了总线利用率, 造成了带宽的损失, 如图 2.19 所示。 因此,在设计控制器时尽量选择流水线操作,将时间参数降到最小。
在这里插入图片描述
(2)读写切换
写命令到读命令切换,如图所示, 发送完写命令和写数据之后, 需要再等 tWTR 时间才能发送读命令,所以写到读间隔非常大。
在这里插入图片描述
读命令到写命令切换,相比写到读,读到写时间较小, 发送完读命令,等待 RL+tCCD+2tCK-WL 时间之后,就可以发送写命令,但依旧有间隔,如图 2.21 所示。
在这里插入图片描述
(3)行切换
同 Bank 不同行的访问,是 DDR3 访问效率最低的一种情况,以两次跨行写访问为例,写数据完成后, tWR 时间之后,才能关闭本行。关闭后,需要 tRP 时间之后,才能重新激活另一行,激活后, 等待 tRCD 之后,才能再次发送写命令。写命令之后,CWL 时间之后,才能发送写数据。因此应该尽可能降低行切换出现的次数。

(4)刷新
DDR3 的特性决定,间隔固定时间需要对存储单元刷新一次,这个时间为 tREFI,而刷新命令和其他命令间隔时间为 tRFC。刷新是 DDR 的特性,这个时间不能节省。但可以通过提前或滞后刷新 8 次来减少控制器中命令调度的时间。

(5)跨行数据
当一次突发操作待写入/待读出的数据刚好处在一行的结尾,数据的一部分在下一行,如果下一行没有激活,就会造成数据丢失的情况,后半部分数据就不会生效。为了提高 DDR3 控制器对内存的访问效率, 即提高控制器仿问内存的实际带宽,就要利用好 DDR3 颗粒的时间参数。因为 DDR3 地址复用的特性,在访问一个地址前先要进行激活操作(即行地址选通),再进行读/写操作(即列地址选通),这也是和FLASH 有区别的地方。对于读/写操作有以下三种情况:
1)页冲突(Page Conflict):即访问同 Bank 不同行(Bank 已激活)。要访问 Bank中已经有一行打开,访问地址处于不同行,这时要先关闭(Precharge)已打开的行,再打开(Active)新的行地址,最后发送读/写命令。
2)页丢失(Page Miss):即访问 Bank 的某一行(Bank 未激活)。要访问的 Bank是未激活的状态,可能是第一次对该 Bank 进行访问,也可能是上一次对该 Bank 访问结束,已经关闭了打开的行。这时要先打开(Active)访问的行地址,再发送读/写
指令。
3)页命中(Page hit):即访问同 Bank 同行(Bank 已激活)。要访问的行地址在之前操作中已经打开,这时再访问该行就不用再进行激活,可以直接发送读/写命令。以 DDR3-1600 为例,对三种不同读/写寻址情况延迟计算如表 2.8 所示
在这里插入图片描述
通过以上分析,可以知道对效率影响最大的是 Page Conflict,对效率影响最小的Page Hit,所以要尽可能减少 Page Conflict 出现的几率,增大 Page Hit 出现的几率。因此读/写重排序模块的功能是对读/写命令进行重新排序,当新进入的命令和刚才出去的命令是同 Bank 同 Row,就要对新进入命令插队,以便优先处理 Page Hit 命令,同时将 Page Conflict 的两个命令分隔开。

最后附上一个时序参数:
在这里插入图片描述在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  • 5
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值