一位硬件随机数发生器的设计与仿真

2017-03-27 12:20周新淳
电子设计工程 2017年6期
关键词:数码管计数器按键

周新淳

(宝鸡文理学院 陕西 宝鸡 721016)

一位硬件随机数发生器的设计与仿真

周新淳

(宝鸡文理学院 陕西 宝鸡 721016)

文中设计了一种随机数发生电路,可以生成一位十进制随机数,电路分为开关电路、脉冲产生电路、计数电路和显示电路,采用常用芯片设计,产品方便可靠,成本低廉。并利用仿真软件进行数据统计,仿真结果表明该电路可以有效实现随机产生数码0到9的功能。

随机数;硬件电路;Multisim;仿真

现代生活对随机数的依赖越来越多,比如彩票摇号,车牌摇号,抽取幸运观众等等。很多地方要求有使用方便、安全快捷的随机数产生方法。当前主流的随机数电路分为两种,软件型和硬件型。软件型的随机数产生电路方便快捷,但是安全性不高,而且必须借助电脑运行,在一些重要场合往往不方便使用,而且有安全漏洞。硬件随机数使用简单,做成成品后杜绝了被修改的可能性,安全性较高[1-2]。

文中设计了一种硬件随机数发生电路,使用按键控制,可以产生一位0~9或者1~9的随机数,如果需要多位随机数,可多次运行。并利用Multisim软件对其进行了仿真,结果显示该电路可以满足日常生活中对随机数电路的要求[3]。

1 系统结构

本设计主要利用了数据高频循环,低频采集的概念产生随机数。电路结构如图1所示。

图1 系统结构图

555定时器是一种模拟和数字功能相结合的中规模集成器件,使用555定时器可以很方便地构成单稳态触发器、施密特触发器和多谐振荡器[4],在各种电子制作领域都有很广泛的应用。本设计中利用555芯片构成多谐振荡器,产生高频脉冲,为了满足随机性和保密性,根据需要可将脉冲频率调至100 kHz以上。十进制计数器用于产生0~9或者1~9的数据,可在高频脉冲驱动下进行数据的高速循环计数[5]。开关J2用于产生寄存器电路的触发信号,当其接通有效时,可以将计数器中相对应的某一位数字送至显示电路进行显示并进行锁存。根据实际用途,开关J1作为数据范围切换按钮,可用于在0~9和1~9两种数据范围的切换。开关J3为电源开关,控制整个电路的电源。

1.1 高频脉冲电路设计

利用555芯片构建多谐振荡器电路,555芯片的电源范围很宽,可以达到5-12 V[6],在实际使用过程中,可是使用电池组供电,使用便捷。多谐振荡器电路如图2所示。

图2 多谐振荡器电路

此电路为555芯片的经典应用,可用来产生高频矩形脉冲信号,脉冲信号频率为式(1)所示,输出频率由电路中电阻以及电容决定[7]。在实际应用过程中,可以将电阻更换为电位器,从而可以改变频率,进一步增加随机性。

将高频脉冲信号送至计数器电路,作为计数器的时钟脉冲信号。

1.2 计数及寄存电路设计

计数电路应该让数据在0~9或1~9中间高速循环计数,所以应该采用十进制计数器[8]。本设计中采用十进制计数器74HC160完成,将555芯片产生的高频时钟脉冲接至计数器芯片的CLK端口,并将EP、ET端口接高电平,使计数芯片正常进行加法计数。这时,在CLK脉冲的作用下,74HC160工作在0~9循环计数的状态,计数频率为CLK脉冲的频率。另外,由于74HC160输出不具有锁存功能,所以直接显示结果的话,结果不能保存。为了达到按键后结果能稳定显示在LED数码管上,所以在74HC160的输出端口接一个4输入的D锁存器74LS175,此锁存器可以在CLK有效的瞬间将输入值无损传输至输出,并且在CLK有效信号消失后维持输出不变,从而将采集到的随机数稳定显示[9]。74LS175的CLK信号由弹簧开关J2产生,J2常接低电平,按下后接高电平,按下可以产生一个上升沿从而驱动锁存器工作。电路如图3所示。

图3 计数器电路和锁存器电路

1.3 数据范围切换开关设计

日常生活中,随机数的产生有0~9和1~9两种应用场景。74HC160的进位输出发生在当输出为1001(9)时,也就意味着要实现这两种区别,必须改变计数起点。为了满足这一要求,在计数器74HC160的数据输入端加入开关J1,如图4所示。并且将计数器设置为置数形式[10],具体为当计数值达到9时,进位输出端RCO自动输出高电平,通过反相器将置数允许信号送至置数端LOAD。74HC160具有异步复位和同步置数功能。此时,置数LOAD接收到有效信号,在下一个CLK脉冲驱动下,会将输入DCBA的当前值送至输出端QDQCQBQA,并从当前值开始计数。通过开关J1决定输入端A口接VCC还是接GND,从而决定计数起点是0000(0)还是0001(1)。

图4 范围切换开关

2 仿真结果分析

图5为整体电路仿真图,将开关J1至于接地状态,使起始值工作于0000状态,即随机数会在0~9中产生。接通电源J3使电路处于工作状态,每按一次J2按键,则可产生一位随机数。由于计数器的工作频率为100 kHz,而人工按键的速度远远低于这一频率。所以,保证了产生数字的不可预知性[11]。在实际使用中,可以将电路R6改装为电位器,在每次产生随机数前,都手动改变其电阻值,从而改变CLK的计数频率,从而进一步提高随机性。

