Tesi Robotica Analisi, progettazione e implementazione... | Page 133
i
i
“LP_Tesi” — 2013/10/17 — 18:27 — page 133 — #133
i
6.2. IMPLEMENTAZIONE
i
133
Algoritmo 6.9 Metodi del modulo Processor
1
2
3
4
5
6
method Action put (Pixel left, Pixel right ) if (! full ) ;
if (cnt==fromInteger(width−1)) begin
cnt<=0; full<=True;
end else cnt<=cnt+1;
rasterL.put( left ) ; rasterR.put(right) ;
endmethod
7
8
9
10
11
12
13
14
15
method ActionValue#(DispColor) get if(full && !ready);
if (cnt!=fromInteger(width−1)) cnt<=cnt+1;
else begin
cnt<=0; ready<=True;
end
let x <− disparity.get.get;
return x;
endmethod
16
17
method Bool isFull = full ;
usare il modulo mkConnection dato che bisogna fare il get di due moduli in uno
solo. A questo punto tutte le regole successive sono dichiarate conflict free, il
compilatore non è in grado di inferire questa mutua esclusività calcolando che
alcuni registri come preelement e element siano scritti contemporaneamente
dalle regole reqS, reqT e reset non sapendo che invece queste possano sparare
solo in distinte fasi della computazione. La regola reqS prende dal modulo
scoring una direzione con il metodo reqDir e la stipa nel registro element,
quando questo registro è stato riempito con 16 direzioni da 2 bit può essere
finalmente scritto nella BRAM cache, questo meccanismo è gestito con una
serie di shift successivi. Ad un certo punto la fase di riempimento della BRAM
delle direzioni finirà facendo diventare vero il segnale del metodo finish del
modulo scoring e attivando così la fase di Backtrack nella regola r_2. Una
volta che il Backtrack è partito entra in azione la regola reqT che genera richieste
di lettura dalla matrice delle direzioni. Tale richiesta verrà soddisfatta al ciclo
di clock successivo facendo sparare la regola getta che si occuperà anche di
estrarre la parola di 2 bit all’interno di quella da 32. A questo punto quando i
registri ready e full diventeranno veri contemporaneamente la computazione
sarà finita imponendo il reset.
Ovviamente tutto questo non sarebbe possibile senza l’utilizzo di metodi per
i
i
i
i