FPGA的偽隨機序列發(fā)生器設(shè)計
0? 引言偽隨機序列現(xiàn)已廣泛應(yīng)用于密碼學(xué)、擴頻通訊、導(dǎo)航、集成電路的可測性設(shè)計、現(xiàn)代戰(zhàn)爭中的電子對抗技術(shù)等許多重要領(lǐng)域。偽隨機序列的偽隨機性表現(xiàn)在預(yù)先的可確定性、可重復(fù)產(chǎn)生與處理。偽隨機序列雖然不是真正的隨機序列,但是當(dāng)偽隨機序列周期足夠長時,它便具有隨機序列的良好統(tǒng)計特性。在已有的序列中,m序列的應(yīng)用最為成熟和廣泛,為此,本文給出線性m序列和基于m序列的非線性m子序列的FPGA實現(xiàn)方法。由于FPGA的內(nèi)部邏輯功能是通過向內(nèi)部靜態(tài)存儲器單元加載配置數(shù)據(jù)來實現(xiàn)的,其配置文件決定了邏輯單元的邏輯功能以及模塊間或與I/O間的連接,故可最終決定FPGA實現(xiàn)的功能。FPGA的這種結(jié)構(gòu)允許多次編程,并享有快速有效地對新設(shè)計進行優(yōu)化的靈活性,為此,本文選用了altera的cvclone系列FPGA芯片EPlC12-240PQFP,該芯片內(nèi)部有12060個邏輯單元、239616 bit RAM、兩個鎖相環(huán)(PLL)。本文應(yīng)用移位寄存器理論來產(chǎn)生序列,其算法的關(guān)鍵是找到線性m序列和非線性m子序列移位寄存器的反饋邏輯式。
1 m序列的實現(xiàn)
1.1 基于FPGA的m序列實現(xiàn)
利用反饋移位寄存器產(chǎn)生0、1序列時,其n位反饋移位寄存器的邏輯功能如圖1所示。

圖中,xi蕾表示寄存器所處的狀態(tài),通常用0和1來代表兩個可能的狀態(tài),并且把0和1看成是有限域GF(2)的兩個元素。f(x0,x1,…,xn-1)刻劃了移位寄存器反饋邏輯的功能,它可以看成一個定義在GF(2)上并且在GF(2)中取值的n元函數(shù),當(dāng)f(x0,x1…,xn-1)可以表示成一線性齊次函數(shù)時。即

對于一個n級m序列移位寄存器來說。它在每一時刻的內(nèi)部狀態(tài)都可以看做有限域GF(2)上的一個n維向量,而反饋函數(shù)就是刻劃了從每一時刻的狀態(tài)到下一時刻狀態(tài)的轉(zhuǎn)移規(guī)律,或者說反饋函數(shù)定義了n維向量空間上的一個線性變換。
通??梢杂肰n(F)代表域GF(2)上全體n元數(shù)組構(gòu)成的n維向量空間,a=(a0a1a2…an-1…)代表n級移位寄存器產(chǎn)生的m序列。n級m序列移位寄存器的狀態(tài)可以看做Vn(F)中的向量。設(shè)f(λ)=λn+cn-1λn-1+…+c0是多項式環(huán)F[λ]中的一次n多項式,那么,對于G(f)中的線性移位寄存器序列,從狀態(tài)(akak+1ak+n-1)到下一個狀態(tài)(ak+1ak+2…ak+n)的轉(zhuǎn)移就可以看成是Vn(F)的一個線性變換。由于ak+n=an-1ak+n-1+cn-2ak+n-2+…+c0ak,于是,狀態(tài)轉(zhuǎn)移變換用矩陣寫出來就是:

稱為線性移位寄存器的狀態(tài)轉(zhuǎn)移矩陣,顯然,狀態(tài)轉(zhuǎn)移矩陣T和初始狀態(tài)完全刻畫了線性移位寄存器所產(chǎn)生的序列。它在此建立起了反饋函數(shù),即

設(shè)F(λ)=λn+cn-1λn-1+…+c0是線性遞推序列的極小多項式,那么,一個周期序列的周期就等于它的極小多項式的周期,因此,一個n級m序列的極小多項式f(λ)的周期就是2n-1。在代數(shù)中,這樣的多項式稱為n次本原多項式。由于矩陣T是有理塊,它的特征多項式∣ΛI-T∣=f(λ)就是它的極小多項式。找到了m序列本原多項式與狀態(tài)轉(zhuǎn)移矩陣T之間的關(guān)系,就可進一步獲得m序列本原多項式與反饋函數(shù),即=



圖2所示是該序列在QuartusⅡ開發(fā)平臺中的仿真波形。

仿真時,1個CLK周期設(shè)置10ns,外加復(fù)位信號RD所占用的時間,周期為29-1的m序列仿真時間需要5.16 μs。所產(chǎn)生的序列如下:

其中,斜體0、1代碼表示序列又一周期的開始,周而復(fù)始。
1.2 序列偽隨機性分析

根據(jù)SEL[0..2]端子可選擇不同周期的序列,m序列發(fā)生器中R序列周期可選26-1,29-1,215-1,228-1,236-1;m子序列發(fā)生器中的序列周期可選25-1,26-1,27-1,28-1,29-1。若N_L_SEL端子取1,則選擇非線性偽隨機序列發(fā)生器,SEL[0..2]端子取101,則選擇周期是29-1的m子序列。圖4所示是序列發(fā)生器模塊的仿真波形圖。
比較周期是29-1的某一m子序列與同一周期的m序列可知,其兩者具有相同的周期、平衡性、相近的自相關(guān)性以及不同的局部游程和不同的線性復(fù)雜度。QUARTUS中的仿真報告表明,L_prsg模塊將耗費96個Logic Elements,NL_prsg模塊則耗費35個Logic Elements。
3? 結(jié)束語
偽隨機序列在通信、密碼學(xué)、雷達、導(dǎo)航、芯片內(nèi)建自測試方面具有廣泛的應(yīng)用,本文給出了線性m序列和基于m序列的m子序列的FPGA實現(xiàn)方法。本方法應(yīng)用移位寄存器理論,從m序列的本原多項式出發(fā),其算法核心是找到m序列本原多項式與線性m序列和m子序列移位寄存器反饋邏輯式之間的關(guān)系,然后采用VHDL語言編程,并借助Quart usⅡ開發(fā)平臺實現(xiàn)序列。
文中通過對偽隨機性分析表明:其所產(chǎn)生的序列符合m序列的統(tǒng)計特性,m子序列也具有優(yōu)良的偽隨機特性,從而驗證了該算法的正確性。
評論