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