一、误码测试基础
1.1 误码率定义——说白了就是“传错了多少”
误码率,英文叫 Bit Error Rate,简称 BER。这玩意儿是衡量数字通信系统质量最直接的指标。
它的定义其实特别简单:
BER = 错误比特数 / 总传输比特数
举个例子,你发了 10 亿个比特,结果有 1 个错了,那 BER 就是 10⁻⁹。嗯,这个数字在通信行业里是个常见门槛。
我个人习惯把 BER 理解成“系统的诚实度”。你想想看,一个系统号称能跑 10Gbps,结果每秒钟错好几个比特,那这速度再快也没用。
我在项目中遇到过最头疼的事,就是 BER 测出来是 10⁻¹²,但客户非要 10⁻¹⁵。差三个数量级,调试起来简直要命。
这里有个容易混淆的点:误码率 ≠ 误帧率。一个帧里可能包含几千个比特,错一个比特就算整帧错了。所以误帧率通常比误码率高好几个数量级。
我的经验:做高速 SerDes 测试时,BER 低于 10⁻¹² 基本就够用了。但如果你做的是卫星通信或者存储设备,那 BER 要求可能要到 10⁻¹⁵ 甚至更低。
1.2 误码测试原理——怎么知道传错了?
误码测试的原理,说白了就是“发已知的数据,收回来对比”。
具体流程是这样的:
- 发送端生成一串已知的伪随机序列,比如 PRBS7、PRBS15、PRBS31
- 接收端用同样的序列生成器,同步后开始对比
- 发现不一致的地方,就记一次错误
为什么要用伪随机序列?因为真实数据是随机的,你不能用全 0 或全 1 去测——那测出来的 BER 永远是 0,没意义。
我记得刚入行时犯过一个低级错误:用 PRBS7 去测一个 10Gbps 的链路,结果 BER 怎么都测不准。后来才发现,PRBS7 的序列长度只有 127 个比特,重复周期太短,根本覆盖不了链路的全部状态。
避坑指南:我曾经因为 PRBS 阶数选错,浪费了整整两天时间。PRBS7 适合低速或短链路,PRBS31 适合高速长链路。别问我怎么知道的。
同步也是个关键点。接收端必须知道“从哪个比特开始算第一个”。如果同步丢了,那后面所有的对比都是错的。好的误码仪会自动做同步,但有时候也会抽风——这时候就得手动复位。
1.3 误码仪基本架构——拆开看看里面有什么
误码仪,说白了就是一台专门干“发-收-比”的仪器。它的基本架构可以分为三大块:
| 模块 | 功能 | 我踩过的坑 |
|---|---|---|
| 码型发生器 | 生成 PRBS 或自定义序列 | 输出幅度没配好,导致接收端误码率虚高 |
| 误码检测器 | 接收信号,同步后对比 | 时钟恢复没锁住,误码率全是假的 |
| 控制与分析单元 | 统计 BER,显示结果 | 统计时间太短,BER 不收敛 |
下面这张图是我自己画的误码仪基本架构,你看一眼就明白了:
这张图里,数据从左往右流。码型发生器发出已知序列,经过被测设备(DUT),到误码检测器里做对比。控制单元负责统筹全局。
实际用的时候,有几个细节你得注意:
- 时钟恢复:高速信号进来,误码仪得先恢复出时钟,才能正确采样。时钟没锁好,误码率全是假的。
- 阈值设置:接收端的判决阈值要调对。阈值设高了,1 被判成 0;设低了,0 被判成 1。
- 统计时间:BER 是统计量,测的时间越长越准。我一般至少测 10 秒,对于 10⁻¹² 级别的 BER,可能得测几分钟。
一个小技巧:如果你手头没有误码仪,也可以用 FPGA 自己搭一个简易的。用两个 LFSR 分别做发送和接收,对比结果。虽然精度不如专业仪器,但做原型验证足够了。
好了,误码测试的基础就这些。说白了就是三件事:发已知数据、收回来对比、统计错误率。但真正做起来,细节多得让人抓狂。后面我们会聊到时序约束怎么影响误码率,那才是真正有意思的部分。
核心要点回顾:
- BER = 错误比特数 / 总比特数,10⁻¹² 是常见门槛
- 误码测试靠 PRBS 序列做“发-收-比”
- 误码仪三大模块:码型发生器、误码检测器、控制与分析单元
- 时钟恢复和阈值设置是容易出坑的地方
可可精品资料库