原创 为什么是伪随机码? #D0090

2017-6-12 08:41 8292 17 17 分类: 通信

在进行数字接口的测试时,有时会用到一些特定的测试码型。比如我们我们在进行信号质量测试时,如果被测件发送的只是一些规律跳变的码型,可能代表不了真实通信时的最恶劣情况,所以测试时我们会希望被测件发出的数据尽可能地随机以代表最恶劣的情况。同时因为这种数据流很多时候只是为了测试使用的,用户的被测件在正常工作时还是要根据特定的协议发送真实的数据流,因此产生这种随机数据码流的电路最好尽可能简单,不要因此额外占用太多的硬件资源。


伪随机码的生成

那么怎么用简单的方法产生尽可能随机一些的数据流输出呢?首先,因为真正随机的码流是很难用简单的电路实现的,所以我们只需要生成尽可能随机的码流就可以了,其中最常用的一种数据码流就是PRBS(Pseudo Random Binary Sequence,伪随机码)码流。

PRBS码的产生非常简单,下图 是个的PRBS7的产生原理,只需要用到7个移位寄存器和简单的异或门就可以实现。

01


所谓PRBS7,是指码流的重复周期为(2^7-1)个比特,即这个电路产生的0、1的码流序列是每127个比特为周期重复一次。下面是上述电路产生的PRBS7的数据码流:1111111000000100000110000101000111100100010110011101010011111010000111000100100110110101101111011000110100101110111001100101010

如果我们把移位寄存器的数量增加到9个,就可以产生PRBS9的码流,即以511个bit为周期重复发送的数据码流。下面是PRBS9码流里511个bit周期的内容:

1111111110000011110111110001011100110010000010010100111011010001111001111100110110001010100100011100011011010101110001001100010001000000001000010001100001001110010101011000011011110100110111001000101000010101101001111110110010010010110111111001001101010011001100000001100011001010001101001011111110100010110001110101100101100111100011111011101000001101011011011101100000101101011111010101010000001010010101111001011101110000001110011101001001111010111010100010010000110011100001011110110110011010000111011110000


从以上的数据流中我们可以看到,在每个大的重复周期内的0、1数据流看起来是随机的,满足了我们对于数据随机性的要求。但是同时其数据流中有大的重复周期,比如PRBS7的码流的重复周期是127个比特,PRBS9的码流的重复周期是511个比特,并不是真正的随机码流,所以这种码流被称为伪随机码。


从上面的描述可以看出,即使要产生PRBS31的非常长大的数据码流,也只需要用到31个移位寄存器和简单的异或电路,不需要占用太多的硬件资源。除此以外,伪随机码在实际的应用中还有一系列非常优异的特性。主要特点如下。


伪随机码频域特征

对于一个理想的PRBS码流(假设信号的上升沿无限陡的情况),如果我们用频谱仪观察一下其频谱,会发现其频谱的包络是个Sin(x)/X的Sinc函数,功率接近为0的点都发生在频率为数据速率整数倍的频点。而各条谱线间的间隔=(数据速率/PRBS码型长度)。

比如对于10Gbps的PRBS15的码流来说,其频谱在10GHz、20GHz、30GHz…等频点会出现功率接近为0的情况,而各条谱线的间隔=(10G/32767)≈305KHz;如果数据速率不变,把码型的长度增加到PRBS31,则功率包络不变,但是各条谱线间的间隔=(10G/2147483647)≈4.7Hz,看起来就更像一个均匀的Sinc函数的包络。下图是理想PRBS码流的信号频谱。

02


伪随机码时域特征

即使从时域来看,PRBS码流里面的数据也好像是完全随机的,可以代表真实通信时信号的最恶劣情况,伪随机码的周期越长,随机性越好。实际应用中比较常见的伪随机码有PRBS7(重复周期为127个比特)、PRBS9(重复周期为511个比特)、PRBS11(重复周期为2047个比特)、PRBS15(重复周期为32767个比特)、PRBS23(重复周期为8388607个比特)、PRBS31(重复周期为2147483647个比特)等。

