3、示波器设置:时基与垂直灵敏度设置、触发模式选择、存储深度与采样模式
好,咱们直接进入正题。内存颗粒的坏位定位,说白了就是一场跟时间赛跑的游戏。示波器设置不对,你看到的波形全是假的,那还定位个啥?
我个人习惯,拿到一个DDR信号,第一件事不是急着抓波形,而是先问自己三个问题:这个信号跑多快?电压摆幅多大?我要看的是单次行为还是重复行为?这三个问题想清楚了,示波器的旋钮自然就知道往哪儿拧。
3.1 时基与垂直灵敏度设置
时基,就是横轴,代表时间。垂直灵敏度,就是纵轴,代表电压。这两个是示波器最基础的设置,但恰恰是很多人容易翻车的地方。
时基设置的核心原则: 你要看的信号周期,至少占屏幕的1/3到1/2。举个例子,DDR3的时钟周期大概是1.25ns(800MHz),那我通常会把时基设在500ps/div到1ns/div之间。这样屏幕上能看清几个完整的时钟周期,眼图也能看个大概。
垂直灵敏度设置: DDR信号的电压摆幅通常不大。比如DDR3的VDDQ是1.5V,信号摆幅大概在1.0V到1.5V之间。我一般会把垂直灵敏度设在200mV/div到500mV/div之间。这样信号能占屏幕的2到3格,既能看到完整的摆幅,又能分辨噪声和振铃。
嗯,这里要注意:如果信号幅度太小,比如只有100mV,那垂直灵敏度就要设到50mV/div甚至更低。但别设得太低,否则噪声会被放大,你看到的波形全是毛刺,反而干扰判断。
| 信号类型 | 推荐时基 | 推荐垂直灵敏度 |
|---|---|---|
| DDR3 时钟 (800MHz) | 500ps/div - 1ns/div | 200mV/div - 500mV/div |
| DDR3 数据/地址 (400MHz) | 1ns/div - 2ns/div | 200mV/div - 500mV/div |
| DDR4 时钟 (1.6GHz) | 200ps/div - 500ps/div | 100mV/div - 200mV/div |
| DDR4 数据/地址 (800MHz) | 500ps/div - 1ns/div | 100mV/div - 200mV/div |
3.2 触发模式选择
触发,是示波器的灵魂。没有触发,你看到的波形就是一堆乱码。内存信号尤其如此,因为DDR总线上的信号是突发性的,不是一直有数据在跑。
我常用的触发模式:
- 边沿触发: 最基础,也最常用。比如抓时钟信号,设个上升沿触发,电平设在1.5V的一半(0.75V左右),基本就能稳定显示。
- 脉宽触发: 这个在内存坏位定位里特别有用。比如DDR的读写命令,通常有固定的脉冲宽度。你可以设一个脉宽触发,只抓那些宽度异常的脉冲。我遇到过好几次,坏颗粒的地址线脉冲宽度明显偏窄,用脉宽触发一抓一个准。
- 码型触发: 如果你有逻辑分析仪配合,码型触发可以帮你抓到特定的读写序列。比如只抓某个特定地址的写操作,然后看数据线上的波形是否正常。
为什么会这样?因为DDR信号是差分或伪差分结构,触发电平设得不对,示波器可能触发在噪声上,而不是真正的信号沿上。你想想看,触发点都不对,后面的分析还有什么意义?
3.3 存储深度与采样模式
存储深度,说白了就是示波器能存多少数据点。采样模式,就是示波器怎么把这些数据点“塞”到屏幕上。这两个参数直接决定了你能看到多长时间的波形,以及波形的细节有多丰富。
存储深度的选择: 现在的示波器,存储深度动不动就是几十Mpts甚至几百Mpts。但别被数字唬住了。存储深度越大,示波器处理数据的时间越长,波形刷新率会下降。
我个人习惯:抓DDR信号时,存储深度设在10Mpts到50Mpts之间就够了。为什么?因为DDR的读写操作通常只有几十到几百个时钟周期。10Mpts的存储深度,配合1ns/div的时基,能抓到的波形长度大概是10ms。这足够覆盖一次完整的读写操作了。
采样模式的选择:
- 实时采样: 最常用。示波器以最高采样率连续采集数据。适合抓单次或偶发信号。比如内存颗粒的初始化序列,或者某个特定的读写错误。
- 等效时间采样: 适合重复信号。比如DDR的时钟信号,你可以用等效时间采样,把采样率“虚拟”提高好几倍,看到更精细的波形细节。但注意:等效时间采样要求信号是严格重复的,DDR的数据信号通常不满足这个条件。
- 滚动模式: 适合低频信号。DDR信号频率高,基本用不上。
嗯,最后说一句:示波器的设置没有绝对的对错,只有合不合适。你得多试,多调,找到最适合你当前场景的那组参数。我刚开始做内存调试的时候,也经常被示波器搞得一头雾水。但只要你理解了每个参数背后的物理意义,慢慢就能找到感觉。
说白了,示波器就是个工具。工具好不好用,关键看你会不会用。希望今天讲的这些,能帮你少走一些弯路。