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