Génération de nombre aléatoire sur Spartan-3E
J'ai besoin de générer des nombres pseudo-aléatoires pour mon algorithme génétique sur un Spartan-3E FPGA et je veux la mettre en œuvre en verilog: pourriez-vous me donner des conseils sur ce?
source d'informationauteur akosch
Vous devez vous connecter pour publier un commentaire.
Généralement que vous souhaitez utiliser le L'IEEE.math_real uniforme de la fonction
Mais faire un peu de recherche sur les générateurs de nombres pseudo aléatoires (PRNGs) et vous trouverez de nombreuses variantes qui sont simples LFSR's - qui semblent remarquablement similaire à CRC générateurs.
Voici plusieurs ressources si vous souhaitez annuler votre propre à partir de l'existant, de travail PRNGs:
http://www.opencores.org/?do=project&oms=systemc_rng
http://verificationguild.com/modules.php?name=Downloads&d_op=viewdownload&cid=3
Voici un CRC VHDL générateur de code:
http://www.easics.be/webtools/crctool
Bien sûr, le générateur aléatoire par Adam n'est pas synthesizable! Vous devez créer explicitement un LFSR.
Exemple suivant pourrait vous aider. C'est une 8-bits maximale LFSR
Vous ai déjà quelques bonnes réponses, mais je me contenterai de souligner l'canonique guide de LFSRs dans le Fpga est ici:
http://www.xilinx.com/support/documentation/application_notes/xapp052.pdf
C'est un peu Xilinx spécifiques dans des lieux (qui est OK pour votre FPGA 🙂 mais les principes sont transférables à d'autres.
Il y a un outil en ligne qui peut générer Verilog ou VHDL code pour un générateur de nombres pseudo aléatoires. C'est sur OutputLogic.com
Je suis d'accord avec le LFSR. J'ai fait une avant et elle est utilisée pour le chiffrement.
Le pointeur au-dessus de OpenCores a un fichier dans le verilog dossier appelé: rng.v
Je l'ai utilisé dans un Spartan-3AN et il fonctionne très bien. Mon code utilisé le générateur de nombre aléatoire pour sélectionner au hasard un PWM après, j'ai programmé la partie et il a couvert tous les sélectionnable PWMs.