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