Ho bisogno di generare numeri pseudocasuali per il mio algoritmo genetico su un FPGA Spartan-3E e voglio implementarlo in verilog: potresti darmi qualche suggerimento su questo?Generazione di numeri casuali su Spartan-3E
risposta
In genere devi usare la funzione IEEE.math_real uniforme
use IEEE.math_real.all;
procedure UNIFORM (variable Seed1,Seed2:inout integer; variable X:out real);
Ma fare un po 'piccolo di una ricerca sulla pseudo numeri casuali generatori (PRNG) e troverete molte varianti che sono semplici s LFSR' - che sembra molto simile ai generatori CRC.
Qui ci sono diverse risorse se si desidera ripristinare la propria partenza dal esistenti, PRNGs di lavoro:
http://www.opencores.org/?do=project&who=systemc_rng
http://verificationguild.com/modules.php?name=Downloads&d_op=viewdownload&cid=3
Ecco un generatore di codice CRC VHDL:
Ovviamente il generatore casuale di Adam non è sintetizzabile! Devi creare esplicitamente un LFSR.
L'esempio seguente potrebbe aiutare. Si tratta di un 8-bit LFSR massimale
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;
Il puntatore sopra per OpenCores ha un file nella cartella denominata Verilog: rng.v
ho usato in uno Spartan-3AN e funziona benissimo. Il mio codice utilizzava il generatore di numeri casuali per selezionare un PWM casuale dopo che ho programmato la parte e copriva tutti i PWM selezionabili.
C'è uno strumento online che può generare codice Verilog o VHDL per un generatore di numeri pseudo-casuali. È il OutputLogic.com
Sono d'accordo con l'LFSR. Ne ho fatto uno prima ed è usato per la crittografia.
Penso che sia importante notare qui che gli LFSR sono utili per la generazione di numeri pseudo-casuali, ma sono inappropriati per l'uso in schemi di crittografia reali. – wjl
Hai già alcune buone risposte, ma mi limiterò a segnalare la guida canonica per LFSR in FPGA è qui:
http://www.xilinx.com/support/documentation/application_notes/xapp052.pdf
E 'una Xilinx specifica po' in posti (che è OK per il tuo FPGA :) ma i principi sono trasferibili ad altri.
- 1. Deterministica generazione di numeri casuali su sistemi
- 2. Generazione contemporanea di numeri casuali
- 3. Spark - Generazione di numeri casuali
- 4. Generazione di numeri casuali di grandi dimensioni
- 5. Generazione di numeri casuali diversi tra OS
- 6. Generazione di numeri casuali senza ripetizioni
- 7. Generazione di numeri casuali molto grandi java
- 8. generazione di numeri casuali senza ripetizione consecutiva
- 9. Generazione casuale di numeri casuali in R
- 10. Generazione di numeri casuali uniformemente distribuiti
- 11. Generazione di numeri casuali in applicazioni MVC
- 12. I semi vicini nella generazione di numeri casuali possono fornire numeri casuali simili?
- 13. Generazione di numeri casuali con awk nella shell BASH
- 14. Generazione di due sequenze indipendenti di numeri casuali (C++)
- 15. Generazione di numeri casuali nell'intervallo con una distribuzione di probabilità
- 16. Generazione sequenziale di numeri casuali distribuiti in Ruby 1.9.2
- 17. Differenza tra generazione di numeri casuali C++ e Python
- 18. Generazione di numeri casuali da -n a n in C
- 19. srand (time (0)) e generazione di numeri casuali
- 20. Generazione di numeri casuali nell'obiettivo C per iPhone SDK
- 21. Generazione parallela di numeri casuali con Akka Futures
- 22. Generazione di numeri casuali con probabilità ponderate in python
- 23. Generazione di numeri casuali senza utilizzare operazioni bit
- 24. Generazione di numeri interi casuali con probabilità date
- 25. Python's pythonto library per generazione di numeri casuali vs os.urandom
- 26. C++ 11 numeri casuali
- 27. generazione di enumerazioni casuali
- 28. speciale di numeri casuali
- 29. Generazione di parole casuali in Java?
- 30. Generazione di miniature casuali con PHP + FFMPEG
L'OP voleva verilog - ma il tuo suggerimento di guardare gli LFSR è corretto. Solo per mio interesse, la procedura UNIFORM è sintetizzabile? A cosa sintetizza? – Marty