触发设置基础:如何配置触发条件来捕获 Training Sequences
触发配置这事儿,说简单也简单,说复杂也复杂。
我个人习惯先讲清一个问题:你到底要抓什么?
Training Sequences 不是一直挂在总线上的。它只在链路初始化、速率协商或恢复阶段出现。换句话说,你要是用普通的数据触发去逮它,十有八九会扑空。
那我们该怎么配?
触发类型的选择
协议分析仪里常见的触发类型,我用个表格来对比。这样你一眼就能看出区别。
| 触发类型 | 适用场景 | 对 Training Sequences 的适用性 |
|---|---|---|
| 基本触发(边沿/电平) | 简单信号跳变 | 部分适用(如检测同步头) |
| 数据模式触发 | 特定比特序列 | 高度适用(推荐) |
| 物理层触发 | 电气/时序条件 | 适用(如幅度异常) |
| 协议层触发 | 特定包/帧 | 部分适用(看协议层是否解析 TS) |
我在项目中遇到过这样的坑:用基本边沿触发去抓 PCIe 的 Training Sequences,结果抓了一大堆噪声和空闲符。为什么?因为 Training Sequences 里的跳变太密集了,边沿触发的条件不够筛选。
数据模式触发:最直接的方法
说白了,Training Sequences 是一串有规律的比特流。
大部分协议分析仪都支持按特定数据模式来触发。
配置步骤也不复杂:
- 找到触发设置里的「Pattern Trigger」或「Data Trigger」选项
- 输入你要找的 Training Sequence 的特征码
- 设置掩码(Mask),只比较你关心的比特位
举个实际案例。我抓 USB 3.0 的 TSEQ(Training Sequence),它的特征是每 32 个符号重复。那我就在分析仪里配:
触发模式: Pattern Trigger
数据长度: 32 个符号
比较模式: 连续匹配
触发条件: 重复出现 2 次
嗯,这里要注意:有些分析仪允许你设置「重复计数」。这个很关键。因为 Training Sequences 通常会连续发很多次,设置重复 2-3 次可以避免被单次的误触发干扰。
物理层触发:更精细的控制
有时候,数据模式触发还不够。
我记得有个项目,客户说 Training Sequences 抓不到。我看了一下波形,发现信号幅度被衰减了,但数据内容其实是对的。
这种场景怎么办?用物理层触发。
常见可以用的条件:
- 幅度阈值:信号低于正常电平的 80%
- 上升/下降沿斜率异常
- 信号占空比偏移
- 抖动超过特定门限
为什么这招有效?
Training Sequences 通常是已知的、稳定的信号。如果它出现了幅度或时序异常,往往是链路问题。这时候用物理层触发,能精准抓到异常瞬间。
你想想看,一个正常的 TS 和带毛刺的 TS,在数据模式触发下可能看起来一样。但物理层触发能让它们现出原形。
触发位置的学问
触发到了还不够,你得知道把数据窗口放在哪。
我个人习惯这样配:
- 触发位置设为 25%:用于想看触发点之后发生了什么(比如 TS 之后的协商过程)
- 触发位置设为 75%:用于追溯触发点之前的原因(比如是谁引发了 TS)
- 触发位置设为 50%:平衡模式,两边都看一点
我建议和触发位置一起看的,是预触发深度和后触发深度。这两个参数的组合,决定了你能看到的信号前后串。
| 场景 | 预触发深度 | 后触发深度 | 触发位置 |
|---|---|---|---|
| 捕获 TS 起始 | 10% | 90% | 10% |
| 捕获 TS 结束 | 80% | 20% | 80% |
| 捕获 TS 异常点 | 50% | 50% | 50% |
为什么要这么配?
因为 Training Sequences 通常很短,可能只有几微秒。如果你后触发深度设得太小,触发后信号很快就结束,你啥也分析不了。
预触发和后触发:别忽略这个设置
我曾经在调试一个 MIPI D-PHY 的 Training Sequence 时,怎么都抓不到完整的序列。后来发现是预触发的采样深度设得太浅了。
这类问题很隐蔽。分析仪默认的预触发深度可能只够存几十个符号,但 Training Sequences 可能有几百个符号长。等于你触发了,但前面的历史数据被覆盖了。
怎么解决?
- 先估算 TS 的时长(Symbol 数 × 符号周期)
- 把预触发深度设为至少 TS 时长的 1.5 倍
- 把后触发深度设为 TS 时长 2 倍以上
简单粗暴的口诀:前深后长,抓全为王。
实际配置步骤(以常见分析仪为例)
好,说了这么多,我们看看实际操作吧。
大部分协议分析仪的菜单逻辑都差不多:
- 点击「Trigger Setup」或「Advanced Trigger」
- 选择触发类型:Pattern / Data / Sequence
- 输入 Training Sequence 的特征码(16 进制或 2 进制)
- 设置掩码(Mask):屏蔽你不关心的比特位
- 设置重复次数(Repeat Count):一般设 2-5
- 配置触发位置:按需求选 25% / 50% / 75%
- 设置预触发和后触发深度:确保能存下完整序列
- 启用物理层条件(可选):如幅度、抖动门限
- 点击「Apply」或「Arm Trigger」准备捕获
关键点:配好之后,先用模拟模式跑一次,看看触发条件是否太宽松或太严苛。我之前教过一个工程师,他配了条件后怎么都触发不了,后来发现是特征码输反了字节序。
小技巧:如果不知道特征码,可以先抓一段正常的信号,在波形里找到 Training Sequences,然后用「Copy as Trigger Pattern」功能自动生成触发条件。很多分析仪都支持这个功能。
注意:不要同时启用太多触发条件。我曾经见过有人同时开了数据模式触发、协议层触发和物理层触发,结果分析仪直接死机。分析仪的触发资源是有限的,多用逻辑组合(AND/OR)代替多重条件。
最后,我想强调一点。
触发配置的目标不是「触发到」,而是「在正确的时间触发到正确的内容」。
Training Sequences 的特性决定了它需要用数据模式为主、物理层为辅的方式去配置。触发位置和深度决定了你能不能看到完整的序列。
这张图就是我平时配触发时的思考路线。
先判断 TS 特征是否清晰,然后选路径。两条路最终都会汇合到参数配置上。最后一步,别忘了检查触发位置和深度。
我个人调试经验里,80% 的触发失败都是因为深度不够。剩下 20% 是因为特征码没写对。所以每次新抓一个协议,我都会先用已知信号验证一下触发条件是否正确。