常用电路设计之PRBS伪随机码发生器的设计

一、PRBS伪随机码产生原理

       PRBS 伪随机编码是一种专门用于在高速设计中测试高速串行通道传输误码率的一种编码类型。 PRBS伪随机码不仅具有随机序列的一些统计特性和高斯噪声所有的良好的自相关特征,而且具有某种确定的编码规则,同时又便于重复产生和处理,因而在通信领域应用广泛。生成原理是根据本原表达式来生成一段随机码流,本原表达式可以用线性反馈移位寄存器来表示,移位寄存器的长度称为阶数n,常用的阶数有 7, 9, 11, 15, 20, 23, 31,则序列的周期为2^{n}-1, 该随机码流具有周期循环特性,PRBS 编码的长度与它的阶数成指数式增长,

       PRBS 编码的验证就是 PRBS 编码生成的逆过程, 详细说来就是首先在接收机端缓存一定长度的数据, 数据长度等于你的阶数, 然后将缓存器中的数据进行利用 PRBS 编码线性反馈移位寄存器进行编码, 最后将编码后的数据与新一轮接收到的数据的每一位进行比较, 如果比较结果一致则表示校验通过。

      这里以阶数为15的伪随机码为例,本原表达式为:x^{15}+x^{14}+1,该本原表达式对应的线性移位寄存器为:

二、PRBS编码的Verilog实现 

module  prbs(
	//system signals
	input	sclk							, 
	input	s_rst_n							,
	input	load		,
	input			[14:0]		seed		,
	output			[14:0]		prbs15		,
	//
);
reg 			[14:0]				prbs15	;
integer i;
always @ (posedge sclk or negedge s_rst_n) begin
	if(s_rst_n == 1'b0)
		prbs15<=15'b0;
	else if(load)
                prbs15<=seed;
    else begin
    	for (i = 0; i <= 14; i = i + 1)
    	    begin
    	        prbs15[i]<=prbs15[i-1];
    	        prbs15[0]=prbs15[14]^prbs15[13];
    	    end
    end
end
endmodule

 

你可能感兴趣的:(FPGA-Zynq7000)