ATmega1 28单片机的真随机数发生矗

发布者:科技创新实践者最新更新时间:2011-12-05 关键字: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位的真随机数。

[page]

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字节的随机数。
    主要程序如下:

[page]


 
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  随机数 引用地址:ATmega1 28单片机的真随机数发生矗

上一篇:基于ATmega16L单片机的温度控制系统设计
下一篇:基于AVR单片机的USB 0TG主从机系统设计

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

基于AVR和51单片机的机器鱼语音控制系统设计与实现
近年来,海洋资源开发日趋焦点,机器鱼作为一项现代化的新成果,具有广泛的现实意义,它可以更逼真的模拟鱼的游动原理,在水下的运动更符合流体力学原理,具有更好的加速和转向能力,利用它可以探测海洋资源,寻找和检测海域中受污染的地方,也可以用来勘探地形等等。随着科技的发展,人类对智能化产品的研究步伐在不断加快。但是,作为一项比较新的产品,机器鱼的智能化程度还远远不够,伴随着研究的加深,机器鱼的功能也会更趋完善。语音识别作为一门交叉学科,它的出现实现了长期以来人们渴望与机器交流的梦想。语音识别技术就是让机器通过识别和理解过程把语音信号转变为相应的文本或命令的高技术。近年来,语音识别技术发展迅速,取得显著进步,并且已经开始被应用于通信、家庭服
[单片机]
基于AVR和51单片机的机器鱼语音控制系统设计与实现
C51学习心得体会,产生随机数
(1)rand()函数产生一个0到RAND_MAX之间的整数,产生的是伪随机数,RAND_MAX =32767, i=rand(); i=1+rand()%data//产生1—data之间的随机数 (2)srand()函数产生不同的随机数序列,unsigned类型整数作为参数为函数rand设置随机数种子,种子不同,rand()函数得到随机数就不同。 srand(unsigned int i); e.g. #include stdlib.h #include stdio.h main() { int i; unsinged seed; printf( Enter seed: ); s CAN f(seed);//键盘输入种子
[单片机]
基于ATMEGA128单片机的自动准同期装置设计
前言 自动准同期装置在电力系统并网中有着十分重要的作用。本文采用ATMEGA128单片机为处理器,开发一种主要用于机组同期操作的自动准同期装置,该装置能自动检测系统侧和对象侧的压差、频差和相差,进行同期操作。如果采用一个同期点配备一个装置的方式,则能大大提高整个系统的同期可靠性。 1 系统的总体设计和硬件框图 作为准同期装置,首先必须要准确地测量系统侧和待并侧的同期参数。也就是精确测量两侧的电压、频率,以及相位差。在这个基础上,装置要进行准确的同期动作以及和上位机的通信。因此,系统的硬件设计和软件流程围绕这三个方面展开。为了减少干扰和便于操作,硬件分为CPU板、信号板和显示按键板。下面的硬件框图清楚地表示了三者之间的连接关系
[单片机]
基于<font color='red'>ATMEGA128</font>单片机的自动准同期装置设计
ATmega128在开发应用中应注意的问题
  ATmega128是AVR系列中功能最强的单片机,具有如下主要特点:   (1)先进的RISC精简指令集结构:ATmega128具有133条功能强大的指令,大部分指令在单时钟周期内执行;有32b×8个通用工作寄存器;片内带有执行时间为2个时钟周期的硬件乘法器。   (2)非易失性程序和数据存储器:ATmega128具有128KB在线可重复编程Flash、4KB的E2PROM以及4KB内部SRAM。在其BOOT区具有独立的加密位,可通过片内的引导程序实现在系统编程,写操作时真正可读。   (3)具有JTAG接口:通过JTAG接口对Flash、E2PROM熔丝位和加密位编程。   (4)增强的硬件功能:ATmega128具有
[单片机]
<font color='red'>ATmega128</font>在开发应用中应注意的问题
基于ATmega128和μC/OS-II的在线钠离子分析仪的设计
1 引言 水和蒸汽是热力系统中的锅炉、汽轮机、过热器等设备的重要工作介质。当火力发电厂正常运行时,热力设备中都有水或蒸汽在流动。水、汽的品质都有规定的指标,一旦水、汽品质的指标超标,就会加速热力设备的腐蚀、结垢和积盐。当水汽中携带一些含钠的杂质时,将会导致汽轮机金属材料的点蚀、应力腐蚀或腐蚀疲劳,这些腐蚀通常会造成重大的经济损失。严重时甚至造成重大事故。钠离子含量是发电厂水汽品质的重要指标之一。因此,为防止结垢、结盐,减缓系统中金属部件的腐蚀。保证系统的安全经济运行,必须对电厂水汽系统中钠离子含量进行严格监测和控制。 2 测量原理 钠离子的测量是基于电化学中的电位分析法,由测量电极和参比电极及待测溶液构成原电池。测量电极是
[测试测量]
基于<font color='red'>ATmega128</font>和μC/OS-II的在线钠离子分析仪的设计
一文详解ATMEGA128熔丝位配置
AVR系列单片机在仿真调试之前,首先必须对AVR的熔丝位和锁定位进行配置。如果配置不当,则可能造成单片机不能正常工作,严重时可能导致单片机死锁。因此,对单片机熔丝位和锁定位的正确配置显得尤为重要。 熔丝位是对单片机具体功能和工作模式的限定,其正确配置与否直接影响到单片机能否正常工作;锁定位是对单片机的程序和数据进行加密,以防止单片机中的程序和数据被读出或写入。在进行配置时,一般先配置熔丝位,再配置锁定位。锁定位又分为引导程序区锁定位和程序及数据存储器锁定位两类。对引导程序区锁定位进行编程可以实现两套保护模式,即应用区保护模式和Boot Loader区保护模式;不同的编程配置可以实现不同的加密级别。对程序及数据存储器锁定位进行编
[单片机]
一文详解<font color='red'>ATMEGA128</font>熔丝位配置
ATmega128 定时器/计时器振荡器
对于拥有定时器/ 振荡器引脚(TOSC1 和TOSC2) 的AVR 微处理器,晶体可以直接与这 两个引脚连接,无需外部电容。此振荡器针对32.768 kHz 的钟表晶体作了优化。不建议 在TOSC1 引脚输入振荡信号。
[单片机]
STM32F4学习笔记12——RNG随机数发生器
RNG主要特性 RNG 处理器是一个以连续模拟噪声为基础的随机数发生器,在主机读数时提供一个 32 位的 随机数。 RNG的主要特性 ● 提供由模拟量发生器产生的 32 位随机数 ● 两个连续随机数的间隔为 40 个 PLL48CLK 时钟信号周期 ● 通过监视 RNG 熵来标识异常行为(产生稳定值,或产生稳定的值序列) ● 可被禁止以降低功耗 RNG功能描述 随机数发生器采用模拟电路实现。此电路产生馈入线性反馈移位寄存器 (RNG_LFSR) 的种子, 用于生成 32 位随机数。 该模拟电路由几个环形振荡器组成,振荡器的输出进行异或运算以产生种子。RNG_LFSR 由 专用时钟 (PLL48CLK) 按恒定频率提
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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