鄒學玉 (長江大學電子信息學院,湖北荊州434023)
m序列是一種偽隨機序列,具有優(yōu)良的自相關(guān)函數(shù),容易產(chǎn)生和復制,在數(shù)字基帶信號的加擾、擴頻通信、雷達、通信系統(tǒng)的測量、石油地震勘探等領(lǐng)域都有著廣泛的應用,因而m序列的產(chǎn)生一直是國內(nèi)外信息領(lǐng)域的研究熱點[1~4]。近年來,隨著可編程邏輯器件FPGA/CPLD的不斷發(fā)展,在很多高速設計和高速測試的場合,都希望能夠在FPGA中直接實現(xiàn)不同級數(shù)的m序列發(fā)生器。傳統(tǒng)的大數(shù)乘法產(chǎn)生偽隨機數(shù)方法受到時鐘頻率不能太高的限制,并且需要消耗FPGA/CPLD內(nèi)大量的資源[4],因而要找到一種合適的邏輯結(jié)構(gòu)來高速產(chǎn)生任意級數(shù)的m序列并運行于較高的工作頻率。基于Fabonacci結(jié)構(gòu)的FPGA設計一種任意級數(shù)和初始相位均可調(diào)的m序列發(fā)生器,因Fabonacci結(jié)構(gòu)的反饋網(wǎng)絡較大延時隨級數(shù)的增加而增加,制約了m序列產(chǎn)生速度的提升[5]?;贕alois結(jié)構(gòu)的m序列發(fā)生器,其反饋網(wǎng)絡簡單,其運算延時基本不隨級數(shù)的變化而變化,這有利于以相同的高速產(chǎn)生不同級數(shù)的m序列。由于Galois結(jié)構(gòu)與Fabonacci結(jié)構(gòu)的反饋系數(shù)不同,因而需要從 Fabonacci結(jié)構(gòu)的反饋系數(shù)中導出Galois結(jié)構(gòu)的反饋系數(shù)[6]。為此,筆者基于Galois結(jié)構(gòu)的反饋系數(shù)表設計出快速m序列發(fā)生器。
m序列信號發(fā)生器是在n級線性移位寄存器[6~8]的基礎上,加上反饋邏輯電路構(gòu)成的。m序列信號發(fā)生器有2種結(jié)構(gòu),即Fabonacci型和Galois型[4,6~8]。筆者采用Galois型移位寄存器產(chǎn)生m序列。該結(jié)構(gòu)的特點是只有第n位觸發(fā)器的狀態(tài)作為反饋,而且其反饋網(wǎng)絡延時小,但移位寄存器的反饋抽頭位置與本原多項式不一致,需要經(jīng)過某種變換才能得到Galois結(jié)構(gòu),其結(jié)構(gòu)如圖1所示。
圖1 n級 Galois結(jié)構(gòu)模型
圖1表示一個有限狀態(tài)機,其中D為延時環(huán)節(jié),該狀態(tài)機的轉(zhuǎn)換方程和輸出方程分別為:
若從最后一級輸出m序列,則C可簡化為:
A與n級線性移位寄存器構(gòu)成的偽隨機序列的本原多項式有關(guān),反饋系數(shù)g0,g1,…,gn-2將決定m序列發(fā)生器的結(jié)構(gòu)。因此,只要初態(tài)s0≠0和任意級數(shù)n的反饋系數(shù)已知,就可以設計出相應的Galois型m序列發(fā)生器。該設計主要基于二元有限域GF(2)上的n級反饋系數(shù)g0,g1,…,gn-2表來實現(xiàn)GF(2)上的m序列發(fā)生器。
根據(jù)上述分析,設計任意級數(shù)m序列發(fā)生器的總體框圖,如圖2所示。
圖2 任意可變級數(shù)n的Galois型m序列發(fā)生器框圖
圖3 Galois型反饋系數(shù)表存儲器結(jié)構(gòu)圖
以Altera公司的EPM1270T144C5芯片為例,在級數(shù)n值在3~29時系統(tǒng)中2個最為關(guān)鍵的模塊設計具體內(nèi)容如下。
1)Galois型反饋系數(shù)表存儲器設計 設計Galois型反饋系數(shù)表存儲器結(jié)構(gòu)如圖3所示。該結(jié)構(gòu)由FPGA中內(nèi)嵌的E2PROM構(gòu)成,只要給定n,經(jīng)過級數(shù)調(diào)整模塊運算得到其相應地址addr,即可從E2PROM的輸出端feedfactor輸出其相應的反饋系數(shù)。故存儲器中要存儲27組反饋系數(shù)值,若設計級數(shù)的最小級數(shù)為ns,最大級數(shù)為ne,則E2PROM的地址空間范圍是從0至ne-ns。將這27組反饋系數(shù)值做成一個ROM表,則需要一個5位二進制數(shù)字作為地址輸入來提取與之相應的反饋系數(shù)值。該模塊的VHDL程序如下:
2)Galois型移位存儲器設計 為實現(xiàn)級數(shù)n值在3~29可調(diào)的m序列,先生成一個29級的Galois型移位寄存器,該結(jié)構(gòu)的第29位D觸發(fā)器的輸出是否反饋取決于級數(shù)n。可用一個信號X來表征相應級數(shù)的Galois型結(jié)構(gòu)中的反饋特征,X在移位寄存器狀態(tài)輸出(S(1),…,S(28))中取值。通過輸入5位二進制信號addr[4,…,0]來確定末位反饋信號X的取值。如當輸入addr[4,…,0]為00000時,反饋信號X<=S(1),這樣就生成了一個3級的m序列發(fā)生器;當輸入addr[4,…,0]為00001時,反饋信號X<=S(2),這樣就生成了一個4級的m序列發(fā)生器;依此類推。該模塊的VHDL程序如下:
該模塊有4個輸入 (clk,rst,addr[4,…,0],G[0,…,27])、1個輸出 (Q)和1個緩沖口(S[n-1,…,0])。clk為器件的工作時鐘;rst為器件的控制信號,為 “1”時器件工作;G[0,…,27]是位于地址addr[4,…,0]的反饋系數(shù)表存儲器中輸出的反饋系數(shù);Q為n級的m序列信號的輸出。
筆者在QuartusⅡ上對級數(shù)n分別為3~29的m序列發(fā)生器進行了仿真,給出了級數(shù)n分別為3和29的m序列發(fā)生器的仿真結(jié)果 (見圖4),并對系統(tǒng)的延時進行分析。
為便于分析,筆者對系統(tǒng)中各寄存器的初始狀態(tài)都設定為 “1”,所以m序列的輸出應該從 “1”開始。由圖4可知,m序列的每一位的寬度均為一個時鐘周期;m序列輸出的起始位置為rst置 “1”后的第一個時鐘上升沿是在35ns處。圖4(a)中m序列在57.599ns開始輸出,系統(tǒng)延時22.599ns;圖4(b)中m序列在57.472ns開始輸出,系統(tǒng)延時22.472ns。由此可見,系統(tǒng)延時受級數(shù)n的影響較小。
用VHDL語言描述復雜的數(shù)字系統(tǒng)設計效率顯著提高,對于任意級數(shù)的m序列發(fā)生器,充分利用FPGA芯片內(nèi)置的ROM構(gòu)建任意級數(shù)的Galois型反饋系數(shù)表,極大地簡化了快速m序列發(fā)生器的實現(xiàn)過程。由于其產(chǎn)生的速率快,且基本不受級數(shù)n的影響,因而該m序列產(chǎn)生方法具有較強的適應性和較廣的應用范圍,尤其適用于級數(shù)n可變的應用場合。
圖4 m序列發(fā)生器的仿真結(jié)果
[1]Zeng Kencheng,Yang Chung-Huang,Wei Dah-Yea,et al.Pseudorandom Bit Generators in Stream-Cipher Cryptograph[J].Computer,1991,24(2):8~17.
[2]Ali Kanso.Clock-controlled shrinking generator of feedback shift registers[A].8th Australasian Conference on Information Security and Privacy-ACISP[C].2003.
[3]蒲海,陳自力,胡玫榮.基于CP LD的高速m序列碼發(fā)生器的設計[J].微計算機信息,2005,21(4):172~173.
[4]束禮寶,宋克柱.偽隨機數(shù)發(fā)生器的FPGA實現(xiàn)與研究[J].電路與系統(tǒng)學報,2003,8(3):121~124.
[5]鄒學玉,易國華.一類基于FPGA的m序列發(fā)生器的設計 [J].長江大學學報 (自然科學版),2006,3(3):84~86.
[6]Zepernick H J,Finger A.Pseudo Random Signal Processing:Theory and Application[M].Chichester:John Wiley&Sons,2005.
[7]林可祥,汪一飛.偽隨機碼的原理與應用[M].北京:人民郵電出版社,1998.
[8]梅文華,楊義先.跳頻通信地址編碼理論[M].北京:國防工業(yè)出版社,1996.