Generierung von Zufallszahlen auf Spartan-3E
Frage
ich brauche Pseudozufallszahlen für meinen genetischen Algorithmus auf einem Spartan-3E FPGA zu erzeugen, und ich will es in Verilog implementieren: könnten Sie mir irgendwelche Hinweise auf diese
Lösung
Normalerweise würden Sie die IEEE.math_real einheitliche Funktion
use IEEE.math_real.all;
procedure UNIFORM (variable Seed1,Seed2:inout integer; variable X:out real);
Aber tun ein kleines bisschen eine Forschung auf Pseudozufallszahlengeneratoren (PRNGs) und Sie werden viele Varianten finden, die einfach LFSR 's -., die bemerkenswert ähnlich aussehen CRC Generatoren
Hier sind einige Ressourcen, wenn Sie Ihre eigene Start rollen von bestehenden Arbeits PRNGs:
http://www.opencores.org/?do=project&who=systemc_rng
http://verificationguild.com/modules.php?name=Downloads&d_op = viewdownload & cid = 3
Hier ist ein CRC VHDL-Code-Generator:
Andere Tipps
Natürlich ist der Zufallsgenerator von Adam ist nicht synthetisierbaren! Sie müssen explizit eine LFSR .
Das folgende Beispiel könnte helfen. Es ist ein 8-Bit maximal 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;
Sie haben schon ein paar gute Antworten, aber ich werde in FPGAs nur darauf hinweisen die kanonischen Leitfaden für LFSRs ist hier:
http://www.xilinx.com/support/documentation/application_notes /xapp052.pdf
Es ist ein bisschen Xilinx spezifisch an Orten (die FPGA-OK ist :) aber die Prinzipien sind übertragbar auf andere.
Es ist ein Online-Tool, das Verilog oder VHDL-Code für einen Pseudo-Zufallszahlengenerator erzeugen kann. Es ist auf OutputLogic.com
Ich bin mit der LFSR. Ich habe eine, die vor und es wird für die Verschlüsselung verwendet.
Der Zeiger oben auf Opencores hat eine Datei im Verilog-Ordner mit dem Namen: rng.v
Ich habe es in einem Spartan-3AN verwendet und es funktioniert super. Mein Code verwendet, um den Zufallszahlengenerator eine zufällige PWM auszuwählen, nachdem ich das Teil programmiert und es bedeckt alle wählbaren PWMs.