加入星計劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴散
  • 作品版權(quán)保護
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入
  • 正文
    • 基于 FPGA 的偽隨機序列發(fā)生器設計
    • 4 FPGA 的 LSFR 驗證
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請入駐 產(chǎn)業(yè)圖譜

基于FPGA的偽隨機序列發(fā)生器設計

2020/07/02
311
閱讀需 8 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

基于 FPGA 的偽隨機序列發(fā)生器設計

1 基本概念與應用

1)LFSR:線性反饋移位寄存器(linear feedback shift register, LFSR)是指給定前一狀態(tài)的輸出,將該輸出的線性函數(shù)再用作輸入的移位寄存器。異或運算是最常見的單比特線性函數(shù):對寄存器的某些位進行異或操作后作為輸入,再對寄存器中的各比特進行整體移位。

LFSR 產(chǎn)生的兩種形式為伽羅瓦(Galois)和斐波那契(Fibonacci)兩種形式。也有成為外部(External)執(zhí)行方式和內(nèi)部(Internal)執(zhí)行方式。

(1)伽羅瓦方式(Internal)

?

?

?

Galois 方式特征數(shù)據(jù)的方向從左至右,反饋線路是從右至左。其中 X^0 項(本原多項式里面的‘1’這一項)作為起始項。按照本原多項式的指示確定異或門(XOR)在移位寄存器電路上的位置。如上圖所示 X^4。因此 Galois 方式也有人稱作線內(nèi)或模類型(M- 型)LFSR。

(2)斐波那契方式(External)

??

從圖中我們可以看到 Fibonacci 方式的數(shù)學流向和反饋形式是恰好跟 Galois 方式相反的,按照本原多項式,其中 X^0 這一項作為最后一項,這里需要一個 XOR 門,將本原多項式中所給的 taps 來設定它的異或方式。因此 Fibonacci 方式也被叫做線外或者簡型(S- 型)LFSR。

2)本原多項式

本原多項式是近世代數(shù)中的一個概念,是唯一分解整環(huán)上滿足所有系數(shù)的最大公因數(shù)為 1 的多項式。本原多項式不等于零,與本原多項式相伴的多項式仍為本原多項式。

(1)在 MATLAB 中,本原多項式可以通過函數(shù) primpoly(x)來產(chǎn)生。

(2)在 MATLAB 中,通過函數(shù) gfprimfd(m,'min')可以找到一個最小的本原多項式。

3)應用

誤碼率測量 -- 在數(shù)字通信中誤碼率是一項重要的質(zhì)量指標,在實際測量數(shù)字通信系統(tǒng)的誤碼率時,一般來說,測量結(jié)果與信源發(fā)出信號的統(tǒng)計特性有關(guān)。通常認為二進制信號 0 和 1 是以等概率隨機出現(xiàn)的。所以測量誤碼率時最理想的信源應是偽隨機序列產(chǎn)生器。這樣測量的結(jié)果,我們認為是符合實際運用時的情況。

時延測量 -- 有時我們需要測量信號經(jīng)過某一傳輸路徑所收到的時間延遲,例如,需要測量某一延遲線的時間延遲。另外,我們還常常通過測量一無線電信號在某個媒質(zhì)中的傳播時間,從而折算傳播距離,即利用無線電信號測距。這就是說,這種測距的原理實質(zhì)上也是測量延遲。

噪聲產(chǎn)生器 -- 測量通信系統(tǒng)的性能時,常常要使用噪聲產(chǎn)生器,由它給出具有所要求的統(tǒng)計特性和頻率特性的噪聲,并且可以隨意控制其強度,以便得到不同信噪比條件下的系統(tǒng)性能。例如,在許多情況下,要求它能產(chǎn)生限帶白色高斯噪聲。

通信加密、數(shù)據(jù)序列的加擾與解擾、擴展頻譜通信、分離多徑技術(shù)等等。

2 偽隨機序列的原理

對于某種反饋邏輯、初始化狀態(tài)非全零時,若輸出序列周期最長(P=2r-1),稱為 m 序列,也稱為偽隨機序列。

