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 的关系可以从三个层面理解:
- 物理层:DQS 是差分或单端选通信号,DQ 是数据信号,二者在 PCB 上通常成组走线,保持等长。
- 时序层:DQS 的边沿对应 DQ 数据位的切换点,理想情况下 DQS 边沿位于 DQ 数据眼的中心。
- 采样层:控制器用 DQS 边沿触发内部采样电路,把 DQ 上的数据锁存到内部寄存器。
读窗口(Read Window)是指 DQ 数据保持有效的整个时间范围。在这个窗口内,DQS 边沿必须落在有效区域内,且最好落在中心。如果 DQS 边沿太靠近数据跳变沿,采样就会不稳定,出现误码。Read Centering 训练通过扫描 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 训练正是围绕这个相位关系展开:通过扫描延迟找到读窗口,再把采样点对准窗口中心。理解这些基础,后续的窗口分析和训练调优才有稳固的出发点。