随机数的生成方法、装置和系统与流程

文档序号:12362701阅读:835来源:国知局
随机数的生成方法、装置和系统与流程

本发明涉及嵌入式系统领域,具体而言,涉及一种随机数的生成方法、装置和系统。



背景技术:

嵌入式系统应用领域广泛,其中有很多地方需要用到随机数,例如随机地址分配、动态密码获取、应答时间交错、启动延时交错等等。但是对于嵌入式系统而言,得到真正的随机数并不容易。

目前嵌入式系统中常用的随机数生成方法主要有以下三种:

1、使用纯硬件电路产生随机数,其原理是用模拟电路将随机噪声放大,然后再将放大后的信号数字化,得到随机数。这种方法的优点是:产生的随机数质量较高;产生随机数的速率较快。但是此类方法缺点也很明显:电路复杂,实现过程困难;器件太多,硬件成本高。

2、利用控制芯片中的计数器和特定的算法得到随机数,具体做法是,用控制芯片内部的硬件定时器或者PC指针作为随机种子,在特定的时刻获取定时器或者PC指针的值,然后利用该值经过一个固定的算法加以计算,得到随机数。这类纯软件的做法,只能得到伪随机数,其结果是可预知和复现的,伪随机数的应用局限性很大,尤其不适合用于信息安全性要求较高的场合。

3、用嵌入式系统采集到的具体环境量作为随机数,例如,用机组采集的到的环境温度作为随机数。这种方法非常简单,但是缺陷也非常明显:在同一时刻的某一局部区域内,环境量的波动范围很小,这使得随机数结果的重复率非常高;由于环境量是可以检测的,所以得到的随机数结果比较容易预知;环境量通常具有周期性,从而导致结果的周期性。

针对现有技术中的随机数的生成方法过程复杂,且随机数的质量低的问题,目前尚未提出有效的解决方案。



技术实现要素:

本发明实施例提供了一种随机数的生成方法、装置和系统,以至少解决现有技术中的随机数的生成方法过程复杂,且随机数的质量低的技术问题。

根据本发明实施例的一个方面,提供了一种随机数的生成方法,包括:按照预定的采样次数对至少一个模数转换器的模数转换结果进行采样,得到多个模数转换值;提取每个模数转换值的最低有效位,得到多个最低有效位;将多个最低有效位进行合成,生成随机数。

根据本发明实施例的另一方面,还提供了一种随机数的生成装置,包括:采样单元,用于按照预定的采样次数对至少一个模数转换器的模数转换结果进行采样,得到多个模数转换值;提取单元,用于提取每个模数转换值的最低有效位,得到多个最低有效位;生成单元,用于将多个最低有效位进行合成,生成随机数。

根据本发明实施例的另一方面,还提供了一种随机数的生成系统,包括:至少一个模数转换器,用于生成模数转换结果;处理器,与至少一个模数转换器连接,用于按照预定的采样次数对模数转换结果进行采样,得到多个模数转换值,提取每个模数转换值的最低有效位,得到多个最低有效位,并将多个最低有效位进行合成,生成随机数。

在本发明实施例中,可以按照预定的采样次数对至少一个模数转换器的模数转换结果进行采样,得到多个模数转换值,提取每个模数转换值的最低有效位,得到多个最低有效位,合成多个最低有效位,生成随机数。容易注意到的是,由于随机数由多个模数转换值的最低有效位合成,而最低有效位具有不确定性,综合了噪声、环境温度、采样和转换误差等多种因素,并且模数转换值通过模数转换器进行采样得到,从而实现嵌入式系统中生成随机数,解决了现有技术中的随机数的生成方法过程复杂,且随机数的质量低的技术问题。因此,通过本发明上述实施例提供的方案,可以生成高质量的随机数,而且不需要增加硬件电路,降低硬件成本,简化生成随机数的过程。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是根据本发明实施例的一种随机数的生成方法的流程图;

