从 PC(例如 SDRAM / DDR)到微控制器的 RAM 接口

电器工程 微控制器 记忆 内存 DDR
2022-01-29 19:48:00

我正在研究将标准 PC 外形尺寸的 SDRAM 或 DDR 连接到微控制器,但我找不到任何关于它们在总线工作方式方面如何工作的明确细节。我想这类似于任何标准 SPI 或 I²C 接口的工作方式——向设备发送一些指令,然后读回一些结果,直到满足特定的引脚状态。除了在这种情况下,数据和地址总线是并行的而不是串行的。

我对这个话题有三个相关的问题:

  • 标准 PC 内存(例如 SDRAM 或 DDR)在什么接口上运行?我记得读过一些关于 JEDEC 负责规范的内容,但我找不到任何具体细节。我想使用 DDR(或 DDR2),因为它现在更便宜,但我会选择 SDRAM。
  • 可以将标准 PC 内存购买到更“舒适”的时钟速度吗?这些东西的标准总线速度往往在 133MHz 左右,但我希望以低于 1MHz 的速度运行它们。我的理解是 SDRAM 在响应命令之前会等待时钟边沿,因此低时钟频率应该可以让微控制器对其进行管理。
  • 物理接口的名称是什么?我尝试在 Farnell 上寻找此类存储设备的插座,但我只发现了一些非常小的间距表面贴装材料。如果我花费足够长的时间,我可能会构建自己的通孔版本,但我更愿意只购买一个预先构建的版本。
4个回答

除非您的微控制器具有直接总线支持以连接到 DDR/DDR2/DDR3 类型的 RAM,或者您的微控制器通过已编程为提供 RAM 接口的 FPGA 进行连接,否则使用 DIMM 很可能不是一个有用的练习。出现这种情况有几个强有力的原因......

1) DDR 内存芯片的工作电压可能低于您的微控制器。

2) DDR 存储器的接口是多路复用的,并且需要精确的时钟,而多路复用的线路与所述时钟同步改变状态。

3) 现代 DIMM 设计为在 800MHz、1066MHz、1333MHz 或 1600MHz 的超高频率时钟下运行。在设计与 DIMM 的电路连接时,信号完整性极其重要。这不是一项简单的练习,因此内存芯片可能对噪声极为敏感。

4) DDR 存储器需要不断刷新以保持存储单元数据有效。如果不刷新,内存内容会随着时间从几毫秒到几秒逐渐消失。

5) 操作现代 DDR RAM 的命令结构很复杂。最复杂的部分是正确的初始化序列,它由大约 13 到 20 个单独的步骤组成。

6) 现代 DIMM 旨在非常快速地将数据馈送到现代 PC 型计算机。典型的 DIMM 具有 64 位的数据路径宽度。多列 DIMM 还需要多个时钟和芯片选择信号来访问记忆棒上的所有内存芯片。典型的小型微控制器不太可能在没有过多外部电路的情况下有效利用这种广泛的数据格式。

请记住这一点。制造使用 DIMM 的 PC 型处理器的公司有板载控制器来连接内存插槽。在 BIOS 领域工作的程序员有一个工程专业,称为 MRC(内存参考代码)。这是初始化 DDR 控制器和所有连接的 DIMM 的程序代码模块。这个专业雇佣了最好的和一些最资深的 BIOS 程序员,他们只做 MRC 编码作为全职工作。

一些单数据速率 (SDR) SDRAM 可以以较慢的速率运行 - 检查时钟周期 (max) 规范。但是,您必须定期发出刷新命令,如果您的时钟频率为 1MHz,您可能会发现您没有时间做其他事情!

DDR SDRAM 通常具有高达数十 MHz 的最小(是的,最小)时钟频率......并且在微控制器上实现物理接口将非常具有挑战性,因为它会返回一个时钟/选通信号以及数据和您必须找到该时钟周期的中间点才能知道何时对数据进行采样。

美光是很好地记录接口的数据表的重要来源。

至于物理连接器,它们被称为 SIMM 和 DIMM(单双列直插内存模块)

有一种 DRAM 包括板载刷新控制器。它允许大内存密度,同时允许没有 DRAM 控制器的 MCU 将其视为 SRAM。它被各种供应商称为 Pseudo SRAM、PSRAM 或 Cellular DRAM。

一个示例示例零件号将是...

为了使用 SDRAM,您需要有一个包含 SDRAM 控制器的芯片。要么得到一个有一个的微控制器,要么将一个有一个的 FPGA 连接到你的微控制器。

无论哪种方式,它都不是初学者的项目。