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

i i “LP_Tesi” — 2013/10/17 — 18:27 — page 141 — #141 i 6.2. IMPLEMENTAZIONE i 141 Algoritmo 6.14 Ultime regole di Scoring 1 2 3 4 5 rule r6 (step==0); result.deq(); req.wset(makeRequest(True, waddr, result.first().dir)); waddr<=waddr+1; endrule 6 7 8 9 10 11 12 13 14 15 16 17 rule r7 (step==2); result.deq(); req.wset(makeRequest(True, waddr, result.first().dir)); if(addr==size*size-2) begin addr<=addr+1; waddr<=waddr+1; end else if(addr==size*size-1) begin addr<=0; step<=0; top<=gap; left<=gap; west<=0; fin<=1; col<=0; row<=0; ramNorth.clear(); waddr<=0; end endrule al modulo successivo (Tracking) il segnale di partenza attraverso il registro fin che viene settato a 1. A questo punto tutte le regole che calcolano gli elementi della matrice delle direzioni sono state descritte, per aver una visione più chiara e sapere su quali elementi della BRAM agiscono basta guardare Fig:6.2.1. Questa ripartizione è stata necessaria per non far diminuire la frequenza di lavoro, frequenza che sarebbe notevolmente diminuita volendo scrivere una unica regola in grado di trattare tutti i casi utilizzando vari blocchi if-else. In fine vengono presentati i metodi del modulo in Alg:6.15. Si può notare quindi il metodo put che calcola il mismatch fra due pixel come descritto nell’algoritmo, ovvero, viene sottratto il valore delle componenti del pixel di sinistra con i valori delle componenti del pixel di destra, le differenze così calcolate possono essere sommate fra loro e sottratte in fine al valore 255 per ottenere un valore alto quando le componenti sono simili e basso quando queste sono differenti. Il metodo finish non fa altro che scatenare la condizione di sparo in una regola del modulo Processor in modo che tracking cominci il suo lavoro, è ovvio notare che il metodo può essere chiamato solo nel caso in cui la fase di scrittura i i i i