图2是根据本发明实施例的一种可选的随机数的生成方法的流程图;

图3是根据本发明实施例的一种随机数的生成装置的示意图;以及

图4是根据本发明实施例的一种随机数的生成系统的示意图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

实施例1

根据本发明实施例,提供了一种随机数的生成方法的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

图1是根据本发明实施例的一种随机数的生成方法的流程图,如图1所示,该方法包括如下步骤:

步骤S102,按照预定的采样次数对至少一个模数转换器的模数转换结果进行采样,得到多个模数转换值。

具体的,上述步骤S102中的预定的采样次数可以根据需要生成的随机数位数来确定,例如,当需要生成一个15字节的随机数时,那么采样次数应该是15*8=120次。不同的嵌入式系统中包含有不同个数的模数转换器(Analog to Digital Converter,ADC)。

步骤S104,提取每个模数转换值的最低有效位,得到多个最低有效位。

具体的,上述步骤S104中的最低有效位可以是嵌入式系统中ADC模数转换过程中的最低有效位(LSB),每个LSB是一个位(bit),代表0或者1。由于随机噪声等原因,ADC进行模数转换时,转换结果的最低几位总是会波动的,尤其是LSB值总在0与1之间不停地切换。这个现象在10位以上的ADC使用过程中表现的很明显,并且精度越高的ADC,LSB越不稳定。

步骤S106,合成多个最低有效位,生成随机数。

在一种可选的方案中,在需要生成随机数的时候,可以根据随机数位数,使用嵌入式系统自带的ADC进行采样,得到多个AD采样结果,即模数转换值,可以截取每个AD采样结果的LSB,根据采样得到的所有LSB,合成最终的随机数。例如,当需要生成15字节的随机数时,可以使用嵌入式系统自带的ADC进行120次采样,得到120个模数转换值,截取每个模数转换值的LSB,并将截取到的120个LSB进行合成,得到随机数。

通过本发明上述实施例,可以按照预定的采样次数对至少一个模数转换器的模数转换结果进行采样,得到多个模数转换值,提取每个模数转换值的最低有效位,得到多个最低有效位,合成多个最低有效位,生成随机数。容易注意到的是,由于随机数由多个模数转换值的最低有效位合成,而最低有效位具有不确定性,综合了噪声、环境温度、采样和转换误差等多种因素,并且模数转换值通过模数转换器进行采样得到,从而实现嵌入式系统中生成随机数,解决了现有技术中的随机数的生成方法过程复杂,且随机数的质量低的技术问题。因此,通过本发明上述实施例提供的方案,可以生成高质量的随机数,而且不需要增加硬件电路,降低硬件成本,简化生成随机数的过程。

可选的,在本发明上述实施例中,步骤S102,按照预定的采样次数对至少一个模数转换器的模数转换结果进行采样,得到多个模数转换值包括:

步骤S1022,确定每一次进行采样的采样通道和采样时刻。

可选的,在本发明上述实施例中,相邻的两次采样均切换为不同的采样通道,和/或,随机控制任意两个相邻的采样时刻的间隔。

具体的,绝大多数嵌入式系统都自带10位以上的ADC,并且不止有1个AD采样通道。为了进一步增加LSB的不确定性,可以通过随机切换采样通道,随机控制采样间隔,从而进一步提高随机数的质量。

步骤S1024,当每一次采样时刻到达时,通过对应的采用通道对至少一个模数转换器的模数转换结果进行采样,得到每一次采样时刻下的模数转换值。

在一种可选的方案中,在每一次通过ADC进行采样之前,可以首先确定每一次进行采样的采样通道和采样时刻,在每一次采样过程中,当确定的采样时刻到临时,可以使用ADC对确定的采样通道进行采样,得到每一次采样的模数转换值。

