Tesi Robotica Un co-processore per Stereo-Matching: Architettura | Seite 56
i
i
“LP_Tesi” — 2011/9/9 — 21:20 — page 56 — #56
i
i
56
del C++, implica che se un modulo implementa un interfaccia, il modulo stesso
deve dare un’implementazione di ognuno dei metodi presenti. Il meccanismo è
identico anche per quanto riguarda l’invocazione dei suddetti metodi, il quale
sarà del tipo:
nome_modulo.nome_metodo
In quasi tutte le interfacce sono stati dichiarati i metodi di put e get per consentire la gestione di input e output. Ecco un esempio di una tipica interfaccia
(tratta da Processor.bsv):
Algoritmo 4.3 Interfaccia da implementare
1
2
3
4
5
6
7
interface Processor_Ifc;
method Action put (Pixel left, Pixel right);
method Action deque;
method DispAddr get();
method Bool getReady;
method Bool getNotEmpty;
endinterface: Processor_Ifc
Storage programma
Come detto prima possiamo distinguere gli storage del programma in tre categorie, in genere le dichiarazioni sono molto simili, tranne per il tipo di assegnazione iniziale. Possiamo osservare l’operatore “<-” (detto istanziatore)
e l’operatore “=” che assegna un certo valore alle variabili. Mentre il primo
operatore istanzia effettivamente un modulo, quale per esempio una FIFOF, il
secondo crea un etichetta per un certo valore, disponibile in ogni momento e in
qualsiasi istante del ciclo di clock attuale. Un discorso a parte sono i registri,
i quali valori sono resi disponibili al ciclo di clock successivo rispetto a quello
della modifica. Ecco un esempio, proveniente da Scoring.bsv, comprendente le
tre tipologie appena descritte (i commenti sono stati eliminati per evidenziare
le tipologie):
i
i
i
i