如何在FPGA中生成伪随机数?

7
如何在FPGA中生成伪随机数?

3
对于那些在 FPGA 中寻找随机数的人来说,他们将更容易地找到这个问题。因此,我不会投票将其关闭为重复问题。 - AlbertoPL
也许那些在stackoverflow上寻找FPGA的人想了解一个特定的网站:逻辑设计提案 - woliveirajr
哦,很好它被问到这里而不是在这个Area 51网站。它已经被删除了 ;) - VP.
4个回答

7

5

有一份关于在FPGA中高效生成伪随机数序列的优秀Xilinx应用指南。它是XAPP052


4
如果不是用于加密或其他智能对手应用(例如赌博),我会使用线性反馈移位寄存器方法。它只使用异或和移位,因此在硬件实现方面非常简单。

1

正如其他人所说,LFSR可以在FPGA中用于伪随机数。这是一个最大长度为32位的LFSR的VHDL实现。

process(clk)

  -- maximal length 32-bit xnor LFSR based on xilinx app note XAPP210
  function lfsr32(x : std_logic_vector(31 downto 0)) return std_logic_vector is
  begin
    return x(30 downto 0) & (x(0) xnor x(1) xnor x(21) xnor x(31));
  end function;

begin
  if rising_edge(clk) then
    if rst='1' then
      pseudo_rand <= (others => '0');
    else
      pseudo_rand <= lfsr32(psuedo_rand);
    end if;
  end if;
end process;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接