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

i i “LP_Tesi” — 2011/9/9 — 21:20 — page 82 — #82 i 4.5. MODULO SCORING i 82 Algoritmo 4.22 Scoring: method II 1 2 3 4 5 6 7 8 [...]let maxi = max(cNorthWest,cNorth,cWest); if(cNorthWest == maxi) diag.b.put(True, addr, 1); else diag.b.put(True, addr, 0); if(cNorth == maxi) gapNorth.b.put(True, addr, 1); else gapNorth.b.put(True, addr, 0); if(cWest == maxi) gapWest.b.put(True, addr, 1); else gapWest.b.put(True, addr, 0); score.b.put(True, addr, maxi); 9 10 11 12 13 14 15 west<=maxi; if (addr==(size*size-1)) step<=2; else begin step<=0; addr<=addr+1; end endmethod: put nelle matrici, la funziona di max restituisce il massimo fra i tre valori calcolati durante la fase di individuazione del caso. Dato che potrebbero esserci più elementi di valore massimo, ovvero che danno allineamento migliore, sono stati posizionati tre if (r:2 Alg:4.22) per aggiornare in modo corretto il valore delle matrici. Dato che il punteggio massimo trovato è anche il punteggio che viene assegnato alla cella attuale, questo viene salvato in west (r:10 Alg:4.22) in modo tale che al ciclo di clock successivo il valore precedente risulti effettivamente quello della casella a sinistra. Come accennato poco fa, durante questa fase avviene una sorta di ping-pong fra la regola preRead e il metodo put. Step parte da 1, al primo passo quindi abbiamo l’esecuzione di put, non appena questo è concluso step viene settato a 0 abilitando così la regola di preRead, come si può ben vedere la regola consiste di due parti distinte, la loro esecuzione avviene solamente quando addr ≥ size, questo onde evitare la lettura di indirizzi delle RAM inconsistenti. Passando direttamente al caso in cui addr > size (r:8 Alg:4.23) possiamo notare due richieste di lettura della RAM score allo scopo di conoscere i punteggi della casella di Diag (addr − size − 1) e quella di North (addr − size), successivamente vengono fatte anche due richieste di lettura alle RAM dei gap. Una volta terminata, la regola setta step a 1 facendo ricominciare il ciclo. Questa parte di creazione della matrice dei punteggi termina solo quando l’indi- i i i i