2. DDR基础回顾

在进入 Read Centering 训练之前,必须先把 DDR SDRAM 的基本工作方式重新梳理一遍。Read Centering 的本质,是让控制器在读取数据时准确找到 DQS 与 DQ 之间的最佳采样点;如果对 DDR 的读写时序、命令调度和 DQS/DQ 关系理解不牢,后续的窗口分析就会变成“只看波形、不知因果”。本节从原理、时序、调度和信号关系四个角度做一次系统回顾。

一、DDR SDRAM 的基本原理

DDR(Double Data Rate)SDRAM 的核心特征是:在时钟的上升沿和下降沿都传输数据,因此同一时钟周期内可以完成两次数据传送。与早期 SDR SDRAM 相比,DDR 在不提高时钟频率的前提下,把数据带宽提升了一倍。其内部仍然以存储阵列为核心,通过行地址、列地址和 Bank 地址完成寻址。

一次完整的访问通常包含以下阶段:

  • 激活(ACT):打开指定 Bank 中的一行,把整行数据送入行缓冲。
  • 列选通(CAS):在已激活的行中选中具体列,准备读出或写入。
  • 数据传送:读操作时数据从存储阵列经输出缓冲送到 DQ 总线上;写操作时数据从 DQ 总线写入存储阵列。
  • 预充电(PRE):关闭当前行,为下一次激活做准备。

DDR 的存储阵列按 Bank 组织,多个 Bank 可以交错工作,从而隐藏预充电和激活带来的延迟。这种“多 Bank 并行 + 双沿传输”的结构,是 DDR 高带宽的基础,也是命令调度需要重点考虑的对象。

二、读写时序与关键参数

DDR 的读写时序由一组时间参数约束,常见参数包括:

参数 含义 对读窗口的影响
tRCD ACT 到 CAS 之间的最小延迟 影响读命令发出时刻,间接影响 DQS 到达时间
tCL(CAS Latency) 读命令到数据输出的延迟 决定 DQS 与 DQ 相对读命令的起始位置
tRP 预充电到下一次 ACT 的延迟 影响 Bank 切换时的读窗口连续性
tDQSCK DQS 相对 CK 的输出偏移 直接决定 DQS 边沿与 DQ 数据眼的对齐关系
tDQSQ DQS 边沿到 DQ 有效窗口的偏移 是 Read Centering 需要补偿的核心偏差

读操作中,控制器发出读命令后,经过 tCL 个时钟周期,DDR 器件开始输出 DQS 和 DQ。DQS 是源同步时钟,由 DDR 器件随数据一起发送;控制器必须用 DQS 去采样 DQ,而不是用系统 CK 直接采样。因此,DQS 与 DQ 之间的相位关系,直接决定了采样是否可靠。

关键结论:DDR 读操作是源同步传输,DQS 是数据有效的“节拍”,DQ 是数据本身。Read Centering 的目标,就是让控制器内部的采样点落在 DQ 数据眼的正中央,而不是落在 DQS 边沿附近。

三、命令调度与数据总线关系

DDR 控制器通过命令总线向器件发送 ACT、RD、WR、PRE、REF 等命令。命令调度器需要在满足时序参数的前提下,尽量提高总线利用率。常见调度策略包括:

  • Bank 交错:在一个 Bank 预充电时,切换到另一个已激活的 Bank 继续读写。
  • 读写切换:读转写、写转读需要插入总线周转周期,避免 DQ 总线冲突。
  • 刷新插入:定期插入 REF 命令,刷新期间不能进行正常读写。
  • 命令合并:把连续的同 Bank 同列访问合并,减少重复命令开销。

命令调度会改变 DQS 和 DQ 的出现时刻,但不会改变它们之间的相对关系。也就是说,调度影响的是“什么时候有数据”,而 Read Centering 关注的是“数据到来时怎么采”。两者一个在时间轴上排布,一个在相位轴上对齐。

读命令序列示例:
CK      : _/¯\_/¯\_/¯\_/¯\_/¯\_/¯\_
CMD     : ACT  NOP  RD   NOP  NOP  NOP
DQ      : --------------------- D0 D1 D2 D3
DQS     : --------------------- _/¯\_/¯\_
          <-- tRCD --><- tCL ->

从上面的示意可以看到,读命令发出后,经过 tCL 才出现 DQS 和 DQ。DQS 的边沿大致对准 DQ 数据眼的中心,但由于 tDQSCK、tDQSQ、PCB 走线延迟和器件差异,这个对准关系会偏移。Read Centering 就是通过训练找到这个偏移量,并在控制器内部做相位补偿。

四、DQS/DQ 信号关系与读窗口

DQS 与 DQ 的关系可以从三个层面理解:

  1. 物理层:DQS 是差分或单端选通信号,DQ 是数据信号,二者在 PCB 上通常成组走线,保持等长。
  2. 时序层:DQS 的边沿对应 DQ 数据位的切换点,理想情况下 DQS 边沿位于 DQ 数据眼的中心。
  3. 采样层:控制器用 DQS 边沿触发内部采样电路,把 DQ 上的数据锁存到内部寄存器。

读窗口(Read Window)是指 DQ 数据保持有效的整个时间范围。在这个窗口内,DQS 边沿必须落在有效区域内,且最好落在中心。如果 DQS 边沿太靠近数据跳变沿,采样就会不稳定,出现误码。Read Centering 训练通过扫描 DQS 延迟,找到窗口的左右边界,再取中点作为最佳采样点。

DDR 读操作:DQS 与 DQ 信号关系及读窗口 CK CMD ACT RD NOP NOP tRCD tCL DQS DQ D0 D1 D2 D3 D4 D5 D6 D7 读窗口(DQ 有效区间) DQS 边沿 理想采样点应位于数据眼中心

图中可以看到,DQS 的每个边沿对应一个 DQ 数据位。理想情况下,DQS 边沿应落在 DQ 数据眼的中心;但实际系统中,由于 tDQSCK、tDQSQ、PCB 延迟和 PVT 变化,DQS 边沿会偏离中心。Read Centering 通过扫描延迟,找到窗口左右边界,再把采样点移到中心位置。

五、常见误区与复盘要点

误区一:把 DQS 当成普通时钟,直接用系统 CK 采样 DQ。DDR 读操作是源同步,必须用 DQS 采样。

误区二:认为命令调度和 Read Centering 无关。调度改变数据出现时刻,但不改变 DQS/DQ 相对关系;两者需要分开分析。

误区三:只关注 DQS 边沿是否出现,不关注它是否落在数据眼中心。边沿出现不等于采样可靠。

复盘要点:遇到读误码时,先确认 DQS 是否正常翻转,再检查 DQS 与 DQ 的相对相位,最后用 Read Centering 扫描窗口边界。不要一上来就调驱动强度或 ODT,先定位是相位问题还是信号完整性问题。

总结来说,DDR 读操作依赖 DQS 对 DQ 的源同步采样,命令调度决定数据何时出现,而 DQS/DQ 的相位关系决定数据能否被正确采样。Read Centering 训练正是围绕这个相位关系展开:通过扫描延迟找到读窗口,再把采样点对准窗口中心。理解这些基础,后续的窗口分析和训练调优才有稳固的出发点。