
点击蓝字 关注我们
因为公众号平台更改了推送规则。记得点下右下角的大拇指“赞”和红心“推荐”。这样每次新文章推送,就会第一时间出现在订阅号列表里。

做 PCIe、SerDes、高速接口测试时,经常会听到一句话:
“先跑一下 PRBS,看 BER 稳不稳。”
那 PRBS 到底是什么?
一句话说清楚:
PRBS 是一种看起来随机、但可以被发送端和接收端按同一规则复现的 0/1 测试序列。
它不是业务数据,而是专门用来检查高速链路传输稳定性的测试码型。

1. PRBS为什么叫“伪随机”?
PRBS 的全称是 Pseudo-Random Binary Sequence,中文叫伪随机二进制序列。
它看起来像随机的 0 和 1,但并不是真正随机。
它通常由一个固定规则的移位寄存器产生。只要初始状态和生成规则一样,序列就可以被重复生成。
这就是“伪随机”的含义:
看起来随机,但规则确定;外观看似无序,但内部可复现。
这点非常重要。
因为测试时,发送端需要知道自己发了什么,接收端也需要知道“正确答案”应该是什么。只有这样,接收端才能判断收到的数据有没有错。
2. PRBS7、PRBS15、PRBS31具体是什么?
PRBS 后面的数字,比如 7、15、31,通常表示生成这段序列所使用的寄存器阶数。
可以先简单理解为:
数字越大,序列周期越长,数据模式越复杂。
常见 PRBS 类型如下:
类型 | 序列周期 | 简单理解 | 常见用途 |
PRBS7 | 2⁷ - 1 = 127 bit | 很短,容易快速跑起来 | 基础连通性、快速检查 |
PRBS15 | 2¹⁵ - 1 = 32767 bit | 中等长度 | 常规链路测试 |
PRBS23 | 2²³ - 1 = 8388607 bit | 更长,压力更大 | 更复杂的数据模式测试 |
PRBS31 | 2³¹ - 1 ≈ 21.47 亿 bit | 很长,复杂度高 | 长时间 BER 测试、高压力测试 |
比如 PRBS7,就是 7 阶寄存器生成的伪随机序列,最长周期是 127 bit。
PRBS31,则是 31 阶寄存器生成的伪随机序列,最长周期约 21.47 亿 bit。
这也是为什么 PRBS31 比 PRBS7 更适合长时间压力测试:
它的数据模式更长,更不容易短周期重复。
3. Generator 和 Checker 是怎么配合的?
PRBS 测试通常有两个核心模块:
PRBS generator 和 PRBS checker。
可以把它们理解成:
·generator:出题的人
·checker:对答案的人
发送端的 generator 负责持续产生 PRBS 序列,并把这串 0/1 发出去。
接收端的 checker 负责接收数据,同时按照同样规则生成一份“本来应该收到的序列”,然后逐 bit 对比。
整个过程可以分成四步。
第一步:发送端 generator 产生 PRBS
发送端先选择一种 PRBS 类型,例如 PRBS7、PRBS15 或 PRBS31。
然后 generator 根据对应规则持续产生 0/1 序列:
发送端 PRBS generator
↓
产生一串可复现的 0/1 序列
↓
通过高速链路发送出去
这串数据看起来随机,但其实是按固定规则生成的。
第二步:接收端 checker 尝试锁定序列
接收端收到数据后,checker 并不是盲目比较。
它需要先判断:
收到的这串 0/1,是否符合某种 PRBS 规律。
如果 checker 能识别出规律,并和本地生成的 PRBS 序列对齐,就会进入 lock 状态。
这一步可以理解为:
接收端收到数据
↓
checker 判断它是不是目标 PRBS
↓
找到规律并完成对齐
↓
PRBS lock
所以,PRBS lock 的含义是:
接收端已经识别并跟上了这段 PRBS 序列。
但要注意:
lock 不等于没有误码。
lock 只是说明 checker 已经可以开始可靠地对答案了。
第三步:checker 逐 bit 对比
进入 lock 后,checker 会做真正的比较。
它一边接收链路上传来的 bit,
一边在本地产生理论上应该收到的 PRBS bit,
然后逐 bit 对比。
可以简化成这样:
收到的 bit: 1 0 1 1 0 0 1 0 ...
期望的 PRBS: 1 0 1 1 0 1 1 0 ...
↑
这里不一致,记录 error
只要某一位不一致,就会增加 error count。
这就是 PRBS 能用来测 BER 的原因。
第四步:统计 error count 和 BER
PRBS checker 会统计两类关键结果:
指标 | 含义 |
error count | 错了多少个 bit |
BER | 错误 bit 数 / 总传输 bit 数 |
比如:
·总共传输了 10¹² 个 bit;
·发现了 1 个错误 bit;
那么 BER 就是:
BER = 1 / 10¹² = 1E-12
所以 PRBS 测试最终关注的不是“有没有跑起来”,而是:
在一定时间内,传输了多少 bit,错了多少 bit。
4. PRBS测试的基本流程
PRBS典型流程可以这样理解:
1.选择 PRBS 类型
例如 PRBS7、PRBS15、PRBS31。
2.发送端打开 generator
持续产生并发送 PRBS 序列。
3.接收端打开 checker
按同样规则识别并生成期望序列。
4.等待 checker lock
确认接收端已经识别并对齐 PRBS。
5.开始统计 error
记录 error count、总 bit 数和运行时间。
5. PRBS有什么用?
PRBS 的核心价值是:
用一串可复现、但足够复杂的 0/1 序列,检查链路在复杂数据模式下是否还能稳定传输。
它主要回答两个问题。
第一,有没有误码?
发送端和接收端都知道正确序列应该是什么。
因此只要收到的数据和期望序列不一致,就能判断出现了 bit error。
这比单纯看 link up 更有意义。
因为 link up 只能说明“链路建立了”;
PRBS error count 和 BER 才能进一步说明“链路传 bit 是否稳定”。
第二,复杂数据模式下是否还能稳定?
固定码型,比如 101010,太理想,也太单一。
PRBS 里既有连续 0,也有连续 1;
既有密集跳变,也有相对稀疏的跳变。
因此它比简单码型更接近真实数据的复杂性。
简单说:
固定码型像基础检查,PRBS 更像压力测试。
6. 常见误区
误区一:看到 PRBS lock 就认为没问题
不对。
PRBS lock 只是说明 checker 找到了序列规律,并且完成了对齐。
真正要看的,是 lock 之后有没有 error。
一句话:
lock 是开始对答案,不是答案全对。
误区二:跑几秒没有 error,就认为链路稳定
不严谨。
PRBS 测试要结合运行时间和总传输 bit 数来看。
如果只跑了几秒,即使没有 error,也只能说明“这几秒没错”。
要判断长期稳定性,需要足够长的观察时间。
误区三:只写 PRBS31 pass,但不写测试条件
应该写清楚:
·PRBS 类型;
·速率;
·lane;
·运行时间/error count (BER)
否则“PRBS31 pass”这句话信息量很低。
误区四:把 PRBS 当成完整系统验证
PRBS 主要验证的是:
0/1 bit 能不能稳定传过去。
它非常适合物理层链路测试,但不能替代协议层、功能层和系统级验证。
所以 PRBS 适合回答:
这条链路在当前条件下传 bit 稳不稳?
但它不能直接回答:
整个系统功能是不是完全可靠?
7. 最后总结
PRBS 可以记成一句话:
假随机,真体检。
它看起来随机,但可以复现;
它不是业务数据,但能制造复杂数据模式;
它不能替代完整系统验证,但非常适合检查高速链路的 bit 传输稳定性。
PRBS generator 负责“出题”:
持续产生一串可复现的 0/1 序列。
PRBS checker 负责“对答案”:
识别、锁定、对齐这段序列,并逐 bit 比较。
最终结果看三件事:
1.有没有 lock;
2.有没有 error;
3.BER 是多少。
所以,下次看到 PRBS7、PRBS15、PRBS31,可以这样理解:
它们不是神秘缩写,而是不同长度、不同复杂度的伪随机测试序列。
而 PRBS 测试的本质,就是让发送端和接收端用同一套规则出题和对答案,看看高速链路在复杂 0/1 数据下到底传得稳不稳。
原文链接:
高端微信群介绍 | |
创业投资群 | AI、IOT、芯片创始人、投资人、分析师、券商 |
闪存群 | 覆盖5000多位全球华人闪存、存储芯片精英 |
云计算群 | 全闪存、软件定义存储SDS、超融合等公有云和私有云讨论 |
AI芯片群 | 讨论AI芯片和GPU、FPGA、CPU异构计算 |
5G群 | 物联网、5G芯片讨论 |
第三代半导体群 | 氮化镓、碳化硅等化合物半导体讨论 |
存储芯片群 | DRAM、NAND、3D XPoint等各类存储介质和主控讨论 |
汽车电子群 | MCU、电源、传感器等汽车电子讨论 |
光电器件群 | 光通信、激光器、ToF、AR、VCSEL等光电器件讨论 |
渠道群 | 存储和芯片产品报价、行情、渠道、供应链 |

< 长按识别二维码添加好友 >
加入上述群聊

长按并关注
带你走进万物存储、万物智能、万物互联信息革命新时代

微信号:SSDFans