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