徐修峰
【摘 要】在工程應用中,經(jīng)常需要產(chǎn)生隨機數(shù),從而對實際的工程算法進行仿真驗證,并且最好是在項目調試現(xiàn)場進行仿真輸入從而對系統(tǒng)的整體性能進行測試,規(guī)避了常見的在計算機上驗證正常,在實際系統(tǒng)中工作不正常的問題,并且由于在Matlab中常見的偽隨機數(shù)的算法均較為復雜,不利于實現(xiàn).本文采用了一種基于FPGA中非門邏輯單元來實現(xiàn)真隨機數(shù)的方式,利于嵌入到實際運行的工程中,從而進行現(xiàn)場驗證.
【關鍵詞】真隨機數(shù);FPGA;非門環(huán)
0 引言
真隨機數(shù)在密碼學以及其它的學科中有著重要并廣泛的應用,工程應用中的隨機數(shù)常常用來產(chǎn)生實際環(huán)境中的本底噪聲附加到理想信號上用于仿真實際情況下的輸入信號.隨機數(shù)分為偽隨機數(shù)以及真隨機數(shù),通常在計算機系統(tǒng)中產(chǎn)生的隨機數(shù)都是偽隨機數(shù),所謂的偽隨機數(shù)通常是利用特定的函數(shù)來生成的,雖然在不同程度上逼近真隨機數(shù),但是它的致命的弱點是可追溯的.真隨機數(shù),顧名思義,即是真正的隨機數(shù),一般都是由物理過程產(chǎn)生的隨機數(shù),不能預先演算得到的,具有天然的不可破解的特性.
產(chǎn)生真隨機數(shù)的方式有很多,其中利用FPGA內部時鐘抖動產(chǎn)生真隨機數(shù)的方式已經(jīng)廣泛被使用[1-2],利用FPGA產(chǎn)生真隨機數(shù)利用的是時鐘的抖動,時鐘抖動越大,真隨機性能越好.本文中給出了一種經(jīng)過實際驗證的真隨機數(shù)的產(chǎn)生方式,利用該種方式產(chǎn)生的隨機數(shù)能夠通過NIST推出的專用軟件進行性能測試,之后才能夠投入到實際的生產(chǎn)使用中.
1 FPGA中真隨機數(shù)產(chǎn)生
產(chǎn)生真隨機數(shù)的基礎是利用真實存在的熵源,F(xiàn)PGA中的真實熵源是時鐘JITTER,例如在D觸發(fā)器時鐘到達的時候,數(shù)據(jù)線處在跳變的過程中,導致不能滿足其常規(guī)工作時所需要的建立保持時間的要求,輸出的數(shù)據(jù)處于不穩(wěn)定的隨機狀態(tài),這是利用FPGA產(chǎn)生隨機數(shù)的基本原理.
在FPGA中產(chǎn)生真隨機數(shù)的方式是利用三個非門組成的非門環(huán),在將多個非門環(huán)進行異或操作,最終再進行時鐘采樣的方式,如圖1所示.非門環(huán)本身運轉起來之后,線上的數(shù)字在高速的進行跳變,在高電平以及低電平之間高速的切換,然后將其中一個非門的輸出接到D觸發(fā)器上,這樣D觸發(fā)器根據(jù)其工作時鐘定期到非門環(huán)上取一個數(shù)據(jù)進行鎖存,這樣有一定概率出現(xiàn)取數(shù)時D觸發(fā)器的數(shù)據(jù)線正好在進行跳變的過程中,這樣其輸出的數(shù)值就是真正意義上的隨機數(shù).但是,單個非門環(huán)的數(shù)據(jù)中真隨機數(shù)的概率有限,還不能做到真正意義上的真隨機數(shù),必須要利用多個非門環(huán)進行聯(lián)合工作,然后再進行全局的異或操作,只要有一個狀態(tài)為真隨機數(shù),則最終輸出為真隨機數(shù).
如圖1所示,該種方式產(chǎn)生的隨機數(shù)為真隨機數(shù),非門環(huán)本身運轉的速度很高,高低跳變的周期小于1ns,并且各個非門環(huán)之間的狀態(tài)是完全獨立的,故在進行異或操作時,如果非門環(huán)輸出為1的個數(shù)為偶數(shù)時,則輸出為0,個數(shù)為奇數(shù)時,輸出為1;在進入D觸發(fā)器時,由于采樣時鐘為低速時鐘,在D觸發(fā)器采樣時鐘到來時,數(shù)據(jù)線上的輸入如果發(fā)生跳變,則會產(chǎn)生真隨機數(shù),我們通過增加非門環(huán)的個數(shù)來增加該真隨機數(shù)出現(xiàn)的概率.
在工程應用中,可以控制不同的M,N,L值,從而獲得不同效果的真隨機數(shù),N值主要控制單路的非門環(huán)之后的非門的個數(shù),M值主要控制非門環(huán)的個數(shù),M個非門環(huán)最終通過1個異或門從而得到1路真隨機數(shù)輸出,該路輸出再經(jīng)過L個非門之后再送入到一路D觸發(fā)器中進行時鐘采樣,從而得到最終的輸出.異或門是整個系統(tǒng)中的關鍵部位之一,它的作用是將所有的單路中的真隨機數(shù)的因素匯總起來,在這里合成到一路中,其基本原理是真隨機數(shù)和任何數(shù)據(jù)進行異或的結果都是真隨機數(shù),這種結構下要想得不是真隨機數(shù)的情況只有所有路的輸出都是非隨機數(shù),即每一路都能滿足建立保持時間的要求,這個要求隨著路數(shù)的增加,變得越來越難滿足,概率越來越小.通過增加非門環(huán)的數(shù)量從而減少輸出端非真隨機數(shù)的出現(xiàn)概率,最終得到真隨機數(shù).
2 真隨機數(shù)測試
3 結論
利用FPGA產(chǎn)生真隨機數(shù)能夠達到較高的速度,且利于系統(tǒng)集成,并且能夠進行位擴展,能夠同時生成多個真隨機數(shù)源,再通過并串轉換再產(chǎn)生更高速率的真隨機數(shù),并且集成度高,能夠在系統(tǒng)現(xiàn)場進行仿真輸入,測試系統(tǒng)工作的穩(wěn)定性,可以應用于工程實踐中.
【參考文獻】
[1]張聰,于忠臣.一種基于FPGA的真隨機數(shù)發(fā)生器設計與實現(xiàn)[J].電子設計工程,2011,19(10):176-179.
[2]霍文捷,劉政林,陳毅成,等.一種基于FPGA的真隨機數(shù)生成器的設計[J].華中科技大學學報:自然科學版,2009,37(1):73-76.
[責任編輯:楊玉潔]