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