由于电路板上的物理走线可能导致信号延迟超过高速内存的时序容差,DDR3 和 DDR4 系统必须在每次启动时进行校准过程,以使数据与系统时钟对齐。这一过程在 LiteDRAM 项目中有所记载,它补偿了由于同一 Rank 上的不同内存芯片与控制器之间的物理距离不同,导致它们接收到时钟信号的时间略有差异这一事实。

显示内存接口参数和时序规范的技术表格。
内存接口时序和配置参数的技术规范。github.com

此表格提供了与文章中讨论的内存接口配置相关的特定技术参数。

Fly-By 拓扑结构的挑战

DDR3 和 DDR4 内存接口利用 fly-by 拓扑结构处理时钟、命令和地址引脚。在这种布局中,信号依次经过每个内存芯片,然后再到达终止点,这使得重负载信号在高速下保持清晰。

DDR3/DDR4 默认端接和驱动强度: DDR3 RTT_NOM 60 ohm; DDR4 RTT_NOM 40 ohm; DDR3 RTT_WR 60 ohm; DDR4 RTT_WR 120 ohm
DDR3/DDR4 默认端接和驱动强度github.com

图表由 HN Digest 根据 github.com 报告的数据绘制;数值与源文件一致。

权衡在于,每个芯片接收到时钟的时间都比前一个稍晚。由于数据通道是点对点的,它们的延迟并不随时钟同步变化,从而在第一个和最后一个芯片之间产生偏差,该偏差可能超过单个时钟周期。

“由于采用 fly-by 路由,第一个和最后一个芯片之间的偏差可能超过一个时钟周期,因此每个通道都需要自己的 DQS 延迟。”

— litedram/doc/manual/03_dram_interface.md at master · enjoy-digital/litedram

写入对齐与延迟校准

为了纠正 fly-by 偏差,控制器执行“写入对齐”。它将 DRAM 置于特殊模式并发送 DQS 脉冲,测量直到 DRAM 返回特定位转换时的延迟。然后,控制器调整每个通道的输出延迟,直到 DQS 在该特定芯片上与时钟 (CK) 完全对齐。

详细说明内存硬件配置和信号特征的数据表。
展示内存硬件配置和信号特征的详细数据表。github.com

此表格支持对高速内存系统中特定硬件配置和信号行为的讨论。

除了对齐,系统还必须校准写入延迟和 DQ-DQS 训练。这确保了通道不会提前或滞后整个时钟周期,并且在写入操作期间,数据 (DQ) 相对于选通信号 (DQS) 处于中心位置。

读取对齐与数据眼

在读取端,由于电路板和 I/O 延迟在每个通道上各不相同,控制器无法准确知道数据何时到达。读取对齐为每个通道找到两个设置:用于将字对齐到正确时钟周期的粗略“位偏移 (bitslip)”,以及用于寻找“数据眼”的精细输入延迟。

数据眼是读取的第一字到达正确位位置的窗口。宽窗口表示接口稳健,而窄窗口则暗示存在信号完整性或时钟问题。在某些硬件上,例如 Lattice 和 Gowin PHY,系统还必须使用“突发检测 (burst detect)”来识别 DRAM 实际发送数据的时刻。

显示内存时序和对齐数据的技术图表或表格。
内存时序和对齐数据点的技术概述。github.com

此视觉内容为文中描述的读取对齐和数据眼测量提供了额外背景。

硬件约束与权衡

并非所有硬件都支持相同水平的校准。例如,Artix-7 FPGA 缺乏所有通道上标准写入对齐所需的输出延迟,迫使系统使用静态 DQS 相位或 CK 相位偏移模式。

此外,虽然 UltraScale+ PHY 可以分步设置 FPGA 读取 VREF(参考电压),但 LiteDRAM BIOS 目前将其保留在构建时的值,除非由软件手动调整。这些限制突显了物理硬件约束如何直接决定支持的内存配置。