Pregunta

necesito para generar números pseudo-aleatorios para mi algoritmo genético en un Spartan-3E FPGA y quiero ponerlo en práctica en Verilog:? Que me pudiera dar alguna punteros en este

¿Fue útil?

Solución

Por lo general tendrá que utilizar el href="http://www.csee.umbc.edu/help/VHDL/stdpkg.html" rel="nofollow noreferrer"> IEEE.math_real función uniforme

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

Sin embargo, hacer un poquito de una investigación sobre los generadores de números aleatorios (seudo PRNGs) y encontrará muchas variantes que son simples LFSR 's -., que se ven muy similares a los generadores CRC

Aquí hay varios recursos Si desea rodar su propia partida existentes, PRNG de trabajo:

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

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

Esto es un generador de código CRC VHDL:

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

Otros consejos

Por supuesto, el generador aleatorio de Adam no está sintetizable! Hay que crear explícitamente un LFSR .

Siguiendo el ejemplo podría ayudar. Es un LFSR máxima de 8 bits

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;

Ya tienes algunas buenas respuestas, pero sólo voy a señalar la guía canónica a LFSR en FPGAs está aquí:

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

Es un poco Xilinx específica en lugares (lo cual está bien para su FPGA :) pero los principios son transferibles a otros.

Hay una herramienta en línea que puede generar Verilog o VHDL para un generador de números pseudo-aleatorios. Está en OutputLogic.com

Estoy de acuerdo con el LFSR. He hecho una antes y se utiliza para el cifrado.

El puntero por encima de OpenCores tiene un archivo en la carpeta llamada Verilog: rng.v

Lo he usado en un Spartan-3AN y funciona muy bien. Mi código utiliza el generador de números aleatorios para seleccionar un PWM azar después programé la pieza y se cubrieron todos los PWM seleccionables.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top