可选的,在本发明上述实施例中,步骤S1022,确定每一次进行采样的采样通道和采样时刻,和步骤S1024,当每一次采样时刻到达时,通过对应的采用通道对至少一个模数转换器的模数转换结果进行采样,得到每一次采样时刻下的模数转换值,包括:

步骤S110,确定本次进行采样的采样通道和采样时刻。

步骤S112,当本次采样的采样时刻到达时,通过本次采样的采样通道对至少一个模数转换器的模数转换结果进行采样,得到本次采样的采样时刻下的模数转换值。

在一种可选的方案中,可以首先计算本次采样的采样通道和采样时刻,开始采样,在本次采样的过程中,等待采样时刻到临,当采样时刻到临时,可以使用ADC对计算好的采样通道进行采样,得到本次采样结果。

此处需要说明的是,对于ADC精度10位以上的嵌入式系统,单一AD采样通道的LSB已经可以作为很好的随机种子,在对随机数结果没有苛刻要求的情况下,采样通道和采样间隔时间的计算过程可以省略。此时嵌入式系统无需专为生成随机数而进行AD采样,LSB在系统自身AD采样的同时得到。例如嵌入式系统本来就需要不断地采集环境温度,那么采集环境温度时的AD值的LSB也可以用于计算随机数。

步骤S114,获取本次采样后累加的采样次数,并判断累加的采样次数是否超过预定的采样次数。

具体的,上述步骤S114中的本次采样后累加的采样次数可以是本次采样之前的总采样次数加本次采样次数,例如,本次采样之前的总采样次数为5次,则本次采样后累加的采样次数为6次。

步骤S116,如果累加的采样次数未超过预定的采样次数,则保存本次采样的采样时刻下的模数转换值,并确定下一次进行采样的采样通道和采样时刻。

在一种可选的方案中,在获取到当前总采样次数之后,可以判断总采样次数是否超过预先设定的采样次数,即总采样次数是否超过随机数位数,如果总采样次数未超过预先设定的采样次数,则说明采样次数不足,需要继续进行采样,则计算下一次采样的采样通道和采样时刻,开始下一次采样。

步骤S118,当下一次采样的采样时刻到达时,通过下一次采样的采用通道对至少一个模数转换器的模数转换结果进行采样,得到下一次采样的采样时刻下的模数转换值。

在一种可选的方案中,在下一次采样的过程中,等待采样时刻到临,当采样时刻到临时,可以使用ADC对计算好的采样通道进行采样,得到下一次采样结果。

可选的,在本发明上述实施例中,如果累加的采样次数超过预定的采样次数,则停止进行下一次采样。

在一种可选的方案中,在获取到当前总采样次数之后,可以判断总采样次数是否超过预先设定的采样次数,即总采样次数是否超过随机数位数,如果总采样次数超过预先设定的采样次数,则说明采样次数足够,不需要继续进行采样,则停止采样。

可选的,在本发明上述实施例中,步骤S1022,确定每一次进行采样的采样通道和采样时刻包括:

步骤S122,获取每一次采样之前预定次数采集到的预设个数的模数转换值。

具体的,上述步骤S122中的预定次数可以根据需求进行设定,例如,预定次数可以是6次。预定次数与预设个数相同,例如,6次采集到6个模数转换值。如果是初次采样,则预设个数的模数转换值可以全为0,或者全为1。

步骤S124,提取每个模数转换值的最低有效位,得到预设个数的最低有效位。

步骤S126,根据预设个数的最低有效位,采用预设算法,计算得到每一次进行采样的采样通道和采样时刻。

具体的,上述步骤S126中的预设算法可以根据随机数的精度要求灵活变化。

在一种可选的方案中,在每一次采样之前,可以将前几次模数转换值的LSB作为参数,经过特定的算法计算,得到每一次的AD采样的采样通道和采样时刻。例如,可以将前6次模数转换值的LSB作为参数,计算得到下一次的采样通道和采样时刻。