图5 随机数产生电路仿真图

在Multisim软件中对随机数产生电路进行仿真,每按键100下作为一组数据,统计0-9各个数字出现的次数,连续测量10组数据,并对其进行平均。做出如图6所示随机结果柱状图。从结果来看,此电路可以有效的产生一位随机数,随机结果近似平均分布,可以满足日常使用对随机数的要求[12]。

图6 随机结果

3 功能扩展

有时候除了显示1位数字外,还需要循环显示多位数字[13]。如图7所示,是一种多位循环显示的改进电路。本设计以四位显示为例,仍以上述电路为主要结构。将锁存器74LS175的4位输出分别接至BCD码-七段码译码器4511,可以实现4位共阴数码管同时显示。为了达到逐位显示的目的,使用计数器和2-4译码器组成逐位片选系统。74HC160接受弹簧按键S1作为脉冲CLK信号,每按一下实现加1操作。输出接2-4译码器74HC139的输入端,每按键一次,74HC139的4位输出Y0Y1Y2Y3依次有效,Y0Y1Y2Y3分别接至4个数码译码器4511的BL端口,BL端口为输出消隐控制端,当其有效时该译码器所对应的数码管亮[14]。74HC139的输出在计数器CLK的驱动下为依次有效,从而实现,4位数码管依次亮。数码管的数据来自于前述电路的高频输出,所以每位数码管的显示都是不同的随机数字,随机性可以得到保证[15]。

4 结束语

文中设计的随机数电路,采用逻辑电路设计,常用芯片构建,硬件方式产生一位随机数,原理简单,易于实现,操作方便,可靠性强。结果随机性较强,可广泛应用于日常生活中多个领域[16-18]。

图7 功能扩展

[1]唐玲.基于Multisim的多用信号发生器仿真设计[J].智能计算机与应用,2014,12(6):95-97.

[2]周新淳.基于Multisim的拔河游戏机设计与仿真[J].电子设计工程,2015,23(315):34-36.

[3]阎石.数字电子技术基础[M].北京:高等教育出版社,2006.

[4]王毓银.数字电路逻辑设计[M].北京:高等教育出版社,2006.

[5]赵家松,黄荣华,严伟榆.基于Multisim 10的电子摇号器设计与仿真[J].电子设计工程,2011,7(13):124-125.

[6]罗映祥.基于Multisim 9的数字电子钟设计与仿真[J].现代电子技术,2010,33(9):184-186.

[7]李旎.基于Multisim 10的彩控变换电路的设计与仿真[J].现代电子技术,2013,36(22):124-126.

[8]陈齐平,张文俊,王钢林,等.基于Multisim的简易自动售货机控制系统设计与仿真[J].华东交通大学学报,2015,32(6):88-91.

[9]马路,石立国,王竹刚.基于均匀分布随机数的误码发生器设计[J].电子设计工程,2013,21(24):146-154.

[10]桂丹.Multisim仿真在电子技术应用中的探索[J].电子技术与软件工程,2015(3):83-85.

[11]孙立辉,权庭兰.基于Multisim的克拉泼电路设计[J].电子技术与软件工程,2013(22):123.

[12]高明伦.一种多位计数器的设计方法[J].电子测量与仪器学报,2007,21(6):79-81.

[13]左伟平,蒋丽英,肖姑冬.基于AT89S52单片机广告灯控制电路设计的教学 [J].中国西部科技,2011,10(26):80-82.

[14]李旭,张为公.基于科研项目的数字电路创新型实验教学改革[J].实验室研究与探索,2015(1):168-171.

[15]汤锴杰,栗灿,王迪,等.基于DS18B20的数字式温度采集报警系统设计 [J].传感器与微系统,2014,33(3):99-102.

[16]纪明霞,黄聚义,李滨辉.基于Multisum计数器的设计与仿真[J].国外电子测量技术,2013,32(10)15-18.

[17]程建峰.基于Multisim的多功能8路抢答器的设计与仿真[J].工业仪表与自动化装置,2015(1):31-34.

[18]程建峰.基于Multisim直流稳压电源的仿真分析[J].工业仪表与自动化装置,2015(4):65-67.

Simulation and design of a hardware random number generator

ZHOU Xin-chun
(Baoji University of Arts and Sciences,Baoji 721016,China)

This paper presents a random number generating circuit,It can generate a random decimal number.The circuit is composed of a switching circuit,a pulse generating circuit,a counting circuit and a display circuit.Use common chip design,The design has the characteristics of convenience,reliability and low cost.And using simulation software for data statistics.The computer simulation results show that the design implements generator of random number from 0 to 9.

random number;hardware circuit;Multisim;simulation

TN709

:A

:1674-6236(2017)06-0019-04

2016-03-21稿件编号:201603276

宝鸡市科技局农业攻关项目(14NYGG-5-7);宝鸡文理学院院级重点项目(ZK11145)

周新淳(1983—),男,陕西宝鸡人,硕士,讲师。研究方向:信号与信息处理、电路与系统。

猜你喜欢
数码管计数器按键
采用虚拟计数器的电子式膜式燃气表
基于有限状态机的按键检测程序设计
微课教学设计之“数码管动态显示”
Arduino编程
MC9S08FL16单片机数码管静态显示分析
单片机控制的四位数码管动态显示编程
一种多方向导光按键结构设计
计数器竞争冒险及其处理的仿真分析
任意N进制计数器的设计方法
基于单片机的仰卧起坐计数器