Tesi Robotica Un co-processore per Stereo-Matching: Architettura | Page 75
i
i
“LP_Tesi” — 2011/9/9 — 21:20 — page 75 — #75
i
4.4. MODULO RASTER
i
75
Gli altri due metodi (r:8-9 Alg4.18) permettono di testare e prelevare valori
dalla FIFO di uscita.
L’implementazione del meccanismo per la ripetizione programmata degli elementi si trova all’interno della regola r_1 (r:1 Alg4.19). La condizione di fire
diventa vera solo se la FIFO di uscita è non piena, cio è possiamo continuare a
inserire elementi, inoltre una delle seguenti condizioni deve essere vera:
Algoritmo 4.19 Raster: rule
1
2
3
4
5
6
7
8
9
10
rule r_1 (((start || step==1) || preStep==1) && fout.notFull);
if(start || step==1) begin
raster.b.put(False, addrr, Pixel{red:0,green:0,blue:0});
if(rip==raff) begin
addrr<=incr(addrr); rip<=0;
if(addrr==bound) loop<=incr(loop);
end else rip<=incr(rip);
if((raff==bound && addrr==bound && rip==bound) || (raff==0 &&
loop==bound && addrr==bound)) step<=0;
else step<=1;
end
11
12
13
14
15
if(step==1 || preStep==1) begin
fout.enq(raster.b.read()); preStep<=step;
end
endrule: r_1
start==True Indica semplicemente che la lettura può cominciare, una volta che
la scrittura è finita il valore diventa False, ma grazie al primo if (riga
2) il flag successivo, step, viene messo a True permettendo alla regola
di continuare a essere eseguita;
step==1
Porta avanti la lettura anche quando il flag start è stato rimesso a
False dalla scrittura, inoltre, dato che è stata effettuata una richiesta
di lettura (riga 3) è possibile eseguire una lettura effettiva dalla RAM
raster (riga 13);
preStep==1 Aggiornato da una regola separata, permette di sapere sempre
il valore precedente di step, questo stratagemma è stato adottato per evitare che l’ultimo elemento non venga trasmesso, ciò ren-
i
i
i
i