新聞中心

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

ATmega1 28單片機(jī)的真隨機(jī)數(shù)發(fā)生矗

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

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

1.2.2 AVR獲得不確定的2位二進(jìn)制數(shù)據(jù)
AVR主時(shí)鐘采用普通晶體振蕩器。用該主時(shí)鐘來測量RC電路的充放時(shí)間,用AVR的定時(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í)器對外部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)制數(shù),這樣調(diào)用該函數(shù)1次即可得到1字節(jié)的數(shù)。
主要程序如下:



評論


相關(guān)推薦

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

關(guān)閉