Embedded and Reconfigurable Systems M
01 – Introduzione
1
Contatti
Docente:
: Stefano Mattoccia
Telefono
: +39 051 2093860
Email
:
[email protected]
Sito web
:
www.vision.disi.unibo.it/smatt
Ricevimento
: a richiesta via email o in aula
2
Obiettivi del corso
•  Introdurre metodologie per la progettazione di
sistemi embedded con architetture basate su CPU
multicore ARM + FPGA
•  mediante l’utilizzo di linguaggio C/C++
•  nel contesto applicativo della embedded computer
vision ma ovviamente applicabile ad altri scenari
•  ampio spazio alla sperimentazione con evaluation
board e periferiche (telecamere, IMU, etc)
•  possibilità di svolgere l’attività progettuale
•  i linguaggi per Hardware Description Language come
VHDL o Verilog NON saranno considerati
Modalità d esame
•  L esame consiste nella valutazione di un progetto e
di una relazione su un tema (a scelta) risolto con
uno degli strumenti presentati nel corso
•  Il progetto può essere svolto in gruppo (al massimo
due studenti) e deve essere prima concordato
•  Nella valutazione sarà considerato sia il grado di
difficoltà del problema affrontato sia la soluzione
proposta per risolvere il problema
•  La valutazione è individuale (così come il voto) e
sarà eseguita una volta terminato il progetto
•  Nelle fasi iniziali lo sviluppo dei progetti sarà in
parte svolto in aula durante l orario di lezione
•  Le tematiche per progetti sono varie e saranno
evidenziate nel corso delle lezioni
Attività progettuale
•  E possibile svolgere
l attività
progettuale
•  estendendo/ampliando il progetto che è stato
sviluppato per l’esame (soluzione consigliata)
•  ovviamente è anche possibile svolgere l’attività
progettuale su una tematica differente rispetto
al progetto dell’esame
•  La valutazione dell’attività progettuale avviene
attraverso la stessa metodologia già descritta per
l’esame (valutazione individuale con gruppi di non
più di 2 studenti)
•  Nell’ambito del corso sono previsti dei seminari
Strumenti di sviluppo
•  Framework di sviluppo Vivado HL Webpack + SDK 2016.2
disponibile per Windows e Linux
www.xilinx.com
•  Evaluation board Zedboard e Microzed
http://zedboard.org/product/zedboard
http://zedboard.org/product/microzed
•  Sensori di immagini mono e stereo
•  Schede di espansione per interfacciamento con
sensori (IMU, sensori di temperatura, motori
passo passo, etc)
Materiale didattico
•  Lucidi proiettati a lezione, codice, etc condiviso
mediante Dropbox
•  The Zynq Book: Embedded Processing with the
ARM Cortex-A9 on the Xilinx Zynq-7000 SoC
L.Crockett, R.Elliot, M.Enderwitz,R.Stewart
Strathclyde Academic Media 2014
Liberamente disponibile:
http://www.zynqbook.com/
•  The MicroZed Chronicles
Adam Taylor
Liberamente disponbile:
https://drive.google.com/file/d/0B-lgsbmVeytsY3hQdi01elBDZm8/view?pli=1
•  Application notes
Alcune considerazioni
Il settore dei sistemi embedded è in forte crescita in
ambito industriale e di ricerca
Molte soluzioni, anche in puro ambito industriale,sono
caratterizzate da vincoli di ridotti consumi, costi,
ingombri, peso ed elevate prestazioni.
In ambito accademico/ricerca esistono conferenze e
workshop in questo specifico ambito. Per esempio:
IEEE Embedded vision:
http://cvisioncentral.com/promotion/evw2016/
Reconfigurable computing:
http://www.reconfig.org/
Hardware design (gratuito e a Bologna nel 2016):
http://orconf.org/
Contesto applicativo di riferimento
CPU
Monochrome
•  VGA
(0.3MP)
640x480@30fps
:
9+ MP/s
•  VGA
(0.3 MP
640x480@60fps
:
18+ MP/s
•  720p
(0.9 MP)
1280x720@60fps
:
55+ MP/s
•  1080p (2 MP)
1920x1080@60fps
: 124+ MP/s
•  UHD
3840x2160@60fps
: 497+ MP/s
(8 MP)
•  ......
Prestazioni 1/2
Processing
GPU
CPU
FPGA
Esistono anche architetture custom specializzate per alcuni
specifici campi applicativi. Ad esempio, nel contesto della
computer vision, www.movidius.com recentemente acquisita da
Intel.
Prestazioni 2/2
Processing
CPU
CPU (ARM)
FPGA + CPU
I due maggiori produttori di FPGA con processori multicore
ARM integrati sono:
•  Xilinx www.xilinx.com
•  Altera www.altera.com (recentemente acquisita da Intel)
Consumi
In molti contesti applicativi non solo le prestazioni
ma anche i consumi sono un fattore critico.
Sebbene esistanto GPU per il settore embedded/mobile, a
tal proposito si consideri le GPU Mali nel caso ARM, le
maggiori prestazioni si ottengono con GPU connesse al
PC (maggiori produttori NVidia e AMD).
Per esempio, un NVidia Titan X, molto utilizzata in
ambito scientifico ha un consumo di 250 W.
Una FPGA può avere consumi inferiori a 1 W e una FPGA
con un processore ARM integrato può consumare 5/10 W.
Prestazioni/Consumi
La valutazione in molti casi è eseguita valutando il
rapporto tra prestazioni e consumi mediante il seguente
indicatore:
Performance/Watt
Le FPGA sono la soluzione ottimale in molti casi in
accordo a questo indicatore.
Il motivo?
L architettura è (quasi) completamente definita dal
progettista (voi) e le frequenze operative sono molto
più basse rispetto a quelle impiegate nelle GPU (con
un architettura già complemente definite).
Per una FPGA le frequenze tipiche sono dell ordine
della decina o centinaia di MHz mentre per una GPU
sono tipicamente dell ordine di alcuni GHz.
Peso, ingombro, etc sono fattori altrettanto rilevanti.
Si pensi al settore dei dispositivi wearable.
Soft-core
Sulle FPGA possono essere mappati, sulla logica
riconfigurabile, dei microprocessori denominati
soft-core.
Esempi di soft-core sono:
•  DLX – RISC a 32 bit (progetto con studenti)
•  Microblaze – RISC a 32 bit (Xilinx)
•  Picoblaze – Processore RISC 8 bit (Xilinx)
E ovviamente possibile configurare la FPGA con più
processori (anche indipendenti tra loro) in base a
specifiche esigenze.
15
Hard-core
I soft-core sono certamente molto utili e possono essere
configurati in modo ottimale per adattarsi a esigenze
specifiche. Inoltre, il loro upgrade a FPGA più potenti,
o di generazioni successive, è immediato.
Tuttavia, i soft-core hanno due svantaggi:
- sottraggono risorse alla FPGA (CLB, BRAM, etc)
- la loro frequenza operativa è limitata dalla
logica riconfigurabile (alcune centinaia di MHz)
Per questo motivo, i principali produttori di FPGA
(e.g. Xilinx e Altera) hanno recentemente progettato
dispositivi che, sullo stesso die, integrano la logica
riconfigurabile (FPGA) e CPU (tipicamente ARM con Linux)
denominati hard-core (core fisici).
16
Zynq 1/3
Tra i dispositivi dotati di logica riconfigurabie (FPGA)
e hard-core (ARM) più interessanti al momento, troviamo
ZYNQ 7000 (Xilinx):
http://www.xilinx.com/support/documentation/data_sheets/ds190-Zynq-7000-Overview.pdf
Dual Core
Cortex A9
FPGA
AXI
AXI
AXI
17
Zynq 2/3
Specifiche della sezione con hard-core:
- 2X CPU ARM Cortex A9 (architettura ARM v7-A)
- Cache L1, per data e cache, 32 KB
- Cache L2, unificata tra i due core, da 512 KB
- ROM per il boot
- 256 KB di RAM on chip
- Interfaccia per memorie esterne (DDR2,DDR3,etc)
-
DMA Controller a 8 canali
Bus AXI e altri bus
Ethernet 10/100/1000 Gb Ethernet
USB controller
etc
18
Zynq 3/3
Per quanto riguarda la parte di logica riconfigurabile,
le specifiche sono equivalenti a quelle della serie 7
delle FPGA Xilinx.
Il sistema operativo di riferimento per lo ZYNQ è Linux
(architettura pienamente supportata dal kernel Linux).
E possibile progettare delle proprie periferiche nella
logica riconfigurabile (e poi scriversi i driver per il
sistema operativo...).
Una ulteriore cosa interessante dell architettura ZYNQ
è che al boot si avvia uno dei core ARM. Questa consente
di configurare Linux e la parte configurabile ad ogni
avvio in modo sicuro.
Esiste la possibilità di emulare un dispositivo ZYNQ
medante un emulatore software (QEmu per Linux).
19
Architettura Zynq 7000
http://www.xilinx.com/products/silicon-devices/soc/zynq-7000.html
Nuova generazione: Ultrascale+ MPSoC
• 
• 
• 
• 
2 o 4 core Cortex A53 (architettura ARM a 64 bit)
2 core Cortex R5 (real-time)
Encoding/Decoding H264/H265
.....
https://www.xilinx.com/products/silicon-devices/soc/zynq-ultrascale-mpsoc.html
Base di partenza: pipeline di CV
In questo corso, si esaminerà una pipeline di computer
vision interamente sviluppata in C/C++ con algoritmi
mappati su FPGA
Zynq 7000:
Standalone,
Linux,RTOS
VGA
Libreria
LWIP
DDR Zynq
Programming
1 Gb
Ethernet
I2C
OV 7670
Connessioni con
protocolli AXI
OpenCV
App
Possibili estensioni
•  Mapping in C/C++ di algoritmi di CV su FPGA
•  Utilizzo della libreria OpenCV su FPGA
•  Interfacciamento con IMU o altri dispositivi per
tagging di immagini (per SLAM/Visual Odometry)
•  Sviluppo di driver per Linux o altri OS per gestione
perferiche FPGA (interrupt, memoria condivisa)
•  Miglioramento del sistema (trasmissione, App OpenCV)
•  Utilizzo di altri sensori di immagine
•  ......
•  Progetto guida robot?
•  Progetto laser scanner 3D?
•  Deep-learning?
•  Altre idee?