Tesi Robotica Un co-processore per Stereo-Matching: Architettura | Page 70

i i “LP_Tesi” — 2011/9/9 — 21:20 — page 70 — #70 i 4.3. MODULO PROCESSOR i 70 – PORT 3 : come detto prima, ogni processor può inviare un segnale di restart, quest’ultimo diventa attivo solo quando il modulo disparity avrà calcolato tutta la riga della mappa di disparità entrando così nello stato di “pronto alla ricezione” (non per niente il segnale si chiama getReady), solamente quando tutta la computazione sarà finita si potrà ricominciare a scrivere nei raster. Implementazione Il modulo processor non fa altro che istanziare i sottomoduli e interconnetterli fra di loro, come si può ben notare abbiamo 2 Raster (rasterL, rasterR), 1 Scoring (scoring) e 1 Disparity (disparity), l’unica eccezione sono le variabili raff1 e raff2 che servono a discriminare il Raster di destra da quello di sinistra, il motivo dei loro valori verrà affrontato successivamente, durante lo studio del modulo Raster. Algoritmo 4.14 Processor: storage 1 2 BitC raff1 = fromInteger(width-1); BitC raff2 = 0; 3 4 5 6 7 Raster_Ifc rasterL <- mkRaster(raff1); Raster_Ifc rasterR <- mkRaster(raff2); Scoring_Ifc scoring <- mkScoring(); Disparity_Ifc disparity <- mkDisparity(); I method non fanno altro che gestire le connessioni, possiamo vedere ad esempio il metodo put (r:1 Alg:4.15), questo non fa altro che prendere in input due pixel omologhi, passati dal Top, e metterli nei due raster, la trasmissione si interrompe automaticamente quando sono arrivati un numero di pixel esattamente uguale alla larghezza dell’immagine. I metodi deque (r:5 Alg:4.15) e get (r:9 Alg:4.15), vengono chiamati contemporaneamente dal modulo Top nel ciclo for di rule enque (r:13-14 Alg:4.13). Questo allo scopo di leggere il primo pixel della FIFO di uscita del disparity e successivamente toglierlo per avanzare nella lettura. I restanti metodi servono solo a segnalare che il processor sia pronto e la FIFO disponibile alla lettura nel caso sia notEmpty. i i i i