ATmega128单片机的真随机数发生器

发布者:sunyouz1最新更新时间:2009-12-16 来源: 单片机与嵌入式系统关键字:真随机数  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位的真随机数。

1.2 方 法

1.2.1 RC电路充放电过程

    I/O口配置策略为:PG3 口(第18脚)作为充电输出口,PG4 口(第19脚)作为检测输入口。当PG3输出为高时,输出电流通过电阻对电容进行充电;当PG3输出为低时,电容通过电阻放电。PG4用于检测电容上的电平状态。充放电过程如图2所示。

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 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 程序设计

    由以上数据统计特征可见,每次测量结果仅有两位不确定二进制数据。为了产生1个8位数据,设计了C语言程序控制专用函数测量4次,每次得到了2个二进制随机数,这样调用该函数1次即可得到1字节的随机数。

    主要程序如下:


2 实验结果和分析

    经实验,得到两位不确定二进制数的概率分布。

    5 min后数据分布:P(00)=16%,P(01)=19%,P(10)=37%,P(11)=28%。
    10 min后的数据分布:P(00)=16%,P(01)=21%,P(10)=38%,P(11)=25%。
    22 min后的数据分布:P(00)=14%,P(01)=23%,P(10)=38%,P(11)=25%。
    37 min后的数据分布:P(00)=16%,P(01)=26%,P(10)=36%,P(11)=22%。
    以上数据由单片机统计后经串口直接输出到超级终端的显示参数。
    25℃下产生的3 500个8位数据的分布如图3所示。

    从图中可以看出,有4个区间分布概率较大,分别是[0,32]、[40,90]、[160,225]、[230,255]。产生这样的分布和具体使用的元器件特性以及测试现场的环境有关。在采集得到大量的序列后,通过计算机分析没有发现有周期重复性。


3 提高性能的措施

    在实际应用中,若采用该方法产生的随机数进行数据加密时,为防止解密者拆除、短接RC电路或更改RC电路参数,可利用测得的充放电时间来确定外部RC电路的存在和参数的稳健。如若充放电时间不在程序预先设定的区间内,单片机立即销毁相关数据并停止程序运行,从而达到加密的效果。

    提高随机数产生速率。采用本文的方法产生的随机数的速率和RC充放电时间有关系,由于RC充放电速率影响,在产生高速率随机数的时候不合适。针对该问题,可将得到的真随机数作为种子来产生一定数量的伪随机数,这样可大大提高产生随机数的速率。

结 语

    设计和实现了一种基于AVR单片机的真随机数发生器,利用RC充放电电路的不稳定性完成了真随机数的产生。该随机数发生器利用AVR单片机少量硬件资源完成,具有设计简单,成本低廉的优点。最后提出了软硬件结合的方式,提高了该随机数发生器的性能,拓展了该真随机数发生器的应用范围。

关键字:真随机数  ATmega128  发生器 引用地址:ATmega128单片机的真随机数发生器

上一篇:基于AVR单片机的新型防汽车追尾安全装置设计
下一篇:爱特梅尔与H&D Wireless携手提供Wi-Fi解决方案

推荐阅读最新更新时间:2024-03-16 12:27

