Tesi Robotica Un co-processore per Stereo-Matching: Architettura | Page 96
i
i
“LP_Tesi” — 2011/9/9 — 21:20 — page 96 — #96
i
4.8. MODULO LOADER
i
96
readLine: flag che indica la completa lettura di una riga;
Le variabili non nominate sono di semplice supporto (es. contatori, strutture
vuote...);
Il primo metodo ad essere chiamato e start (r:1 Alg:4.31) questo non fa altro che
settare la variabile storeRam a True, permettendo così l’inizio della scrittura. Il
metodo restart (r:5 Alg:4.31) invece entra in gioco solamente quando il modulo
Top dice che si può ricominciare a leggere dalla RAM che contiene l’immagine.
Algoritmo 4.31 Loader: method
1
2
3
method Action start() if(storeRam==False);
storeRam<=True;
endmethod: start
4
5
6
7
method Action restart() if(!readLine);
readLine<=True;
endmethod: restart
Venendo alla parte più consistente delle rule, possiamo osservare una separazione, ci sono regole che si occupano della lettura da file e altre che si occupano
della lettura dalla RAM ram, di quelle che si occupano della lettura da file abbiamo inizialmente setUp (r:1 Alg:4.32), la prima regola ad essere attivata. Apre
il file in cui è contenuta l’immagine, in base al parametro passato al costruttore
del modulo Loader si decide se aprire l’immagine di sinistra o quella di destra.
Successivamente entra in azione writeOnMemory (r:14 Alg:4.32) che leggendo
tre caratteri alla volta, le componenti RGB di ogni pixel, e facendone il cast a
8 bit, crea vari pixel che andrà successivamente a scrivere nella memoria (r:22
Alg:4.32). Una volta arrivati all’ultimo indirizzo disponibile il processo termina
lasciando in RAM l’intera immagine scritta.
Non appena il primo pixel viene scritto in RAM è possibile iniziare la lettura
della RAM ram senza perdere tempo ad aspettare la scrittura completa. Come
al solito bisogna distinguere la richiesta di lettura dalla lettura effettiva. Nella
regola requestOfRead (r:1 Alg:4.33) vengono effettuate le richieste fino a quando
non si raggiunge il limite destro della riga, cosa che viene segnalata dal registro
modulus, a questo punto il flag di readLine diventa False segnalando la fine
di questo processo. In contemporanea alla richiesta, ma shiftato di un ciclo
di clock, c’è la lettura effettiva, questa viene attuata nella regola read (r:10
i
i
i
i