一文读懂PRBS定义、生成办法、作用
对于眼图测试、误码率和抖动容限测试,最常用的测试码是PRBS,主要有PRBS7、PRBS15、PRBS23和PRBS31。本文主要解释了PRBS的定义,生成方法以及简单应用。
PRBS定义
二进制序列指的是,a0, ..... , aN-1的N bit的序列,其中 aj∈{0,1},j=0, 1, ..., N-1。
一个二进制序列中,包含m=∑aj个1, 以及N-M个0。
如果一个二进制序列的自相关函数

只有两个值

且

将这个二进制序列称为伪随机二进制序列pseudo-random binary sequence (PRBS)。c称作PRBS的占空比(duty cycle),这个和时序信号里的占空比的定义类似。
PRBS被称为“伪随机”的,是因为实际上它是确定的。它看上去是随机的原因是,aj的值和序列中其它码值无关,和真实的随机序列类似。
如果每N bit就重复一下的话,伪随机码PRBS码可以扩展到无穷位码长。相对而言,大部分随机码流的码长本质上是无穷长的(不重复),比如放射性信号的衰减或者白噪声。N 位最大码长的伪随机码,一般都是由线性反馈移位寄存器产生的。伪随机码的占空比一般都是1/2,并且,一个k位长度的寄存器,产生的伪随机码的码长为N=2K-1。伪随机码被广泛应用在无线/有线通讯,密码学,仿真,光谱分析法等。
PRBS的生成方法
PRBS信号是由PRBS码形发生器生成的。PRBS发生器通常是由线性反馈移位寄存器(linear feedback shift registers,LFSR)和异或电路组成。如下图1是PRBS7的码形发生器,其初始值是0000001,本原多项式是X6+X7+1。即将寄存器的第6位和第7位做异或运算后,输入到寄存器的第1位,寄存器的第7位同时也是PRBS7发生器的输出。

在图一中可以看到,PRBS7最长是127bit(27-1), 理论上来说,7bit的2进制码,一共会有27个不同组合,但是,如果码流全部为‘0’的时候,经过异或运算,输入到寄存器第一位的值还是0, 这样移位寄存器将会一直输出为零,移位寄存器被死锁。所以PRBS码流不能全部为零。另外,PRBS7 码流中最长的连续‘1’个数为7个,最长的连续‘0’个数为6个。127bit的连续码流中,一共有64个‘1’,63个‘0’。
同理,PRBSn的码长为2n-1 bits,其中包括2n-1个‘1’,2n-1-1个‘0’。
一些常用的PRBS码的本原多项式如下:
PRBS7 = X6+X7+1
PRBS9 = X9+X5+1
PRBS11 = X11+X9+1
PRBS15 = X15+X14+1
PRBS20 = X20+X3+1
PRBS23 = X23+X18+1
PRBS31 = X31+X28+1
PRBS作用
串行总线的物理层测试通常分为发射机测试和接收机测试,又称为TX测试和RX测试。发射机测试通常包括眼图、抖动、信号波形、幅度、上升下降时间等测试项目,接收机测试通常包括误码率、抖动容限、接收机灵敏度等测试项目。对于眼图测试、误码率和抖动容限测试,最常用的测试码是PRBS,主要有PRBS7、PRBS15、PRBS23和PRBS31。
PRBS7是目前10Gbps以下的串行总线中最常用的测试码型,在ITU-TV.29规范中规定。PRBS7属于短伪随机码型,与8b10b NRZ编码的数据流很相似,所以,在PCIe、SATA、XAUI、1000BASE-LX、FC、SAS等采用8b10b编码的串行总线中,PRBS7是最常用的测试码型,支持这些总线的芯片通常都可以输出PRBS7测试码型,用于眼图、抖动或误码率测量。
PRBS7的码流中最长的连1为7个,最长的连0为6个;而8b10b编码中最长的连1为5,最长的连0也是5;因此,相比8b10b编码,PRBS7可以产生的较低频率的码型。使用PRBS7作为驱动源,在同一信道(比如背板上20inch长走线)上传输到接收端后得到眼图和抖动,都比8b10b编码的作为驱动源时的结果稍差些。这样,PRBS7作为8b10b编码的串行总线的测试码型,留出了一定的设计余量。
10GBASE-KR标准里特别标注了推荐的测试码形为PRBS11。