PRBS码还有一个特点,就是码流越长,码流里连续的1或连续的0的数量越多。比如对于PRBS7码来说,其码流里最多有7个连续的1和6个连续的0;而对于PRBS31码流来说,其码流里最多有31个连续的1和30个连续的0。这种特性用在测量里可以很方便地找到码流的起始点。下图是不同的PRBS码的周期长度和码流里最多的连续的1或0的数量的一个比较。

03


伪随机码的可预测性

PRBS码流看起来是随机的,但并不是真正的随机码,其有精确的重复周期,而且每一个后续bit都是可以预计的。只要收发双方约定好了要使用的PRBS码长度,接收端只要正确接收到很少的数据bit就可以据此精确预测后面到来的每个bit。

比如对于PRBS7来说,接收端只要连续正确接收到7个bit的数据并填充到7个移位寄存器里,就可以用和发送端一样的电路精确生成后面到来的每一个bit,如果把其后续生成的bit和实际接收到的bit做比较,就可以统计接收的数据的误码率。即使对于PRBS31码来说,也只需要连续正确接收到31个bit就可以完成同步过程。PRBS码的这种自同步特性大大方便了误码率的测试,因此大部分高速总线的误码率测试场合都会使用PRBS码。


伪随机码的码型不受分频影响

PRBS码有一个非常有趣的特性,即不受分频电路的影响。比如我们把PRBS7码流里的奇数bit单独提取出来,其仍然是PRBS7的码流;同样如果把其偶数bit提取出来,也仍然是PRBS7的码流。对于PRBS码,只要进行的是2的N次方的整数分频,得到的码流还仍然是一样的PRBS码流。这种特性可以很方便地用在一些复用和解复用器的测试中。下图是用PRBS码进行复用/解复用器传输误码率测试的一个例子。

04


正是由于PRBS码的伪随机性、自同步特性、电路简单等一系列优异的特性,很多高速数字总线的信号质量或者系统传输误码率等测量场合都会用到PRBS码,PRBS码是高速信号测试中最常用的一种码型。


文章评论0条评论)

登录后参与讨论
相关推荐阅读
李凯的技术博客 2018-02-27 13:25
串行总线的8b/10b编码 #D200
为了提高串行数据传输的可靠性,现在很多更高速率的数字接口采用的是对数据进行编码后再做并串转换的方式。编码的方式有很多,如8b/9b编码、8b/10b编码、64b/66b编码、128b/130b编码等,...
李凯的技术博客 2017-10-16 11:51
时钟是怎么恢复的? #D0190
对于高速的串行总线来说,一般情况下都是通过数据编码把时钟信息嵌入到传输的数据流里,然后在接收端通过时钟恢复把时钟信息提取出来,并用这个恢复出来的时钟对数据进行采样,因此时钟恢复电路对于高速串行信号的传...
李凯的技术博客 2017-07-31 08:24
调幅、调频、调相 与 I/Q 调制有什么区别? #W0010
无线通信是现在应用最为广泛的通信技术之一,其核心是把要传输的数据调制在载波上发射出去,载波状态的变化承载了不同的信息。 如下图所示,载波信号的状态变化可以分为幅度变化、频率变化以及相位变化,因此对应的...
李凯的技术博客 2017-07-24 09:02
为什么扔掉你的德标电源线?#B0040
某研究所用户在使用示波器进行测量时,发现有很大的噪声干扰,如下图所示,无法进行正常的测试,不是是否设备损坏? 问题分析:示波器自身会有一定的本底噪声,但在200mv/格的量程下其噪声的峰峰值通常不会...
李凯的技术博客 2017-07-18 15:21
最全 USB3.1 TypeC 测试 (图文并茂) #S0040
USB是目前PC上最成功的接口标准,而USB3.1是其最新版本。 在USB3.1的标准里,革命性地融合了3种最新的现代科技技术,分别是:数据速率从5Gbps提高到10Gbps;TypeC接口实现PC外...
李凯的技术博客 2017-07-14 08:21
测量引起晶体停振? -送给傻傻分不清晶体和晶振的你 #B0030
某工控设备开发厂商的设备中采用单片机控制电路,单片机使用外接的两脚晶体振荡器产生11.0592MHz的工作时钟,用户希望能够精确测量工作时钟的频率。 但用示波器测量频率一方面测不准,另一方面测量时还会...
我要评论
0
17
1
2
3
4
5
6
7
8
9
0
关闭 站长推荐上一条 /3 下一条