Tesi Robotica Analisi, progettazione e implementazione... | Page 104

i i “LP_Tesi” — 2013/10/17 — 18:27 — page 104 — #104 i 104 i 5. PRIMA RELEASE ciò che non deve essere sintetizzato. Il codice è scritto in modo che a finire effettivamente “stampato” sull’FPGA ci siano solo moduli che appartengono al progetto principale, cosa importante dato che Tb e Loader contengono system call di BSV per la gestione di lettura e scrittura dei file. File che ovviamente non possono essere presenti nell’architettura in cui si andrà ad eseguire la sintesi. 5.1 Package Struct Prima di poter iniziare a descrivere l’implementazione è necessario chiarire il contenuto del package Struct. Al suo interno sono contenute molte informazioni utili, come definizione di tipo, dichiarazione di valori, path dei file, strutture dati... Modificando i valori delle variabili è possibile definire alcuni parametri riguardanti le dimensioni delle memorie RAM e le dimensioni del disegno finale su FPGA. In Alg:5.1 si può notare un tipico assegnamento corretto. I primi due valori modificabili riguardano le dimensioni delle immagini trattate [riga 1-2], in width deve essere assegnata la dimensioni larghezza, in height quelle di altezza. Successivamente [riga 3-6] vengono definiti tipi di dato le cui dimensioni dipendono dai valori precedentemente scelti. Sia width = x, con x > 0 e sia heigh = y, con y > 0, vengono definiti i tipi:  BitC   BitR BitF    BitHF ⇐ Bit#(a) con a = ⇐ Bit#(b) con b = ⇐ Bit#(c) con c = ⇐ Bit#(d) con d = lg2 (x) lg2 (y) lg2 (x ∗ x) lg2 (x ∗ y) I Registri vengono definiti così di conseguenza [riga 13-16]. Altre variabili importanti da settare riguardano l’aspetto della profondità di parallelizzazione [riga 8]. Il numero scelto deciderà quanti moduli Processor verranno istanziati nel modulo Top. A questo punto bisogna stare attenti però, quanti più processor istanziamo tanta più memoria RAM e spazio dell’FPGA verranno occupati. Prima di decidere questo numero bisogna occuparsi di trovare il limite massimo supportato dall’FPGA che si ha a disposizione. Come prima, i valori successivi alla definizione della profondità di parallelizzazione [riga 9,10,11] dipendono strettamente dalle scelte fatte in precedenza. i i i i