历史上的今天
返回首页

历史上的今天

今天是:2024年12月20日(星期五)

正在发生

2019年12月20日 | 基于AVR单片机的低成本真随机数发生器设计

2019-12-20 来源:elecfans

引 言

随机数已广泛地应用于仿真、抽样、数值分析、计算机程序设计、决策、美学和娱乐之中。常见的随机数发生器有两种:使用数学算法的伪随机数发生器和以物理随机量作为发生源的真随机数发生器。要获取真正随机的真随机数,常使用硬件随机数发生器的方法来获取。这些真随机数都是使基于特定的真随机数发生源(如热噪声、电流噪声等),每次获取的真随机数都是不可测的,具有很好的随机性。


真随机数因其随机性强,在数据加密、信息辅助、智能决策和初始化向量方面有着广泛应用,构建一种基于硬件真随机数发生源,具有广泛的应用价值。但目前硬件真随机数发生源均较复杂,而且很少有基于单片机的真随机数发生器。本文利用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位的真随机数。

基于AVR单片机的低成本真随机数发生器设计

1.2 方 法

1.2.1 RC电路充放电过程

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

基于AVR单片机的低成本真随机数发生器设计

1.2.2 AVR单片机获得不确定的2位二进制数据

AVR单片机主时钟采用普通晶体振荡器。用该主时钟来测量RC电路的充放时间,用AVR单片机的定时器(1个16位定时器)来量化充放电时间。由于主时钟的周期远远小于RC充放电时间,观察实验数据,最低2位二进制有效数字具有不确定性。以下为AVR单片机定时器对外部RC电路进行3次充电和2次放电所花时间的量化值:

基于AVR单片机的低成本真随机数发生器设计

1.2.3 程序设计

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

主要程序如下:

基于AVR单片机的低成本真随机数发生器设计

基于AVR单片机的低成本真随机数发生器设计

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所示。

基于AVR单片机的低成本真随机数发生器设计

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

3 提高性能的措施

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


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

结 语

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

推荐阅读

史海拾趣

EM Microelectronic-Marin SA公司的发展小趣事

EM Microelectronic-Marin SA,作为斯沃琪集团公司(The Swatch Group)的一部分,自1971年起便开始了对超低功率集成电路的探索。在当时,电子设备的功耗是一个重要的挑战,尤其是在移动和便携式设备中。EM Microelectronic-Marin凭借其前瞻性的技术视野,投入大量资源进行研发,逐渐在行业内建立了低功耗技术的领先地位。

GSN Electronics公司的发展小趣事

1995年,Philips Semiconductors收购了Mikron Graz,这一事件标志着EM Microelectronic-Marin与Philips在半导体领域的深度合作。此后,两家公司共同推动了RFID(射频识别)技术的发展,使其逐渐成为电子行业中不可或缺的一部分。EM Microelectronic-Marin凭借其在低功耗技术方面的优势,为RFID技术提供了强有力的支持。

Excel-Display Corporation公司的发展小趣事

随着全球环保意识的提高,EDC也积极响应号召,致力于绿色环保和可持续发展。公司投入大量资金研发节能、环保的显示器产品,并不断优化生产工艺以减少对环境的影响。

同时,EDC还积极参与各种环保公益活动,推动行业的绿色发展。这些举措不仅提升了公司的社会形象,也为公司的可持续发展奠定了坚实的基础。

浙江东亚电子(DongYa)公司的发展小趣事

浙江东亚电子不仅在国内市场上取得了显著成绩,还积极开拓国际市场。公司已为多家世界五百强企业、上市公司提供服务,如华为、中兴、通用电气及西门子等。通过与这些国际知名企业的合作,公司不仅提升了自身品牌的影响力,还积累了丰富的国际市场经验。

DUBILIER公司的发展小趣事

作为一家领先的电子企业,DUBILIER公司深知其对社会和环境的影响。因此,公司积极履行社会责任,致力于推动可持续发展。公司采取了一系列环保措施,减少生产过程中的废弃物和污染物排放。同时,DUBILIER公司还积极参与公益事业,为社会做出积极贡献。这些努力不仅提升了公司的社会形象,还为公司赢得了更多的尊重和信任。

驰兴电感(Coilank)公司的发展小趣事

驰兴电感深知客户是企业发展的根基。公司始终坚持以客户为中心的服务理念,为客户提供全方位、个性化的服务。无论是产品选型、技术支持还是售后服务,驰兴电感都能及时响应客户需求,提供满意的解决方案。这种贴心的服务赢得了客户的信赖和支持,也为公司的持续发展奠定了坚实基础。

问答坊 | AI 解惑

ISE中V4器件太少,是啥原因?

ISE是10.1版本的,器件中Virtex4中只有XC4VLX15、XC4VLX25、XC4VSX25、XC4VFX12这几个器件,缺少很多其它的,不知道是怎么回事…

查看全部问答>

凌阳成都,,有没有在里面研发的?

说下里面的情况,我明天要去面嵌入式的…

查看全部问答>

程序的加载地址在NAND FLASH中,可以用J-LINK直接调试吗?

刚开始学习ARM,正在跑裸板程序,开发环境是ECLIPSE+j-link_GDB_SERVER。 在调试代码转移的时候,怎么都调试不了. 刚开始的点灯程序是可以调试的,一切都正常。这些代码直接放在2440的SRAM中了。 当我要调试把NAND FLASH中的代码转移到SDRAM中的 ...…

查看全部问答>

rtx51-tiny中os_wait函数的用法 高手进来帮忙啊!!!急急急急

在RTXTINY系统中,os_wait函数的应该怎么用啊,我看了好多教材都写千篇一律,没有一个能把这个问题说清楚的。。 书上说怎么说的: char os_wait(              uchar event_sel,     &n ...…

查看全部问答>

大电阻的测量2—低功率纳米技术[1]及其它敏感器件的交流与直流测量方法的比较

  相比之下,纳伏表[2]具有1000倍高的输入阻抗(也就是10GΩ),因此它可以以±1%精度来测量高于1GΩ的电阻。(消除10GΩ的负载影响只需将输入阻抗精确到±10%,以开路作为测试对象,通过直流反转测量的方法即可得到。)此外,一些电流源提 ...…

查看全部问答>

移动电源 充电管理 混合充电 智能电压、电量、温度显示:LCD

用于移动电源:               可用于便携式数码产品移动电源,也 可以充单节、多节锂电用于对笔记本充电(移动电源)!具体充电、放电参数可根据客户要求设定! 用于充电 ...…

查看全部问答>

求教Altium Designer 10 进行pcb 4层板技巧

刚用Altium Designer 10 进行pcb 4层板设计,以前没做过4层板的。板子比较复杂,要做一个6410核心板的母版。 论坛有做过4层板的朋友给点布线技巧吧。…

查看全部问答>

TMS320DM8168下GDB调试环境的搭建 (GDB的安装与配置与调试)

TMS320DM8168下GDB调试环境的搭建(GDB的安装与配置与调试) 先编译gdb所依赖的 libtermcap  (可以在CSDN上面下载到)[root@localhost termcap-1.3.1]$ ./configure --prefix=/home/gdb/termcap_src/termcap --exec-prefix=/home/gdb/ter ...…

查看全部问答>

【Nucleo心得】+mbed显示图片

上一贴点亮了显示屏,觉得不错,那就显示一下买屏时带的图片吧。 这个屏的位置得注意,我用uchar不行的。刚开始调时我还以为卖我屏的那个卖家程序有毛病了呢。 查半天才看到是自己的有病,改成uint就OK啦! 上程序: include \"mbed.h\" SPI ...…

查看全部问答>