可选的,在本发明上述实施例中,步骤S126,根据预设个数的最低有效位,采用预设的算法,计算得到每一次进行采样的采样通道和采样时刻,包括:

步骤S1262,将预设个数的最低有效位进行组合,得到二进制数。

在一种可选的方案中,可以将预设个数的LSB进行组合,组合成一个二进制数X1,例如,可以将前6次模数转换值的LSB进行组合,组合成一个6位的二进制数X1,X1的取值范围可以是0~63。

步骤S1264,将二进制数与采样通道数进行取余运算,得到第一余数,并将第一余数作为每一次采样的采样通道的通道号。

具体的,上述步骤S1264中的采样通道数可以是嵌入式系统所包含的采样通道的总数量,其中,二进制数的最大值需要大于采样通道的总数量。

步骤S1266,计算二进制数与第一预设值的差值,以及采样通道数与第二预设值的差值,得到第一差值和第二差值。

具体的,上述步骤S1266中的第一预设值可以是1,第二预设值可以是2。

步骤S1268,将第一差值与第二差值进行取余运算,得到第二余数,并将第二余数作为每一次采样的采样时刻。

在一种可选的方案中,嵌入式系统的AD采样通道数为N,可以用X1除以采样通道数N,得到余数X2,将X2作为下次采样的采样通道号。可以将(X1-1)%(N-2)得到的X3作为下次采样的等待时间,即采样时刻,单位为ms。

可选的,在本发明上述实施例中,在嵌入式系统包含多个模数转换器的情况下,同时对多个模数转换器的模数转换结果进行采样,同时得到每个模数转换器的至少一个模数转换值。

在一种可选的方案中,当嵌入式系统包含有多个ADC时,可以同时使用多个ADC进行采样,从而可以同时得到多个模数转换值,进一步得到多个LSB,因此,可以成倍地提高随机数的生成速度。

可选的,在本发明上述实施例中,步骤S106,将多个最低有效位进行合成,生成随机数包括如下任意一种方式:

步骤S1062,将多个最低有效位按照采样顺序进行排序,并对排序后的多个最低有效位按照第一预定数量的最低有效位为一组分别进行组合,得到随机数。

具体的,上述步骤S1062中的第一预定数量可以是8,但不仅限于此,本发明对此不做具体限定。

在一种可选的方案中,采样完成后,可以根据本轮采样得到的所有LSB,合成最终的随机数,合成算法可以根据需要灵活变化,最简单的方法可以是将所有的LSB按照采样的先后顺序排列,组成若干个较长的二进制数,例如,在进行120次采样之后,可以将120个LSB按照采样先后顺序排列,然后每8个LSB组成1个字节,总共合成15个字节,这15个字节就是最终得到的随机数结果,生成的随机数的分布方式为平均分布,分布范围是0至2N-1。

步骤S1064,对多个最低有效位按照第二预定数量的最低有效位为一组进行组合,得到多个字,并将多个字进行CRC校验值,得到随机数。

具体的,上述步骤S1064中的第二预定数量可以是16,但不仅限于此,本发明对此不做具体限定。

在一种可选的方案中,可以将每16次采样的LSB组成一个字(Word),然后计算所有Word的CRC校验值,得到随机数,例如,在进行120次采样之后,可以将每16个LSB组成一个Word,然后计算所有Word的CRC校验值,得到一个0~65535范围内的随机数。

步骤S1066,将多个最低有效位按照预定规则确定新的排列顺序,并对新排序后的多个最低有效位按照第三预定数量的最低有效位为一组进行组合,得到随机数。

具体的,上述步骤S1066中的第三预定数量可以是8,但不仅限于此,本发明对此不做具体限定。

在一种可选的方案中,可以将采集到的所有LSB按照一定的规则将顺序打乱,然后再每8个LSB合成一个字节(byte),得到一组byte,从而得到最终的随机数结果,生成的随机数的分布方式为平均分布,分布范围是0至2N-1。