参考文献:
1.http://en.wikipedia.org/wiki/Pseudorandom_binary_sequence
2.http://www.docin.com/p-329701854.html
3.http://wenku.baidu.com/view/6cce37323968011ca2009105.html
一文读懂PRBS定义、生成办法、作用的更多相关文章
- 一文读懂HDMI和VGA接口针脚定义
一文读懂HDMI和VGA接口针脚定义 摘自:http://www.elecfans.com/yuanqijian/jiekou/20180423666604.html HDMI概述 HDMI是高清 ...
- 一文读懂对抗生成学习(Generative Adversarial Nets)[GAN]
一文读懂对抗生成学习(Generative Adversarial Nets)[GAN] 0x00 推荐论文 https://arxiv.org/pdf/1406.2661.pdf 0x01什么是ga ...
- 从HTTP/0.9到HTTP/2:一文读懂HTTP协议的历史演变和设计思路
本文原作者阮一峰,作者博客:ruanyifeng.com. 1.引言 HTTP 协议是最重要的互联网基础协议之一,它从最初的仅为浏览网页的目的进化到现在,已经是短连接通信的事实工业标准,最新版本 HT ...
- [转帖]从HTTP/0.9到HTTP/2:一文读懂HTTP协议的历史演变和设计思路
从HTTP/0.9到HTTP/2:一文读懂HTTP协议的历史演变和设计思路 http://www.52im.net/thread-1709-1-2.html 本文原作者阮一峰,作者博客:r ...
- 即时通讯新手入门:一文读懂什么是Nginx?它能否实现IM的负载均衡?
本文引用了“蔷薇Nina”的“Nginx 相关介绍(Nginx是什么?能干嘛?)”一文部分内容,感谢作者的无私分享. 1.引言 Nginx(及其衍生产品)是目前被大量使用的服务端反向代理和负载均衡 ...
- 大数据篇:一文读懂@数据仓库(PPT文字版)
大数据篇:一文读懂@数据仓库 1 网络词汇总结 1.1 数据中台 数据中台是聚合和治理跨域数据,将数据抽象封装成服务,提供给前台以业务价值的逻辑概念. 数据中台是一套可持续"让企业的数据用起 ...
- 一文读懂MySQL的事务隔离级别及MVCC机制
回顾前文: 一文学会MySQL的explain工具 一文读懂MySQL的索引结构及查询优化 (同时再次强调,这几篇关于MySQL的探究都是基于5.7版本,相关总结与结论不一定适用于其他版本) 就软件开 ...
- 一文读懂Java动态代理
作者 :潘潘 日期 :2020-11-22 事实上,对于很多Java编程人员来说,可能只需要达到从入门到上手的编程水准,就能很好的完成大部分研发工作.除非自己强主动获取,或者工作倒逼你学习,否则我们好 ...
- 一文读懂AI简史:当年各国烧钱许下的愿,有些至今仍未实现
一文读懂AI简史:当年各国烧钱许下的愿,有些至今仍未实现 导读:近日,马云.马化腾.李彦宏等互联网大佬纷纷亮相2018世界人工智能大会,并登台演讲.关于人工智能的现状与未来,他们提出了各自的观点,也引 ...
随机推荐
- 顺序栈代码实现&&stack库
#include<iostream> using namespace std; ; typedef int Elemtype; struct SqStack { Elemtype *bas ...
- 为什么要学习socket
为什么要学习socket socket历史悠久.它们的使用始于 1971年的ARPANET,后来成为1983年发布的Berkeley Software Distribution(BSD)操作系统中的A ...
- 第一次博客作业(初识C++)
Q1:学习<C++语言程序设计>课程之前,你知道什么是编程吗?谈谈上这门课之前你对编程的理解,以及你对自己编程能力的评估. A1:开始课程之前,我认为编程是这样的:用计算机的语言写一份流程 ...
- TCP/IP协议示意图
TCP/IP协议示意图
- Docker系列(一)CentOS 6.5 离线安装、不升级内核
本特安装教程特点 1.由于是离线下载,需要提前下载好需要的依赖包 2.使用的版本为Centos6.5 3.不升级内核 4.提供异常解决方案. 安装过程 一.下载依赖包(使用能联网的节点) 依赖包可以自 ...
- js中this最简单清晰的解释
引自 https://www.cnblogs.com/huangwentian/p/6854472.html#commentform ① this指向的,永远只可能是对象! ② this ...
- 通过Spark Streaming的foreachRDD把处理后的数据写入外部存储系统中
转载自:http://blog.csdn.net/erfucun/article/details/52312682 本博文主要内容包括: 技术实现foreachRDD与foreachPartition ...
- Python 3 教程
http://www.runoob.com/python3/python3-tutorial.html https://www.jianshu.com/p/f1332c58ca86
- ArcEngine 调用GP里面的Merge工具
这两天,为ArcEngine中的Merge工具的调试伤头脑筋,明明很简单的事情,就是搞不掂儿.今天忽然想到是否是中文的关系,果然,把中文修改成英文成功了.真是快郁闷死了! public static ...
- C# 6.0:Auto-Property initializer
在之前的开发中,属性只能在构造函数中进行初始化,如果它有定义一个后台字段的话,那这个字段就就可以在定义的地方初始化.C# 6.0 引进了一个Auto-Property initializer机制使属性 ...