Tesi Robotica Analisi, progettazione e implementazione... | Page 139
i
i
“LP_Tesi” — 2013/10/17 — 18:27 — page 139 — #139
i
6.2. IMPLEMENTAZIONE
i
139
l’indirizzo 0, questo perché nella prima riga è presente un solo elemento e al
passo successivo bisogna andare per forza alla riga successiva. La regola esegue i normali passi dell’algoritmo, ovvero prima controlla se ci si trova in una
situazione di gap semplice o gap esteso, controllando se nel passo successivo ci
sia stato gap, successivamente calcola il valore da dare alla cella attualmente
considerata assegnandogli il massimo fra il massimo parziale calcolato nel ciclo
di clock precedente e memorizzato in maxu e il valore della casella a sinistra,
contenuto in cWest. A questo punto la regola ricalcola il massimo parziale fra
la cella a nord west e la cella a nord aggiornando il registro maxu, il valore di
west viene quindi aggiornato al valore del massimo perché nel ciclo successivo
il valore appena calcolato sarà a sinistra di quello che si andrà a considerare
costituendo appunto il west.
La regola r3 spara solo nel caso in cui l’indirizzo si trovi sulla diagonale, in questo
caso infatti la casella di nord non è presente e bisogna fare attenzione a quali
valori vengono utilizzati, per quanto riguarda il resto si comporta esattamente
come r2.
A questo punto possono essere presentate le altre tre regole che calcolano i
punteggi all’interno della matrice (Alg:6.13). La rule r4 si occupa di tutte le
caselle precedenti alla diagonale, questo caso deve essere trattato a parte perché
nella cella successiva non è presente il valore di north e infatti il registro maxu
viene semplicemente settato al valore di north west. La rule r5 invece riempie
tutte le altre celle della matrice, applicando letteralmente l’algoritmo. In fine
la regola rlast come appunto dice il nome spara nel momento in cui l’indirizzo
è arrivato all’ultima casella, infatti step vale 1 una volta che viene aggiornato
dalla regola pre1, regola che come visto in Alg:6.11 indica il raggiungimento
del penultimo elemento, questa distinzione è stata fatta per poter permettere
alla fase successiva di cominciare, infatti una volta che la FIFO result viene
svuotata può partire il Backtrack.
La FIFO result viene svuotata dalle regole r6 e r7 (Alg:6.14), come si può
vedere la rule r6 prende l’elemento in testa alla FIFO e lo passa al filo req,
questo filo esce all’esterno del modulo e va a settare i valori della BRAM cache.
Successivamente la FIFO result viene svuotata e l’indirizzo di scrittura contenuto n