此处需要说明的是,上述方法阐明了得到一个随机数的具体步骤,这方法需要一定的周期,周期长度与随机数位数、主控芯片处理能力、ADC最高采样率等因素有关。当一个随机数已经生成,可以立即开始下一个随机数的计算。

下面结合图2,对本发明一种优选的实施例进行详细说明。

如图2所示,该方法可以包括如下步骤:

步骤S21,开始生成随机数。

步骤S22,计算下次采样通道和下次采样时间。

可选的,可以用前几次AD采样的LSB作为参数,经过特定的算法计算,得到下一次AD采样的采样通道和采样时间。

步骤S23,进行AD采样,得到AD转换值。

可选的,当采样时刻到临时,可以使用ADC对计算好的采样通道进行采样,得到AD转换值。

步骤S24,截取AD转换值的LSB。

可选的,可以提取本次AD转换值的LSB,并进行存储。

步骤S25,判断采样次数是否超过预设采样次数。

可选的,在本次采样结束之后,可以判断本次采样之后的累加采样次数是否超过预设采样次数,如果超过,则结束本轮采样,进入步骤S26;如果未超过,则继续进行采样,进入步骤S22。

步骤S26,使用所有的LSB合成随机数。

可选的,采样完成之后,可以根据本轮采样得到的所有LSB,合成最终的随机数。

通过上述步骤S21至步骤S26,可以使用嵌入式系统自带的ADC进行采样,每次采样的采样通道和采样时刻是随机的,取多次AD采样的LSB合成随机数,从而实现嵌入式系统可以得到高质量的真随机数,而且不需要增加任何硬件开支。

此处需要说明的是,对于无法使用AD采样的嵌入式系统,本发明上述实施例所提供的方案不适用。

实施例2

根据本发明实施例,提供了一种随机数的生成装置的装置实施例。

图3是根据本发明实施例的一种随机数的生成装置的示意图,如图3所示,该装置包括:

采样单元31,用于按照预定的采样次数对至少一个模数转换器的模数转换结果进行采样,得到多个模数转换值。

具体的,上述采样单元31中的预定的采样次数可以根据需要生成的随机数位数来确定,例如,当需要生成一个15字节的随机数时,那么采样次数应该是15*8=120次。不同的嵌入式系统中包含有不同个数的模数转换器(Analog to Digital Converter,ADC)。

提取单元33,用于提取每个模数转换值的最低有效位,得到多个最低有效位。

具体的,上述提取单元33中的最低有效位可以是嵌入式系统中ADC模数转换过程中的最低有效位(LSB),每个LSB是一个位(bit),代表0或者1。由于随机噪声等原因,ADC进行模数转换时,转换结果的最低几位总是会波动的,尤其是LSB值总在0与1之间不停地切换。这个现象在10位以上的ADC使用过程中表现的很明显,并且精度越高的ADC,LSB越不稳定。

生成单元35,用于合成多个最低有效位,生成随机数。

在一种可选的方案中,在需要生成随机数的时候,可以根据随机数位数,使用嵌入式系统自带的ADC进行采样,得到多个AD采样结果,即模数转换值,可以截取每个AD采样结果的LSB,根据采样得到的所有LSB,合成最终的随机数。例如,当需要生成15字节的随机数时,可以使用嵌入式系统自带的ADC进行120次采样,得到120个模数转换值,截取每个模数转换值的LSB,并将截取到的120个LSB进行合成,得到随机数。

通过本发明上述实施例,可以按照预定的采样次数对至少一个模数转换器的模数转换结果进行采样,得到多个模数转换值,提取每个模数转换值的最低有效位,得到多个最低有效位,合成多个最低有效位,生成随机数。容易注意到的是,由于随机数由多个模数转换值的最低有效位合成,而最低有效位具有不确定性,综合了噪声、环境温度、采样和转换误差等多种因素,并且模数转换值通过模数转换器进行采样得到,从而实现嵌入式系统中生成随机数,解决了现有技术中的随机数的生成方法过程复杂,且随机数的质量低的技术问题。因此,通过本发明上述实施例提供的方案,可以生成高质量的随机数,而且不需要增加硬件电路,降低硬件成本,简化生成随机数的过程。

