Generatore FPGA del frattale di Mandelbrot.

Generatore FPGA del frattale di Mandelbrot.

L’insieme di Mandelbrot o frattale di Mandelbrot è uno dei frattali più popolari, conosciuto anche al di fuori dell’ambito matematico per le suggestive immagini multicolori che ne sono state divulgate. Nonostante la semplicità della definizione, l’insieme ha una forma complessa il cui contorno è un frattale. Progettare una FPGA che simuli il frattale di Mandelbrot.

L’insieme prende il nome da Benoît Mandelbrot, colui che nel suo libro Les Objects Fractals: Forme, Hazard et Dimension (1975) rese popolari i frattali. L’insieme di Mandelbrot si colloca nel campo della dinamica complessa, il cui studio inizia con i matematici francesi Pierre Fatou e Gaston Julia all’inizio del XX secolo. I primi disegni dell’insieme di Mandelbrot risalgono al 1978 e fanno parte di uno studio di Robert Brooks e Peter Matelski riguardante i gruppi kleiniani; è Benoît Mandelbrot nel 1980 a visualizzare per primo la forma che oggi porta il suo nome e a riconoscere che si tratta di un frattale.

Un immagine viene scansionata in tante righe orizzontali parallele tra loro quante ne sono necessarie per comporla. Maggiore sarà il numero di queste linee orizzontali e maggiore sarà la qualità dell’immagine. Il numero di tali righe è un parametro caratterizzante il sistema televisivo in esame. Nella scheda Spartan 3E500 Starter kit il connettore VGA è collegato direttamente alla FGPA che, ovviamente, ha solo uscite digitali.

Per questo è possibile soltanto utilizzare 8 colori differenti (riportati nella tabella seguente) in quando i tre connettori dei tre colori possono essere collegati a massa o al potenziale alto. Per regolare il potenziale in uscita dalla FGPA con quello necessario in base al protocollo di comunicazione, sulla scheda sono state predisposte delle resistenze che collegano i pin della FGPA a quelli del connettore. Per utilizzare la porta VGA sono stati introdotti due contatori che permettono di generare le forme d’onda necessarie per la sincronia orizzontale e verticale, come viene indicato nel data-sheet della SPARTAN 3E Starter Kit. Il pennello elettronico non percorre soltanto la superficie del monitor visibile, ma esegue un percorso su una area maggiore. In pratica per realizzare un immagine 640×480 pixel vengono prodotte 521 righe orizzontali lunghe 800 pixel:

* nelle prime 31 righe sulle uscite per i tre colori ci deve essere il colore nero cioè "000". Queste trenta righe sono sopra la zona visibile del monitor

* dalla 32-esima riga fino alla 511-esima, quando il contatore orizzontale è tra 143 e 783, vengono visualizzati i colori, sulle uscite dedicate, uno ogni 40 ns rappresentanti i 640 pixel orizzontali; quando il contatore è al di fuori dall’intervallo indicato precedentemente, si è al di fuori della zona visibile e quindi sulle uscite per i tre colori ci deve essere il colore nero cioè "000".

* infine, nelle righe rimanenti, come nelle prime 31, le uscite vengono messe a "000". Per avere una flessibilità maggiore è stata introdotta una memoria all’interno del modulo che permette di memorizzare i colori per 6 righe consecutive.

frattale

Il modulo legge ciclicamente sempre dalla stessa memoria; quando vengono pubblicate sul monitor le sei righe memorizzate, un bit di controllo segnala l’evento e un altro modulo dall’esterno provvederà alla scrittura delle successive sei righe. La memoria permette all’algoritmo di poter effettuare calcoli ad una velocità diversa da quella della visualizzazione dei colori del monitor; ciò è importante in quanto l’algoritmo ha una velocità di calcolo dei colori dei vari pixel aleatoria e molto diversa dato che ogni colore è la rappresentazione del numero di iterazioni effettuate dall’algoritmo. Ovviamente all’aumentare del numero di iterazioni aumenta il tempo di calcolo del colore di un singolo pixel.

2 Comments

  1. Emanuele 26 luglio 2011
  2. mdipaolo 26 luglio 2011

Leave a Reply