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

i i “LP_Tesi” — 2011/9/9 — 21:20 — page 75 — #75 i 4.4. MODULO RASTER i 75 Gli altri due metodi (r:8-9 Alg4.18) permettono di testare e prelevare valori dalla FIFO di uscita. L’implementazione del meccanismo per la ripetizione programmata degli elementi si trova all’interno della regola r_1 (r:1 Alg4.19). La condizione di fire diventa vera solo se la FIFO di uscita è non piena, cio è possiamo continuare a inserire elementi, inoltre una delle seguenti condizioni deve essere vera: Algoritmo 4.19 Raster: rule 1 2 3 4 5 6 7 8 9 10 rule r_1 (((start || step==1) || preStep==1) && fout.notFull); if(start || step==1) begin raster.b.put(False, addrr, Pixel{red:0,green:0,blue:0}); if(rip==raff) begin addrr<=incr(addrr); rip<=0; if(addrr==bound) loop<=incr(loop); end else rip<=incr(rip); if((raff==bound && addrr==bound && rip==bound) || (raff==0 && loop==bound && addrr==bound)) step<=0; else step<=1; end 11 12 13 14 15 if(step==1 || preStep==1) begin fout.enq(raster.b.read()); preStep<=step; end endrule: r_1 start==True Indica semplicemente che la lettura può cominciare, una volta che la scrittura è finita il valore diventa False, ma grazie al primo if (riga 2) il flag successivo, step, viene messo a True permettendo alla regola di continuare a essere eseguita; step==1 Porta avanti la lettura anche quando il flag start è stato rimesso a False dalla scrittura, inoltre, dato che è stata effettuata una richiesta di lettura (riga 3) è possibile eseguire una lettura effettiva dalla RAM raster (riga 13); preStep==1 Aggiornato da una regola separata, permette di sapere sempre il valore precedente di step, questo stratagemma è stato adottato per evitare che l’ultimo elemento non venga trasmesso, ciò ren- i i i i