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 读操作时序流程,从命令发出到数据返回的完整路径。
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 的时序关系。
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等复杂参数的前提。