Pergunta

Eu preciso gerar números pseudo-aleatórios para o meu algoritmo genético em um Spartan-3E FPGA e eu quero implementá-lo em Verilog: você poderia me dar qualquer ponteiros sobre este

?
Foi útil?

Solução

Normalmente, você usaria o IEEE.math_real função uniforme

use IEEE.math_real.all;
procedure UNIFORM (variable Seed1,Seed2:inout integer; variable X:out real);

Mas fazer um pouco uma pesquisa sobre geradores de números pseudo aleatórios (PRNGs) e você vai encontrar muitas variantes que são simples LFSR 's -. que se parecem muito semelhantes aos geradores CRC

Aqui estão vários recursos se você desejar construir sua própria partida a partir do existente, PRNGs de trabalho:

http://www.opencores.org/?do=project&who=systemc_rng

http://verificationguild.com/modules.php?name=Downloads&d_op = viewdownload & cid = 3

Aqui está um gerador de código CRC VHDL:

http://www.easics.be/webtools/crctool

Outras dicas

Claro que o gerador aleatório por Adam não é synthesizable! Você tem que criar explicitamente um LFSR .

Seguindo o exemplo pode ajudar. É um 8-bit máxima LFSR

module lfsr(input clk, reset, en, output reg [7:0] q);
  always @(posedge clk or posedge reset) begin
    if (reset)
      q <= 8'd1; // can be anything except zero
    else if (en)
      q <= {q[6:0], q[7] ^ q[5] ^ q[4] ^ q[3]}; // polynomial for maximal LFSR
  end
endmodule;

Você já tem algumas boas respostas, mas eu só vou apontar o guia canônica para LFSR em FPGAs está aqui:

http://www.xilinx.com/support/documentation/application_notes /xapp052.pdf

É um pouco Xilinx específica em lugares (que é OK para o seu FPGA :) mas os princípios são transferíveis para outros.

Não é uma ferramenta online que pode gerar código Verilog ou VHDL para um gerador de números pseudo-aleatórios. Está na OutputLogic.com

Eu concordo com o LFSR. Eu fiz um antes e é usada para criptografia.

O ponteiro acima para OpenCores tem um arquivo na pasta verilog chamada: rng.v

Eu usei-o em um Spartan-3AN e ele funciona muito bem. Meu código usado o gerador de números aleatórios para selecionar um PWM aleatória depois de eu programada a parte e cobriu todos os PWMs selecionáveis.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top