对于眼图测试、误码率和抖动容限测试,最常用的测试码是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定义、生成办法、作用的更多相关文章

  1. 一文读懂HDMI和VGA接口针脚定义

    一文读懂HDMI和VGA接口针脚定义 摘自:http://www.elecfans.com/yuanqijian/jiekou/20180423666604.html   HDMI概述 HDMI是高清 ...

  2. 一文读懂对抗生成学习(Generative Adversarial Nets)[GAN]

    一文读懂对抗生成学习(Generative Adversarial Nets)[GAN] 0x00 推荐论文 https://arxiv.org/pdf/1406.2661.pdf 0x01什么是ga ...

  3. 从HTTP/0.9到HTTP/2:一文读懂HTTP协议的历史演变和设计思路

    本文原作者阮一峰,作者博客:ruanyifeng.com. 1.引言 HTTP 协议是最重要的互联网基础协议之一,它从最初的仅为浏览网页的目的进化到现在,已经是短连接通信的事实工业标准,最新版本 HT ...

  4. [转帖]从HTTP/0.9到HTTP/2:一文读懂HTTP协议的历史演变和设计思路

    从HTTP/0.9到HTTP/2:一文读懂HTTP协议的历史演变和设计思路   http://www.52im.net/thread-1709-1-2.html     本文原作者阮一峰,作者博客:r ...

  5. 即时通讯新手入门:一文读懂什么是Nginx?它能否实现IM的负载均衡?

    本文引用了“蔷薇Nina”的“Nginx 相关介绍(Nginx是什么?能干嘛?)”一文部分内容,感谢作者的无私分享. 1.引言   Nginx(及其衍生产品)是目前被大量使用的服务端反向代理和负载均衡 ...

  6. 大数据篇:一文读懂@数据仓库(PPT文字版)

    大数据篇:一文读懂@数据仓库 1 网络词汇总结 1.1 数据中台 数据中台是聚合和治理跨域数据,将数据抽象封装成服务,提供给前台以业务价值的逻辑概念. 数据中台是一套可持续"让企业的数据用起 ...

  7. 一文读懂MySQL的事务隔离级别及MVCC机制

    回顾前文: 一文学会MySQL的explain工具 一文读懂MySQL的索引结构及查询优化 (同时再次强调,这几篇关于MySQL的探究都是基于5.7版本,相关总结与结论不一定适用于其他版本) 就软件开 ...

  8. 一文读懂Java动态代理

    作者 :潘潘 日期 :2020-11-22 事实上,对于很多Java编程人员来说,可能只需要达到从入门到上手的编程水准,就能很好的完成大部分研发工作.除非自己强主动获取,或者工作倒逼你学习,否则我们好 ...

  9. 一文读懂AI简史:当年各国烧钱许下的愿,有些至今仍未实现

    一文读懂AI简史:当年各国烧钱许下的愿,有些至今仍未实现 导读:近日,马云.马化腾.李彦宏等互联网大佬纷纷亮相2018世界人工智能大会,并登台演讲.关于人工智能的现状与未来,他们提出了各自的观点,也引 ...

随机推荐

  1. 顺序栈代码实现&&stack库

    #include<iostream> using namespace std; ; typedef int Elemtype; struct SqStack { Elemtype *bas ...

  2. 为什么要学习socket

    为什么要学习socket socket历史悠久.它们的使用始于 1971年的ARPANET,后来成为1983年发布的Berkeley Software Distribution(BSD)操作系统中的A ...

  3. 第一次博客作业(初识C++)

    Q1:学习<C++语言程序设计>课程之前,你知道什么是编程吗?谈谈上这门课之前你对编程的理解,以及你对自己编程能力的评估. A1:开始课程之前,我认为编程是这样的:用计算机的语言写一份流程 ...

  4. TCP/IP协议示意图

    TCP/IP协议示意图

  5. Docker系列(一)CentOS 6.5 离线安装、不升级内核

    本特安装教程特点 1.由于是离线下载,需要提前下载好需要的依赖包 2.使用的版本为Centos6.5 3.不升级内核 4.提供异常解决方案. 安装过程 一.下载依赖包(使用能联网的节点) 依赖包可以自 ...

  6. js中this最简单清晰的解释

    引自  https://www.cnblogs.com/huangwentian/p/6854472.html#commentform ① this指向的,永远只可能是对象!       ② this ...

  7. 通过Spark Streaming的foreachRDD把处理后的数据写入外部存储系统中

    转载自:http://blog.csdn.net/erfucun/article/details/52312682 本博文主要内容包括: 技术实现foreachRDD与foreachPartition ...

  8. Python 3 教程

    http://www.runoob.com/python3/python3-tutorial.html https://www.jianshu.com/p/f1332c58ca86

  9. ArcEngine 调用GP里面的Merge工具

    这两天,为ArcEngine中的Merge工具的调试伤头脑筋,明明很简单的事情,就是搞不掂儿.今天忽然想到是否是中文的关系,果然,把中文修改成英文成功了.真是快郁闷死了! public static ...

  10. C# 6.0:Auto-Property initializer

    在之前的开发中,属性只能在构造函数中进行初始化,如果它有定义一个后台字段的话,那这个字段就就可以在定义的地方初始化.C# 6.0 引进了一个Auto-Property initializer机制使属性 ...