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