Tesi Robotica Un co-processore per Stereo-Matching: Architettura | Page 73
i
i
“LP_Tesi” — 2011/9/9 — 21:20 — page 73 — #73
i
4.4. MODULO RASTER
i
73
∗ ...
∗ Passo i: il rasterL invia l’i-esimo pixel presente in memoria n
volte, durante questo periodo il resterR invia tutti i pixel che ha a
disposizione, in questo modo si hanno in uscita le coppie di pixel
di indici (i,1),(i,2),...,(i,n), arrivato all’n-esima trasmissione il
rasterL sposta la testina di lettura in avanti;
∗ ...
∗ Passo n: il rasterL invia l’n-esimo pixel presente in memoria n
volte, durante questo periodo il resterR invia tutti i pixel che ha a
disposizione, in questo modo si hanno in uscita le coppie di pixel
di indici (n,1),(n,2),...,(n,n), arrivato all’n-esima trasmissione i
raster si fermano avendo inviato tutte le possibili combinazioni
di pixel.
– Il tutto viene reso asincrono grazie alla FIFO fout che gestisce eventuali congestioni dovute alla mole di dati inviati.
Implementazione
Come detto prima, se pur la struttura del Raster attraverso la rappresentazione
in sottomoduli possa sembrare semplice, bisogna pensare a quanto è complicata
la logica dei procedimenti che vengono discussi nel paragrafo della descrizione.
Come si può notare nel codice del modulo Processor (r:4-5 Alg4.14) il costruttore
dei raster richiede un parametro che servirà a discriminare fra il raster di destra
e quello di sinistra. Passando ora alla descrizione delle variabili abbiamo:
bound: la variabile width contiene le dimensioni dell’immagine ed è definita
nel package Struct, questa variabile ha lo scopo di porre un limite ad alcuni cicli
presenti;
raster: RAM per memorizzare completamente una riga dell’immagine in elementi costituiti da pixel.
fout: FIFO per mantenere il modulo asincrono;
addrw,addrr: rispettivamente indirizzo di scrittura e lettura della RAM raster;
start: flag per indicare quando la scrittura è cominciata e che quindi la lettura
può partire;
i
i
i
i