EDA/SW/T&M
ADAS
55
- ELETTRONICA OGGI 460 - MARZO 2017
ciclo di ottimizzazione è stato implementata una vasta
gamma di kernel di elaborazione della visione in una
libreria software simile a OpenCV denominata XI.
In questo caso è stato utilizzato un gran numero di fun-
zioni della libreria XI in tutte le fasi di elaborazione per
effettuare la trasformazione della prospettiva, il filtraggio
dell’immagine, l’equalizzazione, l’impostazione di soglie,
la rilevazione dei bordi mediante il metodo Canny, la tra-
sformata di Hough e così via come mostrato in figura 5.
L’impiego delle funzioni della libreria XI permette di
ridurre gli oneri legati al porting e all’ottimizzazione
dell’algoritmo per il rilevamento della corsia nei DSP
Vision P5/P6. Le prestazioni di elaborazione in real time
richieste possono essere ottenute nel simulatore del set
di istruzioni (ISS – Instruction Set Simulator) nell’arco di
uno o due mesi.
Attraverso l’intero flusso dell’algoritmo di rilevamen-
to della corsia, i dati dell’immagine vengono elaborati
utilizzando una tecnica denominata “tiling” e sfruttando
le potenzialità dell’iDMA. Per
l’elaborazione di dati SIMD
di ampie dimensioni è ne-
cessario utilizzare istruzioni
di load/store vettorizzare
per accedere ai dati dell’im-
magine contenuti nella RAM
locale mediante iterazio-
ni continue (tight loop). Lo
schema previsto dalla tecni-
ca di “tiling” consente a una
piccola parte dell’immagine
di essere trasferita dalla più
lenta memoria di sistema
nelle RAM locali utilizzan-
do il trasferimento di dati a
blocchi supportato da iDMA.
Al fine di minimizzare l’im-
patto dell’accesso in memo-
ria si è anche fatto ricorso a
uno schema di DMA buffe-
ring di tipo ping-pong il cui
funzionamento è riportato
in figura 6. In uno schema
di questo tipo il primo de-
scrittore dell’iDMA è pro-
grammato per caricare (fetch) il “source tile 1” (in pratica
un blocco di dati, si faccia riferimento alla Fig. 6) dalla
memoria DDR al buffer ping presente nella RAM locale.
Dopo il completamento della transazione DMA, il softwa-
re DSP inizia l’elaborazione del buffer ping per il tile nu-
mero 1. Nel frattempo, il secondo descrittore dell’iDMA è
programmato per caricare il “source tile 2” dalla memo-
ria DDR al buffer pong situato nella RAM locale. Poiché
l’iDMA effettua il caricamento del secondo tile in paralle-
lo con l’elaborazione DSP, di fatto “cela” la latenza legata
all’accesso in memoria. La combinazione tra la tecnica di
tiling e il DMA di tipo ping pong ha permesso di accelera-
re notevolmente (di un fattore compreso tra 15 e 20) l’e-
secuzione dell’algoritmo da parte del sistema hardware
prototipale basato su FPGA.
In questo articolo è stato presentato un algoritmo per il
rilevamento della corsia, una funzionalità tipica di ogni
sistema ADAS, per illustrare il flusso di sviluppo del sof-
tware per visione artificiale e le problematiche che gli
sviluppatori di algoritmi per visione artificiale devono
affrontare per scegliere e implementare un algoritmo
robusto che deve garantire prestazioni in real time pur
con limitate risorse di sistema. Sono stati inoltre evi-
denziate le potenzialità di Tensilica Vision DSP e le mo-
dalità di utilizzo della libreria software XI per eseguire
in tempi brevi il porting e otti-
mizzare gli algoritmi di visione
artificiale su un sistema hard-
ware embedded. Il progetto di
sviluppo dell’algoritmo per il
rilevamento della corsia uti-
lizzato nei sistemi ADAS è sta-
to completato nell’arco di tre
mesi da un progettista softwa-
re che non aveva un’esperien-
za pregressa di programma-
zione del DSP Tensilica Vision.
I compiti da svolgere prevede-
vano analisi dell’applicazione
e ricerca dell’algoritmo, pro-
totipazione di quest’ultimo uti-
lizzando MATLAB, sviluppo di
codice C funzionale generico,
ottimizzazione per Vision DSP,
dimostrazione su una piatta-
forma hardware di prototipa-
zione basata su FPGA. Grazie
al supporto di caratteristiche
hardware avanzate come DMA
2D e tecniche di programma-
zione come “tiling” e gestione
del DMA buffer in modalità ping pong, è stato possibile
dimostrare un’implementazione ottimizzata dell’algo-
ritmo di rilevamento della corsia operante in real time
su un hardware prototipale che opera a una frequenza
molto inferiore rispetto a quella raggiungibile da Vision
DSP integrato in un SoC.
Fig. 6 – DMA buffering di tipo ping pong per l’elaborazione
dei tile