新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > ATmega128單片機(jī)的真隨機(jī)數(shù)發(fā)生器

ATmega128單片機(jī)的真隨機(jī)數(shù)發(fā)生器

作者: 時(shí)間:2009-12-16 來源:網(wǎng)絡(luò) 收藏

引 言

隨機(jī)數(shù)已廣泛地應(yīng)用于仿真、抽樣、數(shù)值分析、計(jì)算機(jī)程序設(shè)計(jì)、決策、美學(xué)和娛樂之中。常見的隨機(jī)數(shù)有兩種:使用數(shù)學(xué)算法的偽隨機(jī)數(shù)和以物理隨機(jī)量作為發(fā)生源的。要獲取真正隨機(jī)的,常使用硬件隨機(jī)數(shù)發(fā)生器的方法來獲取。這些都是使基于特定的真隨機(jī)數(shù)發(fā)生源(如熱噪聲、電流噪聲等),每次獲取的真隨機(jī)數(shù)都是不可測的,具有很好的隨機(jī)性。

真隨機(jī)數(shù)因其隨機(jī)性強(qiáng),在數(shù)據(jù)加密、信息輔助、智能決策和初始化向量方面有著廣泛應(yīng)用,構(gòu)建一種基于硬件真隨機(jī)數(shù)發(fā)生源,具有廣泛的應(yīng)用價(jià)值。但目前硬件真隨機(jī)數(shù)發(fā)生源均較復(fù)雜,而且很少有基于單片機(jī)的真隨機(jī)數(shù)發(fā)生器。本文利用RC充放電的低穩(wěn)定度,根據(jù)AVR單片機(jī)的特點(diǎn)設(shè)計(jì)了一種性價(jià)比極高的真隨機(jī)數(shù)發(fā)生器。該隨機(jī)數(shù)發(fā)生器使用元件很少,穩(wěn)定性高,對(duì)一些價(jià)格敏感的特殊場合,如金融、通信、娛樂設(shè)備等有較大的應(yīng)用意義。

1 基本原理和方法

1.1 基本原理

串聯(lián)的RC充放電電路由于受到漏電流、電阻熱噪聲、電阻過剩噪聲、電容極化噪聲等諸多不確定性因素的影響,其充放電穩(wěn)定度一般只能達(dá)到10-3。利用這種RC充放電的低穩(wěn)定度特性實(shí)現(xiàn)廉價(jià)的真隨機(jī)數(shù)發(fā)生源。

Atmel公司AVR單片機(jī)ATmega 128以其速度快、功能強(qiáng)、性價(jià)比高等優(yōu)點(diǎn)廣泛應(yīng)用于各種嵌入式計(jì)算場合。利用AVR單片機(jī)引腳配置靈活多樣的特點(diǎn),使用Amnega128兩個(gè)I/O口作為真隨機(jī)數(shù)的電氣接口。

其原理如圖1所示。主要原理是利用串聯(lián)RC電路的不確定性產(chǎn)生真隨機(jī)數(shù)源,收集數(shù)據(jù),通過AVR單片機(jī)和主時(shí)鐘電路量化RC電路的充放電時(shí)問,獲得不確定的2位二進(jìn)制數(shù)據(jù),再利用程序?qū)⒚?次采集的數(shù)據(jù)綜合,最后產(chǎn)生1個(gè)8位的真隨機(jī)數(shù)。

1.2 方 法

1.2.1 RC電路充放電過程

I/O口配置策略為:PG3 口(第18腳)作為充電輸出口,PG4 口(第19腳)作為檢測輸入口。當(dāng)PG3輸出為高時(shí),輸出電流通過電阻對(duì)電容進(jìn)行充電;當(dāng)PG3輸出為低時(shí),電容通過電阻放電。PG4用于檢測電容上的電平狀態(tài)。充放電過程如圖2所示。

1.2.2 AVR單片機(jī)獲得不確定的2位二進(jìn)制數(shù)據(jù)

AVR單片機(jī)主時(shí)鐘采用普通晶體振蕩器。用該主時(shí)鐘來測量RC電路的充放時(shí)間,用AVR單片機(jī)的定時(shí)器(1個(gè)16位定時(shí)器)來量化充放電時(shí)間。由于主時(shí)鐘的周期遠(yuǎn)遠(yuǎn)小于RC充放電時(shí)間,觀察實(shí)驗(yàn)數(shù)據(jù),最低2位二進(jìn)制有效數(shù)字具有不確定性。以下為AVR單片機(jī)定時(shí)器對(duì)外部RC電路進(jìn)行3次充電和2次放電所花時(shí)間的量化值:

