一種基于FPGA的真隨機數(shù)發(fā)生器設(shè)計與實現(xiàn)
1.4 隨機源模塊的電路設(shè)計
各個振蕩器的輸出經(jīng)過異或運算可以增加隨機性,而亞穩(wěn)態(tài)的傳播會造成后續(xù)電路的錯誤動作,因此使用同步器將異或后的隨機序列與后續(xù)電路隔離開來,同時也方便采集穩(wěn)定的輸出序列做性能分析。此處采用了三級寄存器的同步結(jié)構(gòu),由MTBF(Mean Time Between Failure)的定義可知,平均需要經(jīng)過數(shù)百年時間才會發(fā)生一次亞穩(wěn)態(tài)通過同步器向下傳播的事件,因此是滿足設(shè)計要求的。該模塊電路圖如圖4所示。本文引用地址:http://www.biyoush.com/article/190794.htm
1.5 后續(xù)處理模塊的設(shè)計
理想情況下,D觸發(fā)器所采集的信號具有隨機的統(tǒng)計特性,可是FPGA內(nèi)部電路不可避免地會受到溫度漂移、電壓抖動等不良因素影響,從而導(dǎo)致采樣得到的隨機信號中存在偏置,影響結(jié)果的統(tǒng)計特性。所以在采樣得到隨機序列后要對數(shù)據(jù)進行消偏處理,使0和1出現(xiàn)的概率相當(dāng)。
本設(shè)計采用16位最大長度二進制偽隨機序列(Pseudo Random Binary Sequence)的輸出與采樣得到的隨機序列進行異或運算作為后續(xù)處理,PRBS產(chǎn)生電路消耗資源少并且使用線性反饋移位寄存器實現(xiàn),非常適合于在FPGA上實現(xiàn)。它的生成多項式是:
多項式表示如圖5所示。
2 TRNG的FPGA實現(xiàn)與測試
整個TRNG的實驗環(huán)境由外部時鐘源、FPGA開發(fā)板以及邏輯分析儀組成。TRNG采用Xilinx公司的Virtex-5系列中的XC5VLX110作為物理實現(xiàn)平臺,外部時鐘頻率為64 MHz。由FPGA產(chǎn)生的隨機數(shù)據(jù),經(jīng)邏輯分析儀采集后,使用DIEHARD battery of tests of randomness隨機數(shù)測試程序進行測試,檢驗隨機序列的性能。
DIEHARD測試是由16項測試組成的用來度量隨機數(shù)發(fā)生器性能的一組統(tǒng)計學(xué)測試,它由George Marsaglia開發(fā)并于1995年首次發(fā)布。DIE HARD的測試結(jié)果叫做P-value,它由方程P-value=Fi(X)計算得到,其中Fi試圖建立樣本X在0和1間服從均勻分布的分布函數(shù)。因為Fi是漸進逼近的,它在尾部的近似效果變差,所以數(shù)值接近0或1的P-value在真隨機序列中極少出現(xiàn)。當(dāng)被測序列隨機性能很差時,會有很多P-value的值是精確到小數(shù)點后數(shù)位的0或者1,例如1.000 000。需要強調(diào)的是,P-value等于1.000 000或0.000000是序列為真隨機序列的充分不必要條件。
2.1 FPGA位置約束
為保證每個振蕩器中的兩個獨立振蕩環(huán)的理論振蕩周期相同,以便更容易在鎖定期間產(chǎn)生亞穩(wěn)態(tài),加大噪聲對輸出電平的影響,同時盡量讓各個振蕩器的輸出在進行異或運算前延遲不出現(xiàn)太大偏差。所以對TRNG中的振蕩環(huán)進行位置約束:將振蕩環(huán)中的反相器約束在左右相鄰的邏輯單元(Slice)中,讓各個振蕩環(huán)分別約束在上下相鄰的邏輯單元中。
2.2 振蕩器數(shù)目對統(tǒng)計特性的影響
在32 MHz的采樣頻率下,分別以15組、19組、27組和32組振蕩器作為TRNG的隨機源,隨機序列經(jīng)過同步器后不與PRBS運算直接輸出。將采集到的隨機序列送入測試程序進行測試以后,其結(jié)果如表1所示。
可以看出,振蕩器的數(shù)目直接影響隨機源模塊產(chǎn)生序列的統(tǒng)計性能,振蕩器數(shù)目越多,TRNG輸出序列的隨機性越好。但是如果振蕩器的數(shù)目太多,會消耗過多的硬件資源,功耗也過大。因此,不宜通過單純地增加振蕩器數(shù)目的方法提高隨機序列的性能。
評論