可选的,在本发明上述实施例中,上述采样单元包括:

确定模块,用于确定每一次进行采样的采样通道和采样时刻。

可选的,在本发明上述实施例中,相邻的两次采样均切换为不同的采样通道,和/或,随机控制任意两个相邻的采样时刻的间隔。

具体的,绝大多数嵌入式系统都自带10位以上的ADC,并且不止有1个AD采样通道。为了进一步增加LSB的不确定性,可以通过随机切换采样通道,随机控制采样间隔,从而进一步提高随机数的质量。

采样模块,用于当每一次采样时刻到达时,通过对应的采用通道对至少一个模数转换器的模数转换结果进行采样,得到每一次采样时刻下的模数转换值。

在一种可选的方案中,在每一次通过ADC进行采样之前,可以首先确定每一次进行采样的采样通道和采样时刻,在每一次采样过程中,当确定的采样时刻到临时,可以使用ADC对确定的采样通道进行采样,得到每一次采样的模数转换值。

可选的,在本发明上述实施例中,上述确定模块和上述采样模块包括:

确定子模块,用于确定本次进行采样的采样通道和采样时刻。

第一采样子模块,用于当本次采样的采样时刻到达时,通过本次采样的采样通道对至少一个模数转换器的模数转换结果进行采样,得到本次采样的采样时刻下的模数转换值。

在一种可选的方案中,可以首先计算本次采样的采样通道和采样时刻,开始采样,在本次采样的过程中,等待采样时刻到临,当采样时刻到临时,可以使用ADC对计算好的采样通道进行采样,得到本次采样结果。

此处需要说明的是,对于ADC精度10位以上的嵌入式系统,单一AD采样通道的LSB已经可以作为很好的随机种子,在对随机数结果没有苛刻要求的情况下,采样通道和采样间隔时间的计算过程可以省略。此时嵌入式系统无需专为生成随机数而进行AD采样,LSB在系统自身AD采样的同时得到。例如嵌入式系统本来就需要不断地采集环境温度,那么采集环境温度时的AD值的LSB也可以用于计算随机数。

判断子模块,用于获取本次采样后累加的采样次数,并判断累加的采样次数是否超过预定的采样次数。

具体的,上述判断子模块中的本次采样后累加的采样次数可以是本次采样之前的总采样次数加本次采样次数,例如,本次采样之前的总采样次数为5次,则本次采样后累加的采样次数为6次。

保存子模块,用于如果累加的采样次数未超过预定的采样次数,则保存本次采样的采样时刻下的模数转换值,并确定下一次进行采样的采样通道和采样时刻。

在一种可选的方案中,在获取到当前总采样次数之后,可以判断总采样次数是否超过预先设定的采样次数,即总采样次数是否超过随机数位数,如果总采样次数未超过预先设定的采样次数,则说明采样次数不足,需要继续进行采样,则计算下一次采样的采样通道和采样时刻,开始下一次采样。

第二采样子模块,用于当下一次采样的采样时刻到达时,通过下一次采样的采用通道对至少一个模数转换器的模数转换结果进行采样,得到下一次采样的采样时刻下的模数转换值。

在一种可选的方案中,在下一次采样的过程中,等待采样时刻到临,当采样时刻到临时,可以使用ADC对计算好的采样通道进行采样,得到下一次采样结果。

可选的,在本发明上述实施例中,上述确定模块和上述采样模块还包括:

停止子模块,用于如果累加的采样次数超过预定的采样次数,则停止进行下一次采样。