1597 1588 1584 1588 1588
1589 1588 1589 1584 1589
1589 1589 1589 1584 1589
1584 1588 1588 1588 1588
1588 1588 1589 1589 1587
1596 1588 1588 1589 1589
1589 1588 1588 1588 1589
1588 1584 1589 1589 1589
1589 1589 1588 1588 1588
1588 1589 1588 1588 1588
1588 1584 1589 1588 1588
1588 1589 1589 1588 1589
1589 1589 1588 1588 1588
1588 1588 1589 1588 1590
1588 1589 1588 1588 1588
1597 1589 1588 1597 1587
1588 1588 1587 1588 1588
1588 1588 1588 1588 1588
1589 1589 1589 1588 1589
1588 1588 1589 1588 1588
1588 1588 1588 1588 1588
1588 1588 1589 1588 1589
1596 1589 1588 1589 1588
1588 1588 1588 1589 1584
1589 1589 1589 1588 1585
1589 1588 1588 1588 1589
1589 1588 1589 1588 1588
1589 1589 1589 1588 1597
1589 1588 1589 1589

1.2.3 程序設(shè)計(jì)

由以上數(shù)據(jù)統(tǒng)計(jì)特征可見,每次測量結(jié)果僅有兩位不確定二進(jìn)制數(shù)據(jù)。為了產(chǎn)生1個(gè)8位數(shù)據(jù),設(shè)計(jì)了C語言程序控制專用函數(shù)測量4次,每次得到了2個(gè)二進(jìn)制隨機(jī)數(shù),這樣調(diào)用該函數(shù)1次即可得到1字節(jié)的隨機(jī)數(shù)。

主要程序如下:


2 實(shí)驗(yàn)結(jié)果和分析

經(jīng)實(shí)驗(yàn),得到兩位不確定二進(jìn)制數(shù)的概率分布。

5 min后數(shù)據(jù)分布:P(00)=16%,P(01)=19%,P(10)=37%,P(11)=28%。
10 min后的數(shù)據(jù)分布:P(00)=16%,P(01)=21%,P(10)=38%,P(11)=25%。
22 min后的數(shù)據(jù)分布:P(00)=14%,P(01)=23%,P(10)=38%,P(11)=25%。
37 min后的數(shù)據(jù)分布:P(00)=16%,P(01)=26%,P(10)=36%,P(11)=22%。
以上數(shù)據(jù)由單片機(jī)統(tǒng)計(jì)后經(jīng)串口直接輸出到超級(jí)終端的顯示參數(shù)。
25℃下產(chǎn)生的3 500個(gè)8位數(shù)據(jù)的分布如圖3所示。

從圖中可以看出,有4個(gè)區(qū)間分布概率較大,分別是[0,32]、[40,90]、[160,225]、[230,255]。產(chǎn)生這樣的分布和具體使用的元器件特性以及測試現(xiàn)場的環(huán)境有關(guān)。在采集得到大量的序列后,通過計(jì)算機(jī)分析沒有發(fā)現(xiàn)有周期重復(fù)性。


3 提高性能的措施

在實(shí)際應(yīng)用中,若采用該方法產(chǎn)生的隨機(jī)數(shù)進(jìn)行數(shù)據(jù)加密時(shí),為防止解密者拆除、短接RC電路或更改RC電路參數(shù),可利用測得的充放電時(shí)間來確定外部RC電路的存在和參數(shù)的穩(wěn)健。如若充放電時(shí)間不在程序預(yù)先設(shè)定的區(qū)間內(nèi),單片機(jī)立即銷毀相關(guān)數(shù)據(jù)并停止程序運(yùn)行,從而達(dá)到加密的效果。

提高隨機(jī)數(shù)產(chǎn)生速率。采用本文的方法產(chǎn)生的隨機(jī)數(shù)的速率和RC充放電時(shí)間有關(guān)系,由于RC充放電速率影響,在產(chǎn)生高速率隨機(jī)數(shù)的時(shí)候不合適。針對(duì)該問題,可將得到的真隨機(jī)數(shù)作為種子來產(chǎn)生一定數(shù)量的偽隨機(jī)數(shù),這樣可大大提高產(chǎn)生隨機(jī)數(shù)的速率。

結(jié) 語

設(shè)計(jì)和實(shí)現(xiàn)了一種基于AVR單片機(jī)的真隨機(jī)數(shù)發(fā)生器,利用RC充放電電路的不穩(wěn)定性完成了真隨機(jī)數(shù)的產(chǎn)生。該隨機(jī)數(shù)發(fā)生器利用AVR單片機(jī)少量硬件資源完成,具有設(shè)計(jì)簡單,成本低廉的優(yōu)點(diǎn)。最后提出了軟硬件結(jié)合的方式,提高了該隨機(jī)數(shù)發(fā)生器的性能,拓展了該真隨機(jī)數(shù)發(fā)生器的應(yīng)用范圍。



評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