物理接口与信号定义

各位好,这一章我们聊聊 eMMC 的物理接口。说白了,就是那些从主控连到 eMMC 芯片的管脚——CLK、CMD、DAT0~7、RST_n、DQS。你在 datasheet 里看到的那些引脚名,到了实际板子上就是一条条走线,走线没处理好,协议再熟也白搭。我个人习惯先把每个信号的角色、方向、电平特性弄清楚,再去看时序,这样不容易晕。

下图把 HS400 模式下的主要信号连接关系画了出来,你可以先有个整体印象,后面我们再逐个拆解。

eMMC HS400 接口信号架构 Host Controller eMMC Device 控制信号组 数据信号组 RST_n 异步复位(低有效) CLK 时钟(HS400: 200MHz) DQS 数据选通(差分对) CMD 命令/响应(双向) DAT[0:7] 8位数据总线(双向) 图例: 单向(Host → Device) 双向(Host ↔ Device)

2.1 信号总览

eMMC 接口一共就这几根信号线,数都数得过来。但每一根在 HS400 模式下的角色和普通模式不太一样,尤其是 DQS。我先用一张表把它们的名字、方向、核心功能列清楚,后面再逐个细聊。

信号名 方向 HS400 下的核心功能 电平标准
CLK Host → Device 提供同步时钟,HS400 模式下频率可达 200MHz 1.8V / 3.3V(HS400 强制 1.8V)
CMD 双向(开漏 + 推挽) 传输命令和响应,初始化阶段开漏,正常模式推挽 1.8V / 3.3V
DAT0~7 双向 8 位并行数据总线,DDR 双沿采样 1.8V(HS400 强制)
DQS 双向(差分对) 数据选通,HS400 模式特有,用于数据眼图居中对齐 1.8V 差分
RST_n Host → Device 异步复位,低电平有效,拉低 1µs 以上触发复位 1.8V / 3.3V

HS400 的硬门槛:所有信号必须工作在 1.8V 电平,不再兼容 3.3V。如果你做兼容设计,记得加电平转换,别直接把 3.3V 拉到 eMMC 的 1.8V 域里。

2.2 CLK —— 整个系统的节拍器

CLK 是 Host 发给 eMMC 的时钟,所有同步操作都靠它。HS400 模式下,CLK 最高跑到 200MHz,周期只有 5ns。你想想看,一个时钟周期 5ns,数据要在一个周期内完成发送、传输、采样,信号路径上多 1ns 延迟都受不了。

我在项目中遇到过一块板子,CLK 走线绕了两个过孔,结果 HS400 模式死活跑不到 200MHz,降到 150MHz 才稳定。后来把走线拉直、缩短,问题就解决了。CLK 的走线长度尽量控制在 15mm 以内,远离其他高频信号。

我的习惯:CLK 走线一定包地,两侧打地过孔,间距不超过 5mm。别偷懒,这个钱省不得。

2.3 CMD —— 命令与响应的双向通道

CMD 线在初始化阶段是开漏输出,需要外接上拉电阻;进入正常模式后切换成推挽驱动。开漏模式是为了多设备共用总线时的线与仲裁,但 eMMC 通常只有一个设备,所以实际中上拉电阻选 10kΩ 或 4.7kΩ 都行。

CMD 上的协议是双向的:Host 发命令,Device 回响应。响应有 R1、R2、R3 等类型,长度 48 位,CRC7 校验。这部分我们在后续章节会详细拆解,现在你只要记住:CMD 是控制通道,速率不高,但可靠性要求极高。

曾经踩过的坑:CMD 的上拉电阻接到了 3.3V,但 eMMC 工作在 1.8V,结果高电平灌进 I/O,芯片直接烧了。电平域一定要统一,别搞混。

2.4 DAT0~7 —— 8 条数据高速公路

DAT0~7 是 8 根双向数据线,HS400 模式下在 CLK 的上升沿和下降沿各采样一次,等效数据速率是时钟频率的 2 倍。200MHz 时钟就有 400MT/s 的数据率,8 位总线就是 3.2Gbps。

这 8 根线必须等长布线,我一般控制组内差不超过 2mm。你想想,如果 DAT0 比 DAT7 短了 5mm,信号到达时间差接近 30ps,在 5ns 的时钟周期里已经占了 0.6%,眼图闭合的风险直线上升。

DAT0 还有一个特殊功能:总线繁忙检测。Device 在响应命令时,如果还没准备好,会在 DAT0 上拉低表示忙。这个细节在调试时很有用,我曾经抓波形看到 DAT0 一直低,才发现 Device 还在内部擦写,不是死机。

2.5 DQS —— HS400 的"眼睛"

DQS 是 HS400 模式引入的信号,普通模式(HS200、DDR50 等)没有它。说白了,DQS 是一对差分信号(DQS_t 和 DQS_c),在数据发送时由发送端产生,接收端用它来采样数据。

为什么需要 DQS?因为在 200MHz 双沿采样下,单纯靠 CLK 已经无法保证数据眼图居中。DQS 在发送数据时与数据边缘对齐,接收端内部会做 90 度相移,把采样点移到数据眼图正中间。这个相移由 eMMC Device 内部的 DLL 完成,不需要主控操心。

HS400 的关键特征:数据与 DQS 边缘对齐发送,与 DQS 中心对齐接收。正是这个机制让 HS400 能在 200MHz 下可靠传输。

DQS 的差分走线阻抗控制在 100Ω,两条线之间的间距要均匀,我建议同层走线,避免跨层。差分布线不对称会导致共模噪声增加,直接反映在数据误码上。

2.6 RST_n —— 干净利落的复位

RST_n 是异步复位,低电平有效。Host 拉低 RST_n 至少 1µs,eMMC 就会进入复位状态,所有寄存器恢复默认值,正在进行的操作立即终止。

这个信号平时不用频繁操作,但调试时特别好用。我记得有一次 Device 进入死锁状态,CMD 发什么都不响应,DAT 线全高阻,就是靠 RST_n 硬复位救回来的。复位之后记得重新走初始化流程,包括电压协商和 HS400 模式切换。

我的建议:RST_n 上接一个 10kΩ 上拉到 VCCQ,防止上电瞬间浮空导致误复位。如果主控没有专用复位引脚,可以用 GPIO 模拟,但注意电平域匹配。

2.7 电气特性速查

下面这张表汇总了 HS400 模式下各个信号的关键电气参数,设计 PCB 和做信号完整性分析时可以直接拿来参考。

参数 CLK CMD / DAT DQS RST_n
VIH (min) 0.65 × VCCQ 0.65 × VCCQ 差分 150mV 0.65 × VCCQ
VIL (max) 0.35 × VCCQ 0.35 × VCCQ 差分 −150mV 0.35 × VCCQ
VCCQ 1.70V ~ 1.95V(HS400 强制 1.8V ±5%)
上升/下降时间 ≤ 0.8 ns ≤ 0.8 ns ≤ 0.6 ns ≤ 5 ns
负载电容 建议单线 ≤ 15 pF

2.8 PCB 布局的几条"过来人"建议

讲完信号本身,我想跟你聊聊实际板子上怎么伺候这些信号。我这几年经手过几个 eMMC 项目,有几点感触特别深:

  • DAT 组一定要等长。 8 根数据线加上 DQS,组内长度差控制在 2mm 以内。我习惯在绕蛇形线时保持间距 ≥ 3 倍线宽,减少串扰。
  • CLK 单独走,别跟 DAT 并排。 CLK 是强辐射源,离 DAT 太近会把噪声耦合到数据线上。中间隔一条地线是底线。
  • DQS 差分对优先走。 先布 DQS,再布其他信号。DQS 的参考平面必须连续,换层时两侧加地过孔。
  • RST_n 不用太讲究,但别浮空。 它速率低,走长一点没关系,但上拉电阻一定要加,否则上电时序不稳。
  • VCCQ 退耦电容放近一点。 每个电源引脚配一个 0.1µF 陶瓷电容,紧贴引脚放置,过孔打在电容焊盘旁边。

曾经的血泪教训:有一版 PCB 把 DAT0 和 DAT1 换了层,结果长度差达到 8mm,HS400 模式完全跑不通。最后只能飞线补救,耗时又费钱。等长检查一定在做 Gerber 之前完成。