通过四个异步振荡器的真实随机数生成器骰子设计

描述

该项目描述了如何设计一个7段1位LED显示屏的从1到6的真正随机数发生器。

硬件部件

Dialog Semiconductor GreenPAK高级开发板SLG4DVKADV×    1个    

Dialog Semiconductor SLG46826×    1个

该项目描述了如何设计Digital Dice,这是一个从1到6的真实随机数生成器。可以使用此设备代替常用的骰子。它具有一个1位数的7段LED显示屏和两个按钮:“运行”和“显示上一个”。数码骰子可以由单个CR2032电池供电。它没有开机开关,因为闲置时的功耗极低。

led

图1:数字骰子示意图

下面我们描述了了解解决方案如何设计数字骰子所需的步骤。但是,如果您只想获取编程结果,请下载GreenPAK软件以查看已完成的GreenPAK设计文件。将GreenPAK开发套件插入计算机,然后点击程序来设计解决方案。

设备架构

led

图2:GreenPAK6 Designer项目

该设计包含以下块:

熵产生器

熵发生器由四个异步振荡器组成。其中两个是使用具有延迟(1 MHz和6.5 MHz)的反向闭环LUT构建的。另外两个是GreenPAK的OSC1(2.048 MHz,除以3)和OSC2(25 MHz,除以2)。

向XNOR门输入一些异步时钟信号足以在其输出上获得不可预测的信号(噪声或熵)。但是SLG46826V中的宏单元可以使解决方案更加复杂。再使用一个振荡器和DFF,我们得到一个完全随机的信号。

led

图3:熵产生器

线性反馈移位寄存器

3位LFSR使用三个DFF和一个XNOR门构建。每个输入时钟的该块都会生成一个3位的伪随机数。此处,噪声信号代替时钟脉冲进入LFSR的输入,从而生成一个真正的随机3位数字。

led

图4:LFSR

二进制至7段解码器

为了转换由LSFR生成的3位随机数,使用了二进制至7段解码器,请参见图3。解码器由3位LUT构建。

led

图5:二进制到7段解码器

控制单元

控制单元是设备的一部分,旨在在3秒钟后启动并停止。两个引脚被配置为输入,并且两个按钮必须从VDD连接到这些引脚。按下“运行”按钮时,设备将连续生成随机数。释放按钮后,立即停止生成,LFSR锁存其输出。解码器随后驱动7段显示器。3秒钟后,数字骰子将进入空闲状态。该设备仍处于开机状态,但是由于所有振荡均已关闭,因此电流消耗极低。这使设备可以“记住”最后生成的随机数。如果按下“显示上一个”按钮,将显示最后生成的随机数,直到释放该按钮。因为数字骰子旨在替代普通骰子,所以当出现“ 0”或“ 7”时,将使用3位LUT12重新启动它。这样可以确保设备生成1到6之间的随机数。

led

图6:控制单元

宏单元设置

对于每个宏单元,设置请参考下表。

led

表1. LUT设置

led

表2:DFF设置

led

表3:CNT / DLY设置

led

表6:OSC设置

led

表7:PIN设置

结论

数字骰子可以替代赌场中的普通骰子,也可以在需要骰子的任何其他游戏中使用。它具有一个熵生成器,该熵生成器在按下“运行”按钮时会不断生成3位随机数。它仅在释放按钮时停止并显示结果,因此人为因素也会影响所生成的随机数。四个异步振荡器以及人为按下按钮的可变性使该设备完全不可预期地不可预测
编辑:hfy

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分