偽隨機序列通常由反饋移位寄存器產(chǎn)生,又可分為線性反饋移位寄存器和非線性反饋移位寄存器兩類。由線性反饋移位寄存器產(chǎn)生出的周期最長的二進制數(shù)字序列稱為最大長度線性反饋移位寄存器,即為通常說的 m 序列,因其理論成熟,實現(xiàn)簡單,應用較為廣泛。下面介紹 m 序列的產(chǎn)生原理。

在二進制多級移位寄存器中,若線性反饋移位寄存器(LFSR)有 n 階(即有 n 級寄存器),則所能產(chǎn)生的最大長度的碼序列為 2n-1 位。如果數(shù)字信號直接取自 LFSR(非翻轉(zhuǎn)信號)的輸出,那么最長的連 0 數(shù)為 n-1。除了字符串的連 0 和連 1,偽隨機序列在一個長度為 n 的字符串中將包含任何可能的 0 和 1 的組合。要使移位寄存器產(chǎn)生確定的值,必須置其初值并允許時鐘電路產(chǎn)生移位時鐘。

線性反饋移位寄存器產(chǎn)生 m 序列

在圖中給出一個一般的線性反饋移位寄存器的組成。圖中一級移存器的狀態(tài)用表示,=0 或 1,i=整數(shù)。反饋線的連接狀態(tài)用?表示,=1 表示此線接通(參加反饋),=0 表示此線斷開。我們不難推想,反饋線的連接狀態(tài)不同,就可能改變此移存器輸出序列的周期 p。

的取值決定了移存器的反饋連接和序列的結(jié)構(gòu),也就是決定了序列的周期。用特征多項式表示為:

當特征多項式符合某些條件時稱為本原多項式。在設計 m 序列產(chǎn)生器時,移位寄存器反饋線的結(jié)構(gòu)直接決定于本原多項式的結(jié)構(gòu)。也就是只要找到本原多項式,就能由它構(gòu)成 m 序列產(chǎn)生器。

3 matlab 的 LFSR 驗證

1)matlab 函數(shù)產(chǎn)生本原多項式

clear all

close all

primpoly(8);

2)本原多項式產(chǎn)生隨機序列

clear all

close all

% m=8

% x^8+x^4+x^3+x^2+1

% 435

s=[1 1 1 1 1 1 1 1];

t=[8 4 3 2];

[seq c]=LFSRv1(s,t);

4 FPGA 的 LSFR 驗證

1)fpga 實現(xiàn)本原多項式

/*m:x^8+x^4+x^3+x^2+1*/ module msequence8#(       parameter seed= 8'b1111_1111   )(   clk,   rst_n,   en,   mse8, //m sequence   rand8   );     input clk, rst_n;    input en;    output mse8;    output reg [7:0] rand8;     assign mse8 = rand8[0];     always @ (posedge clk or negedge rst_n)begin       if(!rst_n)          rand8 <= seed;       else if(en) begin          rand8[0] <= rand8[1];          rand8[1] <= rand8[2];          rand8[2] <= rand8[3];          rand8[3] <= rand8[4];          rand8[4] <= rand8[5];          rand8[5] <= rand8[6];          rand8[6] <= rand8[7];          rand8[7] <= rand8[0] ^ rand8[4] ^ rand8[5] ^ rand8[6];       end       else          rand8 <= rand8;    end endmodule

如上圖所示,當 fpga 仿真的輸入種子和 matlab 的輸入種子一致時產(chǎn)生的序列一致。

上圖為隨機序列的模擬信號展示。

3)在產(chǎn)生隨機數(shù)序列的基礎上我們可以進一步去產(chǎn)生符合高斯分布的高斯白噪聲

相關(guān)推薦

電子產(chǎn)業(yè)圖譜

lee
lee

從數(shù)字出發(fā),走進圖像世界,聆聽音頻的美妙旋律。從電路出發(fā),實現(xiàn)美妙的算法,展示代碼的美奐。從知識到實現(xiàn),歡迎大家關(guān)注公眾號FPGA開源工作室。