- 12
- 0
- 约4.09千字
- 约 6页
- 2018-03-08 发布于河南
- 举报
ATmega128单片机的真随机数发生器
Generated by Foxit PDF Creator © Foxit Software
For evaluation only.
ATmega128 单片机的真随机数发生器
2009-12-16 16:47:48 作者:刘晓旭 曹林 董秀成 来源:单片机与嵌入式系统
关键字:真随机数 ATmega128 发生器
引 言
随机数已广泛地应用于仿真、抽样、数值分析、计算机程序设计、决策、美学和娱乐之中。常见的随机数发生器有两种:使
用数学算法的伪随机数发生器和以物理随机量作为发生源的真随机数发生器。要获取真正随机的真随机数,常使用硬件随机数
发生器的方法来获取。这些真随机数都是使基于特定的真随机数发生源(如热噪声、电流噪声等) ,每次获取的真随机数都是不可
测的,具有很好的随机性。
真随机数因其随机性强,在数据加密、信息辅助、智能决策和初始化向量方面有着广泛应用,构建一种基于硬件真随机数发
生源,具有广泛的应用价值。但目前硬件真随机数发生源均较复杂,而且很少有基于单片机的真随机数发生器。本文利用RC
充放电的低稳定度,根据AVR 单片机的特点设计了一种性价比极高的真随机数发生器。该随机数发生器使用元件很少,稳定性
高,对一些价格敏感的特殊场合,如金融、通信、娱乐设备等有较大的应用意义。
1 基本原理和方法
1.1 基本原理
串联的RC 充放电电路由于受到漏电流、电阻热噪声、电阻过剩噪声、电容极化噪声等诸多不确定性因素的影响,其充放电
稳定度一般只能达到10-3 。利用这种RC 充放电的低稳定度特性实现廉价的真随机数发生源。
Atmel 公司AVR 单片机ATmega 128 以其速度快、功能强、性价比高等优点广泛应用于各种嵌入式计算场合。利用AVR 单
片机引脚配置灵活多样的特点,使用Amnega128 两个I /O 口作为真随机数的电气接口。
其原理如图1 所示。主要原理是利用串联RC 电路的不确定性产生真随机数源,收集数据,通过AVR 单片机ATmega128 和
主时钟电路量化RC 电路的充放电时问,获得不确定的2 位二进制数据,再利用程序将每4 次采集的数据综合,最后产生1 个8
位的真随机数。
Generated by Foxit PDF Creator © Foxit Software
For evaluation only.
1.2 方 法
1.2 .1 RC 电路充放电过程
I/O 口配置策略为:PG3 口(第 18 脚)作为充电输出口,PG4 口(第 19 脚)作为检测输入口。当PG3 输出为高时,输出电流通
过电阻对电容进行充电;当PG3 输出为低时,电容通过电阻放电。PG4 用于检测电容上的电平状态。充放电过程如图2 所示。
Generated by Foxit PDF Creator © Foxit Software
For evaluation only.
1.2 .2 AVR 单片机获得不确定的2 位二进制数据
AVR 单片机主时钟采用普通晶体振荡器。用该主时钟来测量RC 电路的充放时间,用AVR 单片机的定时器(1 个 16 位定时器)
来量化充放电时间。由于主时钟的周期远远小于RC 充放电时间,观察实验数据,最低2 位二进制有效数字具有不确定性。以下
为AVR 单片机定时器对外部RC 电路进行3 次充电和2 次放电所花时间的量化值:
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 1
原创力文档

文档评论(0)