Tesi Robotica Un co-processore per Stereo-Matching: Architettura | Página 59
i
i
“LP_Tesi” — 2011/9/9 — 21:20 — page 59 — #59
i
i
59
metodo di put, che serve a gestire l’input, e un metodo get che serve a gestire
l’output. In particolare questi due metodi sono il fulcro dell’asincronia creata
nel circuito, sarà facile trovare quindi regole di fire come: fout.notEmpty o
fout.notFull. I quali garantiscono che un metodo non può entrare in esecuzione
se alla fifo a cui è associato non è vuota (get) o non piena (put). Esempio di
come possono presentarsi, esempio tratto da Loader.bsv:
Algoritmo 4.7 Metodi
1
2
3
method Action start() if(storeRam==False);
storeRam<=True;
endmethod: start
4
5
6
7
method Action restart() if(!readLine);
readLine<=True;
endmethod: restart
8
9
10
11
method Pixel get() = fin.first;
method Bool getFinNotEmpty() = fin.notEmpty;
method Bool getReadLine() = readLine;
Analisi del codice
Principalmente il codice può essere diviso in due parti, abbiamo:
• moduli di implementazione;
– Top, Processor, Raster, Scoring, Disparity.
• moduli per il test.
– Tb, Loader.
In questo modo è stato possibile rendere agile sia il processo di testing che quello
di sintesi. Sono due i file che contengono i moduli principali, Top.bsv e Tb.bsv.
Mentre il primo espone delle porte di input ed output all’esterno, il secondo non
ne ha bisogno dato che si tratta di un modulo per la gestione delle simulazioni.
Inoltre facendo questa divisione si traccia un segno netto tra ciò che deve e
i
i
i
i