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

i i “LP_Tesi” — 2011/9/9 — 21:20 — page 79 — #79 i 4.5. MODULO SCORING i 79 problema, in Matlab è possibile assegnare a piacere altezza e larghezza delle matrici, anche in BSV è possibile fare lo stesso discorso con le RAM. Il problema sta nell’indirizzamento, nel codice originale si istanziano matrici di dimensione: (n + 1) ∗ (n + 1)         Width= 4        gN 1 gN 2 gN 3 gN 4 gW1 x11 x21 x31 x41 gW2 x12 x22 x32 x42 gW3 x13 x23 x33 x43 gW4 x14 x24 x34 x44 Questo per consentire di tenere traccia di una prima riga e di una prima colonna che rappresentano le situazioni di gap esteso (gapWest e gapNorth) ai bordi dell’immagine. Mettiamoci ora nel caso semplice in cui n è potenza di 2, otteniamo che le dimensioni dell’indirizzo non possono essere scelte semplicemente pari a: • lg2 (n ∗ n) questo per colpa della riga/colonna in più che vanno inevitabilmente ad ingrandire lo spazio necessario al registro degli indirizzi. Esempio: supponiamo n=32, le dimensioni della matrice sarebbero: (32 + 1) ∗ (32 + 1) = 1089 se usassimo un registro per l’indirizzamento di dimensioni 10 bit (come suggerito da •), tutte le locazioni dopo la 1023 non sarebbero indirizzabili, la soluzione più semplice sarebbe quella di usare un registro più grande con il conseguente spreco di indirizzi, durante lo sviluppo del progetto è stato però scelto di abolire la prima riga e la prima colonna, i quali contenuti possono essere calcolati al momento della richiesta senza il minimo sforzo. Un altro vantaggio è costituito dalle dimensioni della memoria occupata, con quest’ultimo approccio diminuisce di una grandezza pari a 2n. Ritornando al discorso dell’ottenere automaticamente i punteggi della prima riga/colonna senza memorizzarle: i i i i