偽隨機碼偽隨機碼
偽隨機碼序列一般可以利用移位寄存器網(wǎng)絡產(chǎn)生,該網(wǎng)絡由R級串聯(lián)雙態(tài)器件移位脈沖產(chǎn)生器和模二加法器組成。該網(wǎng)絡可以產(chǎn)生碼長為15的偽隨機碼。
利用FPGA可實現(xiàn)移位寄存器網(wǎng)絡以產(chǎn)生偽隨機碼信號,并實現(xiàn)邏輯控制和時鐘分配等功能。對于FPGA輸出的TTL信號,其處理方法有兩種:一種是直接送至運放進行信號調(diào)理輸出;另外一種是將TTL經(jīng)過D/A轉(zhuǎn)換及信號調(diào)理后再輸出。經(jīng)過分析與實際測試,由于FPGA輸出的信號相位抖動較為嚴重,甚至會造成信號邊沿不穩(wěn),而且存在著嚴重的寄生信號,因而輸出的偽碼質(zhì)量較差;而如果經(jīng)過D/A轉(zhuǎn)換后再進行調(diào)理輸出,這種影響會得到削弱,信號質(zhì)量會得到提高,因此第二種方法更為可取,在實際應用中,筆者就選擇該方法進行電路設(shè)計,并選擇差分電流輸出型D/A經(jīng)過MAX4145放大后直接輸出。
基于MAX4145的偽隨機碼產(chǎn)生電路原理。該偽隨機碼產(chǎn)生電路在工作時,系統(tǒng)可以通過并口將偽碼數(shù)據(jù)分配給FPGA,也可由FP-GA自主產(chǎn)生偽碼信號,同時由FPGA完成信號處理、時鐘分配、碼同步產(chǎn)生以及波形存儲等功能。MAX4145的作用主要是完成差分到單端輸出的轉(zhuǎn)換和放大。
讓我們看一個例子。序列α= 0110100,其中0和1的個數(shù)相差1。把α看成周期為7的無限序列,左移1位得,α1 = 1101000,把α1也看成周期為7的無限序列。 α= 0110100α1=1101000在一個周期里,α和α1的對應位置元素相同的位置有3個,元素不同的位置有4個,它們的差等于-1,這個數(shù)稱為α的自相關(guān)函數(shù)在1處的值,記作。類似地,把α左移2位,3位,…6位,可以求出α的自相關(guān)函數(shù)在2處,3處,…6處的值也等于-1。當0 < s <7時,稱為α的自相關(guān)函數(shù)的旁瓣值。從剛才所求出的結(jié)果知道,α= 0110100的自相關(guān)函數(shù)的旁瓣值只有一個:-1。像這樣的序列稱為偽隨機序列或擬完美序列。即,一個周期為v的無限序列,如果在一個周期里,0和1的個數(shù)相差1,并且它的自相關(guān)函數(shù)的旁瓣值只有一個:-1,則稱它為偽隨機序列或擬完美序列。α的自相關(guān)函數(shù)的旁瓣值的絕對值越大,就表明(或把的0和1互換得到的序列)與α越像。因此如果周期為v的序列α是一個偽隨機序列,那么α不管左移幾位(只要不是v的倍數(shù)),得到的序列都和α很不像,這樣就很難分辨出α是什么樣子。好比川劇的變臉,由于每一次都變得和演員的臉很不一樣,因此很難知道演員自己的臉是什么樣子。反之如果演員每一次化裝后都跟他自己的臉有許多相同之處,那么就容易辨認演員長得什么樣。這說明了用偽隨機序列作為密鑰序列,是比較安全的。
偽隨機序列是用函數(shù)生成隨機數(shù)。它并不真正是隨機的。只是比較近似隨機。
一個簡單的隨機數(shù)產(chǎn)生方法如下:
X0=345
Xn=(Xn-1*A+B)/C
其中A,B,C是常數(shù),上式每執(zhí)行一次就生成一個偽隨機數(shù)
還可以在數(shù)組中填入若干個數(shù)然后順序取出進行模擬。性能好,但是這種隨機數(shù)就很不象隨機數(shù)了。 還有就是根據(jù)當前系統(tǒng)時間,內(nèi)存值等等用函數(shù)生成了。
"http://baike.eccn.com/eewiki/index.php/%E4%BC%AA%E9%9A%8F%E6%9C%BA%E7%A0%81"