Mémoire d'Ingénieur CNAM en Electronique 05/12/2006 MISE EN ŒUVRE D’UNE APPLICATION DE TRAITEMENT D’IMAGE SUR LA PLATE FORME ML310 BMP JPEG Mémoire d'Ingénieur CNAM en Electronique 05/12/2006
Mémoire d'Ingénieur CNAM en Electronique 05/12/2006 PLAN Définition des systèmes sur puce Description de la carte de prototypage rapide ML310 Description puis l’implantation du module de compression d’image JPEG en matériel Partie logicielle de l’application de traitement d’image Démonstration Conclusion Mémoire d'Ingénieur CNAM en Electronique 05/12/2006
Mémoire d'Ingénieur CNAM en Electronique 05/12/2006 But du projet Réaliser une application de traitement d’image en utilisant au mieux les ressources de la carte ML310 : capacités du FPGA embarqué capacités des périphériques matériels capacités logicielles Mémoire d'Ingénieur CNAM en Electronique 05/12/2006
Les systèmes sur puce Actuellement Début années 90 Définition des systèmes sur puce Les systèmes sur puce Début années 90 Actuellement Système sur circuit imprimé Implantation dans un seul composant ASIC ou FPGA Mémoire d'Ingénieur CNAM en Electronique 05/12/2006
Définition des SOPC/SOC Définition des systèmes sur puce Définition des SOPC/SOC « System On Programmable Chip» : est une collection d’éléments en interaction sur un seul circuit programmable. Cependant, tous les circuits intégrés ne sont pas des SOPC, un SOPC implémente une fonction « complète » Décodeur MPEG2 vidéo + audio + système + transport + graphique + interface utilisateur Les éléments constitutifs d’un SOPC sont "complexes", réutilisables et de nature variée Mémoire d'Ingénieur CNAM en Electronique 05/12/2006
Avantages du système sur puce Définition des systèmes sur puce Avantages du système sur puce Faible encombrement Robustesse améliorée (mécanique, électromagnétique) Faible consommation électrique Meilleures performances en fréquence Temps de mise sur le marché plus court Diminution du coût global Mémoire d'Ingénieur CNAM en Electronique 05/12/2006
Contraintes des systèmes sur puce Définition des systèmes sur puce Contraintes des systèmes sur puce Méthodologie de développement plus stricte Absence d ’outils « polyvalent » pour le partitionnement automatique logiciel/matériel De fortes dépendances entre le logiciel et le matériel Mémoire d'Ingénieur CNAM en Electronique 05/12/2006
Mémoire d'Ingénieur CNAM en Electronique 05/12/2006 Définition des systèmes sur puce Les FPGA pour les SOPC Mémoire d'Ingénieur CNAM en Electronique 05/12/2006
Description de la carte de prototypage rapide ML310 Les caractéristiques matérielles Les outils de développement du matériel Les outils de développement du logiciel Mémoire d'Ingénieur CNAM en Electronique 05/12/2006
Mémoire d'Ingénieur CNAM en Electronique 05/12/2006 Description de la carte de prototypage rapide ML310 Audio, Ethernet USB, ports Série et // DDR PCI JTAG FPGA IDE Compact Flash E/S Mémoire d'Ingénieur CNAM en Electronique 05/12/2006
Mémoire d'Ingénieur CNAM en Electronique 05/12/2006 Description de la carte de prototypage rapide ML310 Le FPGA XC2VP30 8 Unités de gestion des horloges Multiplication/Division de fréquence Contrôle du déphasage des horloges 4 RocketIO Multi-Gigabit Convertisseurs Série => Parallèle Jusqu’à 6,3 Gbit/s 136 Multiplieurs 18x18 bits résultat sur 36 bits 136 Blocs SelectRAM Mémoire double port de 18Kb Configurables de 16Kx1bit à 512x36bits 556 Entrées/Sorties « SelectIO Ultra » Configurable en tension 1,2 à 3,3V 47 Normes différentes PCI,LVTTL… 2 PowerPC 405 Masque créé par IBM Processeur RISC fonctionnant à 300MHz Blocs Logiques Configurables « CLB » Réalisation de fonctions logiques synchrones, asynchrones ou de mémorisation Mémoire d'Ingénieur CNAM en Electronique 05/12/2006
Les périphériques de la ML310 Description de la carte de prototypage rapide ML310 Les périphériques de la ML310 CF System ACE JTAG 256MB DDR DIMM RS232 High-Speed PM1 SMBus EEPROM SPI High-Speed PM2 GPIO/LEDs Bus PCI page suivante Mémoire d'Ingénieur CNAM en Electronique 05/12/2006
Mémoire d'Ingénieur CNAM en Electronique 05/12/2006 Description de la carte de prototypage rapide ML310 Bus PCI 3,3V du FPGA Intel GD82559 10/100 Ethernet NIC RJ45 TI PCI 2250 PCI 5V PCI 3,3V Ali M1535+ South Bridge AMD Flash RS232(2) GPIO PS/2 K IDE(2) Port // USB(2) SMBus Audio Mémoire d'Ingénieur CNAM en Electronique 05/12/2006
Outils de développement matériel de la carte ML310 Description de la carte de prototypage rapide ML310 Outils de développement matériel de la carte ML310 ISE Développement Matériel de l’IP Simulation MODELSIM Synthèse SYNPLIFY Xilinx Platform Studio Développement de la Plate Forme Matérielle Mémoire d'Ingénieur CNAM en Electronique 05/12/2006
Outils de développement du matériel de la carte ML310 Description de la carte de prototypage rapide ML310 Outils de développement du matériel de la carte ML310 Xilinx Platform Studio (XPS) Développement de L’interface entre l’IP et la Plate Forme Matérielle Développement de la Plate Forme Matérielle Carte ML310 PPC Interface BUS/IP Périphériques et Bus Cartes Périphériques Bus CoreConnect IP ISE ISE FPGA XC2VP30 Entrées Sorties Développement Matériel de l’IP Générer le BitStream IP ISE Simulation MODELSIM Synthèse SYNPLIFY Mémoire d'Ingénieur CNAM en Electronique 05/12/2006
Outils de développement du logiciel de la carte ML310 Description de la carte de prototypage rapide ML310 Outils de développement du logiciel de la carte ML310 Mode Stand-Alone avec Xilinx Platform Studio Réservé aux applications simples Les librairies pour accéder aux périphériques sont à développer par l’utilisateur Utilisation d’un système d’exploitation OS VxWorks Nécessite des équipements matériels supplémentaires (VisionProbe) Nécessite des outils délivrés sous licences payantes (SingleStep, Tornado) Linux Pas de matériel supplémentaire De nombreux outils libres et sous licences disponibles Mémoire d'Ingénieur CNAM en Electronique 05/12/2006
Outils de développement du logiciel pour LINUX Description de la carte de prototypage rapide ML310 Outils de développement du logiciel pour LINUX L’Utilisateur Interpréteur de commandes Les Applications Noyau Linux Drivers et Modules Linux Partie libre Le Matériel Mémoire d'Ingénieur CNAM en Electronique 05/12/2006
Outils de développement du logiciel pour LINUX 2 Description de la carte de prototypage rapide ML310 Outils de développement du logiciel pour LINUX 2 Xilinx Platform Studio Version d’évaluation De MontaVista Librairies + Noyau Linux Générique = Noyau Linux Drivers et Modules Linux Compilateur Croisé CrossTool Les applications de traitement d’image Compilateur Gcc Les utilitaires « Server Web, librairies… » Mémoire d'Ingénieur CNAM en Electronique 05/12/2006
Répartition des applications Description de la carte de prototypage rapide ML310 Répartition des applications Liaison Ethernet Carte ML310 PC Disque dur du PC Xilinx Platform Studio Version d’évaluation De MontaVista Xilinx Platform Studio Version d’évaluation MontaVista Noyau Linux Drivers et Modules Linux Console Telnet Compilateur Croisé CrossTool Disque partagé CrossTool Cartes Compact Flash Les Applications de traitement d’image Compilateur Gcc Compilateur Gcc Disque Dur de la ML310 Les utilitaires« Server Web, librairies… » Mémoire d'Ingénieur CNAM en Electronique 05/12/2006
APPLICATION DE TRAITEMENT D ’IMAGE Principe de la compression JPEG Préparation de l’implantation du noyau JPEG sur le FPGA de la carte ML310 Mémoire d'Ingénieur CNAM en Electronique 05/12/2006
Principe de la compression JPEG Application de traitement d’image Principe de la compression JPEG Le format de fichier embarquant un flux codé en JPEG est JFIF (JPEG File Interchange Format, soit en français Format d'échange de fichiers JPEG), Encodage de l'image en parcourant le bloc en zig-zag suivi d’un codage RLE ou codage des répétitions pour enlever un maximum de valeurs nulles Application de la fonction 2D DCT transformation en cosinus discrète qui décompose la matrice 8x8 en somme de fréquences Quantification de chaque bloc, on applique un coefficient de perte pour diminuer valeurs des hautes fréquences (ratio taille/qualité) Rééchantillonnage de la chrominance, car l'oeil ne peut discerner de différences de chrominance au sein d'un carré de 2x2 points Découpage de chaque composante en blocs de 8x8 points Compression de l'image avec la méthode d'Huffman Mémoire d'Ingénieur CNAM en Electronique 05/12/2006
Caractéristique du noyau JPEG Application de traitement d’image Caractéristique du noyau JPEG Composant JPEG est disponible sur le site OPENCORE Respecte la norme JPEG ISO ITU-T81: Basé sur une DCT à 2D. Encodage selon la méthode Huffman. Type de fichier de sortie JFIF Header. Trois taux de compression pour une image couleur ou noir et blanc RGB de 352x288 codée sur 24bits. Ressources matérielles : Prévu pour être implanté dans un FPGA XILINX Virtex XC2V1000 (Technologie précédant le Virtex II Pro) Conçu à partir de 3 IP Xilinx Coregen dont la DCT (2D Forward DCT) 11 BlockRAMs utilisés, 3969 LUTs utilisées Fréq. Horloge : 41.2 MHz for XC2V1000-4 Mémoire d'Ingénieur CNAM en Electronique 05/12/2006
Adaptation du code JPEG à la cible FPGA XC2VP30 Application de traitement d’image Adaptation du code JPEG à la cible FPGA XC2VP30 Xilinx Platform Studio Adaptation de l’OpenCore JPEG Pour un FPGA XILINX XC2VP30 ModelSim OpenCore JPEG Pour un FPGA XILINX XC2V1000 Simulations Mémoire d'Ingénieur CNAM en Electronique 05/12/2006
Mémoire d'Ingénieur CNAM en Electronique 05/12/2006 Application de traitement d’image Résultats Occupe 7976 LUT soit 29% du FPGA Peut être implanté en plus de l’environnement PCI Constats: La fréquence de fonctionnement maximale simulée après placement routage est de 33MHz Le fonctionnement du code de simulation n’est pas stable Le fichier de l’image compressée JPEG est généré pour la simulation fonctionnelle du code VHDL Mémoire d'Ingénieur CNAM en Electronique 05/12/2006
Modifications apportées Application de traitement d’image Modifications apportées Résolution des problèmes liés à l’instabilité du code Réécriture du fichier de simulation Amélioration de l’interface de contrôle du composant Ajout d’une FIFO d’entrée Ajout d’un contrôleur de remplissage de la FIFO Ajout d’un contrôleur de synchronisation de la compression Obtention du fichier de l’image compressée JPEG Ajout de la logique nécessaire et de la mémoire pour stocker le fichier résultat selon le standard JPEG Mémoire d'Ingénieur CNAM en Electronique 05/12/2006
Le composant JPEG modifié Application de traitement d’image Le composant JPEG modifié JPEG Modifié Nb L/C IM C/NB Données Compressées OpenCore JPEG Pour un FPGA XILINX XC2VP30 Buffer de Stockage de l’image JPEG Contrôleur de Compression RGB Logique de Gestion des adresses Busy RGB FIFO D’Entrée La FIFO Contient Des Données FIFO Pleine RGB Contrôleur de Remplissage Données Compressées Lancement de La compression Initialisation de la compression Attente de la Fin de Compression Extraction de L’image JPEG Compression Terminée Image Envoyée Envoi de L’image RGB Fichier JPEG Reset du composant Nouveau Fichier de Simulation Mémoire d'Ingénieur CNAM en Electronique 05/12/2006
Préparation de l’implantation Application de traitement d’image Préparation de l’implantation Répartition des Entrées/sorties sur 4 registres de 32 bits Trois en entrée Un en sortie 33MHz 100MHz Mémoire d'Ingénieur CNAM en Electronique 05/12/2006
Résultat de la simulation du composant JPEG modifié 2 Application de traitement d’image Résultat de la simulation du composant JPEG modifié 2 Effets de blocs dus à la DCT Image BMP 352x288 24 bits 297 Ko (304 182 octets) Image JPEG 352x288 24 bits 9.96 Ko (10 204 octets) Mémoire d'Ingénieur CNAM en Electronique 05/12/2006
IMPLANTATION DU COMPOSANT JPEG SUR LA CARTE ML310 Le choix des interfaces entre le processeur et le composant Les résultats de l’implantation Mémoire d'Ingénieur CNAM en Electronique 05/12/2006
Interfaçage du composant JPEG au bus Coreconnect Implantation du composant JPEG sur la carte ML310 Interfaçage du composant JPEG au bus Coreconnect Mémoire d'Ingénieur CNAM en Electronique 05/12/2006
Résultats de l’implantation du composant JPEG sur la carte ML310 La fréquence de fonctionnement réelle est de 10MHz Capacité de traitement maximum 6 images par secondes au format 352x288 24 bit quelque soit la charge du processeur sous Linux Taux Faible Taux Moyen Taux Fort Moyenne pour 10 Images de 352x288 12 25 61 Mémoire d'Ingénieur CNAM en Electronique 05/12/2006
Mémoire d'Ingénieur CNAM en Electronique 05/12/2006 PARTIE LOGICIELLE Cahier des charges de la partie logicielle Séquence d’acquisition puis de compression depuis une page HTML Mémoire d'Ingénieur CNAM en Electronique 05/12/2006
Cahier des charges pour la partie logicielle Acquisition de l’image depuis une WebCam connectée sur le port USB de la ML310 Application utilisable depuis le réseau Ethernet Lancement de l’acquisition/compression depuis une page HTML Avec paramétrage de la taille de l’image Affichage de l’image prise par la WebCam Sur la page HTML et sur un moniteur relié à la carte ML310 Affichage des images compressées sur le page HTML Mémoire d'Ingénieur CNAM en Electronique 05/12/2006
Déroulement de l’application logicielle Partie logicielle Déroulement de l’application logicielle YUV420 640x480 640x480 Initialisation De la WebCam En 640x480 Lancement de l’application depuis un Navigateur Windows Lancement de L’Acquisition Puis de la Compression Carte ML310 JPEG C1-1 320x240 JPEG C3-1 320x240 JPEG C2-1 320x240 Liaison Ethernet Disque Dur BMP 320x240 BMP 320x240 BMP 320x240 BMP 320x240 BMP 320x240 Serveur Apache BMP 640x480 YUV420 640x480 BMP 640x480 BMP 320x240 BMP 320x240 JPEG C1-1 320x240 JPEG C1-2 320x240 JPEG C1-3 320x240 JPEG C1-4 320x240 JPEG N1-1 320x240 JPEG N1-2 320x240 JPEG N1-3 320x240 JPEG N1-4 320x240 JPEG C2-1 320x240 JPEG C2-2 320x240 JPEG C2-3 320x240 JPEG C2-4 320x240 JPEG N2-1 320x240 JPEG N2-2 320x240 JPEG N2-3 320x240 JPEG N2-4 320x240 JPEG C3-1 320x240 JPEG C3-2 320x240 JPEG C3-3 320x240 JPEG C3-4 320x240 JPEG N3-1 320x240 JPEG N3-2 320x240 JPEG N3-3 320x240 JPEG N3-4 320x240 Mémoire d'Ingénieur CNAM en Electronique 05/12/2006
Mémoire d'Ingénieur CNAM en Electronique 05/12/2006 Démonstration Lancement de la console en mode Telnet Page du serveur Apache Lien vers l’acquisition puis compression d’une image de 640x480 24bits Mémoire d'Ingénieur CNAM en Electronique 05/12/2006
Mémoire d'Ingénieur CNAM en Electronique 05/12/2006 Conclusion L’application est fonctionnelle même si les performances ne sont optimales D’un point de vue personnel Acquérir des connaissances sur les FPGA Programmation Simulation Synthèse Implantation Acquérir des connaissances sur le logiciel embarqué Mise en place d’un OS Développement des couches logicielles bas niveau Mémoire d'Ingénieur CNAM en Electronique 05/12/2006
Mémoire d'Ingénieur CNAM en Electronique 05/12/2006 QUESTIONS ? Mémoire d'Ingénieur CNAM en Electronique 05/12/2006