PRBS
什么是PRBS?,我相信当你点开这篇博文的时候肯定对PRBS有一定了解,或者你只是单纯了解verilog。对于什么是PRBS,百度百科给出的解释是
PRBS的验证就是PRBS的产生的反过程,具体方法是Transceiver接收端首先将收到的数据寄存一拍(并行数据),将寄存的数据进行PRBS编码,编码后的数据与最新接收到的数据进行比较,如果一致则表示PRBS校验正确。
PRBS: Pseudo-Random Binary Sequence 伪随机二进制序列。
PRBS伪随机码不仅具有随机序列的一些统计特性和高斯噪声所有的良好的自相关特征,而且具有某种确定的编码规则,同时又便于重复产生和处理,因而在通信领域应用广泛。因此PRBS编码主要是在用于在高速设计中测试高速串行通道传输误码率的一种编码类型。
编码原理
PRBS编码的原则就是当前码字是上拍码字进行PRBS编码得到了,所以校验利用这个原则来进行验证。PRBS 码具有“随机”特性,是因为在 PRBS 码流中,二进制数“ 0 ” 和“ 1 ” 是随机出现的,但是它又和真正意义上的随机码不同,这种“随机”特性只是局部的,即在周期内部,“0”和“1”是随机出现的(码流生成函数与初始码确定后,码流的顺序也是固定的),但各个周期中的码流却是完全相同的,所以我们称其为“”伪随机码。
PRBS 码的周期长度与其阶数有关,常用的阶数有 7 、 9 、 11 、 15 、 20 、 23 、 31 ,也就是我们常说的 PRBS7 、 PRBS9 、 PRBS11 、 PRBS15 、 PRBS20 、 PRBS23 、 PRBS31 。
在对高速信号链路进行误码测试时,基本上都是利用 PRBS 码流来模拟真实的线网码流环境,因为在线网中,所有的数据都是随机出现的,没有任何规律可言,而 PRBS 码流在一定程度上具有这种“随机数据”特性,二进制“ 0 ”和“ 1 ”随机出现,其频谱特征与白噪声非常接近。 PRBS 码流的阶数越高,其包含的码型就越丰富,就越接近真实的线网环境,测试的结果就越准确
verilog
verilog主要参考 xilinx官方的写法。有兴趣的同学可以参考一下。
`timescale 1ns / 1ps
//
// Company:
// Engineer:
//
// Create Date:
// Design Name:
// Module Name: PRBS_GEN
// Project Name:
// Target Devices:
// Tool Versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//
`timescale 1ps/1ps
module PRBS_GEN #
(
parameter TCQ = 100,
parameter FAMILY = "SPARTAN6",
parameter ADDR_WIDTH = 29,
parameter DWIDTH = 32,
parameter PRBS_CMD