热度 18
2017-6-12 08:41
9424 次阅读|
0 个评论
在进行数字接口的测试时,有时会用到一些特定的测试码型。比如我们我们在进行信号质量测试时,如果被测件发送的只是一些规律跳变的码型,可能代表不了真实通信时的最恶劣情况,所以测试时我们会希望被测件发出的数据尽可能地随机以代表最恶劣的情况。同时因为这种数据流很多时候只是为了测试使用的,用户的被测件在正常工作时还是要根据特定的协议发送真实的数据流,因此产生这种随机数据码流的电路最好尽可能简单,不要因此额外占用太多的硬件资源。 伪随机码的生成 那么怎么用简单的方法产生尽可能随机一些的数据流输出呢?首先,因为真正随机的码流是很难用简单的电路实现的,所以我们只需要生成尽可能随机的码流就可以了,其中最常用的一种数据码流就是PRBS(Pseudo Random Binary Sequence,伪随机码)码流。 PRBS码的产生非常简单,下图 是个的PRBS7的产生原理,只需要用到7个移位寄存器和简单的异或门就可以实现。 所谓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码流的信号频谱。 伪随机码时域特征 即使从时域来看,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的数量的一个比较。 伪随机码的可预测性 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码进行复用/解复用器传输误码率测试的一个例子。 正是由于PRBS码的伪随机性、自同步特性、电路简单等一系列优异的特性,很多高速数字总线的信号质量或者系统传输误码率等测量场合都会用到PRBS码,PRBS码是高速信号测试中最常用的一种码型。