Tesi Robotica Analisi, progettazione e implementazione... | Page 168

i i “LP_Tesi” — 2013/10/17 — 18:27 — page 168 — #168 i 168 i 7. TERZA RELEASE è utile mentre le altre no, al secondo ciclo invece ne sono utili due e così via, il ciclo for alla riga 3 serve proprio a ignorare questi risultati inutili. Il resto della regola calcola il valore della cella presa in considerazione come il massimo fra tre elementi e ne mette il risultato nella coda result. in più inserisce il valore trovato nella FIFO ramNorth[i] in modo che il riempitore successivo ne possa usufruire al prossimo ciclo di clock. Il caso diagonale viene invece trattato dalle regole r3 (Alg:7.9) e le regole waste, la tecnica è pressoché identica alla precedente ma con un unica differenza, ora non si ha a disposizione la cella di north e quindi viene eseguita la ricerca del massimo fra due elementi e zero. Tuttavia qui sorge un problema, osservando nuovamente Fig:7.1.2 è possibile osservare come mano a mano che si raggiunge la fine sono sempre di meno le coppie di pixel utilizzabili, questo perché come spiegato prima ogni riga è più lunga di quella precedente, ed è proprio a questo che servono le rule waste, infatti tali regole buttano tutte le coppie che devono Algoritmo 7.9 rule r3 1 2 3 4 5 6 7 8 9 10 11 12 13 for(Integer i=0; isize && addr==row+fromInteger(i*2) && col> fromInteger(i)); delta[i].deq(); BitScore cNorth=0; BitScore cWest; if(gapWest[i]!=WEST) cWest = west[i] + gap; else cWest = west[i] + egap;