ATmega1 28單片機的真隨機數發(fā)生矗
引 言
隨機數已廣泛地應用于仿真、抽樣、數值分析、計算機程序設計、決策、美學(xué)和娛樂(lè )之中。常見(jiàn)的隨機數發(fā)生器有兩種:使用數學(xué)算法的偽隨機數發(fā)生器和以物理隨機量作為發(fā)生源的真隨機數發(fā)生器。要獲取真正隨機的真隨機數,常使用硬件隨機數發(fā)生器的方法來(lái)獲取。這些真隨機數都是使基于特定的真隨機數發(fā)生源(如熱噪聲、電流噪聲等),每次獲取的真隨機數都是不可測的,具有很好的隨機性。
真隨機數因其隨機性強,在數據加密、信息輔助、智能決策和初始化向量方面有著(zhù)廣泛應用,構建一種基于硬件真隨機數發(fā)生源,具有廣泛的應用價(jià)值。但目前硬件真隨機數發(fā)生源均較復雜,而且很少有基于單片機的真隨機數發(fā)生器。本文利用RC充放電的低穩定度,根據AVR單片機的特點(diǎn)設計了一種性?xún)r(jià)比極高的真隨機數發(fā)生器。該隨機數發(fā)生器使用元件很少,穩定性高,對一些價(jià)格敏感的特殊場(chǎng)合,如金融、通信、娛樂(lè )設備等有較大的應用意義。
1 基本原理和方法
1.1 基本原理
串聯(lián)的RC充放電電路由于受到漏電流、電阻熱噪聲、電阻過(guò)剩噪聲、電容極化噪聲等諸多不確定性因素的影響,其充放電穩定度一般只能達到10-3。利用這種RC充放電的低穩定度特性實(shí)現廉價(jià)的真隨機數發(fā)生源。
Atmel公司AVR單片機ATmega 128以其速度快、功能強、性?xún)r(jià)比高等優(yōu)點(diǎn)廣泛應用于各種嵌入式計算場(chǎng)合。利用AVR單片機引腳配置靈活多樣的特點(diǎn),使用Amnega128兩個(gè)I/O口作為真隨機數的電氣接口。
其原理如圖1所示。主要原理是利用串聯(lián)RC電路的不確定性產(chǎn)生真隨機數源,收集數據,通過(guò)AVR單片機ATmega128和主時(shí)鐘電路量化RC電路的充放電時(shí)問(wèn),獲得不確定的2位二進(jìn)制數據,再利用程序將每4次采集的數據綜合,最后產(chǎn)生1個(gè)8位的真隨機數。
評論