4. 读写时序基础:DDR4读操作时序、写操作时序、突发长度与预充电

DDR4 SDRAM 的读写操作并非简单的数据搬移,而是由一系列严格时序事件构成的复杂过程。理解读操作、写操作、突发长度(Burst Length, BL)以及预充电(Precharge)机制,是进行 Agilex FPGA 控制器时序调优的前提。本章将拆解这些基础概念,并建立它们与控制器参数之间的映射关系。

4.1 读操作时序

DDR4 读操作从控制器发送 读命令(READ) 开始,到数据在数据总线上稳定输出结束。关键时序参数包括 列地址选通潜伏期(CAS Latency, CL) 和 读取延迟(Read Latency, RL)。

  • CL (CAS Latency):从发送 READ 命令到第一个数据字出现在数据总线(DQ)上的时钟周期数。这是读操作最核心的延迟参数。
  • RL (Read Latency):在 DDR4 中,RL = CL + AL(附加潜伏期)。AL 通常为 0,因此 RL 常等于 CL。
  • 突发长度(BL):一次读命令后连续传输的数据字数。DDR4 固定支持 BL8(8 个字)或 BC4(4 个字,通过突发突变实现)。
Agilex 调优要点: 在 Agilex EMIF IP 中,CL 值由内存颗粒的 tCK(时钟周期)和 tAA(内部读取时间)共同决定。调优时需确保 CL × tCK ≥ tAA,否则数据可能无效。

下图展示了典型的 DDR4 读操作时序流程,从命令发出到数据返回的完整路径。

DDR4 读操作时序流程 CK ACT READ CL (CAS Latency) D0 D1 D2 D3 突发长度 BL8 (8 个数据字) 说明:ACT 命令打开行,READ 命令在 tRCD 延迟后发出。数据在 CL 个时钟周期后出现在 DQ 上。 Agilex 控制器需精确匹配 CL 值,并通过 DQS 选通信号正确捕获数据。

4.2 写操作时序

写操作与读操作对称但方向相反。控制器发送 写命令(WRITE) 后,数据必须与 数据选通信号(DQS) 对齐后发送到内存颗粒。关键参数为 写潜伏期(CAS Write Latency, CWL) 和 写入恢复时间(Write Recovery, tWR)。

  • CWL (CAS Write Latency):从发送 WRITE 命令到第一个数据字出现在 DQ 上的时钟周期数。DDR4 中 CWL 通常等于 CL - 1 或 CL - 2。
  • tWR (Write Recovery):最后一个数据字写入后,到预充电命令可以发出的最小延迟。用于确保数据可靠写入存储单元。
  • DQS 与 DQ 的关系:写操作时,控制器必须保证 DQS 边沿与 DQ 数据眼图中心对齐(中心对齐模式)。
实战提示: 在 Agilex 中,写均衡(Write Leveling)用于补偿 DQS 与 CK 之间的 skew。调优时需关注 tDQSS(DQS 与 CK 的相对时序),确保写数据窗口满足 JEDEC 规范。

下图展示了写操作中命令、数据与 DQS 的时序关系。

DDR4 写操作时序流程 CK ACT WRITE CWL DQS D0 D1 D2 D3 tWR 说明:写数据必须与 DQS 边沿对齐(中心对齐)。tWR 确保数据可靠写入后,才能执行预充电。 Agilex 控制器通过 DQS 延迟链调整写数据眼图位置,以补偿 PCB 走线 skew。

4.3 突发长度与预充电

突发长度(Burst Length, BL) 和 预充电(Precharge) 是决定 DDR4 带宽利用率和访问延迟的关键机制。

4.3.1 突发长度(BL)

DDR4 默认使用 BL8,即一次读写命令连续传输 8 个数据字。通过模式寄存器(MR0)可配置为 BC4(4 个字),但 BC4 通常用于减少延迟或配合特定颗粒特性。突发长度决定了数据总线的利用率:

  • BL8:适合大块连续数据传输,带宽利用率高。
  • BC4:适合小粒度随机访问,可减少总线占用时间。

4.3.2 预充电(Precharge)

预充电操作关闭当前打开的行(Row),为下一次行激活(ACT)做准备。预充电分为两种模式:

预充电类型 命令 行为 适用场景
自动预充电 READ with AP / WRITE with AP 在读写命令中附带预充电标志,数据传送完成后自动执行预充电 单次访问后无需保持行打开
显式预充电 PRE (Precharge) 单独发送 PRE 命令,关闭指定 Bank 或所有 Bank 的行 需要精确控制行关闭时机,避免 Bank 冲突
调优陷阱: 在 Agilex 控制器中,若频繁使用自动预充电,可能导致 tRAS(行激活时间)不足,引发数据错误。建议在连续读写同一行时使用显式预充电,以最大化带宽。

4.4 读写时序参数对比

下表汇总了读操作与写操作的核心时序参数,便于在 Agilex EMIF IP 配置时快速对照。

参数 读操作 写操作 说明
潜伏期 CL (CAS Latency) CWL (CAS Write Latency) 命令发出到数据开始传输的延迟
数据选通 DQS 边沿与数据边沿对齐(边沿对齐) DQS 边沿与数据眼图中心对齐(中心对齐) 读/写数据捕获方式不同
恢复时间 tRP (预充电时间) tWR (写入恢复时间) 写操作后需等待 tWR 才能预充电
突发长度 BL8 / BC4 BL8 / BC4 读写均受 MR0 寄存器控制
预充电模式 自动或显式 自动或显式 自动预充电在命令中附带标志

4.5 本章小结

  • 读操作延迟由 CL 主导,写操作延迟由 CWL 主导,两者在 Agilex 控制器中需独立配置。
  • 突发长度 决定单次传输的数据量,BL8 适合高吞吐,BC4 适合低延迟随机访问。
  • 预充电 策略直接影响 Bank 访问冲突概率,合理选择自动/显式预充电可提升带宽利用率。
  • 理解这些基础时序是后续调优 tRCD、tRP、tFAW 等复杂参数的前提。