稳定的宽频方波发生器
稳定的宽频方波发生器
[模拟电子]
稳定的宽频方波<font color='red'>发生器</font>
基于DSP与AD9852的任意信号发生器的设计
直接数字式频率合成(DDS)技术是继直接频率合成和间接频率合成之后,随着数字集成电路和微电子技术的发展而迅速发展起来的第三代频率合成技术。DDS技术具有相对带宽宽、频率转换时间短、频率分辨率高等优点,输出相位连续,频率、相位和幅度均可实现程控,常用于高精度频率合成和任意信号发生。本文在发动机电控单元(ECU)硬件在环仿真系统的设计中,使用TMS320 LF2407A控制2片AD9852产生2路同步的任意信号,仿真发动机工作时的真实信号。 1 AD9852和TMS320LF2407A简介 AD9852是美国ANALOG Devices公司生产的新型直接数字频率合成器,具有频率转化速度快、频谱纯度高、工作温度范围宽、集成度
[嵌入式]
ATmega128 外部时钟
为了从外部时钟源驱动芯片, XTAL1 必须如 Figure 21 所示的进行连接。同时,熔丝位 CKSEL必须编程为“0000”。若熔丝位CKOPT也被编程,用户就可以使用内部的XTAL1和 GND 之间的36 pF 电容。 选择了这个振荡器之后,启动时间由熔丝位SUT 确定,如Table 16 所示。 为了保证MCU 能够稳定工作,不能突然改变外部时钟源的振荡频率。工作频率突变超过 2% 将会产生异常现象。应该在MCU 保持复位状态时改变外部时钟的振荡频率。
[单片机]
<font color='red'>ATmega128</font> 外部时钟
是德/安捷伦E4428C信号发生器自检报错故障维修
一、仪器型号 是德/安捷伦E4428C信号发生器 故障现象 报错210.256.315.514;相噪差。 UNLEVEL报错 检测过程 根据客户描述故障,开始进行检测,拆机后发现仪器源模块损坏严重,所以造成输出异常故障。 维修过程 确认故障后,工程师更换源模块损坏组件,整机调整检测仪器。 五、维修结果 故障现象消失,仪器修复完成。 射频仪器使用注意事项: 1、对仪器的各项指标要清楚了解,使用时候要做到心中有数,规范操作,避免各种超过额定限制的输入输出操作。 2、注意输出阻抗的匹配,避免过载。 3、注意信号反灌:输出端不能输入信号。高频信号输出时,禁止输出端开路。 4、做好静电防护,防止静电损坏。
[测试测量]
是德/安捷伦E4428C信号<font color='red'>发生器</font>自检报错故障维修
基于DDS技术的任意波形发生器研究与设计
  1 DDS概述   1.1 DDS基本原理   直接数字合成技术(Direet Digital Synthesis,简称DDS)是建立在采样定理基础上,首先对需要产生的波形进行采样,将采样值数字化后存入存储器作为查找表,然后通过查表读取数据,再经D/A转换器转换为模拟量,将保存的波形重新合成出来。DDS基本原理框图如图1所示。      由图l看出,除了滤波器(LPF)之外,DDS系统都是以数字集成电路实现,因此DDS系统易于集成和小型化。DDS系统的参考时钟源通常是一个具有高稳定性的晶体振荡器,整个系统的各个组成部分提供同步时钟。频率字(FSW)实际上是相位增量值(二进制编码),作为相位累加器的累加值。相位累加器在每
[嵌入式]
基于DDS技术的任意波形<font color='red'>发生器</font>研究与设计
使用任意波形发生器预失真功能时有哪些细节需要注意?
内置预失真功能可以标度数据,确保您不会超过数模转换器的范围。该功能通常会放弃 2-3 dB 的范围。 这非常重要,因为任意波形发生器输出功率降低意味着 PSG 信号发生器的输出功率将随之降低。确保任意波形发生器使用模数转换器的整个范围能够保证 PSG 信号发生器 提供最低 0 dBm 的输出信号!也可以获得 5-10 dBm 的较高输出功率(取决于信号和射频频率)。
[测试测量]
用AVR(ATMEGA128的PWM相频可调)对360度舵机控制
/******************************舵机控制头文件***********************/ #ifndef __tuoji_H__ #define __tuoji_H__ extern uchar front; extern void motor_init(void);//初使化 extern void stop(void); //停车 extern void go(uchar speed); //小车前或者后,具体看标志位 extern void l_r_front(uchar p); //小车向前走时的转弯函数 extern void l_r_back(uchar p); //小车向后走
[单片机]
函数信号发生器的基本知识
  使用一个激发装置(即信号源)来激励一个系统,以便观察、分析它对激励信号的反映如何,这是电子测试技术的标准实验之一。在设计、制造飞机时,需要事先了解机体及其有关设备在各种气流、雷击、雨水、温变干扰下的反映情况;在发展冶炼技术时,需要了解炉内物态随炉脸温度燃油器喷口温度而变化的动态过程;在分析一个电子线路时,常常需要了解输出信号频率及振幅与输入信号频率及振幅之间的关系。这样,在进行上述过程的硬件或软件的模拟实验时.就需要人为地产生各种模仿的信号。系统在这些模仿的信号的激励下产生各种反应,因此,称它们为激励信号。产生这些信号的仪器设备称为信号源。   信号源包括函数信号发生器、脉冲信号发生器、音频信号发生器、任意波形信号发生器以
[测试测量]
函数信号<font color='red'>发生器</font>的基本知识
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved