Numeri casuali

Sezione dedicata al linguaggio di descrizione hardware per logiche programmabili

Numeri casuali

Postby flz47655 » 28 Jun 2012, 23:47

Ciao a tutti,
Ho letto su internet che ci sono veramente molti metodi per generare numeri casuali su FPGA, voi cosa utilizzate in applicazioni pratiche?

Io sarei tentato di leggere tramite un ADC del rumore AWGN generato tramite un diodo zener e poi amplificato anche se mi sembra molto costosa come soluzione..

PS: Volevo realizzare un generatore di numeri casuali per implementare successivamente un semplice algoritmo genetico, probabilmente anche un generatore pseudo-casuale andrebbe bene..
flz47655
 
Posts: 639
Joined: 19 Jan 2012, 21:16

Re: Numeri casuali

Postby deluca » 29 Jun 2012, 08:56

flz47655 wrote:Ciao a tutti,
Ho letto su internet che ci sono veramente molti metodi per generare numeri casuali su FPGA, voi cosa utilizzate in applicazioni pratiche?
Io sarei tentato di leggere tramite un ADC del rumore AWGN generato tramite un diodo zener e poi amplificato anche se mi sembra molto costosa come soluzione..
PS: Volevo realizzare un generatore di numeri casuali per implementare successivamente un semplice algoritmo genetico, probabilmente anche un generatore pseudo-casuale andrebbe bene..


Le soluzioni che abbiamo implementato in alcuni progetti che richiedevano generazione di numeri casuali con un elevato bitrate sono state dettate da fattori importanti
1) Limiti
2) Risoluzione
3) Bitrate
4) Tipologia del random number generator : Entropy Source, Harvesting Mechanism o Post-Processing e quindi TRGN o PRNG.
5) e... certamente altro

Il metodo da te indicato è abbastanza recente e si riferisce a quello ideato da Baggini e Bucci ma secondo me non è molto performante ed
è molto laborioso in termini pratici.
Se vuoi realizzare un true random generator number potresti vedere il metodo che sfrutta la cosidetta "Jitter Signal Exhibits Gaussian Distribution" o altri metodi (certo anche se più complessi in termini computazionali).

ciao
Ciao
Il mio sito: http://www.delucagiovanni.com ......e la chat: chat/
User avatar
deluca
Site Admin
 
Posts: 1104
Joined: 19 Jun 2011, 10:44
Location: 95123 - Catania (Italy)

Re: Numeri casuali

Postby flz47655 » 30 Jun 2012, 08:32

Ho visto teoricamente la tecnica "Jitter Signal Exhibits Gaussian Distribution", in pratica si creano diverse catene di anelli NOT e si presenta il segnale "mixato" all'ingresso di un flip flop D, si sfrutta la casualità del Jitter per generare numeri casuali.

A dir la verità non mi convince molto, si creano gradienti di temperatura elevati con gli anelli NOT e non vorrei che la vita della FPGA ne risentisse.. (non è farina del mio sacco, perlomeno mi sembra che così aveva detto legacy in una precedente discussione sui Ring NOT)

Per iniziare da quello che ho capito leggendo sul web forse è più indicato (e soprattutto meno laborioso) il metodo "linear feedback shift register", anche se è pseudo-casuale per il momento andrebbe bene..

Il metodo che avevo inizialmente in mente ha una parte analogica che è meglio evitare per il momento, magari vedrò successivamente, sopratutto perché da alcune prove preliminari il diodo deve essere alimentato a 12+ volt per avere un buon rumore.

Ciao e grazie
flz47655
 
Posts: 639
Joined: 19 Jan 2012, 21:16

Re: Numeri casuali

Postby flz47655 » 30 Jun 2012, 11:23

Ho implementato un generatore basato su LFSR partendo dalla pagina di Wikipedia anche se non ho ben capito ogni quanto si ripete la sequenza generata, mi sono basato su seed e taps già studiati dal punto di vista matematico (da altri, non da me) e per il momento ignoro la dimostrazione che c'è sotto :D

La frequenza teorica (fmax) che sono riuscito a raggiungere (secondo Quartus) è veramente molto elevata (oltre 1 GHz su Cyclone IV) anche se il limite è il toggle rate dei pin che massimo può essere 250 MHz, per aggirare questo limite ho allora implementato un piccolo convertitore seriale-parallelo a 32 bit per sfruttare il parallelismo di più pin in contemporanea. Tramite questa soluzione riesco comunque a raggiungere il massimo toggle rate per ogni pin.

Nota: diciamo che pensare come raggiungere la massima frequenza è fatto solamente per "esercizio", praticamente la mia attrezzatura è costituita da un oscilloscopio con 100 MHz di banda analogica)

Ecco lo schema a blocchi

Image

Magari più avanti pubblicherò anche il codice VHDL, per il momento mi devo fermare qui ;) il tempo è tiranno

Ciao e grazie a tutti
flz47655
 
Posts: 639
Joined: 19 Jan 2012, 21:16


Return to VHDL x FPGA

Who is online

Users browsing this forum: No registered users and 4 guests

cron