高速接口中的PRBS的设计

http://bbs.ednchina.com/BLOG_ARTICLE_3018596.HTM

在高速设计中,为了测试高速串行通道传输的误码率,通常通过发送PRBS码来进行测试

原理:用生产函数产生一段随机码流,然后按周期循环。

PRBS码的周期长度与其阶数有关,常用的阶数有7,9,11,15,20,23,31.

对于N阶PRBS码,每个周期的序列长度为2^N-1.

在每个周期内,0和1时随机分布的,并且0和1的个数相等。

连续个1的最大数目为n,连续个0的最大数目为n-1(反转后就是n-1个连续1和n个连续0)。

在对高速信号链路进行误码测试时,基本上都是利用PRBS码流来模拟真实的线网码流环境,因为在线网中,所有的数据都是随机出现的,没有任何规律可言,而PRBS码流在一定程度上具有这种“随机数据”特性,二进制0和1随机出现,其频谱特征与白噪声非常接近。PRBS码流的阶数越高,其包含的码流就越丰富,就越接近真实的线网环境,测试的结果就越准确。

一个PRBS序列可以串/并转换成多路(2、4、8、16.路),每路输出的速率降低,但仍然保持原序列的所有特诊,反之,同一时钟源低速多路(2、4、8、16..路)同一个n数的PRBS可以经并/串转换成高速率的n阶PRBS。

下面采用verilog来设计PRBS模块,可以通过外部参数配置PRBS7, PRBS9, PRBS15, PRBS23, PRBS31,

 

