Как сгенерировать псевдослучайное число в FPGA? - PullRequest
6 голосов
/ 14 июля 2009

Как сгенерировать псевдослучайное число в FPGA?

Ответы [ 4 ]

6 голосов
/ 14 июля 2009

Это было покрыто (я бы пошел на LFSR): Генерация случайных чисел на Spartan-3E

4 голосов
/ 20 июля 2009

Существует отличное замечание по применению Xilinx по эффективной генерации псевдослучайных числовых последовательностей в FPGA. Это XAPP052 .

3 голосов
/ 14 июля 2009

Если бы не криптография или другие приложения с интеллектуальным противником (например, азартные игры), я бы использовал линейный регистр сдвига с обратной связью подход.

Используется только исключение или и shift, поэтому его очень просто реализовать на аппаратном уровне.

0 голосов
/ 18 сентября 2013

Как уже говорили другие, LFSR могут использоваться для псевдослучайных чисел в FPGA. Вот реализация VHDL максимальной длины 32-битной LFSR.

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;
...