Learning Record learning from practice

· cpu / memory

从电路节点到端口:电压、电流和输入输出不是一回事

从电路节点到 DDR5:一步步理解高速信号反射(1)

很多关于高速接口的困惑,起点并不是公式太难,而是把三个不同视角混在了一起:

  • 电路中的节点电压;
  • 支路中的电流方向;
  • 系统端口的输入和输出。

先把这三件事分开,后面讨论传输线、反射和 ODT 时会轻松很多。

1. 电压属于两个节点

电压不是一个“流进芯片”的东西。电压描述的是两个节点之间的电势差:

\[V_{AB}=V_A-V_B\]

说“这个信号是 1.1 V”,通常省略了参考节点。更完整的说法是:信号节点相对于某个参考地,电势差约为 1.1 V。

因此,同一个节点可以同时拥有多个电压描述:

V_signal - VSSQ
V_signal - VDDQ
V_signal - another reference node

它们不是三个不同的信号,而是选择了不同参考点后的电压差。

2. 电流属于一条支路

电流描述电荷通过某条支路的速率。我们可以先人为规定一个参考方向,再根据计算结果判断真实方向是否相反。

节点处满足 KCL。用最简单的形式写就是:

\[\sum I_\mathrm{in}=\sum I_\mathrm{out}\]

这句话不表示电压会在节点里“汇合”。它表示电流的代数和必须满足电荷守恒。

例如,一个输出驱动器给传输线充电时,电流路径可能是:

VDDQ
  |
输出驱动器
  |
信号节点/传输线
  |
负载输入电容和终端
  |
VSSQ

输出端的电压由驱动器、传输线和负载共同决定。不能只看“输出驱动器内部有一个 1.1 V 电源”,就断言任意时刻线上的每个位置都是 1.1 V。

3. 输入和输出是端口视角

“输入”和“输出”描述的是一个模块对外交换信号的方向:

控制器模块  ──输出──>  DRAM 模块
控制器模块  <──输入──  DRAM 模块

但它们不是传输线内部波的方向。传输线内部更关心的是:

向 +x 方向传播的波
向 -x 方向传播的波

这两个方向由坐标和传播过程定义,而不是由“谁是输入设备”定义。

在 DDR 的读写切换中,同一条 DQ 线的系统角色还会变化:

写:Controller 是源端,DRAM 是负载端
读:DRAM 是源端,Controller 是负载端

所以“DRAM 的输入端”与“沿着线向右传播的波”不能当成同义词。

4. 一个最小的端口模型

把驱动器和接收器抽象成两个端口,可以得到:

源端                     负载端
  |                        |
  |---- 传输线 ------------|
  |                        |
等效源阻抗 ZS           等效负载阻抗 ZL

在低速或很短的连接中,我们常常把中间的线看成一根理想导线,直接使用节点分析。

但如果信号边沿在走线传播完成之前就已经发生,线上的不同位置还没有机会同时“知道”这个变化。这时需要把中间的连接看成会传播波的结构。

5. 本篇结论

需要记住三组不同的词:

电压:两个节点之间的电势差
电流:通过某条支路的电荷流动
输入/输出:模块或系统端口的信号角色

下一篇要回答的问题是:什么时候一根看起来普通的 PCB 走线,必须从理想导线升级为传输线模型?答案主要取决于边沿时间和传播延迟,而不只是时钟频率。

References