Random 用VHDL实现真随机数发生器

Random 用VHDL实现真随机数发生器,random,numbers,Random,Numbers,我被要求用VHDL设计一个真正的随机发生器。经过很多努力,我只能设计一个PRNG而不是TRNG。有可能生成完全随机的数字吗???请在这方面给我建议。我真的不懂 没有“真”随机数生成器。不过,这是我最喜欢的伪随机生成器之一,用VHDL实现会很有趣 此外,请参见: 我能想到的唯一能让你“更好”随机性的方法就是写一个文件,然后读一个文件。主机PC上的调度程序可能有足够的熵与之关联,从而导致这些操作所需的时间发生一些变化,您可以将该时间用作算法种子的密钥。没有“真正”的随机数生成器。不过,这是我最喜欢

我被要求用VHDL设计一个真正的随机发生器。经过很多努力,我只能设计一个PRNG而不是TRNG。有可能生成完全随机的数字吗???请在这方面给我建议。我真的不懂

没有“真”随机数生成器。不过,这是我最喜欢的伪随机生成器之一,用VHDL实现会很有趣

此外,请参见:


我能想到的唯一能让你“更好”随机性的方法就是写一个文件,然后读一个文件。主机PC上的调度程序可能有足够的熵与之关联,从而导致这些操作所需的时间发生一些变化,您可以将该时间用作算法种子的密钥。

没有“真正”的随机数生成器。不过,这是我最喜欢的伪随机生成器之一,用VHDL实现会很有趣

此外,请参见:


我能想到的唯一能让你“更好”随机性的方法就是写一个文件,然后读一个文件。主机PC上的调度程序可能有足够的熵与之关联,从而导致这些操作所需的时间发生变化,您可以将该时间用作算法种子的密钥。

您无法从FPGA/VHDL中获得真正的随机数生成器。你能期望的最好的是一个h/w PRNG,它可以从某个地方的寄存器中读取

您可以选择实现其中一种PRNG算法。然后,您必须信任算法设计器,然后再信任您使用的VHDL实现(您自己的或您从其他人那里获得的)。您可以从以下内容开始:


您无法从FPGA/VHDL中获得真正的随机数生成器。你能期望的最好的是一个h/w PRNG,它可以从某个地方的寄存器中读取

您可以选择实现其中一种PRNG算法。然后,您必须信任算法设计器,然后再信任您使用的VHDL实现(您自己的或您从其他人那里获得的)。您可以从以下内容开始:


既然您询问的是VHDL,那么您需要设计专用硬件。现在,如果您以数字逻辑永远不应该采用的方式操作硬件,您可能会得到某种“真实”的随机行为。

例如,如果您设计了一个带有D型触发器的电路,当其数据输入改变其电平时,该D型触发器被计时,则输出变为亚稳态,即在其再次稳定为0或1之前的一段时间内(在0和1之间)是未定义的。这需要多长时间,除其他外取决于电噪声,例如随机噪声。我可以想象你可以用这些效果来制作一个随机生成器。

既然你在问VHDL,你就想设计专用硬件。现在,如果您以数字逻辑永远不应该采用的方式操作硬件,您可能会得到某种“真实”的随机行为。

例如,如果您设计了一个带有D型触发器的电路,当其数据输入改变其电平时,该D型触发器被计时,则输出变为亚稳态,即在其再次稳定为0或1之前的一段时间内(在0和1之间)是未定义的。这需要多长时间,除其他外取决于电噪声,例如随机噪声。我可以想象,你可以使用这些效果来制作一个随机生成器。

谢谢大家的回复。我想使用一个寄存器来保存不同的值,并在每次重复开始时使用它。这个想法是提供不同的种子值,这样我就可以得到随机值。由于我是VHDL编码新手,我不确定这是否有效,但如果我能做到这一点,请在我这边试一试。欢迎对此提出任何建议。

谢谢大家的回复。我正在考虑使用一个包含不同值的寄存器,并在每次重复开始时使用它。这个想法是提供不同的种子值,这样我就可以得到随机值。由于我是VHDL编码新手,我不确定这是否有效,但如果我能做到这一点,请在我这边试一试。欢迎对此提出任何建议。

与大多数其他答案的主张相反,有几个用于FPGA的TRNG设计主要基于环形振荡器或自定时环,参见


与大多数其他答案的主张相反,有几种T用于FPGA的RNG设计,主要基于环形振荡器或自定时环,参见


不,一个数字永远不会是真正随机的,这只是一个我们能走多远的问题。不,一个数字永远不会是真正随机的,这只是一个我们能走多远的问题。谢谢大家的回复。我想用一个寄存器来保存不同的值,每次重复开始时都要记录。这个想法是提供不同的种子值,这样我就可以得到随机值。由于我是VHDL编码新手,我不确定这是否有效,但如果我能做到这一点,请在我这边试一试。欢迎对此提出任何建议。好的,但你的问题是关于“真”随机数的,正如其他人已经指出的那样,原则上不能通过标准数字逻辑生成。我的建议可以使用商品数字逻辑生成真正的随机值(当然有一定的分布),尽管有点滥用。谢谢大家的回复。我想使用一个寄存器保存不同的值,并在每次重复开始时使用它。这个想法是提供不同的种子值,这样我就可以得到随机值。由于我是VHDL编码新手,我不确定这是否有效,但如果我能做到这一点,请在我这边试一试。欢迎对此提出任何建议。好的,但你的问题是关于“真”随机数的,正如其他人已经指出的那样,原则上不能通过标准数字逻辑生成。我建议的方法可以生成真正的随机值(当然是使用