二、LPDDR4物理层接口与信号定义全解析

做LPDDR4训练参数分析,第一步得把物理层的那些信号搞清楚。我见过不少新人,训练调了半天,结果发现是物理层接口就没搞对。这就跟盖房子先看地基一样,信号定义就是那个地基。

别急,咱们一条一条捋清楚。

2.1 信号分类概览

LPDDR4的物理层信号,说白了可以分成三大类:时钟类、命令地址类、数据相关类。下面这个表格是我整理的常用信号速查表,你可以在做时序分析时拿来对照。

信号分组 信号名称 方向 功能简述
时钟 CK_t / CK_c 控制器→DRAM 差分时钟对,所有操作以此为基础
时钟 WCK_t / WCK_c 控制器→DRAM 写数据选通时钟,读写频率不同
命令 CS / CKE / ODT 控制器→DRAM 片选 / 时钟使能 / 片上终端
地址 CA[5:0] 控制器→DRAM 命令地址总线,6位分时复用
数据 DQ[15:0] 双向 数据总线,分高8位和低8位
数据选通 DQS_t / DQS_c 双向 数据选通差分对,读/写时切换方向
经验之谈:刚开始时我总把CK和WCK弄混。记住一句话:CK管命令,WCK管数据。在LPDDR4里,命令在CK的上升沿和下降沿都采样,数据则跟着WCK走。频率越高,这个区别越明显。

2.2 时钟信号——整个系统的脉搏

LPDDR4用了两个独立的时钟域。CK_t/CK_c是命令时钟,频率通常在800MHz-2.133GHz之间。WCK_t/WCK_c是数据时钟,频率是CK的两倍甚至四倍。为什么要搞这么复杂?

你想想看,命令不需要那么快,但数据不一样。读写DDR4,数据传输速率动辄4800MT/s以上,不用高频WCK根本跟不上。而且,这两对时钟之间的相位关系,决定了后面训练能不能通过。

我遇到过最头疼的问题就是CK和WCK的相位偏移。如果你在布局时没注意等长,skew一大,训练时怎么都过不了。所以布线时我会建议把CK和WCK走线拉到等长,误差控制在±1ps以内。

注意:时钟差分对的P/N信号也得严格等长。我曾经在一个项目里看到CK_t和CK_c差了30mil,结果时序违例跑出来一堆。差分布线,基本功不能丢。

2.3 命令地址信号——分时复用的艺术

CA[5:0]总共6根线。LPDDR4的地址量不小——行地址、列地址、bank地址、命令码……这么多东西怎么塞进6根线?

答案是分时复用。每个时钟周期,主控会发送两个CA信号包:第一个在CK上升沿,第二个在CK下降沿。这样6根线乘2个沿,一个周期就能传12位信息。具体怎么编码,可以参考JEDEC标准的时序表格,这里我直接给你一个常用的CA映射表。

时钟沿 CA[0] CA[1] CA[2] CA[3] CA[4] CA[5]
上升沿 (R) C0 C1 C2 BA0 BA1 BG
下降沿 (F) ACT_n RAS_n CAS_n WE_n C3 C4

嗯,这里要注意。ACT_n、RAS_n、CAS_n、WE_n这些命令是和控制逻辑绑定的。如果你在做训练参数分析时发现CA信号眼图不好,先检查PCB上有无stub、过孔切换次数是不是太多。我一般建议CA总线走fly-by拓扑,比T型更稳定。

2.4 数据相关信号——DQ、DQS和DM

这一块是物理层信号里最敏感的。一个16位的LPDDR4颗粒,DQ分两个字节通道:DQ[7:0]配DQS0,DQ[15:8]配DQS1。每组还有一根数据掩码DM,用于写操作时的mask控制。

DQS和DQ的关系非常紧密。读数据时,DQS由DRAM驱动,DQ跟着DQS的边沿走;写数据时,DQS由控制器驱动,DRAM用内部锁相环去抓DQ。这就引出两个训练:读眼图训练和写眼图训练。

核心概念:
  • 读数据:DQS和DQ是边缘对齐。DRAM发送时,DQ变化发生在DQS边沿附近。
  • 写数据:DQS和DQ是中心对齐。控制器发送时,DQ稳定窗口在DQS边沿的正中间。
训练参数的目的,就是保证DRAM能在这个对齐关系下正确采样。

2.5 信号完整性视角下的接口

抛开信号完整性讲物理层接口,是在耍流氓。LPDDR4的数据速率那么高,接口上的任何一点阻抗不连续都会导致眼图闭合。我整理了几个最容易出问题的地方:

  • ODT设置不当:片上终端电阻匹配不好,信号反射会增加。训练参数中的ODT配置要跟PCB特征阻抗对应。
  • VOH电平漂移:LPDDR4写电平用的是伪开漏。如果VOH没设准,DRAM侧的采样窗口会缩小。
  • 串扰:DQ走线离得过近,或者和时钟平行距离太长,都会引入串扰噪声。

我有个习惯,在做训练参数调试前,会先拿示波器看一下DQS和CK的交叉点位置。交叉点跑偏了,后面怎么调都白搭。不过这是后话,我们后面章节会专讲眼图测试方法。

2.6 信号定义小结——一张图看明白物理层架构

我把LPDDR4物理层接口的整体架构画成了下面这张SVG图。你可以把它当作本章的知识结构挂图。

LPDDR4物理层接口信号结构图 控制器 (MC) CK_t / CK_c WCK_t / WCK_c CA[5:0] (分时复用) CS / CKE / ODT DRAM 颗粒 CK_t / CK_c WCK_t / WCK_c CA[5:0] 采样 CS / CKE / ODT 响应 数据通道 DQ[15:0] (双向) DQS_t / DQS_c (双向) DM (写掩码) 字节通道 x2 双向 关键说明: 1. CK/WCK为差分时钟,CK管命令域,WCK管数据域 2. CA总线分时复用,上升/下降沿各传6位命令地址 3. DQS在读写时方向切换,数据训练调整其与DQ的相位关系

图上标得很清楚:左边控制器,右边DRAM,中间是数据通道。时钟命令是单向的,数据是双向的。做训练参数调试时,每次改参数都要问自己:这个参数影响的到底是哪个信号组?是CK的setup/hold,还是数据通道的DQS相位?

我的调试习惯:每次拿到一个新的LPDDR4板卡,我会先对照上面的架构图,在PCB上找到对应的走线。看看CK和WCK有没有分叉,CA有没有绕等长,DQ组内有没有串扰风险。这些物理层的信息,是后面所有训练参数分析的基础。