在一种可选的方案中,在获取到当前总采样次数之后,可以判断总采样次数是否超过预先设定的采样次数,即总采样次数是否超过随机数位数,如果总采样次数超过预先设定的采样次数,则说明采样次数足够,不需要继续进行采样,则停止采样。

可选的,在本发明上述实施例中,上述确定模块包括:

获取子模块,用于获取每一次采样之前预定次数采集到的预设个数的模数转换值。

具体的,上述获取子模块中的预定次数可以根据需求进行设定,例如,预定次数可以是6次。预定次数与预设个数相同,例如,6次采集到6个模数转换值。如果是初次采样,则预设个数的模数转换值可以全为0,或者全为1。

提取子模块,用于提取每个模数转换值的最低有效位,得到预设个数的最低有效位。

计算子模块,用于根据预设个数的最低有效位,采用预设算法,计算得到每一次进行采样的采样通道和采样时刻。

具体的,上述计算子模块中的预设算法可以根据随机数的精度要求灵活变化。

在一种可选的方案中,在每一次采样之前,可以将前几次模数转换值的LSB作为参数,经过特定的算法计算,得到每一次的AD采样的采样通道和采样时刻。例如,可以将前6次模数转换值的LSB作为参数,计算得到下一次的采样通道和采样时刻。

可选的,在本发明上述实施例中,上述计算子模块包括:

组合重子模块,用于将预设个数的最低有效位进行组合,得到二进制数。

在一种可选的方案中,可以将预设个数的LSB进行组合,组合成一个二进制数X1,例如,可以将前6次模数转换值的LSB进行组合,组合成一个6位的二进制数X1,X1的取值范围可以是0~63。

第一运算子模块,用于将二进制数与采样通道数进行取余运算,得到第一余数,并将第一余数作为每一次采样的采样通道的通道号。

具体的,上述第一运算子模块中的采样通道数可以是嵌入式系统所包含的采样通道的总数量,其中,二进制数的最大值需要大于采样通道的总数量。

计算子模块,用于计算二进制数与第一预设值的差值,以及采样通道数与第二预设值的差值,得到第一差值和第二差值。

具体的,上述计算子模块中的第一预设值可以是1,第二预设值可以是2。

第二运算子模块,用于将第一差值与第二差值进行取余运算,得到第二余数,并将第二余数作为每一次采样的采样时刻。

在一种可选的方案中,嵌入式系统的AD采样通道数为N,可以用X1除以采样通道数N,得到余数X2,将X2作为下次采样的采样通道号。可以将(X1-1)%(N-2)得到的X3作为下次采样的等待时间,即采样时刻,单位为ms。

可选的,在本发明上述实施例中,在嵌入式系统包含多个模数转换器的情况下,采样单元还用于同时对多个模数转换器的模数转换结果进行采样,同时得到每个模数转换器的至少一个模数转换值。

在一种可选的方案中,当嵌入式系统包含有多个ADC时,可以同时使用多个ADC进行采样,从而可以同时得到多个模数转换值,进一步得到多个LSB,因此,可以成倍地提高随机数的生成速度。

可选的,在本发明上述实施例中,上述生成单元包括如下任意一个模块:

第一组合模块,用于将多个最低有效位按照采样顺序进行排序,并对排序后的多个最低有效位按照第一预定数量的最低有效位为一组分别进行组合,得到随机数。

具体的,上述第一组合模块中的第一预定数量可以是8,但不仅限于此,本发明对此不做具体限定。

在一种可选的方案中,采样完成后,可以根据本轮采样得到的所有LSB,合成最终的随机数,合成算法可以根据需要灵活变化,最简单的方法可以是将所有的LSB按照采样的先后顺序排列,组成若干个较长的二进制数,例如,在进行120次采样之后,可以将120个LSB按照采样先后顺序排列,然后每8个LSB组成1个字节,总共合成15个字节,这15个字节就是最终得到的随机数结果,生成的随机数的分布方式为平均分布,分布范围是0至2N-1。

