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

i i “LP_Tesi” — 2011/9/9 — 21:20 — page 14 — #14 i i brevissimo. Ed è qui che si trova la forza di questo linguaggio, l’apprendimento del Verilog (o VHDL) è spesso lento per colpa della sua rigidità, e spesso molte condizioni che in BSV vengono risolte in poco tempo e con qualche riga di codice, in Verilog richiedono molto tempo per essere codificate. Il codice originale scritto dai ricercatori dell’università di Kingston è stato fornito in Matlab, questo a indicare quanto il progetto sia ancora in fase di sviluppo e preproduzione. All’esecuzione il programma risulta lento e poco ottimizzato (a causa delle necessità di debug funzionale) e si è quindi deciso che questa versione fosse utilizzata solo a scopo di confronto tra i risultati raggiunti in BSV e quelli originali. I Tool utilizzati durante la durata del progetto sono diversi, vanno appunto da Matlab per la comprensione del codice originale, Bluespec per la simulazione del codice BSV e la compilazione in Verilog, Quartus II (sintetizzatore Altera) per la sintesi del codice Verilog in NetList per l’applicazione su FPGA. La presente tesi si occuperà di analizzare gli algoritmi e i sourcecode (è stata scritta anche una versione software-only in C) in modo da spiegare con precisione come è stato effettuato il passaggio da un linguaggio di programmazione per dispositivi General Purpose ad un linguaggio per la descrizione Hardware. Il presente lavoro di tesi è suddiviso in 6 capitoli. Nel capitolo 1 si fornisce una panoramica sui sistemi embedded, si evidenziano le peculiarità che distinguono tali sistemi da quelli general purpose, descrivendo come gli obiettivi e vincoli di progetto si riflettono sulle scelte architetturali. Si descrive in particolare l’architettura di un FPGA, il modo in cui viene programmato e una breve panoramica su cosa significhi programmare in HDL. Nel capitolo 2 si affronta lo studio del linguaggio BSV, linguaggio che consente di ridefinire il flusso di lavoro per un sistema programmato in hardware. Nel capitolo 3 si comincia a descrivere in pseudo-codice l’algoritmo utilizzato per risolvere il problema delle corrispondenze grazie all’ausilio di schemi di semplice consultazione. Nel capitolo 4 il codice fornito dai ricercatori dell’università di