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