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

时间:2009-07-14 14:11:20

标签: random fpga

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

4 个答案:

答案 0 :(得分:6)

这已经涵盖(我会去LFSR): Random number generation on Spartan-3E

答案 1 :(得分:4)

关于在FPGA中有效生成伪随机数序列的Xilinx应用笔记非常出色。这是XAPP052

答案 2 :(得分:3)

如果不是用于加密或其他具有智能对手的应用程序(例如赌博),我会使用linear feedback shift register方法。

它只使用exclusive或shift,因此在硬件中实现非常简单。

答案 3 :(得分:0)

正如其他人所说,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;