第二组合模块,用于对多个最低有效位按照第二预定数量的最低有效位为一组进行组合,得到多个字,并将多个字进行CRC校验值,得到随机数。

具体的,上述第二组合模块中的第二预定数量可以是16,但不仅限于此,本发明对此不做具体限定。

在一种可选的方案中,可以将每16次采样的LSB组成一个字(Word),然后计算所有Word的CRC校验值,得到随机数,例如,在进行120次采样之后,可以将每16个LSB组成一个Word,然后计算所有Word的CRC校验值,得到一个0~65535范围内的随机数。

第三组合模块,用于将多个最低有效位按照预定规则确定新的排列顺序,并对新排序后的多个最低有效位按照第三预定数量的最低有效位为一组进行组合,得到随机数。

具体的,上述第三组合模块中的第三预定数量可以是8,但不仅限于此,本发明对此不做具体限定。

在一种可选的方案中,可以将采集到的所有LSB按照一定的规则将顺序打乱,然后再每8个LSB合成一个字节(byte),得到一组byte,从而得到最终的随机数结果,生成的随机数的分布方式为平均分布,分布范围是0至2N-1。

此处需要说明的是,上述方法阐明了得到一个随机数的具体步骤,这方法需要一定的周期,周期长度与随机数位数、主控芯片处理能力、ADC最高采样率等因素有关。当一个随机数已经生成,可以立即开始下一个随机数的计算。

实施例3

根据本发明实施例,提供了一种随机数的生成系统的系统实施例。

图4是根据本发明实施例的一种随机数的生成系统的示意图,如图4所示,该系统包括:

至少一个模数转换器41,用于生成模数转换结果。

处理器43,与至少一个模数转换器41连接,用于按照预定的采样次数对模数转换结果进行采样,得到多个模数转换值,提取每个模数转换值的最低有效位,得到多个最低有效位,并将多个最低有效位进行合成,生成随机数。

具体的,上述处理器43中的预定的采样次数可以根据需要生成的随机数位数来确定,例如,当需要生成一个15字节的随机数时,那么采样次数应该是15*8=120次。不同的嵌入式系统中包含有不同个数的模数转换器(Analog to Digital Converter,ADC)。最低有效位可以是嵌入式系统中ADC模数转换过程中的最低有效位(LSB),每个LSB是一个位(bit),代表0或者1。由于随机噪声等原因,ADC进行模数转换时,转换结果的最低几位总是会波动的,尤其是LSB值总在0与1之间不停地切换。这个现象在10位以上的ADC使用过程中表现的很明显,并且精度越高的ADC,LSB越不稳定。

在一种可选的方案中,在需要生成随机数的时候,可以根据随机数位数,使用嵌入式系统自带的ADC进行采样,得到多个AD采样结果,即模数转换值,可以截取每个AD采样结果的LSB,根据采样得到的所有LSB,合成最终的随机数。例如,当需要生成15字节的随机数时,可以使用嵌入式系统自带的ADC进行120次采样,得到120个模数转换值,截取每个模数转换值的LSB,并将截取到的120个LSB进行合成,得到随机数。

通过本发明上述实施例,可以按照预定的采样次数对至少一个模数转换器的模数转换结果进行采样,得到多个模数转换值,提取每个模数转换值的最低有效位,得到多个最低有效位,合成多个最低有效位,生成随机数。容易注意到的是,由于随机数由多个模数转换值的最低有效位合成,而最低有效位具有不确定性,综合了噪声、环境温度、采样和转换误差等多种因素,并且模数转换值通过模数转换器进行采样得到,从而实现嵌入式系统中生成随机数,解决了现有技术中的随机数的生成方法过程复杂,且随机数的质量低的技术问题。因此,通过本发明上述实施例提供的方案,可以生成高质量的随机数,而且不需要增加硬件电路,降低硬件成本,简化生成随机数的过程。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的方法实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1