DDR3 标准/数据表中的 CK(tCK、nCK)单位不明确?

问题描述 投票:0回答:1

我正在 Artix-7 FPGA 上设计一个简单的内存控制器和 PHY,但在读取数据表时遇到问题。存储器部分的数据表(以及 JEDEC JSD79-3F 文档中)中的时序以 CK/tCK/nCK 单位表示,在我看来,如果不以标称频率运行存储器(例如,低于 666 MHz 时钟),则这些时序是不明确的。 1333 MT/s 模块)。

如果我以 300 MHz 的频率运行 1333 MT/s 模块(根据数据表速度档,仍然允许 DLL 打开),CK/tCK/nCK 单位是否等于 1.5 ns(来自模块的本机666 MHz),还是 3.33 ns(来自实际运行的频率)?一方面,某些延迟是恒定的是有道理的,但另一方面,一些延迟是相对于 CK/CK# 引脚(如 CL 或 CWL)上的时钟边沿来表示的。

也就是说,数据表中的某些时序参数仅在更改速度档时才会更改。例如。 1333 器件的 tRP 为 13.5 ns,这也与 1066 器件的 13.125 ns tRP 向后兼容——无论器件物理时钟引脚选择的工作频率如何。

但是,在 300 MHz 下运行 DDR3 模块仅允许使用 CL = CWL = 5,这又以“CK”单位表示。据我了解,这意味着输入时钟的 5 个周期,即 5 * 3.33 ns。

我想我要问的是“CK”(或 nCK 或 tCK)单元是否与所选速度档相关(选择 DDR3-1333 时 tCK = 1.5 ns)或提供给 DDR3-1333 的时钟信号的实际频率控制硬件控制内存模块(例如 600 MT/s 模式为 3.3 ns)?

memory hardware hardware-interface
1个回答
1
投票

这是 u/Allan-H 在 Reddit 上的 回复,他帮助我得出了结论:

当您在模式寄存器中设置 CL 时,这就是芯片在将数据放入引脚之前等待的时钟数。该时钟是控制器提供给芯片的时钟(毕竟是 SDRAM)。
您有责任确保您编程的时钟数量(例如 CL=5)乘以时钟周期(例如 1.875ns)至少与 RAM 的访问时间一样长。请注意,您对多个时钟进行了编程,但重要的参数实际上是时间。 RAM 必须先准备好数据,然后才能将其发送到输出缓冲区。
现在让我们以较低的速度运行 RAM,例如 312.5MHz(3.2ns 周期)。我们现在可以选择将 CL 编程为低至 3,因为 3 x 3.2ns > 5 x 1.875ns。
顺便说一句,由于我们正在处理 ns 的分数,因此我们还需要考虑时钟抖动。

与直觉相反,DRAM 芯片不知道自己有多快;它必须由 DRAM 控制器使用该信息进行编程。该信息可能会硬编码到控制器中(例如,用于 FPGA 实现),或者通过软件进行编码,软件通常会读取 DIMM 上的 SPD EEPROM 以计算出速度等级,然后将适当的值写入 DRAM 控制器。

这也解释了定义为例如的计时值“3CK 或 5ns 中的较大者”。在这种情况下,存储器芯片的响应速度不能超过 5 ns,但内部逻辑还需要输入 CK 引脚上的 3 个正时钟沿才能完成此示例参数定义的操作。

© www.soinside.com 2019 - 2024. All rights reserved.