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