一、PRBS僞隨機碼產生原理
PRBS 僞隨機編碼是一種專門用於在高速設計中測試高速串行通道傳輸誤碼率的一種編碼類型。 PRBS僞隨機碼不僅具有隨機序列的一些統計特性和高斯噪聲所有的良好的自相關特徵,而且具有某種確定的編碼規則,同時又便於重複產生和處理,因而在通信領域應用廣泛。生成原理是根據本原表達式來生成一段隨機碼流,本原表達式可以用線性反饋移位寄存器來表示,移位寄存器的長度稱爲階數n,常用的階數有 7, 9, 11, 15, 20, 23, 31,則序列的週期爲, 該隨機碼流具有周期循環特性,PRBS 編碼的長度與它的階數成指數式增長,
PRBS 編碼的驗證就是 PRBS 編碼生成的逆過程, 詳細說來就是首先在接收機端緩存一定長度的數據, 數據長度等於你的階數, 然後將緩存器中的數據進行利用 PRBS 編碼線性反饋移位寄存器進行編碼, 最後將編碼後的數據與新一輪接收到的數據的每一位進行比較, 如果比較結果一致則表示校驗通過。
這裏以階數爲15的僞隨機碼爲例,本原表達式爲:,該本原表達式對應的線性移位寄存器爲:
二、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