CN115373633A - 一种真随机数生成器以及真随机数生成方法 - Google Patents
一种真随机数生成器以及真随机数生成方法 Download PDFInfo
- Publication number
- CN115373633A CN115373633A CN202211010926.XA CN202211010926A CN115373633A CN 115373633 A CN115373633 A CN 115373633A CN 202211010926 A CN202211010926 A CN 202211010926A CN 115373633 A CN115373633 A CN 115373633A
- Authority
- CN
- China
- Prior art keywords
- voltage
- controlled delay
- ring oscillator
- group
- random number
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/58—Random or pseudo-random number generators
- G06F7/588—Random number generators, i.e. based on natural stochastic processes
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Pulse Circuits (AREA)
Abstract
本发明涉及信息安全技术领域,本发明提供一种真随机数生成器以及真随机数生成方法,包括至少两组压控延时单元、至少一个环形振荡器、一组D触发器和译码器,其中,每一组压控延时单元中所包含的各个压控延时单元首尾相连,组内的各个压控延时单元共享一个参考电压。本发明利用环形振荡器做为熵源,通过使用一个环形振荡器即可完成随机数生成,降低了实际应用成本,同时,通过利用计算机系统时钟做为参考时钟RefCL输入,将系统时钟作为对比波形,还具有更低的硬件资源消耗与功耗,另外,使用本发明产生的随机数,随机数产生效率高,随机性好,还具有较高的吞吐率和较低的熵损。
Description
技术领域
本发明涉及信息安全技术领域,特别是涉及一种真随机数生成器以及真随机数生成方法。
背景技术
产生随机数有多种不同的方法,这些产生随机数的方法被统称为随机数生成器(Random Number Generator,RNG),随机数生成器一般用于生成随机数、密钥、Nonce等关键要素,是安全芯片、系统的重要组成部分,同时,随机数还被广泛用于机器学习、加密通信、博彩等领域。这些应用对随机数生成器所生成随机数的随机性、吞吐率等特性提出了较高的要求。随机数生成器的设计直接决定了安全系统的安全性。
随机数最重要的特性是它在产生时,后面的那个数与前面的那个数毫无关系,真正的随机数是使用物理现象产生的,例如,掷钱币、骰子、转轮、使用电子元件的噪音、核裂变等等,这样的随机数生成器通常称为真随机数生成器(True Random Number Generator,TRNG),它们的缺点是技术要求比较高;而在实际应用中通常使用伪随机数,伪随机数实际上是通过一个固定的、可以重复的计算方法产生的,可以用计算机大量生成计算出来的,在计算伪随机数时,若使用的初值(种子值)不变,那么伪随机数的数序也不变,伪随机数不是真正地随机,但也具有类似于随机数的统计特征,这样的随机数生成器通常称为伪随机数生成器(Pseudo Random Number Generator,PRNG)。
目前,随机数生成器的实现方式主要由以下几种:(1)将电磁噪声、电阻的热噪声等器件噪声直接放大,从而生成随机数;(2)基于反相器对等器件的亚稳态生成随机数;(3)基于环形振荡器(Ring Oscillator,RO)等器件的抖动生成随机数。其中,基于环形振荡器的抖动生成随机数的方案应用较为广泛,其优势在于,该结构具有较简单,且能够使用数字电路来实现,可以方便、灵活的在FPGA(Field Programmable Gate Array,现场可编程门阵列)和ASIC(Application Specific Integrated Circuit,专用集成电路)上实现,对不同的工艺都具有较好的适用性。如图1所示,是传统基于环形振荡器的真随机数生成器结构示意图,传统基于环形振荡器的真随机数生成器以混沌源做为熵源,通过一个慢速环形振荡器来采样快速环形振荡器来实现,该结构具体有如下要求:(1)只有在下侧的慢速环形振荡器的抖动周期大于上侧的环形振荡器的输出波形周期时,才能出现真随机数的输出;(2)同时,为了放大下侧环形振荡器的抖动,在后处理环节,需要在电路中增加放大器相关结构,因此,该结构熵损大、功耗大,面积也大。可以看出,传统基于环形振荡器的真随机数生成器,应用了两个环形振荡器,其相对成本也较高,另外,该结构随机数的输出速度决定于下侧慢速的环形振荡器,这也限制了随机数生成的吞吐率。
鉴于此,克服该现有技术所存在的缺陷是本技术领域亟待解决的问题。
发明内容
本发明首要解决的技术问题是:传统基于环形振荡器的真随机数生成器,其至少需要两个环形振荡器,需要相对较高的成本且功耗大的问题。
本发明进一步要解决的技术问题是:传统基于环形振荡器的真随机数生成器,其吞吐率低、熵损大,随机数产生效率降低的问题。
为了解决上述技术问题,本发明采用如下技术方案:
第一方面,本发明提供了一种真随机数生成器,包括至少两组压控延时单元、至少一个环形振荡器、一组D触发器和译码器,其中,每一组压控延时单元中所包含的各个压控延时单元首尾相连,组内的各个压控延时单元共享一个参考电压,包括:
第一组压控延时单元中的指定压控延时单元输出分别与配套数量的D触发器的输入端D耦合;
第二组压控延时单元中的指定压控延时单元输出分别与所述配套数量的D触发器的时钟端耦合;
所述配套数量的D触发器的输出端分别与所述译码器的输入端口相连,以便所述译码器输出相应码流;
其中,所述第一组压控延时单元中首个压控延时单元的输入源自第一环形振荡器的输出信号;所述第二组压控延时单元中首个压控延时单元的输入源自参考时钟RefCLK或者第二环形振荡器的输出信号。
优选的,第一组压控延时单元中包含的压控延时单元数量和所述D触发器数量相同,则所述第一组压控延时单元中的指定压控延时单元输出分别与配套数量的D触发器的输入端D耦合,具体包括:
第一环形振荡器的输出信号,经由首尾相连的各个压控延时单元,依次经过第一组压控延时单元中的各级压控延时单元;
其中,每经过一级压控延时单元的延时处理后的第一环形振荡器的输出信号同步输入至对应D触发器的D输入端。
优选的,第一组压控延时单元中包含的压控延时单元数量大于所述D触发器数量,则所述第一组压控延时单元中的指定压控延时单元输出分别与配套数量的D触发器的输入端D耦合,具体包括:
第一环形振荡器的输出信号,经由首尾相连的各个压控延时单元,依次经过第一组压控延时单元中的各级压控延时单元;
从所述第一组压控延时单元中选出位于指定级数的压控延时单元,将相应级数的压控延时单元各自延时输出的第一环形振荡器的输出信号同步输入至对应D触发器的D输入端。
优选的,环形振荡器中包括偶数个反相器和一个与非门组成,使能控制信号EN作为与非门的一个输入端口导入环形振荡器中,用于控制环形振荡器的工作状态。
优选的,所述第一环形振荡器和所述第二环形振荡器中的反相器数量相同或者相差预设数量。
优选的,所述第一环形振荡器的振荡频率频与所述参考时钟RefCLK的振荡频率频率除以同一数量级,并分别输入至所述第一组压控延时单元和所述第二组压控延时单元中。
第二方面,本发明提供了一种真随机数生成方法,包括:当第二组压控延时单元中首个压控延时单元的输入源自参考时钟RefCLK的输出信号时,具体的:
使能各个环形振荡器的EN,各个环形振荡器开始振荡;
参考时钟RefCLK被同步输入,调整输入给各组压控延时单元的参考电压,使得指定时间位置传输的环形振荡器的输出信号波形与RefCLK波形上升沿接近对齐。
优选的,所述指定时间位置的选择是译码电路的输出中0与1分布均匀的位置。
优选的,译码器生成的随机数进一步通过冯诺依曼编码器进行熵压缩,从而符合随机数检测要求。
优选的,译码器为两位输出时,方法具体包括:
通过调整参考电压将令无抖动时第一环形振荡器的输出信号波形在指定时间位置处幅值达到参考时钟RefCLK时,译码器的两位输出介于10,01之间的亚稳态;其中,由于第一环形振荡器的输出信号的噪声作用,输出将在10与01之间振荡,从而生成译码器输出的随机数。
本发明所取得的有益效果为:
本发明利用环形振荡器做为熵源,通过使用一个环形振荡器即可完成随机数生成,降低了实际应用成本,同时,通过利用计算机系统时钟做为参考时钟RefCL输入,将系统时钟作为对比波形,具有更低的硬件资源消耗与功耗。
进一步的,本发明通过环形振荡器内部的结构数量的调整,以及第一压控延时单元组内部的结构数量的改进,使得真随机数的随机性得到提升。
进一步的,本发明通过将采集的振荡波形的时间差直接快速编码为数字信号,随机数产生效率高,具有较高的吞吐率和较低的熵损。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍。显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是现有技术中的一种真随机数生成器;
图2是现实施例1中的一种真随机数生成器;
图3是现实施例1中的一种真随机数生成器的温度计码和二进制码转化表;
图4是现实施例1中的一种真随机数生成器的内部时序波形图;
图5是现实施例1中的一种真随机数生成器;
图6是现实施例2中的一种真随机数生成器;
图7是现实施例3中的一种真随机数生成器;
图8是现实施例4中的一种真随机数生成器;
图9是现实施例5中的一种真随机数生成方法流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
在本发明的描述中,术语“内”、“外”、“纵向”、“横向”、“上”、“下”、“顶”、“底”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明而不是要求本发明必须以特定的方位构造和操作,因此不应当理解为对本发明的限制。
此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
实施例1:
本发明实施例1提供了一种真随机数生成器。如图2所示,包括两组压控延时单元、第一环形振荡器、一组D触发器和译码器,其中,每一组压控延时单元中所包含的各个压控延时单元首尾相连,组内的各个压控延时单元共享一个参考电压,包括:第一组压控延时单元中的指定压控延时单元输出分别与配套数量的D触发器的输入端D耦合;第二组压控延时单元中的指定压控延时单元输出分别与所述配套数量的D触发器的时钟端耦合;所述配套数量的D触发器的输出端分别与所述译码器的输入端口相连,以便所述译码器输出相应码流;其中,所述第一组压控延时单元中首个压控延时单元的输入源自第一环形振荡器的输出信号;所述第二组压控延时单元中首个压控延时单元的输入源自参考时钟RefCL的输出信号。
所述环形振荡器,是利用门电路的固有传输延迟时间,将奇数个反相器首尾相接而成的环形电路,该环形电路没有稳态,因为在静态(没有振荡时)下,任何一个反相器的输入和输出都不可能稳定在高电平或低电平,只能处于高、低电平之间,处于放大状态,所述门电路,是用以实现基本逻辑运算和复合逻辑运算的单元电路,常用的门电路在逻辑功能上有与门、或门、非门、与非门、或非门、与或非门、异或门等几种,所述反相器,泛指带有反向功能的门电路,常用的,通常包括TTL反相器和CMOS反相器等,所述反相器可以将输入信号的相位反转180度,在本实施例中,如图2所示,环形振荡器中包括偶数个反相器和一个与非门组成,使能控制信号EN作为与非门的一个输入端口导入环形振荡器中,用于控制环形振荡器的工作状态,所述环形振荡器中包括偶数个反相器和一个与非门组成,具体的,因与非门和非门均是带反向功能的门电路,与非门实质上也相当于一个反向器,即非门和与非门共同构成奇数个反相器,其中,非门有一个输入和一个输出,与非门有两个输入和一个输出,在本实施例中,之所以采用一个与非门做为起始的第一级反向器,而并非全部采用非门做为反向器,是利用了与非门有两个输入和一个输出的特性,具体的,与非门的一个输入是最后一个非门反向器的输出,与非门的另一个输入是使能控制信号EN,通过调节使能控制信号EN,可以使得所述第一环形振荡器的工作状态得到控制,这里,与非门相当于一个电开关,能控制所述第一环形振荡器开始振荡或者停止振荡,如果用t代表单个反向器的传输延迟时间(假定与非门和非门反向器的传输延迟时间相同),N代表反向器的个数,则所述第一环形振荡器的振荡周期T=2*t*N,因振荡频率f与振荡周期T互为倒数关系,则所述第一环形振荡器的振荡频率f=1/(2*t*N)。区别于传统的基于环形振荡器的真随机数生成器,至少需要用到两个环形振荡器,且在电路中还需要实现放大器结构,相对成本较高,在本实施例中,通过使用一个环形振荡器作为熵源即可完成随机数生成,降低了实际应用成本,硬件资源消耗与功耗得到降低。
考虑到环形振荡器的振荡频率较高,且较高的振荡频率难以观测和不便于实际利用,需要对环形振荡器的电路结构进行优化,改进方向主要通过增加延时单元来实现,通过上述环形振荡器的的振荡频率和振荡周期的关系可知,通过振荡周期的延长,可以实现振荡频率的降低,传统延长环形振荡器的振荡周期的方式,是在环形振荡器电路中加入RC或LC电路来实现,在其中一个节点,例如,在两个反向器之间,通过加上阻容延迟单元或感容延迟单元来改变环形振荡器的振荡周期,环形振荡器总的振荡周期就是环形振荡器的振荡周期加上延迟单元所带来的延迟时间,在本实施例中,通过采取压控延时单元来实现振荡周期的延长,所述压控延时单元,是在一个固定的参考电压下使得所述环形振荡器输出固定的频率,实现固定的周期以及固定的波形,进而实现振荡频率的调节到可观察和利用的程度,在本实施例中,如图2所示,包括两组压控延时单元,第一组压控延时单元包括VCDU1~VCDUn,第二组压控延时单元包括VCDUn+1~VCDU2n,第一组压控延时单元和第二组压控延时单元在数量上呈对称设置,在信号的输入方面,每一组压控延时单元中所包含的各个压控延时单元首尾相连,组内的各个压控延时单元共享一个参考电压,其中,所述第一组压控延时单元中首个压控延时单元的输入源自第一环形振荡器的输出信号;所述第二组压控延时单元中首个压控延时单元的输入源自参考时钟RefCL的输出信号,在本实施例中,第一组压控延时单元VCDU1~VCDUn共享一个参考电压Vcnt1,第二组压控延时单元VCDUn+1~VCDU2n共享一个参考电压Vcnt2,通过调整参考电压Vcnt1和Vcnt2,以便于找到A点,如图3-图4所示,使得在A点时所述第一组压控延时单元组内传输的所述第一环形振荡器的振荡波形与参考时钟RefCLK的振荡波形的上升沿接近对齐,通过将参考电压Vcnt1和Vcnt2固定,下述译码器的输出值便会发生振荡,为了实现对所述第一组压控延时单元组内传输的所述第一环形振荡器的振荡波形与参考时钟RefCLK的振荡波形的时间差进行采集、对比和分析,在本实施例中,做为一种典型的实现方式,所述第一环形振荡器的振荡频率频与所述参考时钟RefCLK的振荡频率频率除以同一数量级,并分别输入至所述第一组压控延时单元和所述第二组压控延时单元中,因所述第一环形振荡器的振荡频率频与所述参考时钟RefCLK的振荡频率通常会非常高,通过除以同一数量级,通过同时除以10的N次方,例如,106或108,从而实现所述第一环形振荡器的与所述参考时钟RefCLK的振荡频率的实际应用。
所述D触发器,是一个具有记忆功能的具有两个稳定状态的信息存储器件,有两个稳定状态,即“0”和“1”,在一定的外界信号作用下,可以从一个稳定状态翻转到另一个稳定状态,所述D触发器的触发方式,包括电平触发和边沿触发两种,其中,电平触发多在CP(Clock Pulse,时钟脉冲)=1时触发,边沿触发多在CP上升沿(正跳变0→1)触发,D触发器的次态取决于触发前D端的状态,因此,所述D触发器具有置0、置1两种功能,所述时钟脉冲,是指脉冲信号是一个按一定电压幅度,一定时间间隔连续发出的脉冲信号,而计算机系统中的系统时钟是一个典型的频率相当精确和稳定的脉冲信号生成器,在信号的输入和输出方面,如图2所示,所述D触发器包括两个输入端和两个输出端,输入端分别为输入端D和一个时钟端,输出端分别为Q和Q非,在信号的输入方面,第一组压控延时单元中的指定压控延时单元输出分别与配套数量的D触发器的输入端D耦合;第二组压控延时单元中的指定压控延时单元输出分别与所述配套数量的D触发器的时钟端耦合,在本实施例中,使用的是上升沿触发的D触发器,并在参考电压Vcnt2的作用下,经过第二组压控延时单元,将参考时钟RefCL传输到所述D触发器的时钟端,通过利用计算机系统自带的时钟做为参考时钟RefCL输入到所述D触发器的时钟端,并将系统时钟作为对比波形,使得硬件资源消耗与功耗进一步得到降低。
在获得真随机数的前处理过程中,做为一种典型的实现方式,如图2所示,第一组压控延时单元中包含的压控延时单元数量和所述D触发器数量相同,则所述第一组压控延时单元中的指定压控延时单元输出分别与配套数量的D触发器的输入端D耦合,具体包括:第一环形振荡器的输出信号,经由首尾相连的各个压控延时单元,依次经过第一组压控延时单元中的各级压控延时单元;其中,每经过一级压控延时单元的延时处理后的第一环形振荡器的输出信号同步输入至对应D触发器的D输入端,所述第一组压控延时单元中包含的压控延时单元数量和所述D触发器数量相同,所述第一组压控延时单元中的指定压控延时单元输出分别与配套数量的D触发器的输入端D耦合,以图3所示为例,此时,所述第一组压控延时单元中的指定压控延时单元和配套数量的D触发器均为4个,具体的,所述第一组压控延时单元中第一级压控延时单元输出与配套数量的第一级D触发器的输入端D耦合,所述第一组压控延时单元中第二级压控延时单元输出与配套数量的第二级D触发器的输入端D耦合,所述第一组压控延时单元中第三级压控延时单元输出与配套数量的第三级D触发器的输入端D耦合,所述第一组压控延时单元中第四级压控延时单元输出与配套数量的第四级D触发器的输入端D耦合,即所述第一组压控延时单元中的每一级压控延时单元输出分别与配套数量的每一级D触发器的输入端D逐级一一对应并耦合。
所述译码器(Decoder),是一类多输入多输出组合逻辑电路器件,能将输入的二进制代码的各种状态,按照其原意“翻译”成对应的输出信号,把代码状态的特定含义“翻译”出来的过程叫做译码,实现译码操作的电路称为译码器,译码器是编码器(Encoder)的逆过程,或者说,译码器是可以将输入二进制代码的状态“翻译”成输出信号,以表示其原来含义的电路,在信号的输入方面,做为一种典型的实现方式,所述配套数量的D触发器的输出端分别与所述译码器的输入端口相连,以便所述译码器输出相应码流,在本实施例中,如图2所示,所述译码器包括多个输入端和多个输出端,每一输入端对应和接收所述配套数量的D触发器所输出的温度计码,每一输出端按照实际应用的需要将温度计码转化成若干位数字的二进制码,所述温度计码,是用一定数量的“1”来代表具体码流的数字,例如,如图3所示,以所述译码器将4个位数的温度计码转化成对应的2个位数的二进制码为例,当二进制码数字是00时,对应的温度计码用0001表示(1个“1”),当二进制码数字是01时,对应的温度计码用0011表示(2个“1”),当二进制码数字是10时,对应的温度计码用0111表示(3个“1”),当二进制码数字是11时,对应的温度计码用1111表示(4个“1”),所述译码器输出相应码流,即通过上述列举的过程的逆过程,来实现将若干位数的温度计码转化成若干位数的二进制码。
做为FPGA和ASIC的一种优选实现方式,在本实施例中,除了所述第一环形振荡器外,所述两组压控延时单元、一组D触发器和译码器共同构成为一个时间数字转换器(TimeDigital Converter,TDC),所述时间数字转换器的结构简单、集成度高,并且功能覆盖面广,具体的,本实施例1提供了一种真随机数生成器,整体包括一个环形振荡器和一个时间数字转换器两个部分,通过使用一个环形振荡器作为熵源,并利用时间数字转换器(TimeDigital Converter,简写为:TDC)进行采样,时间数字转换器具有皮秒级(Pico Second,PS)的精度,精度极高,可以精确测量开始脉冲信号和停止脉冲信号之间的时间间隔,能够较好的采样出开始脉冲信号和停止脉冲信号两个振荡波形的时间差,而该时间差具有随机性,可以作为随机数,与此同时,时间数字转换器还能够快速的将熵源与参考时钟间的时间差量化并直接转换为数字形式的随机数,具有较高的吞吐率,较低的熵损,在本实施例中,通过时间数字转换器的整体应用,提升了随机数的输出效率。
下文将以一个环形振荡器(其中,该环形振荡器包括一个与非门和4个反向器)、两组压控延时单元(其中,每组压控延时单元包括4个压控延时单元)、一组D触发器(其中,该组D触发器包括4个上升沿触发的D触发器),并且,译码器为两位输出为例来做进一步说明,如图5所示,本实施例1提供了一种真随机数生成器,包括:
一个环形振荡器RO1:由4数个反相器和1个与非门组成,与非门一个输入端连接第4个反相器的输出端,与非门另一个输入端连接使能控制信号EN,使能控制信号EN用于控制RO1的工作状态,具体的,当EN为1时,环形振荡器开始振荡,当EN为0时,环形振荡器停止振荡。
两组压控延时单元:每组压控延时单元分别包括4个压控延时单元,每组压控延时单元的延时由参考电压控制,具体的,上侧VCDU1~VCDU4为第一组,依次首尾相连,并共享一个参考电压Vcnt1;下侧VCDU5~VCDU8为第二组,依次首尾相连,共享一个参考电压Vcnt2。
一组D触发器:包括4个上升沿触发的D触发器,4个上升沿触发的D触发器的输入端D的输入依次为VCDU1~VCDU4的中间信号,4个上升沿触发的D触发器的时钟端的输入依次为VCDU5~VCDU8的中间信号,该结构能够判断出两个信号上升沿的到达次序,当时钟端信号上升沿先于D端信号上升沿到达时,Q输出为0,否则输出为1,4个上升沿触发的D触发器将生成的4个位数的温度计码输入到译码器中,D触发器D1~D4的Q端输出连接译码器的4个输入端。
译码器:将上述4个位数的温度计码译码为两位二进制码,经过译码后,译码器输出译码二进制信号b0和bl。
其中,环形振荡器RO1作为本实施例1中随机数生成器的熵源,当EN为1时,环形振荡器RO1开始振荡,其振荡信号输出连接至第一组压控延时单元VCDU1~VCDU4中。
在第一组压控延时单元VCDU1~VCDU4中,振荡信号依次经过压控延时单元VCDU1、VCDU2、VCDU3和VCDU4,每经过一级压控延时单元,振荡信号同步输入至对应D触发器的D输入端。
将参考时钟RefCLK的振荡频率与环形振荡器RO1的振荡频率除以108后,将环形振荡器RO1的信号输入至第一组压控延时单元VCDU1~VCDU4中,将参考时钟RefCLK的信号输入至第二组压控延时单元VCDU5~VCDU8中。
在第二组压控延时单元VCDU5~VCDU8中,振荡信号依次经过压控延时单元VCDU5、VCDU6、VCDU7和VCDU8,每经过一级压控延时单元,振荡信号同步输入至对应D触发器的时钟端。
实施例2:
为了引入更多的噪声,实现真随机数生成过程中随机性的进一步提升,在实施例1的基础上,本实施例2提供的一种真随机数生成器,如图6所示,包括两组压控延时单元、两个环形振荡器、一组D触发器和译码器,其中,每一组压控延时单元中所包含的各个压控延时单元首尾相连,组内的各个压控延时单元共享一个参考电压,包括:第一组压控延时单元中的指定压控延时单元输出分别与配套数量的D触发器的输入端D耦合;第二组压控延时单元中的指定压控延时单元输出分别与所述配套数量的D触发器的时钟端耦合;所述配套数量的D触发器的输出端分别与所述译码器的输入端口相连,以便所述译码器输出相应码流;其中,所述第一组压控延时单元中首个压控延时单元的输入源自第一环形振荡器的输出信号;所述第二组压控延时单元中首个压控延时单元的输入源自第二环形振荡器的输出信号。
与实施例1所不同的是,在本实施例2中,在环形振荡器的数量方面,环形振荡器的数量为两个,除了实施例1中的所述第一环形振荡器以外,还包括所述第二环形振荡器;在信号的输入方面,所述第一组压控延时单元中首个压控延时单元的输入源自第一环形振荡器的输出信号,所述第二组压控延时单元中首个压控延时单元的输入源自第二环形振荡器的输出信号,在本实施例中,通过增加所述第二环形振荡器,并使得环形振荡器的数量与压控延时单元组数匹配,实现了更多引入的噪声,提升了真随机数生成过程中随机性。
需要说明的时,与上述实施例1和实例2的基本工作原理类似,还可以通过进一步调整所述环形振荡器的数量,例如,第三环形振荡器或第四环形振荡器等,同时,配套调整所述压控延时单元的组数,例如,第三环压控延时单元或第四压控延时单元等,可以使得噪声的引入过程更加复杂,因此,随机性的复杂化程度会更高,进而实现随机性的不断提升。
实施例3:
在提升随机性方面,实施例2主要是从调整所述环形振荡器的数量上以及配套调整所述压控延时单元的组数上做出的,在调整所述环形振荡器的数量上,由实施例1中的所述第一环形振荡器调整到实施例2中的所述第一环形振荡器和所述第二环形振荡器,一共两个环形振荡器,所述第一环形振荡器和所述第二环形振荡器内部均包括一个与非门和偶数数量的若干个反相器,考虑若干个反相器同批次和/或不同批次之间可能存在的性差异,一定程度上会导致单个或者多个反向器的传输延迟时间的变化,另外,根据环形振荡器的振荡周期T=2*t*N,其中,N代表反向器的个数,若调整所述第一环形振荡器和所述第二环形振荡器两者之间的反向器的数量关系,在将所述第一环形振荡器输出的信号做为输入源传输到所述第一组压控延时单元,将所述第二环形振荡器输出的信号做为输入源传输到所述第二组压控延时单元时,则会对已构建的模型的随机性造型影响,这也会导致环形振荡器振荡周期及其振荡波型的变化,结合实际的应用场景,在实施例2的基础上,做为提升随机性的另一实现方式,本实施例3提供的一种真随机数生成器,所述第一环形振荡器和所述第二环形振荡器中的反相器数量相同或者相差预设数量,如图7所示,假设所述第一环形振荡器中的反相器数量是2a个(不含与非门),a为自然数,与此同时,所述第二环形振荡器中的反相器数量是2b个(不含与非门),b为自然数,其中,a=b或a≠b。
本实施例3通过调整所述第一环形振荡器和所述第二环形振荡器内部反相器的的结构数量,改变了原来构建的模型的随机性,同时使得A点的位置也会相应出现变化,从而使得随机性得到提升。
实施例4:
根据实施例1~实施例3的具体内容及其对应的附图可以看出,所述第一组压控延时单元中包含的压控延时单元数量和所述D触发器数量是相同的,且所述第一组压控延时单元中的指定压控延时单元输出分别与配套数量的D触发器的输入端D耦合,当所述第一组压控延时单元中包含的压控延时单元数量为n时,与之相对应的,所述D触发器数量也为n,具体的,所述第一组压控延时单元中的指定压控延时单元输出分别与配套数量的D触发器的输入端D耦合是逐级一一对应并耦合,例如,如图5所示,所述第一组压控延时单元中的指定压控延时单元和配套数量的D触发器均为4个,此时4个D触发器传输给译码器的有4个位数的温度计码,结合实际应用场景,若所述第一组压控延时单元中某一级数的压控延时单元出现损坏,会出现该级数的压控延时单元的温度计码无法传输到对应的D触发器这一结果,此时,4个D触发器传输给译码器的只有3个位数的温度计码,进而导致D触发器传输给译码器的温度计码位数不符合预期,为了应对上述可能发生的突发情况,本实施例4提供的一种真随机数生成器,第一组压控延时单元中包含的压控延时单元数量大于所述D触发器数量,则所述第一组压控延时单元中的指定压控延时单元输出分别与配套数量的D触发器的输入端D耦合,具体包括:第一环形振荡器的输出信号,经由首尾相连的各个压控延时单元,依次经过第一组压控延时单元中的各级压控延时单元;从所述第一组压控延时单元中选出位于指定级数的压控延时单元,将相应级数的压控延时单元各自延时输出的第一环形振荡器的输出信号同步输入至对应D触发器的D输入端,本如图8所示,假设所述D触发器数量为n个,其中,n为自然数,与此同时,所述第一组压控延时单元中包含的压控延时单元数量为n+x个,其中,x为自然数,即实现所述第一组压控延时单元中包含的压控延时单元数量大于所述D触发器数量,应用过程中,从所述第一组压控延时单元中选出位于指定级数的压控延时单元,将相应级数的压控延时单元各自延时输出的第一环形振荡器的输出信号同步输入至对应D触发器的D输入端,具体的以n=4、x=2为例进行说明,所述D触发器数量为4个,与此同时,所述第一组压控延时单元中包含的压控延时单元数量为4+2=6个,其中,所述第一组压控延时单元中多出的任意两个压控延时单元都可以做为备用的压控延时单元,在实际实现过程中,可以是所述第一组压控延时单元中第一级、第二级、第三级和第四级压控延时单元输出与配套数量的第一级、第二级、第三级和第四级D触发器的输入端D耦合,也可以是所述第一组压控延时单元中第二级、第三级、第四级和第五级压控延时单元输出与配套数量的第一级、第二级、第三级和第四级D触发器的输入端D耦合,也可以是所述第一组压控延时单元中第三级、第四级、第五级和第六级压控延时单元输出与配套数量的第一级、第二级、第三级和第四级D触发器的输入端D耦合,在上述任意耦合连接情况下,均会预留出两个备用的压控延时单元,即在两个压控延时单元裕量范围内,使得指定压控延时单元输出分别与配套数量的D触发器的输入端D耦合的一一对应的关系得以保证,进而保证了4个D触发器传输给译码器的是4个位数的温度计码。
在本实施例4中,通过所述第一压控延时单元组内部的结构数量的改进,使得真随机数生成过程中的随机性得到了提升,同时,所述第一组压控延时单元中包含的压控延时单元与所述D触发器的耦合连接还更为灵活,通过预留一定数量的控延时单元,使得随机数产生的过程更为稳定。
实施例5:
在实施例1的基础上,本实施例5提供一种真随机数生成方法,如图9所示,当第二组压控延时单元中首个压控延时单元的输入源自参考时钟RefCLK的输出信号时,具体包括:
步骤S11,使能各个环形振荡器的EN,各个环形振荡器开始振荡;
在本实施例中,各个环形振荡器的起始位置,均包括一个与非门,各个与非门包括两个信号输入端,其中一个信号输入端为使能控制信号EN,通过调节各个使能控制信号EN,可以使得各个环形振荡器的工作状态得到控制,具体的,当各个使能控制信号EN=1时,各个环形振荡器开始振荡,当各个使能控制信号EN=0时,各个环形振荡器停止振荡。
步骤S12,参考时钟RefCLK被同步输入,调整输入给各组压控延时单元的参考电压,使得指定时间位置传输的环形振荡器的输出信号波形与RefCLK波形上升沿接近对齐。
做为一种优选的实现方式,所述指定时间位置的选择是译码电路的输出中0与1分布均匀的位置,以理想的随机数而言,数字‘0’和‘1’的出现机率应该要非常接近于50%,实际电路中,由于电路内外部各种噪声影响,输出的随机位不可能如理想情况那样使得数字‘0’和‘1’等概率出现,输出序列的分布也可能不能满足要求,进而最终影响到随机数生成结果的统计特性,因此必须采取后处理电路对生成的随机数进行消偏处理,做为其中一种消偏处理方式,在本实施例中,对译码器生成的随机数进一步通过冯诺依曼编码器进行熵压缩,从而符合随机数检测要求,所述熵压缩,分有损压缩和无损压缩,压缩过程如果减少了熵,意味着有不可恢复的信息量的损失,有损压缩不能无失真地恢复原始数据,无损压缩只减少数据的冗余度,不改变熵,在译码器生成的随机数后,通过冯诺依曼编码器对译码器生成的随机数进行熵压缩,在本实施例中,通过利用冯诺依曼编码编码器的使用,来减弱输出系列的相关性,来弥补VNC会降低输出速度的弊病。
在本实施例中,通过后处理过程,将生成的真随机数进一步通过冯诺依曼编码进行熵压缩,对真随机数序列的均匀分布和相关性进行纠正,通过对生成的随机数进行检测,提高了真随机数的生成质量,在符合随机数检测要求的同时,相对于传统的后处理方式,还提高了真随机数的输出效率。
在实际应用过程中,做为其中一种具体的实现方式,当译码器为两位输出时,方法具体包括:通过调整参考电压将令无抖动时第一环形振荡器的输出信号波形在指定时间位置处幅值达到参考时钟RefCLK时,译码器的两位输出介于10,01之间的亚稳态;其中,由于第一环形振荡器的输出信号的噪声作用,输出将在10与01之间振荡,从而生成译码器输出的随机数。
下文将以一个环形振荡器(其中,该环形振荡器包括一个与非门和4个反向器)、两组压控延时单元(其中,每组压控延时单元包括4个压控延时单元)、一组D触发器(其中,该组D触发器包括4个上升沿触发的D触发器),并且,译码器为两位输出为例,来做进一步说明,如图3-图5所示,本实施例5提供一种真随机数生成方法,具体方法流程如下:
1、调节使能控制信号EN,令使能控制信号EN=1,环形振荡器开始振荡,其振荡信号输出连接至第一组压控延时单元VCDU1~VCDU4中。
2、将参考时钟RefCLK的信号输入至第二组压控延时单元VCDU5~VCDU8中。
3、调整参考电压Vcnt1与Vcnt2,使得在A点时第一组压控延时单元组内传输的环形振荡器的振荡波形与参考时钟RefCLK的振荡波形的上升沿接近对齐,如图4所示,假设第一组压控延时单元组内传输的环形振荡器的振荡波形在VCDU3处与参考时钟RefCLK的振荡波形的上升沿接近对齐,此时,A点出现在第一组压控延时单元中的VCDU3处,因D触发器的第三级D3与第一组压控延时单元中的VCDU3耦合,也即D触发器的第三级D3处,A点的选择应该使得译码电路的输出中0与1分布均匀,如图3所示,译码器的输出为01和10亚稳态。
4、固定Vcnt1与Vcnt2,译码电路输出值便会发生振荡。
当n=4时,D触发器的输出与译码电路的对应关系,如图3-图4所示,可知,当通过调整参考电压Vcnt1与Vcnt2,将令无抖动时第一环形振荡器的振荡波形在A点处赶上RefCLK信号时,译码器的两位输出b0~b1介于10,01之间的亚稳态。由于振荡波形的噪声作用,输出将在10与01之间振荡,从而生成随机数,对生成的随机数继续通过冯诺依曼编码器等模块进行熵压缩,从而符合随机数检测要求,同时提高真随机数的生成质量和输出效率。
综上所述,本发明利用环形振荡器做为熵源,通过使用一个环形振荡器即可完成随机数生成,降低了实际应用成本,同时,通过利用计算机系统时钟做为参考时钟RefCL输入,将系统时钟作为对比波形,还具有更低的硬件资源消耗与功耗,另外,使用本发明产生的随机数,随机数产生效率高,随机性好,还具有较高的吞吐率和较低的熵损。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种真随机数生成器,其特征在于,包括至少两组压控延时单元、至少一个环形振荡器、一组D触发器和译码器,其中,每一组压控延时单元中所包含的各个压控延时单元首尾相连,组内的各个压控延时单元共享一个参考电压,包括:
第一组压控延时单元中的指定压控延时单元输出分别与配套数量的D触发器的输入端D耦合;
第二组压控延时单元中的指定压控延时单元输出分别与所述配套数量的D触发器的时钟端耦合;
所述配套数量的D触发器的输出端分别与所述译码器的输入端口相连,以便所述译码器输出相应码流;
其中,所述第一组压控延时单元中首个压控延时单元的输入源自第一环形振荡器的输出信号;所述第二组压控延时单元中首个压控延时单元的输入源自参考时钟RefCLK或者第二环形振荡器的输出信号。
2.根据权利要求1所述的真随机数生成器,其特征在于,第一组压控延时单元中包含的压控延时单元数量和所述D触发器数量相同,则所述第一组压控延时单元中的指定压控延时单元输出分别与配套数量的D触发器的输入端D耦合,具体包括:
第一环形振荡器的输出信号,经由首尾相连的各个压控延时单元,依次经过第一组压控延时单元中的各级压控延时单元;
其中,每经过一级压控延时单元的延时处理后的第一环形振荡器的输出信号同步输入至对应D触发器的D输入端。
3.根据权利要求1所述的真随机数生成器,其特征在于,第一组压控延时单元中包含的压控延时单元数量大于所述D触发器数量,则所述第一组压控延时单元中的指定压控延时单元输出分别与配套数量的D触发器的输入端D耦合,具体包括:
第一环形振荡器的输出信号,经由首尾相连的各个压控延时单元,依次经过第一组压控延时单元中的各级压控延时单元;
从所述第一组压控延时单元中选出位于指定级数的压控延时单元,将相应级数的压控延时单元各自延时输出的第一环形振荡器的输出信号同步输入至对应D触发器的D输入端。
4.根据权利要求1所述的真随机数生成器,其特征在于,环形振荡器中包括偶数个反相器和一个与非门组成,使能控制信号EN作为与非门的一个输入端口导入环形振荡器中,用于控制环形振荡器的工作状态。
5.根据权利要求4所述的真随机数生成器,其特征在于,所述第一环形振荡器和所述第二环形振荡器中的反相器数量相同或者相差预设数量。
6.根据权利要求1-5任一所述的真随机数生成器,其特征在于,所述第一环形振荡器的振荡频率频与所述参考时钟RefCLK的振荡频率频率除以同一数量级,并分别输入至所述第一组压控延时单元和所述第二组压控延时单元中。
7.一种真随机数生成方法,其特征在于,使用如权利要求1-6任一所述的一种真随机数生成器,当第二组压控延时单元中首个压控延时单元的输入源自参考时钟RefCLK的输出信号时,具体的:
使能各个环形振荡器的EN,各个环形振荡器开始振荡;
参考时钟RefCLK被同步输入,调整输入给各组压控延时单元的参考电压,使得指定时间位置传输的环形振荡器的输出信号波形与RefCLK波形上升沿接近对齐。
8.根据权利要求7所述的真随机数生成方法,其特征在于,所述指定时间位置的选择是译码电路的输出中0与1分布均匀的位置。
9.根据权利要求7所述的真随机数生成方法,其特征在于,译码器生成的随机数进一步通过冯诺依曼编码器进行熵压缩,从而符合随机数检测要求。
10.根据权利要求7所述的真随机数生成方法,其特征在于,译码器为两位输出时,方法具体包括:
通过调整参考电压将令无抖动时第一环形振荡器的输出信号波形在指定时间位置处幅值达到参考时钟RefCLK时,译码器的两位输出介于10,01之间的亚稳态;其中,由于第一环形振荡器的输出信号的噪声作用,输出将在10与01之间振荡,从而生成译码器输出的随机数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211010926.XA CN115373633A (zh) | 2022-08-23 | 2022-08-23 | 一种真随机数生成器以及真随机数生成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211010926.XA CN115373633A (zh) | 2022-08-23 | 2022-08-23 | 一种真随机数生成器以及真随机数生成方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115373633A true CN115373633A (zh) | 2022-11-22 |
Family
ID=84067273
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211010926.XA Pending CN115373633A (zh) | 2022-08-23 | 2022-08-23 | 一种真随机数生成器以及真随机数生成方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115373633A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116382635A (zh) * | 2023-06-05 | 2023-07-04 | 灿芯半导体(成都)有限公司 | 一种全数字、真随机数熵源系统 |
-
2022
- 2022-08-23 CN CN202211010926.XA patent/CN115373633A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116382635A (zh) * | 2023-06-05 | 2023-07-04 | 灿芯半导体(成都)有限公司 | 一种全数字、真随机数熵源系统 |
CN116382635B (zh) * | 2023-06-05 | 2023-08-08 | 灿芯半导体(成都)有限公司 | 一种全数字、真随机数熵源系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US4799259A (en) | Monolithic random digital noise generator | |
US6240432B1 (en) | Enhanced random number generator | |
US4905176A (en) | Random number generator circuit | |
US8886692B2 (en) | Apparatus for generating random number | |
US7315874B2 (en) | Electronic circuit for random number generation | |
US9047152B2 (en) | Delay device, method, and random number generator using the same | |
CN106941345B (zh) | D触发器和异步逐次逼近型模数转换器 | |
CN109117118B (zh) | 基于环形振荡器结构真随机数发生器的随机数提取方法 | |
EP0630116A2 (en) | Integrated high speed synchronous counter with asynchronous read-out | |
CN107437945B (zh) | 并串转换电路 | |
CN111404550B (zh) | 模数转换器及其时钟产生电路 | |
CN102968290A (zh) | 一种异构轻量级的真随机数产生器 | |
Mei et al. | A highly flexible lightweight and high speed true random number generator on FPGA | |
Cao et al. | An energy-efficient true random number generator based on current starved ring oscillators | |
CN115373633A (zh) | 一种真随机数生成器以及真随机数生成方法 | |
CN114968179A (zh) | 一种基于时钟抖动和亚稳态的真随机数产生电路 | |
US3609327A (en) | Feedback shift register with states decomposed into cycles of equal length | |
CN115001507A (zh) | 并串转换电路 | |
KR20020049387A (ko) | 고속 동작이 가능하고 순차적으로 2진 카운터 순서를 갖는카운터 회로 및 그 카운팅 방법 | |
Bhatti et al. | Duty cycle measurement and correction using a random sampling technique | |
CN111782179B (zh) | 一种真随机数发生器 | |
CN114421931A (zh) | 伪随机分频信号产生电路及方法 | |
Ma et al. | A low-cost high-efficiency true random number generator on FPGAs | |
Oliveira et al. | True Random Number Generator Prototype Implemented in an FPGA | |
CN109558111B (zh) | 基于d触发器亚稳态特性的真随机数生成装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |