Linux et le System on Chip : implantation en codesign d`un codeur

Transcription

Linux et le System on Chip : implantation en codesign d`un codeur
SOLUTIONS LINUX ‘08
Linux et le System on Chip :
implantation en codesign d'un codeur
vidéo H.263
email
http
Patrice KADIONIK
: [email protected]
: http://www.enseirb.fr/~kadionik
http://www.enseirb.fr/cosynux/
IMS – ENSEIRB – Université de Bordeaux 1 – France
Ahmed BEN ATITALLAH
ENIS – Université de Tunis - Tunisie
Linux embarqué : FPGA, SoC, SoPC, softcore…
-1-
pk/enseirb/2008
PARTIE 1
OBJECTIFS ET PROBLÉ
PROBLÉMATIQUE
Linux embarqué : FPGA, SoC, SoPC, softcore…
-2-
pk/enseirb/2008
OBJECTIFS
Conception et réalisation d’un système embarqué multimédia
modulaire pour l’étude et le développement de codeurs vidéo.
NIOS II
RAM
FPGA
FPGA
RAM
H.263
Ethernet
Interface de contrôle sous
µClinux
Linux embarqué : FPGA, SoC, SoPC, softcore…
pk/enseirb/2008
-3-
1
PROBLÉMATIQUE
Complexité des systèmes embarqués
(Multimédia, Télécommunications…).
numériques
Les processeurs standards deviennent incapables de
répondre aux exigences de ces systèmes.
on
10000000
Sh
an
n
1000000
id
e
100000
Lo
10000
id
Lo
oo
eM
re
1000
100
Batteries
Capacité des
10
1985
1990
1995
2000 2005
2010
2015
Les lois empiriques de l’évolution de l’électronique
Linux embarqué : FPGA, SoC, SoPC, softcore…
-4-
pk/enseirb/2008
PROBLÉMATIQUE
Le choix d’une architecture pour les systèmes embarqués
multimédia doit être un compromis entre :
9
Flexibilité.
9
Consommation réduite.
9
Performance.
9
Coût faible.
9
Rapidité de conception (Time To Market).
Pour la conception d’un tel système complexe, une
méthodologie de conception rigoureuse doit être utilisée.
Linux embarqué : FPGA, SoC, SoPC, softcore…
-5-
pk/enseirb/2008
PARTIE 2
MÉTHODOLOGIE DE CONCEPTION
Linux embarqué : FPGA, SoC, SoPC, softcore…
pk/enseirb/2008
-6-
2
CONCEPTION DES SYSTEMES NUMERIQUES
Les systèmes numériques deviennent aujourd'hui de plus en plus
complexes au niveau intégration et fonctionnalités.
On est en mesure d'intégrer tout dans un même composant
(single chip).
Ceci est en fait lié à la loi empirique de Moore (pour une surface
de silicium donnée, on double le nombre de transistors intégrés
tous les 24 mois).
Linux embarqué : FPGA, SoC, SoPC, softcore…
pk/enseirb/2008
-7-
CONCEPTION DES SYSTEMES NUMERIQUES
On travaille maintenant au niveau système (ou fonctionnalité) et
non au niveau porte logique (pour le grand bien des
électroniciens).
Les fonctionnalités peuvent être implantées dans des composants
spécifiques de type ASIC (Application Specific Integrated
Circuit). On parle alors de Système sur Silicium SoC (System on
Chip).
Les fonctionnalités peuvent être implantées dans des composants
logiques programmables de type FPGA (Field Programmable
Gate Array). On parle alors de système SoPC (System on
Programmable Chip).
Linux embarqué : FPGA, SoC, SoPC, softcore…
pk/enseirb/2008
-8-
CONCEPTION DES SYSTEMES NUMERIQUES
L'approche « schématique » au niveau porte logique ou
fonctionnalités de base RTL (Register Transfer Logic) est
délaissée pour la conception des systèmes complexes au profit
d'une approche « textuelle ».
On utilise des langages de description de matériel comme
VHDL (Very high speed integrated circuit Hardware
Description Language) ou Verilog pour synthétiser une
fonctionnalité numérique.
Ces langages de description de matériel sont en fait de véritables
langages de programmation informatiques, orientés objet. Ils
sont utilisés conjointement avec un synthétiseur (compilateur)
ou un simulateur.
Linux embarqué : FPGA, SoC, SoPC, softcore…
pk/enseirb/2008
-9-
3
CONCEPTION DES SYSTEMES NUMERIQUES
Ces langages ont permis de travailler avec un niveau
d'abstraction plus grand laissant les basses besognes au
synthétiseur.
On a pu rapidement développer des bibliothèques de
fonctionnalités comme une interface USB, un contrôleur MAC
Ethernet que l'on appelle blocs IP (Intellectual Property).
On peut les acheter ou bien utiliser des blocs IP libres (comme
du logiciel libre) dont le site phare de référence est
http://www.opencores.org.
Linux embarqué : FPGA, SoC, SoPC, softcore…
- 10 -
pk/enseirb/2008
CONCEPTION DES SYSTEMES NUMERIQUES
On peut ainsi voir la conception d'un système numérique
complexe comme un assemblage de blocs IP si bien que les
langages de description de matériel sont un peu comme un
langage assembleur vis à vis d'un langage plus évolué comme le
langage C.
Les langages de description de matériel sont aussi intéressants
pour la facilité de modification et de réutilisation d'un design
précédent pour un nouveau design (design reuse).
Cela permet de réduire aussi le Time To Market (TTM) !
Linux embarqué : FPGA, SoC, SoPC, softcore…
- 11 -
pk/enseirb/2008
CONCEPTION DE SoPC
Processeur
RISC
RAM
Accélérateur
Matériel
DSP
BUS
Système SoPC implanté dans un circuit logique programmable
Linux embarqué : FPGA, SoC, SoPC, softcore…
pk/enseirb/2008
- 12 -
4
HW/SW CODESIGN
L’approche SoPC : cohabitation de deux ressources logicielle
et matérielle sur une même puce : codesign.
Le codesign utilise le matériel et le logiciel pour une
fonctionnalité à implanter :
9 Le logiciel est utilisé pour sa flexibilité.
9 Le matériel (i.e. FPGA et ASIC) est utilisé pour ses
performances.
Linux embarqué : FPGA, SoC, SoPC, softcore…
- 13 -
pk/enseirb/2008
LE BESOIN D’UN SYSTÈME D’EXPLOITATION
La logique programmée incluse dans les systèmes embarqués
est de plus en plus complexe.
Une approche logicielle de type superboucle (boucle infinie +
interruptions) devient trop sommaire pour gérer et maîtriser la
complexité.
On a donc besoin d’utiliser un système d’exploitation offrant
différents services nécessaires pour mieux gérer la complexité
algorithmique logicielle.
Linux embarqué : FPGA, SoC, SoPC, softcore…
- 14 -
pk/enseirb/2008
LE BESOIN D’UN SYSTÈME D’EXPLOITATION
Un système d’exploitation offre ainsi différents services pour
mieux appréhender la complexité :
9 Apport du multitâche. Une application monolithique est divisée
en une somme de tâches coopératives (système multitâche).
9 Maîtrise des contraintes temporelles (système Temps Réel).
9 Masquage des spécificités du matériel. On y accède de façon
homogène et standard.
9 Développement de pilotes de périphérique (driver) simplifié pour
pouvoir avoir accès aux accélérateurs matériels.
9Apport d’un système de fichiers.
9 Possibilité de communications réseau : pour un contrôle du
système à distance par exemple.
Linux embarqué : FPGA, SoC, SoPC, softcore…
pk/enseirb/2008
- 15 -
5
PARTIE 3
LES PROCESSEURS POUR LE SOPC
Linux embarqué : FPGA, SoC, SoPC, softcore…
pk/enseirb/2008
- 16 -
INTERET D’UN PROCESSEUR POUR LE SOPC
Lorsque l'on conçoit un système numérique complexe, on met en
oeuvre généralement un processeur embarqué.
Ce processeur embarqué est :
Soit un bloc IP : on parle de processeur softcore.
Soit déjà implanté dans le circuit électronique en « dur » : on
parle de processeur hardcore. Le processeur de ce type est
généralement plus performant que le processeur du type
précédent.
Linux embarqué : FPGA, SoC, SoPC, softcore…
pk/enseirb/2008
- 17 -
INTERET D’UN PROCESSEUR POUR LE SOPC
Le processeur embarqué allie la souplesse du logiciel à
l'accélération du temps d'exécution du matériel.
Une fonctionnalité particulière peut donc être composée d'une
partie matérielle couplée à une fonctionnalité logicielle dédiée :
on a donc une conception conjointe matérielle-logicielle ou
codesign.
Le codesign implique donc une conception en même temps du
matériel et du logiciel, ce qui est une nouvelle méthodologie par
rapport à la méthodologie de conception classique (conception
matérielle puis conception logicielle)...
Linux embarqué : FPGA, SoC, SoPC, softcore…
pk/enseirb/2008
- 18 -
6
CHOIX DU PROCESSEUR
Le choix d'un processeur pour le SoPC peut se faire sur
différents critères :
Processeur hardcore : pour ses performances au détriment de
la flexibilité.
Processeur softcore : pour sa flexibilité de mise à jour au
détriment de performances moindres que le précédent. La
portabilité vers n'importe quel circuit FPGA est assurée en
étant donc circuit FPGA indépendant. Il est aussi possible de
migrer vers un circuit de type ASIC en cas d'une production
en grande série.
Généralement, on privilégie les processeurs softcore pour
s'affranchir des problèmes d'obsolescence et pour pouvoir
bénéficier facilement des évolutions apportées en refaisant une
synthèse.
Linux embarqué : FPGA, SoC, SoPC, softcore…
pk/enseirb/2008
- 19 -
LES PROCESSEURS SOFTCORE POUR LE SOPC
Le processeur softcore peut être libre :
Il est décrit en langage de description de matériel (VHDL,
Verilog).
Le code source peut être librement distribué et implanté dans
n'importe quel circuit programmable FPGA.
On est alors indépendant du type de circuit FPGA.
Linux embarqué : FPGA, SoC, SoPC, softcore…
pk/enseirb/2008
- 20 -
LES PROCESSEURS SOFTCORE POUR LE SOPC
Le processeur softcore peut être propriétaire :
Il est distribué par exemple sous forme d'une netlist pour être
implantée dans un circuit FPGA.
Il est généralement lié à un fondeur de circuit FPGA
particulier (comme Altera ou Xilinx).
On ne peut pas l'utiliser dans un circuit FPGA autre que celui
pour lequel il est prévu. On a donc ici une boîte noire.
Linux embarqué : FPGA, SoC, SoPC, softcore…
pk/enseirb/2008
- 21 -
7
LES PROCESSEURS SOFTCORE POUR LE SOPC
On trouvera principalement au niveau des processeurs softcore
libres :
Le processeur Leon http://www.gaisler.com/index.html.
Le processeur OpenRisc
http://www.opencores.org/projects.cgi/web/or1k/overview.
Autre processeur : F-CPU http://www.f-cpu.org.
Autres processeurs : clones de 6800, 68HC11, 68K, PIC :
http://www.opencores.org/browse.cgi/filter/category_micropr
ocessor
…
Linux embarqué : FPGA, SoC, SoPC, softcore…
pk/enseirb/2008
- 22 -
LES PROCESSEURS SOFTCORE POUR LE SOPC
On trouvera principalement au niveau des processeurs softcore
propriétaires :
Le processeur NIOS et NIOS II d'Altera
http://www.altera.com.
Le processeur Microblaze de Xilinx http://www.xilinx.com.
…
Linux embarqué : FPGA, SoC, SoPC, softcore…
pk/enseirb/2008
- 23 -
LE PROCESSEUR SOFTCORE MICROBLAZE
Linux embarqué : FPGA, SoC, SoPC, softcore…
pk/enseirb/2008
- 24 -
8
LE PROCESSEUR SOFTCORE MicroBlaze
MicroBlaze : ARCHITECTURE
Jeu d’instructions 32 bits.
32 registres de données.
Pipeline à 3 niveaux.
Cache d’instructions et de données configurable.
Bus interne LMB et CoreConnect IBM.
Pas de MMU.
Produit commercial de Xilinx.
Linux embarqué : FPGA, SoC, SoPC, softcore…
pk/enseirb/2008
- 25 -
LE PROCESSEUR SOFTCORE MicroBlaze
MicroBlaze : LOGICIELS
Plateforme de développement Xilinx XPS.
Chaîne d’outils GNU (compilation croisée).
Simulateur XMD.
OS supportés :
µClinux. Portage GPL
http://www.itee.uq.edu.au/~jwilliams/mblaze-uclinux/.
microC/OS II. Produit commercial.
Noyau ATI. Produit commercial.
Linux embarqué : FPGA, SoC, SoPC, softcore…
pk/enseirb/2008
- 26 -
LE PROCESSEUR SOFTCORE NIOS II
Linux embarqué : FPGA, SoC, SoPC, softcore…
pk/enseirb/2008
- 27 -
9
LE PROCESSEUR SOFTCORE NIOS II
NIOS II : ARCHITECTURE
2 versions : NIOS I et NIOS II. Seule NIOS II présentée.
3 cores possibles : fast, economy, standard.
Jeu d’instructions 32 bits.
32 registres dont 6 de contrôle.
Pipeline à 6 niveaux (fast).
Cache d’instructions et de données configurable.
Bus interne Avalon.
Pas de MMU.
Produit commercial d’Altera.
Linux embarqué : FPGA, SoC, SoPC, softcore…
- 28 -
pk/enseirb/2008
LE PROCESSEUR SOFTCORE NIOS II
NIOS II : LOGICIELS
Plateforme de développement Quartus II.
Chaîne d’outils GNU (compilation croisée).
IDE Eclipse
Simulateur ModelSim.
OS supportés :
µClinux. Portage GPL
Version intégré à l’IDE : http://www.niosforum.com/
Version sous Linux : http://nioswiki.jot.com/WikiHome
microC/OS II. Produit commercial.
Noyau Nucleus. Produit commercial.
eCos.
Linux embarqué : FPGA, SoC, SoPC, softcore…
- 29 -
pk/enseirb/2008
PARTIE 4
ENVIRONNEMENT DE
DÉVELOPPEMENT DU SYSTEME
Linux embarqué : FPGA, SoC, SoPC, softcore…
pk/enseirb/2008
- 30 -
10
PLATEFORME POUR LA MISE
EN ŒUVRE DU CODESIGN
Linux embarqué : FPGA, SoC, SoPC, softcore…
- 31 -
pk/enseirb/2008
FPGA STRATIX II D’ALTERA
Architecture d’un composant Stratix II
Linux embarqué : FPGA, SoC, SoPC, softcore…
- 32 -
pk/enseirb/2008
PROCESSEUR PROPRIÉTAIRE NIOS II
Pour rappel, le processeur embarqué NIOS II (version fast)
d’Altera choisi possède les caractéristiques suivantes :
• Processeur RISC cadencé à 120 MHz (142 DMIPS).
• 6 niveaux de pipeline.
• 64 Ko de cache d’instructions et de données.
• Multiplication et division câblées.
• Bus de donnée et d’instruction sur 32bits.
• 32 niveaux d’interruption.
• 256 instructions personnalisées.
Linux embarqué : FPGA, SoC, SoPC, softcore…
pk/enseirb/2008
- 33 -
11
ENVIRONNEMENT LOGICIEL
Linux embarqué : FPGA, SoC, SoPC, softcore…
- 34 -
pk/enseirb/2008
LINUX ET L’EMBARQUÉ
Pourquoi retrouve-t-on Linux dans l’embarqué ?
• Logiciel Libre, disponible gratuitement au niveau source.
• Fiabilité reconnu du système.
• Portabilité sur différentes plateformes matérielles.
• Il est possible d’avoir des versions Temps Réel.
• On a un système d’exploitation multitâche.
• On a un système de fichiers disponible.
• On a une connectivité TCP/IP en standard.
Linux embarqué : FPGA, SoC, SoPC, softcore…
- 35 -
pk/enseirb/2008
LINUX ET L’EMBARQUÉ
Linux pour l’embarqué existe donc pour 2 catégories de
processeurs 32 bits :
9 Processeur avec MMU (Memory Management Unit) :
Linux embarqué : version Linux standard.
9 Processeur sans MMU : µClinux : version Linux
adaptée.
µClinux est originellement un dérivé du noyau Linux pour les
microcontrôleurs sans MMU.
Il existe un portage Libre µClinux pour le processeur NIOS II
d’Altera.
Linux embarqué : FPGA, SoC, SoPC, softcore…
pk/enseirb/2008
- 36 -
12
PARTIE 5
PLATEFORME DE TRAITEMENT
VIDÉ
VIDÉO
Linux embarqué : FPGA, SoC, SoPC, softcore…
- 37 -
pk/enseirb/2008
SYSTÈME DE TRAITEMENT VIDÉO
Une plateforme matérielle de traitement vidéo a été réalisée afin
de supporter la conception matériel/logiciel (HW/SW codesign).
8 bits
Acquisition
24 bits
Traitement
Restitution
Système d’acquisition et de traitement vidéo
La plateforme permet l’acquisition et l’affichage des images de
640x480 pixels en 256 niveaux de gris.
Linux embarqué : FPGA, SoC, SoPC, softcore…
- 38 -
pk/enseirb/2008
SYSTÈME DE TRAITEMENT VIDÉO
Le coeur du système est une carte cible Altera Stratix II :
–
–
–
–
–
–
–
–
–
–
Circuit FPGA Stratix II EP2S30F672C5.
1 Mo de SRAM 16 bits, 16 Mo de SDRAM 32 bits, 16 Mo de mémoire
Flash.
1 support CompactFlash type I.
1 interface Ethernet 10/100 Mb/s.
2 ports série (RS-232 DB9).
1 connecteur JTAG.
4 boutons poussoirs, 8 leds utilisateurs.
2 afficheurs 7 segments.
1 afficheur LCD 2x16.
…
Linux embarqué : FPGA, SoC, SoPC, softcore…
pk/enseirb/2008
- 39 -
13
SYSTÈME DE TRAITEMENT VIDÉO
Linux embarqué : FPGA, SoC, SoPC, softcore…
- 40 -
pk/enseirb/2008
INTERFACE CAMÉRA
Clk_system
master_wr
Clk_14Mhz
master_addrw
Contrôle
Caméra
8 Bits
32 Bits
FIFO
32 Bits
DMA
32 Bits
LDV
master_waitreq
FDV
B
U
S
A
V
A
L
O
N
Synoptique de l’interface caméra
Linux embarqué : FPGA, SoC, SoPC, softcore…
- 41 -
pk/enseirb/2008
INTERFACE VGA
Clk_system
B
U
S
master_rd
Palette de
couleur
master_addrw
32 Bits
master_waitreq
DMA
32 Bits
FIFO
32 Bits
FIFO
32 Bits
MUX
A
V
A
L
O
N
32 Bits
Contrôle
VGA
24Bits
HS
VS
Synoptique de l’interface VGA
VGA Lancelot : www.fpga.nl
Linux embarqué : FPGA, SoC, SoPC, softcore…
pk/enseirb/2008
- 42 -
14
ARCHITECTURE DU SYSTÈME VIDÉO
NIOS II processor
DMA Camera
DMA VGA
Arbitrage
Bus Avalon
SDRAM
SRAM
µClinux
Synchronisation de l’interface Caméra et VGA
Un seul contrôleur DMA peut accéder à la mémoire.
Le contrôleur DMA-VGA est prioritaire pour ne pas avoir une
discontinuité dans l’affichage.
Linux embarqué : FPGA, SoC, SoPC, softcore…
- 43 -
pk/enseirb/2008
GESTION DU TEMPS
Le DMA nécessite 3 cycles d’horloge pour transférer un mot
de 32 bits.
Notre système vidéo doit être capable de fonctionner avec une
fréquence minimale de 20,5 MHz.
Les accès à la mémoire d’image SRAM par le contrôleur
DMA-Camera/VGA ne consomment que 17 % du temps total
(l’horloge système est de 120 MHz).
Il reste donc 83 % de temps CPU libre pour la partie
traitement (codecs vidéo en codesign). Par contre, 100 % du
temps CPU est disponible si l’on a accède à la SDRAM.
Linux embarqué : FPGA, SoC, SoPC, softcore…
- 44 -
pk/enseirb/2008
PARTIE 6
IMPLANTATION DU CODEUR H.263
Linux embarqué : FPGA, SoC, SoPC, softcore…
pk/enseirb/2008
- 45 -
15
COMPRESSION VIDÉO
H.263
(1995/96)
H.261
(1990)
UIT-T
H.263++
(2000)
H.263+
(1997/98)
H.264
MPEG-4
(2003)
MPEG-2
H.262
(1994/95)
UIT-T/
MPEG
MPEG
MPEG-1
(1992)
1990
1992
MPEG-2
(1994)
1994
MPEG-4
(1999/00)
1996
1998
2000
2002
2004
Les normes de codage vidéo
Linux embarqué : FPGA, SoC, SoPC, softcore…
- 46 -
pk/enseirb/2008
NORME H.263
Norme de compression vidéo basée sur la norme H.261 et
dédiée à la vidéo à très bas débit sur Internet, réseaux locaux et
réseaux mobiles.
Débits entre 5 kb/s à 64 kb/s.
Incorporée dans le standard de terminal multimédia H.323.
Applications : vidéoconférence, visiophonie.
Formats vidéo en entrée acceptés :
CIF (352x288 pixels).
QCIF (176x144 pixels).
SQCIF (128x96 pixels).
Linux embarqué : FPGA, SoC, SoPC, softcore…
- 47 -
pk/enseirb/2008
NORME H.263
+
-
TCD
CLV Bitstream
Q
QI
EM : Estimation de Mouvement
CM : Compensation de Mouvement
Vecteur de mouvement
EM/CM
TCDI
TCD : Transformée en Cosinus
Discrète
+ +
TCDI : TCD Inverse
Mémoire
Q : Quantification
QI : Quantification Inverse
CLV : Code de Longueur Variable
Schéma de codage de la norme H.263
Linux embarqué : FPGA, SoC, SoPC, softcore…
pk/enseirb/2008
- 48 -
16
NORME H.263
Le codage INTRA : conduit à une image de type I :
Transformée
en Cosinus
Discrète
Quantification
Codage
entropique
Le codage INTER : conduit à des images de type P et B
:
Estimation
de
Mouvement
Transformée
en Cosinus
Discrète
Quantification
Codage
entropique
Linux embarqué : FPGA, SoC, SoPC, softcore…
pk/enseirb/2008
- 49 -
CONFIGURATION ETUDIÉE
La majorité des codeurs développés le sont sous forme logicielle
et ne font pas appel ou peu à des accélérateurs matériels.
L’idée de départ a été donc de choisir un tel codeur satisfaisant à
la norme H.263 et qui soit suffisamment « générique » et
représentatif des différents opérateurs « algorithmiques » utilisés
par l’ensemble des différentes normes de compression vidéo.
L’accès aux fichiers sources du codeur permettra d’identifier ces
opérateurs coûteux en temps de calcul mais qui sont de bons
candidats à une implantation matérielle en vue d’une accélération.
L’ensemble de l’étude a été faite sous µClinux et exécutée par le
processeur NIOS II.
Linux embarqué : FPGA, SoC, SoPC, softcore…
pk/enseirb/2008
- 50 -
APPROCHE DE CODESIGN
Notre approche pour la conception HW/SW se compose de
trois étapes :
9 Implantation logicielle de l’algorithme.
9 Détection des traitements critiques dans l’algorithme
(mesure des temps d ’exécution).
9 Implantation HW/SW de l’algorithme pour optimisation.
Linux embarqué : FPGA, SoC, SoPC, softcore…
pk/enseirb/2008
- 51 -
17
SÉQUENCES DE TEST (Fichier)
Séquences Statiques standards :
Claire
Akiyo
Miss America
Séquences Dynamiques standards :
Foreman
Carphone
News
Linux embarqué : FPGA, SoC, SoPC, softcore…
- 52 -
pk/enseirb/2008
ETUDE DE LA COMPLEXITÉ
Algorithme de recherche exhaustive (Full Search Block
Matching).
Fenêtre de recherche +/-15 pixels.
Différentes valeurs du pas de quantification (QP=8,13, 31).
Utilisation de vidéos QCIF @10 Hz.
La qualité de codage est donnée par les valeurs de PSNR
(Peak Signal To Noise Ratio) et SSIM (Structural SIMilarity).
Linux embarqué : FPGA, SoC, SoPC, softcore…
- 53 -
pk/enseirb/2008
ETUDE DE LA COMPLEXITÉ
CLV
Q/QI 0,09% Autres
1,06%
1,18%
Contrôle
0,73%
TCD/TCDI
36,91%
CM
0,35%
EM/CM
60,76%
SAD
98,92%
Répartition du temps CPU par bloc de traitement pour la
séquence Miss America à QP=13
Linux embarqué : FPGA, SoC, SoPC, softcore…
pk/enseirb/2008
- 54 -
18
ETUDE DE LA COMPLEXITÉ
FLASH,SRAM,SDRAM ETHERNET
Interface
Ethernet
Interface RAM
CAMERA/VGA
Interface Camera/VGA
Codeur H.263
3
3
TCDI-2D
3
SAD
AVALON
TCD-2D
NIOS II
CPU
IRQ
3
C.I :Q/QI
Timer
µClinux
UART
USB
Linux embarqué : FPGA, SoC, SoPC, softcore…
- 55 -
pk/enseirb/2008
ESTIMATION DE MOUVEMENT (EM)
Codeur H.263
3
3
TCDI-2D
3
SAD
AVALON
TCD-2D
NIOS II
CPU
3
C.I :Q/QI
Linux embarqué : FPGA, SoC, SoPC, softcore…
- 56 -
pk/enseirb/2008
ALGORITHME DE BLOCK MATCHING (BMAs)
Le Block Matching (BMA) est la méthode d’EM la plus
utilisée, vue sa faible complexité algorithmique.
Le BMA est basé sur la comparaison d’un Macrobloc (MB :
16x16 pixels) de l’image courante aux MBs de l’image de
référence dans une fenêtre de recherche.
MB Courant
Image Courante
Fenêtre de Recherche
MB le + Ressemblant
Image de Référence
Linux embarqué : FPGA, SoC, SoPC, softcore…
pk/enseirb/2008
- 57 -
19
ALGORITHME DE BLOCK MATCHING
Le critère le plus utilisé pour l’EM est la Somme des valeurs
Absolues des Différences (SAD).
15
15
SAD( x, y ) = ∑∑ Ycur(i, j ) − Yprev( x + i, y + j )
j =0 i = 0
Avec :
Ycur : la luminance du macrobloc courant.
Yprev : la luminance du macrobloc de référence.
(x,y) : les coordonnées du macrobloc de référence dans la fenêtre de recherche.
Linux embarqué : FPGA, SoC, SoPC, softcore…
- 58 -
pk/enseirb/2008
ALGORITHME DE BLOCK MATCHING
Le plus primitif des BMAs est l’algorithme de recherche
exhaustive (FS).
Fenêtre de
recherche
Cette méthode cherche l’optimum parmi tous les Vecteurs de
Mouvement possibles à l’intérieur de la fenêtre de recherche.
Linux embarqué : FPGA, SoC, SoPC, softcore…
- 59 -
pk/enseirb/2008
COPROCESSEUR SAD
data_A
data_B
32
A1
B1
Reg
Reg
-
+
.
32
A2
B2
Reg
Reg
A3
-
+
B3
Reg
Reg
-
+
.
.
A4
B4
Reg
Reg
-
+
.
L’Unité de Traitement contient
modules à 2 entrées sur 8 bits chacune.
4
+
32
Resultat
Unité de Traitement
16 Pixels
Le module SAD 1x16
permet le calcul du SAD d’une
ligne de MB en un cycle.
Unité_Contrôle
A
B
UT1
A
A
B
UT2
B
UT3
+
Calcul du SAD 1x16
A
B
UT4
Resultat
SAD_1x16
Linux embarqué : FPGA, SoC, SoPC, softcore…
pk/enseirb/2008
- 60 -
20
COPROCESSEUR SAD
16 Pixels
Unité_Contrôle
A
B
A
UT1
A
B
UT2
B
B
A
UT3
UT4
+
16 Pixels
Unité_Contrôle
A
B
A
UT1
A
B
UT2
B
B
A
UT3
UT4
+
+
16 Pixels
Unité_Contrôle
A
B
UT1
A
A
B
UT2
B
B
A
UT3
UT4
+
Calcul du SAD 16x16
Resultat
SAD_16x16
Linux embarqué : FPGA, SoC, SoPC, softcore…
- 61 -
pk/enseirb/2008
COPROCESSEUR SAD
Cycles d'horloge
200000000
180000000
160000000
140000000
120000000
100000000
80000000
60000000
40000000
20000000
0
SAD_SW
SAD_HW
Miss America
Foreman
Nombre de cycles pour le calcul du SAD en SW et HW
La solution HW pour le calcul du SAD est 2 fois plus rapide que la
solution SW.
Pour accélérer le traitement, il existe plusieurs algorithmes de
recherche rapides conduisant à des complexités plus faibles :
9 Recherche en Diamant (DS).
9 Recherche en petit Diamant (SDS).
9 Recherche en Croix-Diamant (CDS).
9 Recherche en Hexagone (HEX).
Linux embarqué : FPGA, SoC, SoPC, softcore…
- 62 -
pk/enseirb/2008
EVALUATION DES PERFORMANCES DE L’EM
33
38,5
39
34
32,8
33
38
32,6
32
32,4
36
SDS
SDS
37,5
35
CDS
CDS
HEX
HEX
34
Y PSNR
FS
FS
DS
DS
FS
31
32,2
Y PSNR
Y PSNR
Y PSNR
37
FS
DS DS
32
30
SDS SDS
31,8
CDS CDS
HEX HEX
29
31,6
28
31,4
33
27
31,2
36,5
32
144
15
9
16
17
14
18 19
19
Rate (kbps)
Rate
26
31
10
50
30
55
5060
70 65
90 70
Rate
(kbps)
Rate
(kbps)
PSNR=f(Rate) pour la séquence
Miss America
PSNR=f(Rate) pour la séquence
Foreman
La méthode exhaustive donne de meilleure qualité par rapport aux
différentes méthodes de recherche rapides…
PSNR (Peak Signal To Noise Ratio)
Linux embarqué : FPGA, SoC, SoPC, softcore…
pk/enseirb/2008
- 63 -
21
EVALUATION DES PERFORMANCES DE L’EM
Nombre de cycles des différents algorithmes d’EM
Nombre de cycles d'horloge
7000000
6000000
5000000
4000000
QP=8
3000000
QP=13
QP=31
2000000
1000000
0
DS
SDS
CDS
HEX
Séquence Foreman
Mais la recherche en Hexagone permet une qualité d’image et une
rapidité de recherche acceptable.
Linux embarqué : FPGA, SoC, SoPC, softcore…
- 64 -
pk/enseirb/2008
TRANSFORMÉ
TRANSFORMÉE EN COSINUS
DISCRÈ
DISCRÈTE DIRECT ET INVERSE
(TCD/TCDI)
Codeur H.263
3
3
TCDI-2D
3
AVALON
TCD-2D
SAD
NIOS II
CPU
3
C.I :Q/QI
Linux embarqué : FPGA, SoC, SoPC, softcore…
- 65 -
pk/enseirb/2008
TCD
y
k ,l
=
c(k )c(l ) 7 7
⎛ (2n + 1)kπ ⎞ ⎛ (2m + 1)lπ ⎞
∑∑ xn,m cos⎜⎝ 16 ⎟⎠ cos⎜⎝ 16 ⎟⎠
4 n=0 m=0
avec
⎧ 1
pour α = 0
⎪⎪
c (α ) = ⎨ 2
⎪1
pour α ≠ 0
⎪⎩
n,m : sont les coordonnées dans le domaine spatial.
k,l : sont les coordonnées dans le domaine fréquentiel.
Linux embarqué : FPGA, SoC, SoPC, softcore…
pk/enseirb/2008
- 66 -
22
TCD
Deux architectures ont été retenues pour l’implantation de
TCD/TCDI-2D :
9Architecture de Loeffler utilise 11 MUL et 29 ADD.
9 La méthode de la distribution arithmétique permet
d’implanter une somme de produits sans l’utilisation de
multiplications.
Linux embarqué : FPGA, SoC, SoPC, softcore…
- 67 -
pk/enseirb/2008
ARCHITECTURE DE LOEFFLER
1ére ETAGE
2éme ETAGE
3éme ETAGE
4éme ETAGE
0
0
1
4
2
2
2 C6
6
3
4
7
2 C3
5
3
2 C1
6
5
7
1
Architecture modifiée de Loeffler
Linux embarqué : FPGA, SoC, SoPC, softcore…
- 68 -
pk/enseirb/2008
DISTRIBUTION ARITHMÉTIQUE
yl =
∑ F (a
B −1
l
)
, u ( j ) 2 − j − F (a l , u (0) )
j =1
avec
(
) ∑a
F al ,u ( j) =
3
m =0
l
m
u m( j )
B : nombre de bits du coefficient d’entrée um
um(j) : est le jème bit de um de valeur 1 ou 0
am : coefficient constant
Linux embarqué : FPGA, SoC, SoPC, softcore…
pk/enseirb/2008
- 69 -
23
IMPLANTATION DE LA TCD
250
F(MHz)
150
Loeffler
Loeffler_DSP
100
D.A
50
Nombre de cycles d'horloge
120
200
100
0
80
Loffler
60
Loffler_DSP
D.A
40
20
0
TCD
TCDI
TCD
Fréquence de fonctionnement pour la
TCD/TCDI
TCDI
Nombre de cycles pour le traitement
d’un bloc 8x8 par la TCD/TCDI
l’architecture Loeffler_DSP permet de meilleures performances que
l’architecture Loeffler sans DSPs.
L’architecture de Loeffler ne nécessite que 11 cycles au lieu de 120
cycles pour la DA.
La solution Loeffler_DSP s’avère au minimum 5 fois plus rapide.
Linux embarqué : FPGA, SoC, SoPC, softcore…
- 70 -
pk/enseirb/2008
TCD/TCDI-2D
Dataavailable
Readyfordata
Waitrequest
Reset
Contrôleur
Start
Clk
Control
Data_in
Data_out
MUX
TCD/TCDI
1D
Transposition Mémoire
Architecture du coprocesseur pour la TCD/TCDI-2D
Linux embarqué : FPGA, SoC, SoPC, softcore…
- 71 -
pk/enseirb/2008
TCD/TCDI-2D
DMA
NIOS II processor
AvalonTM Switch Fabric
Arbitrage
Arbitrage
Bus Avalon
E/S
RAM
TCD/TCDI-2D
coprocesseur
Connexion du coprocesseur TCD/TCD-2D avec le système
embarqué multimédia
Le traitement d’un bloc de taille 8x8 nécessite 720 cycles dont 97
cycles pour le traitement matériel par la TCD/TCDI-2D.
Linux embarqué : FPGA, SoC, SoPC, softcore…
pk/enseirb/2008
- 72 -
24
EVALUATION DU COPROCESSEUR TCD/TCD-2D
140000000
3500000
120000000
3000000
Nombre de cycles
d'horloge
Nombre de cycles
d'horloge
Nombre de cycles nécessaires pour le traitement par
TCD+TCDI de la séquence Miss America
100000000
80000000
60000000
40000000
20000000
2500000
2000000
1500000
1000000
500000
0
TCD/TCDI_SW_flottant
QP=8
QP=13
0
TCD/TCDI_SW_entier
TCD/TCDI_SW_entier
QP=8
QP=31
Traitement par TCD/TCDI_SW
en flottant et en entier
QP=13
TCD/TCDI_HW
QP=31
Traitement par TCD/TCDI en
SW_entier et HW
La solution SW sur des entiers est 37 fois plus rapide que celle sur
des réels.
La solution HW est 6 fois plus rapide que la solution logicielle sur
des entiers.
Linux embarqué : FPGA, SoC, SoPC, softcore…
- 73 -
pk/enseirb/2008
EVALUATION DU COPROCESSEUR TCD/TCD-2D
Reconstruction de la 8ème image de la séquence Miss America pour QP=8
Image reconstruite
TCD/TCDI_SW_flottant
PSNR-Y = 38,27dB
PSNR-Cb = 38,61dB
PSNR-Cr = 37,83dB
SSIM = 0,9945
Image reconstruite
TCD/TCDI_HW
Image reconstruite
TCD/TCDI_SW_entier
PSNR-Y = 38,07dB
PSNR-Cb = 38,55dB
PSNR-Cr = 37,56dB
SSIM = 0,9943
PSNR-Y = 38,17dB
PSNR-Cb = 38,48dB
PSNR-Cr = 37,83dB
SSIM = 0,9944
PSNR (Peak Signal To Noise Ratio) & SSIM (Structural SIMilarity)
Linux embarqué : FPGA, SoC, SoPC, softcore…
- 74 -
pk/enseirb/2008
QUANTIFICATION DIRECTE ET
INVERSE (Q/QI)
Codeur H.263
3
3
TCDI-2D
3
SAD
AVALON
TCD-2D
NIOS II
CPU
3
C.I :Q/QI
Linux embarqué : FPGA, SoC, SoPC, softcore…
pk/enseirb/2008
- 75 -
25
Q/QI
Equation de Quantification :
⎧ COF
INTRA
,
⎪
⎪ 2.QP
LEVEL = ⎨
QP
⎪ COF − 2
, INTER
⎪
⎩ 2.QP
LEVEL = sign(COF ). LEVEL
Equation de Quantification Inverse :
⎧QP.(2. LEVEL + 1),
si QP =" impair"
REC = ⎨
⎩ QP.(2. LEVEL + 1) − 1, si QP =" pair"
REC = sign( LEVEL). REC
La division est effectuée sur des entiers.
Utilisation des instructions multi-cycles pour l’implantation de
l’équation de Q/QI.
Linux embarqué : FPGA, SoC, SoPC, softcore…
- 76 -
pk/enseirb/2008
IMPLANTATION DE LA Q/QI
Clk
Dataa
32
Reg
Clk
x
Clk
Comparateur
>>16
Datab
32
Reg
Resultat
-127
&
127
32
Reg
Architecture de l’instruction pour la Quantification INTRA
Clk
Dataa
32
Reg
Clk
Datab
32
Reg
+
-
Clk
x
>>1
Comparateur
>>16
32
Reg
Resultat
-127
&
127
Architecture de l’instruction pour la Quantification INTER
Linux embarqué : FPGA, SoC, SoPC, softcore…
- 77 -
pk/enseirb/2008
IMPLANTATION DE LA Q/QI
Clk
Dataa
32
Reg
Datab
32
Reg
Datab(0)
X
Clk
<<1
Clk
+
-
-1
M
U
X
32
Reg
Resultat
Architecture de l’instruction pour la Quantification Inverse
2 cycles d’horloge sont nécessaires pour l’exécution d’une
instruction.
Le traitement d’un bloc de taille 8x8 nécessite 1200 cycles dont 128
cycles pour le traitement matériel.
Linux embarqué : FPGA, SoC, SoPC, softcore…
pk/enseirb/2008
- 78 -
26
EVALUATION DES INSTRUCTIONS DE Q/QI
Nombre de cycles nécessaires pour le traitement par Q+QI
de la séquence Miss America
Nombre de cycles
d'horloge
4000000
3500000
3000000
2500000
2000000
1500000
1000000
500000
0
Q/QI_SW
QP=8
Q/QI_HW
QP=13
QP=31
Traitement par Q/QI en SW et HW
La solution HW est 4 fois plus rapide que la solution SW.
Linux embarqué : FPGA, SoC, SoPC, softcore…
- 79 -
pk/enseirb/2008
EVALUATION DES INSTRUCTIONS DE Q/QI
Reconstruction de la 8ème image de la séquence Miss America pour QP=8
Image reconstruite
SW
Image reconstruite
HW
PSNR-Y = 38,27dB
PSNR-Cb = 38,61dB
PSNR-Cr = 37,83dB
SSIM = 0,9945
PSNR-Y = 38,27dB
PSNR-Cb = 38,61dB
PSNR-Cr = 37,83dB
SSIM = 0,9945
PSNR (Peak Signal To Noise Ratio) & SSIM (Structural SIMilarity)
Linux embarqué : FPGA, SoC, SoPC, softcore…
pk/enseirb/2008
- 80 -
IMPLANTATION HW/SW
DU CODEUR H.263
Linux embarqué : FPGA, SoC, SoPC, softcore…
pk/enseirb/2008
- 81 -
27
SYSTÈME EMBARQUÉ MULTIMÉDIA
FLASH,SRAM,SDRAM ETHERNET
Interface RAM
Interface
Ethernet
CAMERA/VGA
Interface Camera/VGA
Codeur H.263
3
3
TCDI-2D
3
AVALON
TCD-2D
SAD
NIOS II
CPU
IRQ
3
C.I :Q/QI
Timer
µClinux
UART
USB
Linux embarqué : FPGA, SoC, SoPC, softcore…
- 82 -
pk/enseirb/2008
SYSTÈME EMBARQUÉ MULTIMÉDIA
Les résultats de l’implantation de notre système embarqué
multimédia sur FPGA Stratix II EP2S60 sont :
• ALUTs : 20,550/48,352 (43%).
• Blocs RAMs : 1,157,888/2,544,192 (46%).
• Blocs DSPs : 64/288 (22%).
• Broches d’E/S : 181/493 (37%).
• PLL : 1/6 (17%).
• Fréquence de fonctionnement : 120 MHz.
Linux embarqué : FPGA, SoC, SoPC, softcore…
- 83 -
pk/enseirb/2008
EVALUATION DE L’IMPLANTATION HW/SW DU H.263
(a)1618 ms
TCD/TCDI
1,56%
Q/QI
1,87%
(b)72 ms
Autre
2,63%
EM/CM
28,53%
Autre
51,69%
TCD/TCDI
5,62%
EM/CM
93,94%
Q/QI
14,16%
Répartition du temps CPU en utilisant la solution (a) SW et
(b) HW/SW pour la séquence Miss America
La solution HW/SW du codeur H.263 est 20 fois plus rapide que la
solution SW.
En utilisant l’approche codesign pour l’implantation du codeur
H.263, on arrive à coder des séquences QCIF@15 Hz.
Linux embarqué : FPGA, SoC, SoPC, softcore…
pk/enseirb/2008
- 84 -
28
ARCHITECTURE DU SYSTÈME VIDÉO
0x2000000
NIOS II processor
DMA Camera
DMA VGA
DMA TCD/
TCDI-2D
TCD/TCDI-2D
MB-YCbCr
Camera
acquisition
image
Arbitrage
Arbitrage
SRAM
coprocesseur
TCD/TCDI-2D
Bus Avalon
SDRAM
coprocesseur
SAD
VGA
Image
recontruite
0x20FFFFF
µClinux
Cartographie
SRAM
Interconnexion des différents périphériques et coprocesseurs
Nous appliquons notre codeur sur le flux issu de la caméra.
On arrive ainsi à afficher au vol sur le moniteur VGA après
décodage des séquences QCIF@15 Hz.
Linux embarqué : FPGA, SoC, SoPC, softcore…
- 85 -
pk/enseirb/2008
SYSTÈME EMBARQUÉ MULTIMÉDIA
Linux embarqué : FPGA, SoC, SoPC, softcore…
- 86 -
pk/enseirb/2008
CONCLUSION
Linux embarqué : FPGA, SoC, SoPC, softcore…
pk/enseirb/2008
- 87 -
29
CONCLUSION
Réalisation d’une plateforme programmable de traitement
vidéo dans un environnement de conception en codesign.
L’acquisition et la restitution vidéo consomme (à 120 MHz)
17% du temps total.
Des accélérateurs matériels tels que le SAD, TCD/TCDI et
Q/QI pour le codeur H.263 ont été développés en langage VHDL.
En utilisant l’approche codesign pour le codeur H.263, on
arrive à coder des séquences QCIF@15 Hz (120 MHz) sous
µClinux.
Linux embarqué : FPGA, SoC, SoPC, softcore…
- 88 -
pk/enseirb/2008
CONCLUSION
Amélioration d’un facteur du 20 du temps du codage par
rapport à la solution tout logicielle.
Constitution d’une bibliothèque de modules IP génériques de
traitement vidéo afin de l’utiliser dans l’étude d’autres codeurs
vidéo dans l’approche codesign.
La plateforme réalisée peut supporter différentes normes de
compression vidéo telles que H.26x et MPEG.
La validité de l’ensemble de l’étude a été aussi vérifiée en
l’appliquant à l’ensemble Caméra-VGA.
Linux embarqué : FPGA, SoC, SoPC, softcore…
- 89 -
pk/enseirb/2008
Remerciements :
L’exemple du codeur présenté est issu de la thèse soutenue par A. Ben Atitallah,
collègue maintenant. Je tenais à l’en remercier.
Merci aussi à Patrice Nouel…
Linux embarqué : FPGA, SoC, SoPC, softcore…
pk/enseirb/2008
- 90 -
30