一、误码测试基础

1.1 误码率定义——说白了就是“传错了多少”

误码率,英文叫 Bit Error Rate,简称 BER。这玩意儿是衡量数字通信系统质量最直接的指标。

它的定义其实特别简单:

BER = 错误比特数 / 总传输比特数

举个例子,你发了 10 亿个比特,结果有 1 个错了,那 BER 就是 10⁻⁹。嗯,这个数字在通信行业里是个常见门槛。

我个人习惯把 BER 理解成“系统的诚实度”。你想想看,一个系统号称能跑 10Gbps,结果每秒钟错好几个比特,那这速度再快也没用。

我在项目中遇到过最头疼的事,就是 BER 测出来是 10⁻¹²,但客户非要 10⁻¹⁵。差三个数量级,调试起来简直要命。

这里有个容易混淆的点:误码率 ≠ 误帧率。一个帧里可能包含几千个比特,错一个比特就算整帧错了。所以误帧率通常比误码率高好几个数量级。

我的经验:做高速 SerDes 测试时,BER 低于 10⁻¹² 基本就够用了。但如果你做的是卫星通信或者存储设备,那 BER 要求可能要到 10⁻¹⁵ 甚至更低。

1.2 误码测试原理——怎么知道传错了?

误码测试的原理,说白了就是“发已知的数据,收回来对比”。

具体流程是这样的:

  1. 发送端生成一串已知的伪随机序列,比如 PRBS7、PRBS15、PRBS31
  2. 接收端用同样的序列生成器,同步后开始对比
  3. 发现不一致的地方,就记一次错误

为什么要用伪随机序列?因为真实数据是随机的,你不能用全 0 或全 1 去测——那测出来的 BER 永远是 0,没意义。

我记得刚入行时犯过一个低级错误:用 PRBS7 去测一个 10Gbps 的链路,结果 BER 怎么都测不准。后来才发现,PRBS7 的序列长度只有 127 个比特,重复周期太短,根本覆盖不了链路的全部状态。

避坑指南:我曾经因为 PRBS 阶数选错,浪费了整整两天时间。PRBS7 适合低速或短链路,PRBS31 适合高速长链路。别问我怎么知道的。

同步也是个关键点。接收端必须知道“从哪个比特开始算第一个”。如果同步丢了,那后面所有的对比都是错的。好的误码仪会自动做同步,但有时候也会抽风——这时候就得手动复位。

1.3 误码仪基本架构——拆开看看里面有什么

误码仪,说白了就是一台专门干“发-收-比”的仪器。它的基本架构可以分为三大块:

模块 功能 我踩过的坑
码型发生器 生成 PRBS 或自定义序列 输出幅度没配好,导致接收端误码率虚高
误码检测器 接收信号,同步后对比 时钟恢复没锁住,误码率全是假的
控制与分析单元 统计 BER,显示结果 统计时间太短,BER 不收敛

下面这张图是我自己画的误码仪基本架构,你看一眼就明白了:

误码仪基本架构 码型发生器 PRBS7/15/31 自定义序列 数据 被测设备 DUT 线缆/光模块/芯片 数据 误码检测器 同步 + 对比 错误计数 控制 结果 控制与分析单元 参数配置 | 误码统计 | 结果显示 | 日志记录

这张图里,数据从左往右流。码型发生器发出已知序列,经过被测设备(DUT),到误码检测器里做对比。控制单元负责统筹全局。

实际用的时候,有几个细节你得注意:

  • 时钟恢复:高速信号进来,误码仪得先恢复出时钟,才能正确采样。时钟没锁好,误码率全是假的。
  • 阈值设置:接收端的判决阈值要调对。阈值设高了,1 被判成 0;设低了,0 被判成 1。
  • 统计时间:BER 是统计量,测的时间越长越准。我一般至少测 10 秒,对于 10⁻¹² 级别的 BER,可能得测几分钟。

一个小技巧:如果你手头没有误码仪,也可以用 FPGA 自己搭一个简易的。用两个 LFSR 分别做发送和接收,对比结果。虽然精度不如专业仪器,但做原型验证足够了。

好了,误码测试的基础就这些。说白了就是三件事:发已知数据、收回来对比、统计错误率。但真正做起来,细节多得让人抓狂。后面我们会聊到时序约束怎么影响误码率,那才是真正有意思的部分。

核心要点回顾:

  • BER = 错误比特数 / 总比特数,10⁻¹² 是常见门槛
  • 误码测试靠 PRBS 序列做“发-收-比”
  • 误码仪三大模块:码型发生器、误码检测器、控制与分析单元
  • 时钟恢复和阈值设置是容易出坑的地方

可可精品资料库