Tesi Robotica Un co-processore per Stereo-Matching: Architettura | Page 23

i i “LP_Tesi” — 2011/9/9 — 21:20 — page 23 — #23 i 1.2. FPGA i 23 Ogni step richiede almeno un ciclo di clock, questo fa capire quanto tempo venga sprecato per eseguire un operazione facile come l’addizione, per non parlare di moltiplicazioni e divisioni. A questo punto bisogna chiedersi se per caso ci sia un modo per ottimizzare il tutto. In un normale PC questo non è possibile data l’architettura molto rigida. Per ottimizzare la semplice operazione di addizione è quindi necessario creare una nuova architettura ottimizzata, e la più semplice di quelle che vengono in mente comporta l’utilizzo di un circuito adder con n ingressi per ogni bit del numero a, n per il numero b e n uscite per quello c, o più semplicemente: Figura 1.2.3: Adder Sulla porta a (un bus seriale con n fili) abbiamo il primo numero espresso in binario, mentre sulla porta b (sempre un bus seriale con n fili) il secondo, al successivo ciclo di clock basterà leggere l’uscita c per sapere il valore della somma, il tutto viene fatto appunto in un singolo ciclo di clock risparmiando così un sacco di tempo. E questo è un altro punto a favore di questo tipo di programmazione, ovvero, non essere vincolati dall’architettura del sistema, l’architettura infatti viene addirittura descritta, tutti i task possono essere eseguiti nel minor spreco di tempo, ottimizzando così il rapporto: efficienza su frequenza di funzionamento. 1.2.2 Flusso di Sviluppo Il più semplice flusso di sviluppo per un sistema basato su FPGA è mostrato in Fig:2.0.1. Per facilitare ulteriormente la lettura, saranno usati i termini inseriti nella documentazione di Xilinx. La parte sinistra del diagramma rappresenta il raffinamento e il processo di programmazione, nel quale un sistema viene trasformato i i i i