`timescale 1ns / 1ps

 

module prbs_gen

#(

parameter PRBS_WIDTH = 32,

parameter PRBS_PATTERN = "prbs7"  //prbs7,prbs9.prbs15,prbs23,prbs31

)

(

    input                    sys_clk,    //系统时钟

    input                    reset_n,    //系统复位

    input                    prbs_en,   //enable_prbs

    input                    inser_err,

    output [PRBS_WIDTH-1:0] prbs_data  //prbs_out

);

    reg [PRBS_WIDTH-1:0] prbs_reg;

    reg [PRBS_WIDTH-1:0] tx_data;

    wire feed_data;

    wire [PRBS_WIDTH-1:0] prbs_d;

integer m;

//本原多项式

//prbs7 = 1+x^6+x^7

//prbs9 = 1+x^5+x^9

//prbs15 = 1+x^14+x^15

//prbs23 = 1+x^18+x^23

//prbs31 = 1+x^28+x^31

 

localparam PRI_MAX_WIDTH = 40;

wire [PRI_MAX_WIDTH-1:0] prbs_pri_val;

 

reg prbs_en_d0,prbs_en_d1;

 

assign prbs_pri_val = (PRBS_PATTERN == "prbs7")? 40'b0011000001:

                   (PRBS_PATTERN == "prbs9")? 40'b1000100001:

                   (PRBS_PATTERN == "prbs15")? 40'b0000110000__0000000001:

                   (PRBS_PATTERN == "prbs23")? 40'b0000001000_0100000000_1000100001:

                   (PRBS_PATTERN == "prbs31")? 40'b0000000010_0100000000_0000000000_0000000001:0011000001;

 

localparam reset_seed = 40'haa_aaaa_aaaa;

 

always @(posedge sys_clk or negedge reset_n) begin

  if(~reset_n) begin

      prbs_en_d0 <= #1 'b0;

      prbs_en_d1 <= #1 'b0;

  end

  else begin

      prbs_en_d0 <= #1 prbs_en;

      prbs_en_d1 <= #1 prbs_en_d0;

  end

end

 

always @(posedge sys_clk or negedge reset_n) begin

  if(reset_n == 1'b0)  begin

    prbs_reg <= prbs_pri_val[(PRBS_WIDTH-1):0];

    //prbs_reg <= prbs_pri_val[7:0];

  end

  else if(prbs_en_d1) begin

    for(m =1; m< PRBS_WIDTH; m = m+1)

        prbs_reg[PRBS_WIDTH-m-1] <=  prbs_reg[PRBS_WIDTH-m];

    prbs_reg[PRBS_WIDTH-1]   <=  feed_data;

  end

  else

     prbs_reg[PRBS_WIDTH-1:0]   <=  prbs_reg[PRBS_WIDTH-1:0];

end

 

assign prbs_d  = prbs_reg & prbs_pri_val[(PRBS_WIDTH-1):0];

assign feed_data = ^prbs_d;

 

reg inser_err_d0;

reg inser_err_d1;

reg detect_insererr;

 

always @(posedge sys_clk or negedge reset_n) begin

  if(reset_n == 1'b0) begin

      tx_data         <= reset_seed[PRBS_WIDTH-1:0];

      inser_err_d0    <= 1'b0;

      inser_err_d1    <= 1'b0;

      detect_insererr <= 1'b0;

  end

  else begin

     inser_err_d0 <= inser_err;

     inser_err_d1 <= inser_err_d0;

     if(inser_err_d0 == 1'b1 && inser_err_d1 == 1'b0)

         detect_insererr <= 1'b1;

     else

         detect_insererr <= 1'b0;

 

     if(detect_insererr == 1'b1)

         tx_data <= {~prbs_reg[PRBS_WIDTH-1],prbs_reg[PRBS_WIDTH-2:0]};

     else

         tx_data <= prbs_reg[PRBS_WIDTH-1:0];

  end

end

assign prbs_data = tx_data;

 

endmodule

  • 4
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: SerDes (Serializer/Deserializer) PRBS(Pseudo Random Bit Sequence)是指采用伪随机比特序列的SerDes技术。 SerDes是一种用于高速串行通信的模块化电路技术,将并行信号转换为串行信号,以便在高速数据传输使用。它通常应用于数据心网络、高速存储器接口和高速通信接口等领域。 PRBS是一种特殊的比特序列生成算法,它通过伪随机序列产生一系列看似随机但实际上是确定性的比特序列。PRBS序列可用于检测和测试高速传输通道的性能和稳定性。 当应用PRBS序列于SerDes时,可以检测传输通道的信号完整性和数据传输质量。通过比较接收到的数据与发送的PRBS序列,可以判断是否存在传输错误、时钟抖动或其他通道问题。基于PRBS序列的测试还可以帮助调整传输参数以提高数据传输速率和减少误码率。 SerDes PRBS技术的优点包括: 1. 简单有效:通过PRBS序列的比较,可以快速检测和定位传输通道的问题,提高故障排查效率。 2. 准确性高:PRBS序列产生的比特是确定性的,可以精确进行数据传输质量的分析和评估。 3. 应用广泛:SerDes PRBS技术被广泛应用于高速通信和数据传输领域,例如网络设备、存储接口和光通信等领域。 综上所述,SerDes PRBS是一种采用伪随机比特序列的高速串行通信技术,通过PRBS序列的生成和比较,可以实现对传输通道的测试、排障和性能优化。 ### 回答2: SERDES是指串行器/解串器,用于将并行数据转换为串行数据或将串行数据转换为并行数据。它通常被用于高速数据传输和通信系统PRBS是指伪随机二进制序列。它是一种通过特定的算法生成的二进制序列,具有统计特性类似于随机序列。PRBS可以用于系统性能测试误码率检测等应用。 当我们将SERDES和PRBS结合起来使用时,通常是为了评估SERDES的性能和可靠性。通过使用PRBS生成器在发送端生成伪随机序列,并通过SERDES将其转换为串行数据进行传输。在接收端,SERDES将已经传输的串行数据解析为并行数据,并使用PRBS检测器与接收到的伪随机序列进行比较。 通过比较发送端生成的PRBS序列和接收端接收到的序列,我们可以评估系统的性能、传输质量和误码率。如果接收到的序列与发送端生成的序列完全一致,说明传输很可靠,系统性能良好。如果接收到的序列存在错误或不一致,就可以通过分析错误模式、位错率等信息来判断系统存在的问题,并进行相应的调试和优化。 总结起来,SERDES PRBS是一种用于评估和测试高速数据传输系统的方法,通过将PRBS序列与SERDES结合使用,可以评估系统的性能和可靠性,检测传输的错误,并进行相应的优化和调试。 ### 回答3: SerDes(串行器和并行器)是一种数字电路,用于将串行数据转换为并行信号或将并行信号转换为串行数据。PRBS(伪随机二进制序列)是一种在通信系统和数字电路广泛使用的序列,它的特点是具有均匀的频谱分布和高度的随机性。 SerDes PRBS是指在SerDes传输使用PRBS序列来进行性能测试和数据传输验证的技术。通过向传输的数据添加PRBS序列,可以测试传输链路的可靠性和容错性,并检测是否存在任何传输错误或时钟问题。 使用SerDes PRBS技术,可以通过发送和接收PRBS序列来监测和验证信号质量和传输的正确性。发送端将数据与PRBS序列混合,并以串行方式发送。接收端使用PRBS序列来检测和纠正任何错误或时钟失步,并将数据恢复为并行信号。 SerDes PRBS在通信系统和数据传输具有重要作用。它可以用于测试和验证高速传输链路的可靠性和带宽,并确保数据的准确传输。此外,SerDes PRBS还可以用于调试和故障排除,以便在发现任何传输问题时能够快速定位并修复。 总之,SerDes PRBS是一种使用PRBS序列来测试和验证SerDes传输的技术。它在通信系统和数据传输起着重要的作用,可以确保信号的可靠性和数据的准确传输。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值