Université de Bordeaux 1 ECOLE DOCTORALE DES SCIENCES PHUSIQUES ET DE L INGENIEUR. Thèse

Dimension: px
Commencer à balayer dès la page:

Download "Université de Bordeaux 1 ECOLE DOCTORALE DES SCIENCES PHUSIQUES ET DE L INGENIEUR. Thèse"

Transcription

1 N d ordre : 4505 Université de Bordeaux 1 ECOLE DOCTORALE DES SCIENCES PHUSIQUES ET DE L INGENIEUR Thèse présentée en première version en vu d obtenir le grade de Docteur, spécialité «Electronique» par Moez KTHIRI Etude et Implantation d Algorithmes de Compression Vidéo optimisés H.264/AVC dans un Environnement Conjoint Matériel et Logiciel Thèse soutenue le 04/04/2012 devant le jury composé de : M. Serge WEBER Université de Lorraine (Président) M. Lotfi KAMOUN Université de sfax (Rapporteur) M. Lilian Bossuet Université Jean Monnet (Rapporteur) M. Hervé LEVI Laboratoire IMS (Directeur) M. Patrice KADIONIK Laboratoire IMS (Co-Directeur) M. Bertrand LE GAL Laboratoire IMS (Co-Directeur)

2

3 A mes parents A ma famille A tous ceux qui me tiennent à coeur...

4

5 Remerciements Je remercie, au premier lieu, mon Dieu qui m a offert et préservé une bonne santé et qui m a entouré de sa bienveillance et sa grâce. Je le remercie également de m avoir confié à des gens respectueux, responsables et scientifiques pendant ces années de thèse. Je remercie tout d abord le professeur Pascal FOUILLAT directeur du labo IMS pour m avoir accueilli au sein de son laboratoire IMS pendant la réalisation de mes travaux. Cette thèse s est effectuée dans l équipe Conception de Systèmes Numériques (CSN) du Laboratoire de l Intégration du Matériau au Système (IMS) de l Université de Bordeaux et de l ENSEIRB-MATMECA. je remercie également le professeur Dominique DALLET, pour m avoir accordé l opportunité d effectuer mes travaux de thèse au sein de son équipe de recherche. Un grand merci aussi pour la bonne ambiance qu il veille à diffuser entre les membres de l équipe. Je remercie spécialement M. Lotfi KAMOUN et M. Lilian BOUSSUET pour avoir accepté d évaluer mes travaux de thèse présentés dans ce manuscrit. Je remercie sincèrement M. Hervé LEVI, mon directeur de thèse, pour son soutien permanent et son expertise. Je salue ainsi sa grande complémentarité, tant du point de vue des connaissances que de la démarche scientifique. Merci à M. Patrice KADIONIK de m avoir encadré de près durant ces années. Sa sagesse et son sens des responsabilités ont été une source de sérénité et de discussions fructueuses mais surtout l écoute, la compréhension et la confiance en toutes situations qui auront influencé ma formation tout ce temps. Merci à M. Bertrand LE GAL pour son soutien moral, son assistance scientifique et technique, sa disponibilité, sa capacité à fournir de l aide dans les moments difficiles et plus que tout, sa patience lors des discussions imprévisibles qui, malgré nous, durent quelques heures contre les quelques minutes pré-annoncées. Merci beaucoup. Je tiens aussi à remercier M. Ahmed BEN ATITALLAH, Maître Assistant à l Institut

6 Supérieur d Electronique et de Communication de Sfax (Tunisie) à qui je suis très reconnaissant pour ses conseils avisés. J aimerais remercier l ensemble du personnel du laboratoire IMS pour leur accueil, leurs services et leurs sourires quotidiens. Ma reconnaissance et mes remerciements vont spécialement aux différents membres de l équipe CSN du Laboratoire IMS : Sahbi, Mickael, Aurélien, Willy et Simone pour l excellente ambiance de travail qu ils ont su faire régner pendant ces années de thèse. Je n oublierai pas l ambiance chaleureuse et dynamique de ce groupe. Voilà, le grand moment est venu, il s agit de remercier mes parents. Sans leur soutien, cela aurait été plus dur de surmonter les difficultés de la vie.

7 Table des matières Table des matières Liste des figures vii ix Introduction 1 1 Les techniques de compression vidéo Contexte Principes de base des normes de compression vidéo Evolution des normes de compression vidéo Les normes de l ISO/IEC Les normes de l UIT-T H.264 / MPEG-4 AVC Norme H.264 / SVC La norme H Description détaillée de la norme H.264/MPEG-4 AVC Prédiction Transformée fréquentielle Quantification Filtrage anti-blocs Codage entropique Structure du décodeur H.264 / MPEG-4 AVC Les profils de la norme H.264/AVC Etude bibliographique de la complexité dans le décodeur H.264/AVC Conclusion Architectures d implantation matérielles Introduction Les circuits ASIC et les circuits logiques programmables Les circuits ASIC Les circuits logiques programmables

8 2.3 Conception des systèmes numériques complexes Les architectures mixtes (conception conjointe ou Codesign) Les processeurs embarqués Les processeurs embarqués de la famille Xilinx Conclusion Implantation efficace du filtre anti-blocs de la norme H.264/AVC Introduction Description de l algorithme de filtrage Modifications algorithmiques proposées dans la littérature Algorithme de filtrage proposé Architecture matérielle d implantation Conclusion Validation fonctionnelle sur plateforme FPGA Introduction Environnement logiciel et matériel de la plateforme Evaluation des performances de l implantation tout logiciel du décodeur H.264/ MPEG-4 AVC Evaluation des performances d une implantation conjointe matérielle/logicielle du décodeur H Conclusion Conclusion générale 115 Bibliographie 117 Notations 123

9 Liste des figures 1.1 Une matrice de pixels Les composantes RVB Les composantes YCrCb Format de la vidéo (a) 4 : 2 : 0, (b) 4 : 2 : 2, (c) 4 : 4 : Redondance spatiale et temporelle Exemple de la redondance temporelle Diagramme d un codeur vidéo (en haut) et son décodeur (en bas) Date d apparition de différentes normes Hiérarchie des données dans le flux vidéo Présentation de l extensibilité temporelle Structure de prédiction hiérarchique compatible avec l extensibilité temporelle de la norme SVC : codage avec des images hiérarchiques de type B Présentation de l extensibilité spatiale Fonctionnement de la chaîne de codage H.264/AVC Exemple de configuration de codage d une séquence vidéo Prédiction Intra Prédiction Inter Mode d Intra prédiction 16* Mode d Intra prédiction 4* Algorithme de recherche Full Search Les deux types de zigzag Décodeur H.264/AVC [1] Types de codage de la couche VLC Les étapes de décodage CAVLD Différentes tailles de Macroblocs intégrés dans la norme H264/AVC Profilage du décodeur H.264/AVC [2] Profilage du décodeur H.264/AVC [3] Flot de conception d un ASIC

10 2.2 Description de l architecture générique d un circuit FPGA Organisation des FPGA de Xilinx Architecture simplifiée d un Slice Trois modes de configuration des LUT Structure d une cellule logique à 4 entrées Evolution de la conception numérique Ssytème sur puce basé sur l utilisation d un cœur de processeur Le flot de conception Codesign : Présentation générale Schéma de base du processeur PowerPC 440 [4] Schéma de base de MicroBlaze Impact du filtre anti-blocs Filtrage horizontal et vertical des blocs 4 4 pour les deux composantes luminance et chrominance Les quatre étapes de filtrage d un groupe 4x4 de pixels Principe du filtrage anti-blocs d un bord 4x Ordre de filtrage proposée par le standard H.264/AVC Ordre de filtrage suivant la position du bloc Ordre de filtrage proposée par G. Khurana [5] Ordre de filtrage propoée par He Jing [6] Ordre de filtrage proposée par C. Chien [7] Ordre de filtrage proposée par K-H. Chen [8] Ordre de filtrage proposée Organisation méemoire Chronogramme de l architecture proposée Architecture globale du filtre anti-blocs Vue globale de l architecture proposée Processus de filtrage Architecture globale du filtre anti-blocs Architecture d une unitée de filtrage Entrées et sorties du module de transposition Répartition de la complexité matérielle de l architecture proposée Comparaison des performances basée sur le débit (kmb/s) Estimation de l ordre de filtrage pour le mode 4 :2 : Estimation de l ordre de filtrage pour le mode 4 :4 : Ordre de filtrage pour le mode 4 :4 :4 utilisant 12 unités de filtrage Ordre de filtrage pour le mode 4 :4 :4 utilisant 12 unités de filtrage Répartition en termes de LUTs des différents modules

11 4.1 Carte de développement Xilinx ML Systèmes d exploitation pour les applications embarquées Outil Xilinx ISE Outil Xilinx XPS Choix du processeur embarqué Développement d applications de test avec XPS SDK Séquences de test Système embarquée PowerPC de la plateforme de validation Profiling du décodeur H.264/AVC Interface graphique pour l ajout d un bloc IP choix de bus de communication Précision du nombre d entrées/sorties Ajout des entrées/sorties Généeration du système SoPC avec XPS Module matériel ICT_1D Implémentation de la transformée entière 1D Architecture générale de Xenomai Schèma général d un système Linux avec Xenomai Système embarquée PowerPC

12

13 Introduction Les axes de recherche dans le domaine des applications multimédia sont vastes. En effet, les applications multimédia doivent s adapter aux besoins applicatifs ainsi qu aux supports de diffusion. En fonction des domaines applicatifs, les débits varient tout comme la qualité de service. De plus, d autres paramètres tels que la robustesse des flux à la perte d informations, la capacité d adaptation du flux vidéo aux variations de la bande passante, aux changements des besoins applicatifs (qualité, fréquence...) rendent les recherches dans le domaine de la vidéo numérique complexes et variées. Afin de repondre à des besoins de standardisation des techniques proposées, plusieurs normes de codage vidéo ont été développées durant la dernière décennie donnant naissance à la norme H.264/AVC (Advanced Video Codec) ou MPEG-4 Part10. Cette norme est le fruit de la collaboration entre le groupe VCEG de l ITU-T (International Telecommunication Union) et le groupe MPEG de l ISO/IEC (International Organization for Standardization). Cette norme de compression pour les vidéos numériques offre des performances intéressantes en termes d efficacité de codage, de flexibilité et de qualité. Grâce à ses performances, elle convient actuellement à une large variété de domaines d applications. Cependant, ces performances sont obtenues au dépend de la complexité calculatoire des techniques employées. Cette forte complexité calculatoire nécessite l élaboration d équipements plus performants en termes de puissance et de calcul en comparaison avec les normes précédentes. Cela est indispensable afin de satisfaire la contrainte temps réel imposée par les applications vidéo. Aujourd hui, la conception d une architecture matérielle pour un système embarqué multimédia s avère complexe. En effet, il est nécessaire de réaliser des compromis entre flexibilité, sa consommation d énergie, ses performances, son coût et le temps nécessaire à sa conception (Time To Market). La complexité calculatoire des applications multimédia actuelles est incompatible avec la seule utilisation de processeurs à jeu d instructions. Ces derniers offrent une puissance de calcul élevée ainsi qu une grande flexibilité d utilisation mais ils sont énergivores et trop onéreux. Cela rend leur utilisation inadéquate dans le domaine des systèmes embarqués. Toutefois les concep-

14 Introduction teurs possèdent d autres solutions pour implanter les applications vidéo dans ces systèmes. En fonction des contraintes de conception, l intégrateur peut choisir entre la conception d une architecture dédiée pour cible ASIC ou FPGA. Dans ce contexte, avec l évolution de la densité d intégration en microélectronique, il est aujourd hui possible de concevoir des systèmes complexes au sein d une même puce. Ces systèmes sont appelés systèmes sur puce SoC (System on Chip) ou SoPC (System On Programmable Chip) en fonction de la technologie d intégration (respectivement ASIC et FPGA). La complexité des systèmes embarqués et notamment multimédia nécessite la mise en œuvre de méthodologies de conception conjointes logicielle/matérielle (codesign) afin de permettre la conception d architectures matérielles complexes et fortement parallèles tout en apportant une flexibilité d utilisation nécessaire dans les applications ambarquées. Durant la dernière décennie, des efforts de conception et de modélisation ont permis de réaliser des architectures matérielles hautement configurables permettant de reproduire le fonctionnement et la structure des modules les plus complexes de la norme H.264/AVC et plus spécialement le décodeur. Ainsi, nous réaliserons une analyse de la répartition de la complexité calculatoire de cette norme dans le but d identifier les modules les plus coûteux du point de vue temps d exécution afin de construire une bibliothèque de modules IP (Intellectual Property) développés au niveau RTL (Register Transfer Level) en langage VHDL. Ces blocs IP seront alors utilisés comme accélérateurs matériels pour l implantation de la norme. C est dans le contexte de la mise au point d une solution architecturale pour l implantation d un décodeur H264/AVC temps réel à partir d une solution mixte (matérielle et logicielle) que cette thèse a été menée. Plan du mémoire de thèse La démarche scientifique adoptée dans ce manuscrit de thèse suit le plan suivant : Le premier chapitre est consacré à l état de l art des normes de compression vidéo. Durant cette présentation, les concepts de vidéo numérique et les traitements associés aux étapes d encodage et de décodage de la norme H.264/AVC sont introduits. Le second chapitre présente les différentes solutions que possède actuellement un concepteur de systèmes numériques pour implanter des applications vidéo temps réel. Le troisième chapitre s intéresse plus particulièrement au fonctionnement du filtre anti-blocs qui est le traitement le plus coûteux de la norme H264/AVC. 2

15 Introduction Une implantation matérielle efficace de ce filtre est proposée et comparée aux approches présentes dans la littérature. Cette réalisation matérielle fait partie intégrante des blocs matériels mis en œuvre dans la réalisation d un démonstrateur développé pour la validation fonctionnelle du système. Le quatrième et dernier chapitre est consacré dans un premier temps à l étude et à l évaluation des performances du décodeur avant et après intégration des accélérateurs matériels sur une plateforme matérielle. Cette plateforme matérielle basée sur un circuit FPGA de type Xilinx Virtex-5 a permis la validation fonctionnelle des différentes modules IP développés ainsi que de la méthodologie employée pour le développement conjoint. Dans la seconde partie de ce chapitre, nous analysons les performances au regard du respect des contraintes temporelles en intégrant une extension temps réel (Xenomai) au système d exploitation utilisé sur la plateforme de validation. Enfin, dans la conclusion générale, nous mettrons en évidence les avancées apportées dans la conception en codesign du décodeur H.264/AVC ainsi que les perspectives concernant la conception d architectures innovantes pour le profil haute définition et pour les nouvelles normes telles que la norme H.264/SVC et la norme H.265 qui n est pas encore standardisée. 3

16

17 Les techniques de compression vidéo 1 Sommaire 1.1 Contexte Principes de base des normes de compression vidéo Evolution des normes de compression vidéo Les normes de l ISO/IEC Les normes de l UIT-T H.264 / MPEG-4 AVC Norme H.264 / SVC La norme H Description détaillée de la norme H.264/MPEG-4 AVC Prédiction Transformée fréquentielle Quantification Filtrage anti-blocs Codage entropique Structure du décodeur H.264 / MPEG-4 AVC Les profils de la norme H.264/AVC Etude bibliographique de la complexité dans le décodeur H.264/AVC Conclusion

18

19 1.1. Contexte 1.1 Contexte Les progrès de l électronique et de l informatique durant les dernières décennies ont stimulé les travaux de recherche autour de la compression et de la diffusion des contenus vidéo. Ces travaux principalement destinés à l origine aux problématiques professionnelles (afin de permettre par exemple l émergence de la visioconférence) ont connu une évolution importante avec l apparition massive des systèmes embarqués multimédia pour le grand public. L image et la vidéo plus que les autres média (parole, son, dessin, graphique, texte) se caractérisent par la grande masse d informations qu elles véhiculent. Transmettre ou stocker des flux vidéo sur un réseau ou bien sur un disque magnétique nécessite une compression préalable afin de réduire le volume d information. Différents standards de compression ont été normalisées durant les dernières décennies afin d assurer une interopérabilité entre différents dispositifs. Parmi les normes les plus connues nous pouvons citer parmis les plus connues MPEG-1, MPEG- 2, H.261, H.262, H.264/AVC. Les standards de compression vidéo sont issus de deux grands organismes de normalisation : l ITU-T (International Télécommunication Union - Telecommunications Standard Sector) et l ISO-IEC (International Organisation for Standardization - International Electrotechnical Commission). Les travaux de ces deux organismes ont convergé pour permettre l élaboration d une norme commune H.264/MPEG-4 Part10. Les performances de cette norme ont permis de diviser par deux le débit d information binaire à qualité visuelle équivalente aux normes précédentes. La réduction des besoins en termes de stockage/transmission est liée aux nouvelles techniques mises en œuvre dans ce standard. Dans ce chapitre, nous allons présenter les principes de compression vidéo. Puis nous détaillerons les évolutions majeures présentes entre les différents standards de compression vidéo. Finalement, nous présenterons plus particulièrement les techniques employées dans l encodeur et le décodeur de la norme H.264/AVC. 1.2 Principes de base des normes de compression vidéo Une vidéo numérique est constituée d une suite d images numériques. Chaque image est formée d une matrice de pixels (Figure 1.1). L œil humain est capable de distinguer le rafraichissement des images que lorsque 7

20 Chapitre 1. Les techniques de compression vidéo Figure 1.1 Une matrice de pixels la fréquence de mise à jour est inférieure à 25 images par seconde. On caractérise la fluidité d une vidéo par sa résolution temporelle, c est à dire par le nombre d images par seconde (frame rate) exprimé en fps (Frame Per Second). Ce dernier est toujours supérieur à 25 fps et peut atteindre pour certaines applications 100 fps. Une séquence vidéo est aussi caractérisée par sa résolution spatiale. Cette caractéristique définit le nombre de lignes et le nombre de colonnes de pixels composant chacune des images. A titre d exemple, la résolution spatiale d une image extraite d une vidéo haute définition (Full HD) est actuellement de 1920 pixels en largeur et de 1080 pixels en hauteur. La troisième caractéristique vidéo est la profondeur. Elle détermine le nombre de variantes de couleurs qui peuvent être représentées et qui sont exprimées en nombre de bits par pixel (bit/sample). En se référant à la théorie trichromatique, la sensation de couleur est produite par l excitation au niveau de l œil de 3 classes de récepteurs. Dans le système RVB (Rouge, Vert, Bleu) de représentation des couleurs, une couleur est produite par l addition des 3 composantes de base : le Rouge, le Vert et le Bleu (Figure 1.2). En général, chaque composante de l image (Rouge, Vert, Bleu) est codée sur 8 bits. Dans ce cas, 24 bits sont nécessaires afin de coder la couleur d un pixel. A l aide des différentes combinaisons (2 24 ), il est possible d obtenir 16,8 millions de couleurs par pixel. Toutefois, il est possible de travailler avec une profondeur inférieure. Les applications de vidéosurveillance utilisent des flux vidéo en nuance de gris. Pour ces applications, 8 ou 12 bits par pixel (bpp) suffisent. L espace colorimétrique nommé YCbCr est un autre espace de représentation des couleurs. Dans ce format, Y représente la luminance, Cr représente la chrominance rouge et Cb représente la chrominance bleue. Ce format est couramment employé dans les applications de compression vidéo en remplacement du format RGB. 8

21 1.2. Principes de base des normes de compression vidéo Figure 1.2 Les composantes RVB Figure 1.3 Les composantes YCrCb La composante Y donne une information sur la luminance (niveau de gris) alors que les deux autres composantes Cr et Cb donnent une information sur les couleurs dans l image (Figure 1.3). Des résultats expérimentaux ont prouvé que l œil humain est plus sensible aux variations fines d intensité lumineuse (luminance) qu à celles de la couleur (chrominance). A partir de ce constat, le choix a été fait de privilégier la luminance aux chrominances dans le processus de compression : le nombre de bits alloués pour mémoriser la luminance est supérieur à celui attribué pour les informations de chrominance. Les composantes YCbCr sont calculées à partir des composantes RGB à l aide des formules suivantes : Y = R G B (1.1) Cb = R G + 0.5B (1.2) Cr = 0.5 R G B (1.3) 9

22 Chapitre 1. Les techniques de compression vidéo Figure 1.4 Format de la vidéo (a) 4 : 2 : 0, (b) 4 : 2 : 2, (c) 4 : 4 : 4 Puisque le Système Visuel Humain (SVH) est plus sensible à la luminance qu aux chrominances, toutes les normes de compression vidéo sous échantillonnent les informations de chrominance afin de réduire fortement le volume d informations à mémoriser. En règle générale, le volume des données liées aux chrominances Cb et Cr est divisé par un facteur 4 (sous échantillonnage d un facteur 2 sur les 2 dimensions). Ce format d image dans lequel les informations de chrominances sont sous échantillonnées d un facteur 4 est appelé mode 4 : 2 : 0. Cette réduction du volume d information permet de limiter la quantité de données à compresser puis à transmettre. En effet, la complexité calculatoire du processus de compression est réduite de 50%. Toutefois, d autres modes de représentation d images existent : le mode 4 : 4 : 4 (pas de sous-échantillonnage) et le 4 : 2 : 2 (sous-échantillonnage de la chrominance d un facteur 2 uniquement). Lors du décodage des images, il est nécessaire reconstruire les données manquantes. Pour cela, une étape de sur-échantillonnage est appliquée sur les informations de chrominance. Afin de réduire efficacement le volume d informations nécessaires à la mémorisation ou à la transmission d un contenu vidéo, il est nécessaire de réduire autant que possible les redondances d informations dans le flux. Cette réduction des redondances d informations doit être réalisée de manière contôlée afin d affecter au minimum la qualité visuelle après décompression. Il existe une relation liant le taux de compression d une séquence vidéo et la qualité visuelle de cette dernière. Afin de diminuer le volume d information à mémoriser, le processus de compression vidéo a pour objectif la suppression des diverses redondances présentes dans ce 10

23 1.2. Principes de base des normes de compression vidéo Figure 1.5 Redondance spatiale et temporelle Figure 1.6 Exemple de la redondance temporelle flux d images. Deux types de redondances sont considérées dans la norme de compression vidéo H264/AVC (Figure 1.5) : La redondance spatiale : ce type de codage exploite la corrélation spatiale des données au sein d une même image (indépendamment des autres images de la séquence). Généralement, dans une image, la différence de couleur et d intensité lumineuse entre des pixels voisins est assez faible. Donc, plutôt que de mémoriser la valeur propre de chacun des pixels d une image, il est plus efficace de ne coder que les différences de valeur entre les pixels successifs. La redondance temporelle : ce type de codage exploite la corrélation temporelle entre des images successives. Elle est utilisée dans le cas où la différence entre deux images successives dans une séquence vidéo est relativement faible (illustrée dans la Figure 1.6). Dans ce cas de figure, afin de minimiser le nombre d informations à mémoriser afin de transmettre la seconde image, on cherche à identifier les déplacements des pixels entre ces deux images successives. Ainsi les données (valeurs de pixels) de la seconde image sont codées par rapport à l image précédente. Seules les différences entre ces deux images sont alors transmises. Ce type de codage est appelé codage Interframe. 11

24 Chapitre 1. Les techniques de compression vidéo Figure 1.7 Diagramme d un codeur vidéo (en haut) et son décodeur (en bas) Figure 1.8 Date d apparition de différentes normes La structure générale d une chaîne de compression et de décompression vidéo est schématisée Figure 1.7. Les étapes de prétraitement et de post-traitement sont en charge de la détection, de la modification et de la reconstruction des images à partir des redondances spatiales et temporelles identifiées. 1.3 Evolution des normes de compression vidéo Durant la dernière décennie, les domaines d application et les besoins en termes de compression et d interopérabilité des contenus vidéo ont évolué. La Figure 1.8 synthétise l évolution des différentes recommandations ou normes de compression vidéo. Les organismes ITU-T [9] et ISO/MPEG [10] se partagent la normalisation des standards de compression vidéo. Le premier s intéresse principalement aux applications nécessitant de faibles débits, applications de visiophonie et de visioconférence. 12

25 1.3. Evolution des normes de compression vidéo Le deuxième s intéresse aux applications nécessitant des débits plus élevés : applications d archivage et de diffusion [11] Les normes de l ISO/IEC Norme MPEG-1 Le premier standard international traitant de la compression vidéo a été publié en novembre 1992 sous le nom de MPEG-1. L objectif de cette norme était le codage d images en mouvement et du son associé en vue d un stockage numérique. Les débits supportés par MPEG-1 peuvent atteindre 1,5 Mb/s (dont 1,2 Mb/s pour l image animée, 256 kb/s pour l audio stéréo et quelques kb/s pour les données annexes) [12, 13]. Bien que ce standard soit optimisé pour compresser un flux vidéo de type SIF sous une contrainte de débit à 1,5 Mb/s ( @30fps progressif ou @25fps en YUV4 : 2 : 0), il est toutefois possible d adapter le débit et/ou la résolution. Une séquence vidéo au format MPEG-1 est découpée en groupes d une quinzaine d images (GOP, Group Of Pictures). Chaque image d un GOP peut être encodée de façon Intra (I), Inter (P) ou Bidirectionnelle (B). Dans ce standard, chaque image est découpée en sous-blocs (nommés macroblocs) afin de réduire la complexité calculatoire des étapes de recherche et de compensation de mouvement. Les macroblocs sont de taille fixe et se composent de pixels. Lors des traitements réalisés durant les étapes d encodage et de décodage (hors estimation de mouvements), ces macroblocs sont toutefois décomposés en sous blocs de taille 8 8 pixels. Norme MPEG-2 Le standard MPEG-2 [14] a été proposé en novembre Initialement élaboré pour la transmission de vidéo de qualité TV avec un débit compris entre 4 et 9 Mb/s, ce standard a absorbé la compression des vidéos TV Haute Définition (TVHD) alors dévolues à MPEG-3. Le standard supporte la compression progressive ou entrelacée de vidéos avec des débits variant de 1,5 Mb/s à 100 Mb/s. Ces spécifications couvrent les besoins de la TVHD, des médias de stockage interactifs (ISM) et de TV par câble. MPEG-2 génère un flux de données numériques permettant une extraction d un flux de débit moindre assurant une reconstruction à résolution inférieure. D une manière générale, il assure une compatibilité descendante et ascendante entre les codeurs et les décodeurs de normes et de résolutions différentes. 13

26 Chapitre 1. Les techniques de compression vidéo Les couches structurant les flux MPEG-2 sont similaires à celles définies par MPEG-1. Les améliorations se situent principalement aux niveaux de la compensation de mouvement, de la gestion des coefficients fréquentiels et de l adaptabilité du flus vidéo (scalability). Norme MPEG-4 Le standard MPEG-4 normalisé en 1998 se base sur le concept d objets média (media objects) pour représenter des contenus audio-visuels. Ces objets peuvent être combinés et synchronisés. Ils interagissent avec l utilisateur selon des limites fixées par leurs auteurs. Une hiérarchie lie les objets. Le niveau de base est constitué "d objets médias primitifs" regroupant les images fixes, les vidéos, les sons, le texte, les graphiques, les visages parlants synthétiques et les sons synthétiques. MPEG-4 permet la composition de scènes complexes en standardisant la façon de placer, transformer, grouper, modifier et interagir avec les objets. La partie visuelle de la norme MPEG-4 décrit les méthodes pour la compression des images et des vidéos, des textures. Le codage flexible (scalable) des flux vidéo est intégré dans la norme MPEG-4. Il est possible de ne décoder qu une partie du flux vidéo. Cette caractéristique permet d adapter le flux vidéo aux limitations de débit du canal de transmission ou aux capacités du décodeur. Le codage des objets audio fournit des outils pour la représentation des sons aussi bien naturels (parole, musique) que synthétiques basés sur une description de structure. Le débit alloué varie entre 6 kb/s et 24 kb/s et permet également une transmission extensible. Enfin, afin d améliorer la qualité de service (par exemple pour les applications mobiles), le standard prévoit de techniques de resynchronisation du flux vidéo. Cela permet de corriger ou de limiter les effets des erreurs de transmission. Bien que les domaines d application des standards MPEG-4 et H.263+ soient différents, ils sont parfois recouvrants. Par exemple, les deux standards tentent de coder efficacement les vidéos pour des débits compris entre 24 kb/s et 64 kb/s. Ces recouvrements proviennent du fait que de nombreux participants à l élaboration du standard MPEG-4 Vidéo participaient également à l UIT-T [15]. Norme MPEG-7 Développé comme ses prédécesseurs par le Moving Picture Experts Group, MPEG- 7 [16] est une simple évolution ou amélioration de normes ultérieures. Par ailleurs, MPEG-7 propose d adresser une large spectre d applications. En effet son domaine 14

27 1.3. Evolution des normes de compression vidéo d application couvre : l archivage radio, la télévision et le cinéma, les systèmes d informations géographiques ou touristiques, la télédétection, le domaine biomédicale, etc. Au sein de la norme MPEG-7, les applications sont divisées en deux catégories : les applications de type pull et celles de type push. La catégorie pull regroupe les applications qui ciblent l extraction et la recherche de données audiovisuelles. Dans ce contexte, il est explicitement fait mention des applications suivantes : Stockage et requête de l information dans des bases de données vidéo. Fourniture d images et de vidéos pour la production professionnelle. Applications commerciales musicales. Bibliothèques d effets sonores. Bases de données de discours historiques. Recherche de films selon les événements. Enregistrement et recherche de marques enregistrées. La catégorie push suit plutôt le paradigme du filtrage et de la sélection de données pour des applications spécifiques au monde du broadcasting ou du webcasting. Enfin, MPEG-7 se propose également d aborder un certain nombre d applications ayant un profil hautement spécialisé voire professionnel. Dans ce cadre, nous retrouvons des applications telles que l imagerie satellitaire (remote sensing application), la télésurveillance, le contrôle par la vision (visually-based control) Les normes de l UIT-T Les principaux standards normalisés par l ITU-T sont : Norme H.261 La norme H.261 standardisée en 1988 a été développée pour permettre la transmission de vidéos à débits variable (px64 kb/s où p varie de 1 à 30). Elle cible particulièrement des applications de type vidéophonie et vidéoconférence [17]. Le format d image utilisé est le QCIF ( pixels), optionnellement le CIF ( pixels) et le Sub-QCIF ( pixels). La fréquence de rafraichissement des images de base est de Hz. Chaque Macrobloc composant une image peut être codé en mode Intra ou en Inter afin d exploiter ou non les redondances temporelles entre les images. 15

28 Chapitre 1. Les techniques de compression vidéo Figure 1.9 Hiérarchie des données dans le flux vidéo La transformation des 4 blocs de 8 pixels d un macrobloc de la représentation temporelle à la représentation fréquentielle est réalisée au moyen d une TCD (Transformée en Cosinus Discret). Les 64 coefficients fréquentiels obtenus après traitement sont alors quantifiés. L étape de quantification est la source principale de perte de la qualité visuelle lors de la compression d un flux vidéo. Cette étape est contrainte par l utilisateur en fonction du compromis souhaité (taux de compression, qualité visuelle). En effet, en fonction du compromis, le pas de quantification des coefficients fréquentiels de la DCT varie. En aval de cette étape, les données issues du flux vidéo sont traitées par un codage à longueur variable. En mode Inter, l estimation de mouvements transmet des vecteurs de mouvement entiers. Les vecteurs de mouvement ne peuvent pas excéder +/-15 pixels. Un seul vecteur de mouvement est utilisé pour la luminance et la chrominance. Lors de la transmission des données, le flux vidéo est structuré en 4 niveaux comme cela est présenté dans la figure 1.9. Norme H.263 Il s agit d une norme du codage vidéo dédiée aux applications de vidéocommunication à très bas débit. La première version de cette norme a été adoptée en La norme H263 [18] vise les applications de visiophonie et visioconférence sur réseaux RTC (Réseau Téléphonique Commuté) et RNIS (Réseau numérique à Intégration de Services). Cette norme repose sur les principes de base mis en place dans la norme H

29 1.3. Evolution des normes de compression vidéo Le codage du flux vidéo est réalisé grâce à un partitionnement de chaque image en Macroblocs composés de pixels pour la luminance et de 8 8 pixels pour la chrominance (Cb et Cr). Chaque Macrobloc peut être codé en mode Intra ou en mode Inter. Les redondances spatiales sont exploitées par un codage TCD tandis que les redondances temporelles le sont par une compensation de mouvement. Cette compensation de mouvement utilise des vecteurs non bornés avec une précision au demi-pixel et permet une interpolation bidirectionnelle. Le décodage d un flux H.263 est basé sur les décodeurs H.261 améliorés pour supporter les diverses innovations. Quatre améliorations principales permettent d améliorer les performances des codeurs H.263 par rapport à H.261 : 1. Non restriction des vecteurs de mouvement ce qui permet de référencer des blocs hors des images. 2. Utilisation d un codage arithmétique à la place d un codage de Huffman. 3. Utilisation de blocs 8 8 recouvrant pour la compensation de mouvement à la place d un simple vecteur par Macrobloc Possibilité de coder une image P et une image B ensemble sous forme d une image PB. Les formats supportés par cette norme sont le QCIF ( pixels) et le Sub- QCIF ( pixels) et optionnellement le CIF (288x352 pixels), le 4CIF (576x704 pixels) et le 16CIF ( pixels). Norme H.263+ La norme H.263+ est une extension de la norme H.263 possédant de nouvelles fonctionnalités telles que l extensibilité SNR (Signal to Noise Ratio) et l extensibilité spatiale et temporelle. Cette norme utilise un codage Intra avancé des Macroblocs pour améliorer les performances de compression en utilisant notamment une prédiction spatiale des coefficients TCD et un filtrage a posteriori afin de réduire les effets de bloc. Le regroupement des Macroblocs en tranches permet une réduction de l erreur résiduelle, une optimisation de la transmission par paquets et une réduction des délais. Un mode de fonctionnement avec une résolution réduite permet de maintenir une fréquence d images élevée lors de grands mouvements. Cet objectif est atteint en codant une mise à jour basse résolution tout en gardant une haute résolution sur les zones stationnaires. Cette norme a l avantage d utiliser un décodage de l erreur résiduelle en segments indépendants. Ainsi, elle permet de limiter la propagation d erreurs dans le le temps lorsque les données reçues sont corrompues. 17

30 Chapitre 1. Les techniques de compression vidéo De plus, l utilisation d un codage VLC (Variable Length Code) alternatif permet de réduire le nombre de bits nécessaires à l encodage des blocs prédits composés de grands coefficients. De même, la modification de la technique de quantification améliore le contrôle du débit [19] H.264 / MPEG-4 AVC L émergence du codage H.264/AVC (Advanced Video Coding) a permis d atteindre une meilleure efficacité des étapes de compression à qualité visuelle équivalente. Cette augmentation des performances de compression est en partie due à une plus grande souplesse dans le partitionnement de l image en blocs élémentaires vis à vis des normes antérieures. En effet, à partir des avancées proposées dans cette norme, il est possible de regrouper des blocs élémentaires en macroblocs de taille et de forme variables (bandes, rectangles, carrés de résolution et de dimension variables). De plus, la taille des blocs élémentaires sur lesquels sont estimés les mouvements entre les images successives a été réduite de 8x8 pixels à 4x4 pixels. Il résulte de ces deux évolutions une meilleure adéquation entre l image compressée et les données d origine. De plus, en ce qui concerne le codage des redondances temporelles, la norme H.264/AVC permet de rechercher un bloc similaire se trouvant à une distance temporelle beaucoup plus grande (jusqu à une distance de 16 images). Actuellement, cette norme reste couramment utilisée par les producteurs et les diffuseurs de contenus vidéo. Toutefois ces principales améliorations possèdent un contre cout important sur la complexité des processus d encodage et de décodage des flux vidéo Norme H.264 / SVC La norme H.264/SVC [20] est une version étendue de la norme H.264/AVC. La principale nouveauté de cette extension vient du support de l extensibilité (scalability) spatiale et temporelle du flux vidéo. L extensibilité permet de simplifier l adaptation d un flux vidéo aux systèmes en charge de son décodage. En effet, afin d afficher la vidéo compressée avec une dimension (nxp) diminuée d un facteur 2 (n/2, p/2) par exemple, il n est plus nécessaire de décoder l intégralité du flux vidéo. Cette extension a été développée afin de simplifier par exemple l affichage de flux vidéo HD sur des systèmes embarqués de petite taille. Cela permet dans ce cas précis de réduire le nombre de calculs à réaliser et donc d économiser de l énergie. L intérêt du codage vidéo extensible est de permettre au récepteur ou à l émetteur 18

31 1.3. Evolution des normes de compression vidéo Figure 1.10 Présentation de l extensibilité temporelle de traiter une sous partie du flux vidéo en fonction des besoins. En outre, la compression vidéo extensible permet de créer des flux vidéo qui peuvent s adapter à la bande passante des réseaux et aux capacités du terminal de l utilisateur. En codant les informations au débit correspondant à la qualité maximale envisagée pour les services, il est ensuite possible d extraire une partie de ce flux pour restituer une qualité inférieure avec un débit moindre. Par exemple, une vidéo encodée au format de télévision Haute Définition sera envoyée telle quelle, le réseau sélectionne ensuite automatiquement le niveau de compression adapté au débit de l utilisateur : débit standard pour les abonnés éligibles pour ce service, haute définition pour d autres, compression maximale vers les mobiles, etc. Extensibilité temporelle Le principe de l extensibilité temporelle consiste à augmenter le nombre d images par seconde chaque fois qu une couche d amélioration temporelle est ajoutée au flux vidéo à décoder (Figure 1.10). Pour un flux SVC, les couches sont identifiées par T k où T désigne l amélioration temporelle et k indique l ordre de l amélioration tel que k commence par la valeur 0 (pour la couche de base) et s incrémente de 1 en passant d une couche temporelle à une autre [21]. Pour chaque valeur de k, le flux obtenu en supprimant toutes les 19

32 Chapitre 1. Les techniques de compression vidéo Figure 1.11 Structure de prédiction hiérarchique compatible avec l extensibilité temporelle de la norme SVC : codage avec des images hiérarchiques de type B Identificateur T0 (couche de base) T1 T2 T3 Fréquence d affichage 3.75 fps 7.5 fps 15 fps 30 fps Table 1.1 Couches disponibles et leurs améliorations temporelles pour une vidéo source de 30 images par seconde et un GOP de taille 8 couches identifiées par T m tel que m est plus grand que k, forme un flux vidéo valide dont le nombre d images par seconde est celui qui correspond à T k. Un GOP (Group Of Pictures) typique du standard H264/SVC est composé d un ensemble d images de type B entre deux images de référence, ce qui permet d offrir une extensibilité temporelle plus efficace [21] (Figure 1.11). Cette structure est plus tolérante aux pertes puisque la perte d une image B n a pas d influence sur le décodage du reste du GOP. La couche de base est constituée par l image de type I (ou la première image) de chaque GOP. Pour une vidéo source de 30 images par seconde et un GOP d une taille égale à 8, le nombre de couches temporelles typiques ainsi que leurs fréquences d affichage sont disponibles dans le Tableau 1.1 : 20

33 1.3. Evolution des normes de compression vidéo Figure 1.12 Présentation de l extensibilité spatiale Extensibilité spatiale L extensibilité spatiale de la norme H.264/SVC permet d offrir plusieurs résolutions pour un même contenu visuel à partir d un flux binaire unique. Un flux codé en H.264/SVC peut offrir une ou plusieurs résolutions spatiales. La résolution la plus réduite est celle de la couche de base. Pour une plus grande efficacité de compression, la norme H.264/SVC utilise le principe de la prédiction inter couches (inter-layer prediction). Ce principe consiste à coder les données d une couche spatiale supérieure en utilisant les données des autres couches plus basses de la même image. Cette opération complexifie les étapes de codage et de décodage de la vidéo mais elle améliore le taux de compression. Extensibilité de qualité L extensibilité de qualité offre une vidéo de sortie d une même résolution spatiale et temporelle que celle de la vidéo source mais d une qualité plus réduite. L extensibilité de qualité la plus répandue est l extensibilité basée sur le facteur Signal/Bruit SNR (Signal To Noise Ratio). D autres types d extensibilité de qualité sont disponibles comme celui basé sur le principe de régions d intérêt ROI (Region Of Interest) ou celui à base d objets. Le type d extensibilité utilisé par la norme H.264/SVC est celui basé sur le facteur SNR La norme H.265 La norme H.265 aussi appelée HEVC (High Efficiency Video Coding) ou H.NGVC (Next-Generation Video Coding) est en cours d élaboration. Cette nouvelle norme devrait remplacer l actuel norme H.264/MPEG-4 AVC développé par le group JVT (Joint Video Team). Cette norme supportera les résolutions 1080p et Ultra HD. Une 21

34 Chapitre 1. Les techniques de compression vidéo Figure 1.13 Fonctionnement de la chaîne de codage H.264/AVC amélioration de 50% du taux de compression avec une qualité visuelle accrue de 25% est annoncée [22]. Cette amélioration des performances est obtenue au détriment de la complexité calculatoire des étapes de compression et de décompression. 1.4 Description détaillée de la norme H.264/MPEG-4 AVC La norme H264/AVC [23] fait partie des standards de compression vidéo les plus efficaces actuellement. Ce standard offre un taux de compression supérieur par rapport aux standards antérieurs à qualité visuelle constante. Toutefois, sa complexité calculatoire est plus importante. Le processus de compression de la norme H.264/AVC est présenté dans la figure Cette chaîne de compression vidéo est en grande partie similaire à celle de la norme MPEG-2. Toutefois, elle possède un modèle hybride de prédiction temporelle (mode Inter) et de prédiction spatiale (mode Intra). La première image d une séquence est nécessairement codée en mode Intra. Les images suivantes, sont codées en mode Inter ou Intra en fonction de leurs contenus. La sélection du mode de prédiction est réalisé grâce au bloc de "décision du mode" qui décide dynamiquement en fonction du contenu de l image et des images précédentes le mode de codage le plus efficace (figure 1.13). Les caractéristiques principales de la chaîne de compression H.264/AVC sont les suivantes : Divers modes de prédiction Intra : 13 modes pour la luminance (9 pour l Intra 4 4 et 4 pour l Intra 16 16) et 4 modes pour la chrominance

35 1.4. Description détaillée de la norme H.264/MPEG-4 AVC Figure 1.14 Exemple de configuration de codage d une séquence vidéo La Transformée en Cosinus Discrète (TCD) : elle est simplifiée grâce à l utilisation d une transformée entière. Cela reporte en effet la partie décimale des coefficients transformés à l étape de quantification. Cette approche réduit la complexité calculatoire de la TCD vis-à-vis de celle utilisée dans les normes précédentes. La quantification : le pas de quantification est variable afin de pouvoir accéder à l image entière, ce qui n était pas possible avec les normes antérieures et qui laissait des zones inaccessibles pour certains quantificateurs. L estimation de mouvement : la taille des blocs est variable et la précision des mouvements atteint le ¼ de pixel. Le filtrage après décompression est fait par l élément "loopfilter" afin d éliminer certains artéfacts visuels. Cela permet une amélioration notable de la qualité visuelle. Le standard H.264/AVC prend en charge trois types d images : I, P et B. Pour les images de type I, tous les Macroblocs sont prédits spatialement. Par ailleurs, des images pré-codées peuvent être utilisées pour obtenir l image prédite pour les Macroblocs des images de type P et B à codage prédictif (Prédictif et Bi-prédictif). Un exemple de succession de ces trames est donné (figure 1.14) Prédiction Le principal but de la compression vidéo est de réduire le volume d information nécessaire à la transmission de l information. Parmi les méthodes utilisées pour atteindre cet objectif, des techniques de prédiction (permettant de réduire la redondance d information) sont efficaces pour diminuer la quantité de données à envoyer ou à stocker. En effet, en sortie de la chaîne de compression, au lieu de transmettre les donnés de l image, il est plus intéressant de transmettre les données résiduelles et le mode de prédiction. 23

36 Chapitre 1. Les techniques de compression vidéo Figure 1.15 Prédiction Intra Figure 1.16 Prédiction Inter Les données résiduelles représentent la différence entre l image originale et l image prédite. La valeur des données résiduelles est généralement faible. Cette propriété des résidus est exploitée afin d atteindre des taux de compression élevés. Pour la norme H.264/AVC, deux types de prédiction sont utilisés en fonction de la nature des redondances. Si les redondances appartiennent à la même image comme c est le cas de la figure 1.15, la prédiction spatiale (Intra) est la mieux adaptée. Dans le cas d une redondance temporelle, c est-à-dire une ressemblance entre des images successives comme sur la figure 1.16, la prédiction Inter est utilisée. Le choix du type de prédiction ne dépend pas seulement du type de redondance mais aussi du type d image et de la qualité visuelle à atteindre. Prédiction Intra La première image d une séquence est obligatoirement codée en Intra [24] car on ne dispose pas encore d une image référence. A son tour, la prédiction Intra utilise deux types de prédiction pour un Macrobloc de luminance selon son homogénéité et un troisième type pour la chrominance. Le premier est le type Il est appliqué à un Macrobloc entier afin de déterminer une direction prédite. Le second est le type 4 4. Il est appliqué à un bloc de 16 pixels alors que pour la chrominance il n y a seulement que l Intra

37 1.4. Description détaillée de la norme H.264/MPEG-4 AVC Figure 1.17 Mode d Intra prédiction 16*16 Figure 1.18 Mode d Intra prédiction 4*4 Prédiction Intra La prédiction Intra fait recourt à 4 modes obéissant chacun à une direction et à des équations caractéristiques (voir figure 1.17). Prédiction Intra 4 4 Si la prédiction Intra 4 4 a été sélectionnée, un Macrobloc a 16 choix de direction de prédiction. Pour ce type de prédiction, neuf modes sont proposés pour chaque bloc 4 4. Chaque mode favorise une direction et utilise les positions de pixels voisins qui lui sont appropriés (figure 1.18). Prédiction Intra 8 8 Les 4 modes de prédiction sont similaires aux modes de prédiction de la luminance La seule différence provient de la taille des blocs manipulés qui est alors de 8 8 pixels. En fonction de la ressemblance entre le Macrobloc original et le Macrobloc prédit, le mode de prédiction fournissant l erreur résiduelle la plus faible est sélectionné. La comparaison entre deux Macroblocs est calculée à l aide d un critère de comparai- 25

38 Chapitre 1. Les techniques de compression vidéo son. C est une mesure objective de la ressemblance entre deux blocs. Il existe deux techniques couramment utilisées afin de mesurer de manière objective la corrélation entre deux Macroblocs de taille N N. La première technique est nommé somme de la valeur absolue des différences SAD (Sum of Absolute Differences). Son expression est fournie dans l Equation 1.4. La seconde approche, nommée somme des carrés des différences SSD (Sum of Squared Differences) est décrite dans l Equation 1.5. SAD = SSD = y=1 x=1 16 y=1 16 x=1 MBsrc (y,x) MBre f (y,x) (1.4) (MBsrc (y,x) MBre f (y,x) ) 2 (1.5) Avec ; MBsrc : Macrobloc courant. MBref : Macrobloc de référence. Le critère SAD est majoritairement employé pour réaliser la prédiction Intra à cause de sa faible complexité calculatoire. Prédiction Inter et estimation de mouvement La prédiction Inter est employée pour les images possédant une image de référence. Elle est appliquée aux images de type P et B afin d éliminer les redondances temporelles entre deux images successives. La prédiction Inter identifie la position d un Macrobloc de l image courante par rapport à sa position dans l image de référence. Pour cela, il existe de multiples techniques d estimation de mouvement sont employées [25]. Suite à l identification du mouvement d un Macrobloc entre deux images successives, il devient alors possible de ne mémoriser que le vecteur de mouvement au lieu de coder tous les pixels du Macrobloc. L efficacité en termes de taux de compression ainsi obtenu se fait au détriment d une augmentation importante de la complexité calculatoire. En effet, l estimation du mouvement peut représenter 70 à 80 % du temps de compression d un flux vidéo [26]. Les algorithmes d estimation de mouvement les plus utilisés par les standards vidéo sont les méthodes par appariement de blocs BMA (Block Matching Algorithm). L algorithme de BMA le plus simple est la recherche exhaustive FS (Full Search). Son fonctionnement est illustré dans la Figure

39 1.4. Description détaillée de la norme H.264/MPEG-4 AVC Figure 1.19 Algorithme de recherche Full Search Afin d identifier le mouvement le plus probable, l ensemble des possibilités est évaluée. Le meilleur mouvement (celui produisant l erreur résiduelle la plus faible) est ensuite sélectionné. D autres approches réduisant la complexité calculatoire au détriment de la qualité du mouvement ont été proposées dans la littérature [25, 27] Transformée fréquentielle Cette étape de la chaîne de compression H.264/AVC a pour objectif de transformer la représentation temporelle des images sous une forme fréquentielle. Le format de représentation fréquentielle fournit de meilleurs caractéristiques en vue de la compression de l information. En effet, en représentation fréquentielle, il est possible de distinguer les basses fréquences (DC) des hautes fréquences (AC). Les basses fréquences (DC) portent plus d information que les hautes fréquences (AC). Elles sont plus importantes car l œil humain est peu sensible aux hautes fréquences. La norme H.264/AVC impose l utilisation d une transformée en cosinus discrète entière appelée ICT (Integer Cosine Transform) [28, 29]. Cette transformée est semblable à la Transformée en Cosinus Discret DCT (Discrete Cosine Transform) [30] mais elle ne manipule que des données entières. Ainsi son implantation matérielle est moins coûteuse. En effet, elle necessite uniquement des additions et des décalages. Ce choix sur le type de la transformée de Fourier est lié aux retours d expérience sur l implantation matérielle et logicielle des normes antérieures. Cette transformée entière est utilisée pour traiter les informations de luminance mais aussi pour les informations de chrominance. La norme H.264/AVC utilise aussi une transformée de Hadamard [23] pour les coefficients DC de chaque bloc résiduel 4 4 (luminance) dans le cas d une prédiction Intra ainsi que les coefficients DC de chaque bloc 2 2 de la chrominance. 27

40 Chapitre 1. Les techniques de compression vidéo Qp Qstep Qp Qstep Table 1.2 Pas de quantification du codec H.264/AVC Quantification La quantification [23] est l étape responsable de la perte d information (et donc de qualité). En effet, son rôle consiste à éliminer les hautes fréquences afin d augmenter le nombre de coefficients nuls dans la représentation fréquentielle de l image. La valeur du pas de quantification est définie dans la norme. Sa valeur est comprise entre 1 et 52 en fonction de la qualité visuelle souhaitée. Lorsque le pas de quantification nommé Qp possède la valeur 1, la qualité visuelle est optimale mais le taux de compression est très faible. A l inverse lorsque Qp a pour valeur 52, l ensemble des hautes fréquences est supprimé de l image, cela fourni un fort taux de compression mais aussi une piètre qualité visuelle. Les valeurs des coefficients de quantification sont obtenues pour la norme H.264/AVC à l aide du tableau 1.2. Dans les normes vidéo précédentes, le pas de quantification augmente par pas constant, ce qui entraîne des zones inaccessibles pour certains quantificateurs. En effet, le pas de quantification Qp de la norme H.264/AVC donne à l encodeur la possibilité d un contrôle exact et souple permettant d améliorer le compromis entre débit binaire et qualité. Permutation de l ordre des données Il existe deux modes de parcours des coefficients fréquentiels. Cette permutation des données permet une meilleure compression de l information. Les séquences de parcours des données dans les blocs 4x4 sont illustrées dans la figure La première séquence de parcours des données est le mode zigzag. Il est utilisé afin de concentrer l information des basses fréquences en début de message. La seconde séquence de parcours de l information réalise le traitement inverse. Ce mode de fonctionnement est employé en cas de codage entropique adaptatif. 28

41 1.4. Description détaillée de la norme H.264/MPEG-4 AVC Figure 1.20 Les deux types de zigzag Filtrage anti-blocs La norme H.264/AVC intègre une étape de filtrage qui améliore l efficacité de la compression et la qualité visuelle des séquences vidéo. Cette étape est en charge de l élimination des artéfacts visuels indésirables tels que les effets de bloc. Après la reconstruction de l image, le processus de filtrage lisse les bords horizontaux et verticaux des Macroblocs et des blocs 4 4. En outre, le filtre anti-blocs (Loopfilter ou Deblocking Filter) est le même utilisé au niveau de l encodeur qu au niveau du décodeur Codage entropique La dernière étape avant la transmission des données sur le canal de transmission est celle du codage des données qui permet de transformer les données vidéo en flux de bits organisés sous forme d un bitstream. En effet, en exploitant les probabilités d occurrence de chaque symbole ou séquence de symboles à émettre, on peut leur associer un mot binaire de longueur variable. La taille du mot binaire sera d autant plus courte que l occurrence du symbole est élevée, ce qui entraîne une amélioration du taux de compression. Le standard H.264/AVC utilise deux techniques de codage entropique, le CABAC et le VLC [31] : Le codage VLC (Variable Length Coding) est un codage adaptatif à longueur variable. C est la technique employée par défaut. Ce choix est lié à sa faible complexité calculatoire. Il est disponible dans tous les profils et il est l unique mode de codage pour le profil Baseline. Le codage VLC est moins complexe que le codage CABAC mais il est moins efficace en termes de compression de l information surtout pour les flux vidéo à haut débit. Pour coder une vidéo, le VLC utilise deux types de codage : le codage CAVLC pour transformer les coefficients de blocs résiduels quantifiés et le codage "Exp-Golomb" pour les 29

42 Chapitre 1. Les techniques de compression vidéo Figure 1.21 Décodeur H.264/AVC [1] éléments syntaxiques (types d image, de slice ou de Macrobloc, le vecteur de mouvement, le facteur de quantification, etc.). Le codage CABAC (Context-based Adaptive Binary Arithmetic Coding) est un codage disponible à partir du profil Main Profile. Le gain en termes de débit binaire par rapport à l utilisation de CAVLC se situe entre 10% et 15% [23]. 1.5 Structure du décodeur H.264 / MPEG-4 AVC L encodeur H.264/AVC possède une complexité plus importante que le décodeur associé. Cette caractéristique est due aux étapes d identification des redondances. La chaîne de décodage H.264/AVC est constituée d un décodeur entropique, d une quantification inverse et d une transformation inverse pour décoder les données résiduelles des modes Intra et Inter prédiction. Le décodeur H.264/AVC profite des performances fournies par le filtre anti-blocs afin d éliminer les phénomènes d artéfacts introduits au niveau de la segmentation des frames en blocs. Ce module sera détaillé dans le deuxième chapitre. La figure 1.21 montre une vue globale du décodeur. Décodage entropique Le décodage entropique est l opération inverse du codage entropique. En effet, ce dernier est un moyen de réduction du nombre de bits employés pour représenter l information vidéo compressée. L utilisation des Codes à Longueur Variable VLC (Variable Length Code) permet de réduire le débit. Le code VLC est basé sur le principe des codes de Huffman, ce qui permet l utilisation des mots les plus courts pour représenter les symboles ayant 30

43 1.5. Structure du décodeur H.264 / MPEG-4 AVC Figure 1.22 Types de codage de la couche VLC la plus grande probabilité d occurrence. Le décodeur entropique CAVLD (Context Adaptative Variable Length Decoding) est l opération inverse du CAVLC (Context Adaptative Variable Length Decoding) utilisé au niveau de l encodeur. Le codage VLC de la norme H.264/AVC utilise deux types de codage : le codage CAVLC pour les blocs résiduels quantifiés et le codage Exp-Golomb pour les éléments syntaxiques. Ces deux types de codage ainsi que les deux couches associées sont illustrés par la figure CAVLC C est un codage à longueur variable basé sur des tables de Huffman [32]. Il sert à coder les données résiduelles quantifiées non nulles suivant un ordre en zigzag. Le nombre total des coefficients non nuls Coeff_token est codé en premier lieu. Les coefficients nuls à la fin de chaque bloc 4 4 ne sont pas codés. Les zéros intermédiaires ne sont pas aussi codés. Ils sont repérés par leur position par rapport à chaque coefficient non nul Run, leurs nombre total étant la valeur Totalzeros. La réorganisation des coefficients en zigzag permet d avoir pour chaque bloc 4 4 une liste de coefficients commençant par les basses fréquences DC vers les hautes fréquences AC. Les derniers coefficients AC sont généralement des coefficients 1 ou -1. Ils sont codés séparément sous la forme Trailingones, Sign. Ensuite, les modules des coefficients non nuls appelés Level sont codés en sens inverse (des AC vers les DC). Coeff_token : il comporte deux informations : le nombre total des coefficients non nuls TotalCoeffs et le nombre total des Trailingones (1 ou -1) appelé T1. La taille de la table nécessaire pour coder le Coeff_token est de 17x4. Le choix de la 31

44 Chapitre 1. Les techniques de compression vidéo table se fait par un paramètre N qui dépend du nombre de coefficients des blocs au-dessus et à gauche du bloc. Sign : le module des Trailingones est égal à 1 donc il ne reste que leur signe pour compléter l information. Un seul bit est utilisé pour chaque Trailingone : 0 pour (+1) et 1 pour (-1) Level : ce paramètre se répète TotalCoeffs fois puisqu il représente le module de chaque coefficient non nul dans le bloc à coder. Les coefficients sont traités en sens inverse, c est-à-dire des AC vers les DC. Leur code est déduit de l une des 7 tables de Level_VLC. La différence entre ces tables est la longueur de code. Les plus hautes fréquences qui ont les valeurs les plus faibles sont traitées en premier lieu. La table considérée est celle dont les codes sont les plus courts généralement Level_VLC0 (sauf si TotalCoeffs >10 et T1<3, Level_VLC1 est la table de départ) [30]. Totalzeros : c est le nombre de zéros intercalés entre les coefficients non nuls. Pour coder ce paramètre, 15 tables de Huffman sont utilisées. La taille de chaque table est ((16 NumCoeff) + 1). Pour les composantes de chrominance, le standard a aussi défini des tables similaires à celles de la luminance. Run : puisque les zéros ne sont pas codés comme Level, le Run permet de déterminer le nombre de zéros qui précède chaque coefficient non nul dans le sens direct. Le Run dépend de deux paramètres : ZeroLeft (nombre total des zéros restants, initialisé à Total_zero pour être incrémenté de 1 après chaque Run non nul), Run_before (nombre de zéros précédant directement le coefficient non nul considéré). Ces cinq paramètres détaillés précédemment vont être envoyés vers le décodeur H.264/AVC via le bitstream. A la réception, à cause de la dépendance entre ces paramètres, le décodeur décode ces éléments syntaxiques d une manière séquentielle (Figure 1.23) [33]. Au début, le décodeur CAVLD décode les blocs 4 4 dans chaque Macrobloc selon la valeur CBP (Coded Block Pattern). En effet, le premier élément décodé pour chaque bloc résiduel 4 4 est le coeff_token qui spécifie les valeurs de TotalCoef et de Trailingones. Par conséquent, si la valeur de TotalCoef est égale à 0, il n y a pas des coefficients non nuls (nonzero coefficient) dans le bloc courant, ce qui nous ramène à décoder le bloc 4 4 suivant. Dans le cas contraire, nous devons décoder les coefficients non nuls y compris le trailing_ones_sign_flag et le level. En outre, si la valeur de TotalCoef est égale au nombre maximal des coefficients qui constituent le bloc 4 4, les valeurs de Totalzeros et de Run_before doivent être décodées. Enfin, 32

45 1.5. Structure du décodeur H.264 / MPEG-4 AVC Figure 1.23 Les étapes de décodage CAVLD le bloc courant décodé est reconstruit en se basant sur les coefficients non nuls et la valeur de Run_before. Exp-Golomb Le codage Exp-Golomb est employé par la norme H.264/AVC pour coder les éléments syntaxiques. Cela concerne les données complémentaires de chaque Macrobloc comme les données de prédiction (le mode choisi dans le cas de prédiction Intra et le vecteur de mouvement dans le cas de prédiction Inter) et le pas de quantification. Les éléments syntaxiques comportent aussi les paramètres Set (Set Parameter). Les paramètres Set sont de deux types : Sequence Parameter Set : ce sont les paramètres caractérisant la séquence à coder. Parmi ces paramètres, on peut citer le type de profil ainsi que le level, le quantificateur initial, les coefficients de filtre à utiliser, le format (4 : 2 : 0 ou 4 : 2 : 2)... Picture Parameter Set : ce sont les paramètres communs d une image. A titre d exemple, on peut citer la taille de l image, le nombre de slices par image, le nombre d images, le mode de codage utilisé (CAVLC ou CABAC)... Considéré comme un codage spécial de Huffman, le codage Exp-Golomb est à longueur variable avec une construction régulière. Il favorise les valeurs les plus fréquentes en leur attribuant le code le plus court. 33

46 Chapitre 1. Les techniques de compression vidéo Quantification inverse La quantification est l étape de compression des données. Elle est utilisée au niveau de l encodeur pour éliminer la redondance spatiale et pour augmenter le nombre de coefficients nuls remplaçant les valeurs faibles qui portent une information peu énergétique. Cependant, dans le décodeur H.264/AVC, on trouve deux types de quantifications inverses (pour les coefficients DC et pour les coefficients AC). Quantification inverse des coefficients AC : après la quantification, les blocs (coefficient Z ij ) subissent une quantification inverse donnée par l équation suivante [23] : Y = Z ij.qstep (1.6) Un facteur constant égal à 64 est [30] est intégré pour supprimer les erreurs d arrondi. L équation de quantification inverse devient donc : W ij = Z ij.qstep.pf.64 (1.7) W ij est le coefficient de sortie de la quantification inverse. Le résultat doit être divisé par 64 pour récupérer la valeur exacte sans facteur de graduation (ceci peut être mis en application en utilisant seulement une addition et des décalages à droite). La norme H.264/AVC ne précise pas Q step ou PF directement. Elle utilise un paramètre donné par : V = Qstep PF 64 (1.8) V est défini pour 0 Qp 5 et pour chaque position du coefficient, nous avons : W ij = Z ij.qstep.2 f loor(q p/6) (1.9) Les valeurs de V pour 0 Qp 5 sont définies dans la norme comme suit : Quantification inverse des coefficients AC : une transformée de Hadamard inverse est appliquée en premier lieu au bloc 4 4 WD des coefficients DC. Cette dernière est similaire à la transformée de Hadamard de la chaîne directe en ajoutant une division par 2 ce qui nous mène à faire appel à l équation suivante : 34

47 1.5. Structure du décodeur H.264 / MPEG-4 AVC Q p Positions (0,0),2,0), (2,2), (0,2) Positions (1,1),(1,3), (3,1), (3,3) Autres positions Table 1.3 Facteur de quantification inverse V Y D = [W D] >> 2 (1.10) Suite à cette transformée, nous procédons à une quantification inverse des coefficients DC en appliquant l équation suivante : W D(i,j) = W QD(i,j).V(0, 0).2 f loor(q p/6) 2 pour (QP 12) (1.11) W D(i,j) = [W QD(i,j).V(0, 0).2 1 f loor(q p/6) ] >> ( f loor(q p /6) 2) pour (QP < 12)(1.12) V (0,0) est le facteur de quantification inverse pour la position (0,0). Ce facteur est constant dans tout le bloc 4 4 car tous les coefficients présentent la même position dans le bloc 4 4. Qp est défini comme auparavant. En effet, dans un Macrobloc Intra, une grande partie de l énergie est concentrée dans le coefficient DC qui est le plus significatif. C est pour cette raison que sa valeur doit être la plus précise possible. Or la quantification est l étape de dégradation des valeurs. D où la nécessité d avancer le traitement de la transformée inverse de Hadamard au dépend de la quantification DC inverse afin de conserver l exactitude sur les coefficients DC. Les coefficients DC de W D sont ensuite insérés dans leurs blocs 4 4 respectifs en attente de l exécution de la transformée inverse. 35

48 Chapitre 1. Les techniques de compression vidéo Figure 1.24 Différentes tailles de Macroblocs intégrés dans la norme H264/AVC Transformation inverse Durant cette étape, les coefficients DC et AC sont tous quantifiés et rassemblés dans un seul bloc K pour être soumis par la suite à une transformée inverse donnée par l équation suivante [23] : a ab a ab X = C(K E) C = [k] ab b ab b a ab a ab (1.13) ab b ab b Y est pré-divisé en multipliant chaque coefficient par le facteur pesant approprié de la matrice Ei. Compensation de mouvement Il s agit de reconstruire les valeurs du nouveau MB à partir de l image de référence sachant que dans le décodeur, on ne trouve que les images décodées. En effet, comme l illustre la figure 1.24, le processus de compensation de mouvement diffère des normes précédentes en proposant une grande variété de formes et de tailles de blocs (16 16, 16 8, 8 16, 8 8, 8 4, 4 8 et 4 4) avec une précision pouvant aller jusqu au ¼ de pixel. La norme H.264/AVC utilise alors entre 8 et 36 types de blocs pour la compensation de mouvement alors que les précédents standards n en utilisent qu un à trois. Cette caractéristique permet de s adapter plus finement au contenu spatial et au mouvement des images [25]. 36

49 1.6. Les profils de la norme H.264/AVC 1.6 Les profils de la norme H.264/AVC Un profil définit un ensemble d algorithmes qui peuvent être utilisés pour compresser un flux vidéo. Ces profils permettent de s assurer que tous les décodeurs vidéo compatibles avec ce profil peuvent décoder le flux binaire généré par un encodeur utilisant ce profil. Les codeurs ne sont pas tenus d utiliser un ensemble particulier de fonctionnalités prises en charge dans un profil mais doivent fournir des flux compatibles. La norme H.264/AVC définit ainsi différents profils [1, 34] : Profil de base (Baseline profile) : orienté applications à faible débit et pour les systèmes embarqués contraints en énergie. Il est largement utilisé dans le domaine des applications mobiles. Profil principal (Main profile) : utilisé pour les images de haute qualité et pour les applications HDTV. Il ajoute des caractéristiques supplémentaires par rapport au profil de base telles que : Bi-Prediction, Weighted Prediction (WP), Direct Prediction, CABAC (réduction du débit de l ordre de 10 à 15% par rapport au CAVLC), Interlaced Video Capabilities. Profil étendu (Extended profile) : conçu pour la diffusion en flux (streaming) des vidéos et pour la transmission sans fil. Profil haute définition (High profile) : normalisé plus récemment, il a été introduit pour les applications haute définition (HD). Ce profile haut de gamme dispose de toutes les fonctionnalités des profils précédents. Toutefois il est actuellement peu répandu à cause de sa complexité d implantation. Dans les travaux de la thèse, le profil de base a été sélectionné à cause de la simplicité qu il apporte au niveau du traitement matériel et au niveau de l optimisation logicielle. En outre la norme H.264/AVC en particulier le décodeur, dans le cas d un profil de base utilise peu de ressources. 1.7 Etude bibliographique de la complexité dans le décodeur H.264/AVC Pour estimer la complexité de calcul de mise en œuvre du décodeur H.264/AVC, il est important de comprendre ses deux composantes principales : la complexité du temps de calcul et la complexité de stockage). La complexité en temps de calcul est fortement liée à la complexité calculatoire de l application et des algorithmes qui la composent. Cependant, une mise 37

50 Chapitre 1. Les techniques de compression vidéo Interpollation 25% 33% Filtre anti-blocs Analyse du Bitstream et décodage entropique 13% 16% 29% autres Transformation inverse et reconstruction Figure 1.25 Profilage du décodeur H.264/AVC [2] en œuvre intelligente des algorithmes peut réduire significativement leur complexité tout en conservant leurs performances. La complexité de stockage est mesurée par la quantité de mémoire nécessaire pour mettre en œuvre un algorithme. Pour une application donnée, la complexité d implantation prend en compte l occupation de la surface en silicium et le temps d exécution et de la complexité du stockage. Ces paramètres ont un impact direct sur la surface, le cout et la consommation d énergie des circuits électroniques. Il est donc nécessaire d identifier les modules les plus complexes d une norme pour pouvoir les intégrer matériellement dans le but de minimiser le temps d exécution. Ainsi, plusieurs analyses basées sur le profiling du décodeur H.264/AVC ont été réalisées dans la littérature. D après les résultats présentés dans [2], on constate que la complexité calculatoire est fortement localisée au niveau du filtre anti-blocs (33 % du temps processeur) et au niveau du module en charge de la compensation de mouvement (25%). Le reste du temps de calcul est réparti entre le décodeur entropique, l analyse du Bitstream (13%), la transformation fréquentielle-temporelle, la quantification inverse et la reconstruction (13%). Par ailleurs, la figure 1.25 illustre le profiling du décodeur H.264/AVC. Cette analyse de la complexité calculatoire du décodage H.264/AVC est confirmée par les conclusions présentées dans [3]. A partir des conclusions de ces deux travaux, on constate que le filtre anti-blocs constitue la partie la plus complexe du décodage de flux H264. A partir de ce constat, nous avons donc décidé de travailler sur l amélioration des performances temporelle de ce traitement. 38

51 1.8. Conclusion CAVLC et analyse du syntaxe 24% Filtre anti-blocs Compensation de mouvement 38% 12% Misc 11% 9% 7% autres Quantification inverse et transformation entière inverse Figure 1.26 Profilage du décodeur H.264/AVC [3] 1.8 Conclusion Dans ce chapitre, après une présentation synthétique du principe de compression vidéo, nous avons présenté un historique des différentes normes puis nous avons détaillé le fonctionnement des techniques de compression et de décompression associés à la norme H.264/AVC. Ce standard fournit des performances nettement supérieures en comparaison aux normes antérieures. Cependant, cette amélioration des performances s accompagne d une augmentation de la complexité calculatoire. L augmentation de la complexité calculatoire implique un travail de conception long et complexe pour les intégrateurs en charge de son implantation matériels. Dans ce contexte, nous avons étudié la répartition de la complexité calculatoire du décodeur H.264/AVC présentée dans la littérature. Cette analyse a démontré qu une part très importante de la complexité du décodeur est localisée dans le calcul du filtre anti-blocs. Ce dernier est responsable d environ un tiers du temps de calcul du décodeur. Avant de présenter le fonctionnement du filtre anti-blocs ainsi que l architecture d implantation que nous proposons, nous allons dans le prochain chapitre présenter les différents types d architectures matérielles possibles pour son intégration. 39

52

53 Architectures d implantation matérielles 2 Sommaire 2.1 Introduction Les circuits ASIC et les circuits logiques programmables Les circuits ASIC Les circuits logiques programmables Conception des systèmes numériques complexes Les architectures mixtes (conception conjointe ou Codesign) Les processeurs embarqués Les processeurs embarqués de la famille Xilinx Conclusion

54

55 2.1. Introduction 2.1 Introduction Un concepteur possède à l heure actuelle un nombre important de solutions afin d implanter une application. En fonction des contraintes de conception, l intégrateur peut choisir entre l utilisation d une architecture programmable figée (processeur à jeu d instructions) ou bien la conception d une architecture matérielle dédiée pour cible ASIC (Application Specific Integrated Circuit) ou FPGA (Field-Programmable Gate Array). Les architectures programmables offrent une flexibilité d utilisation et de programmation élevée. Toutefois, elles sont rarement utilisées seules lors de la conception de systèmes embarqués à cause de leurs piètres performances (consommation d énergie élevée et/ou bien puissance de calcul faible). Les architectures matérielles dédiées implantés sous la forme de circuits ASIC offrent des performances optimales. Les circuits ASIC sont des circuits intégrés non programmables conçus pour des besoins spécifiques. Toutefois elles sont peu flexibles, nécessitent de long processus de développement et de mise en production. Afin de minimiser ces délais incompatibles avec la contrainte de temps de conception (time to market), des technologies reprogrammables sont apparues. Ces dernières offrent des capacités d intégration permettant l intégration de nombreux systèmes. En effet, les circuits FPGA possèdent des capacités d intégration très importantes : jusqu à 2 million de LUTs (Look-up Table) à 6 entrées pour les circuits Virtex-7 [35]. Cependant leurs performances (fréquence d utilisation, consommation d énergie) sont en retrait face à des implantations sur technologie ASIC. De plus, les circuits ASIC permettent de réduire les coûts de production sur de larges séries et leur fiabilité est supérieure à celle des circuits reprogrammables. L évolution de la conception des circuits numériques s oriente toujours vers la mise en place de systèmes plus performants permettant ainsi d intégrer des applications toujours plus complexes. C est le cas des applications multimédia pour lesquelles les techniques de compression vidéo requièrent toujours plus de puissance de calcul. Dans ce contexte, ce chapitre détaille spécifiquement les différentes architectures d implantation matérielle et les systèmes sur puce (SoC) couramment employées dans le domaine du traitement vidéo. 2.2 Les circuits ASIC et les circuits logiques programmables La fabrication d un circuit intégré spécifique à une application ASIC est une tâche ardue et coûteuse en temps et en argent. En effet, la réalisation d un prototype nécessite le passage par des étapes de conception et de vérification à bas niveau d abstraction. Ces dernières, proches des modèles physiques du circuit sont chronophages. De 43

56 Chapitre 2. Architectures d implantation matérielles plus, la création d un ou plusieurs masques en fonderie afin de produire le prototype et/ou les circuits est très coûteux. Cela s avère rédhibitoire lorsqu il s agit de petites volumes de production. Parallèlement à l augmentation de la densité d intégration des ASIC, divers circuits programmables ont fait leur apparition. Ces derniers permettent de réduire le temps et le coût de développement. Ces circuits reprogrammables offrent de plus en plus une grande flexibilité et évolutive vis-à-vis des solutions ASIC qui en sont généralement dépourvues. En contrepartie, les performances obtenues sur cible FPGA sont en retrait (débit, cout en surface) par rapport aux solutions ASIC Les circuits ASIC Un circuit ASIC est un circuit électronique intégrant sur une même surface de silicium tous les éléments nécessaires à la réalisation d une fonction ou d un système électronique complexe. Il s agit d un circuit intégré conçu exclusivement pour le projet ou l application qui l utilise. L approche ASIC conduit aux meilleures performances en termes de consommation, de vitesse et de surface. Cependant, le coût de développement d un ASIC est très élevé car sa réalisation est spécifique à l application à l application et les étapes de description et d optimisation sont longues à tous les niveaux de la conception. Les ASIC sont classés en deux catégories : semi-spécifique et spécifique. Les circuits semi-spécifiques ou ASIC pré-diffusés Pour ces circuits, l utilisateur fixe le nombre de portes et de plots d entrée/sortie avant la conception. L un des avantages des circuits pré-diffusés est que le vendeur peut fabriquer une grande quantité de précircuits identiques, et qu il n est nécessaire, pour réaliser un circuit final, que d ajouter des couches de métal, sans se soucier de la préparation du silicium. En contrepartie, il y a souvent un nombre non négligeable d éléments de base inutilisés, le placement des transistors étant contraint dans le sens où ils sont déjà incrustés dans le silicium, et le routage n est donc pas optimal. Ces différents facteurs font que le tableau de portes est nettement moins efficace qu une implémentation full custom en termes de consommation et performance. Il offre cependant un temps de réalisation nettement plus faible, et également un moindre coût de fabrication. Les circuits spécifiques ou ASIC pré-caractérisés Ces circuits sont conçus en se basant sur des cellules prédéfinies dans une bibliothèque propre à chaque fabricant et chaque technologie. L existence des bibliothèques permet un gain de temps grâce la notion de réutilisation. L avantage de cette approche réside dans l optimisation des 44

57 2.2. Les circuits ASIC et les circuits logiques programmables Figure 2.1 Flot de conception d un ASIC modules fournis par le fabriquant. Le placement de ces modules est réalisé de manière à également optimiser les performances, tout en minimisant la place nécessaire sur le silicium. Dès lors, la solution pré-caractérisée est très proche de l optimal obtenu grâce à l approche full custom, et nécessite un temps de développement moindre. Le flot de conception classique d un circuit ASIC est illustré par la figure 2.1. Le flot se décompose en quatre étapes successives qui sont le partitionnement et la description des algorithmes, la génération de l architecture, la synthèse logique qui transpose l architecture sur une bibliothèque de cellules de base et enfin le placement/routage sur silicium. Par ailleurs, la première étape consiste à partir des spécifications, à découper le circuit en un ensemble de sous-systèmes communicants. Ce découpage peut être guidé par de nombreux paramètres comme la fonctionnalité, la complexité calculatoire, les fréquences de fonctionnement, la synchronisation et la concurrence de tâches. Ces étapes de conception peuvent être réalisées manuellement ou à l aide d outils spécifiques (EPICURE, DESIGN TROTER). Après avoir réparti les séquences de tâches concurrentes dans les sous-systèmes distincts, le concepteur décrit le comportement de chacun de ces sous-systèmes. Les étapes de la conception d un ASIC prennent en compte le cahier de charges qui décrit le principe de fonctionnement, l architecture interne à partir d un schéma synoptique, les caractéristiques électriques et dynamiques, le brochage et le type de boîtier ainsi que les conditions de simulation fonctionnelle. Une fois les spécifications figées, les étapes du développement sont alors classique (Figure 2.1). En effet, cela commence tout d abord par une phase d étude préalable à partir du cahier des 45

58 Chapitre 2. Architectures d implantation matérielles charges permettant d aboutir à un schéma intégrable tenant compte de la technologie employée. Ainsi chaque description comportementale validée est ensuite traduite en une architecture au niveau transfert de registre manuellement ou bien à l aide d outils de synthèse d architecture (GAUT [36], Graphlab [37]). La synthèse logique traduit l architecture obtenue en une description aux niveaux portes, optimisée en surface et en performance. Enfin, l étape de placement et de routage des descriptions des architectures résultantes sur le silicium termine ce flot. Cette dernière étape est une étape essentielle de la conception du circuit à la demande puisqu elle en déterminera les caractéristiques électroniques (vitesse, répartition des échauffements... ), le taux de remplissage de la puce de silicium pour les circuits pré-diffusés et la surface de la puce pour les circuits pré-caractérisés Les circuits logiques programmables Les circuits logiques programmables sont des circuits intégrés qui peuvent être reprogrammés après leur fabrication. Un circuit logique programmable est un assemblage d opérateurs logiques et de bascules. La fonctionnalité du circuit n est pas figée lors de la fabrication de ce circuit. Cela permet à un circuit programmable d adresser une large gamme d applications en fonction de ses caractéristiques. La spécialisation (programmation) du circuit est réalisée en aval de sa production. La programmation d un circuit programmable consiste à concevoir une fonctionnalité parmi toutes celles qui sont potentiellement réalisables. En règle générale, la programmation d un circuit reprogrammable débute par la description de la fonctionnalité à réaliser dans un langage de description matérielle tel que le langage VHDL ou Verilog. Cette description structurelle de la fonctionnalité est ensuite synthétisée à l aide d un outil de synthèse logique (Xilinx ISE [38], Quartus [39]) dont le rôle est d associer des ressources matérielles disponibles dans le FPGA afin de l implanter. Le résultat de la synthèse logique nommé bitstream correspond au final aux informations de configuration qui permettront de programmer le circuit afin d implanter la fonction souhaitée. Les circuits FPGA Les FPGA font partie de la famille de composants programmables électriquement. A l origine basés sur un réseau de matrices de portes élémentaires ET et OU (Program Array Logic ou PAL), ces circuits programmables sont devenus au milieu des années 90 des circuits plus complexes grâce à l intégration de ressources spécifiques. Les circuits FPGA sont constitués de trois parties : une matrice d éléments logiques configurables CLB (Configurable Logic Bloc), des blocs d entrées/sorties et d un réseau d interconnexions programmable. L architecture générique d un circuit 46

59 2.2. Les circuits ASIC et les circuits logiques programmables Figure 2.2 Description de l architecture générique d un circuit FPGA FPGA est présentée par la figure 2.2. Toutefois, ils possèdent un niveau d intégration beaucoup plus important que celui des circuits CPLD (Complex Programmable Logic Device). De plus, les circuits FPGA possèdent de meilleures performances au niveau des communications inter macrocellules grâce à un réseau d interconnexions plus performant. En plus du niveau d intégration, la différence entre les circuits CPLD et FPGA réside dans la maîtrise du temps de propagation dans les couches logiques du circuit. Ce temps est prédictif dans les circuits CPLD car les chemins parcourus par les signaux sont connus alors que dans les circuits FPGA, ce temps dépend de l organisation et de la distance entre les macrocellules interconnectées. On retrouve dans les circuits FPGA les mêmes ressources que dans les circuits CPLD enrichies de fonctionnalités nouvelles. En effet, les circuits FPGA peuvent contenir suffisamment de mémoire qui peut être configurée pour héberger un cœur de processeur ou un DSP afin d exécuter une application logicielle. Les éléments de base constituant un circuit FPGA sont constitués d une partie combinatoire et d une partie séquentielle. La partie combinatoire est essentiellement utilisée pour réaliser des fonctions arithmétiques et logiques de complexité variable. Les Fabricants de FPGA proposent plusieurs approches pour implanter les architectures développées sur les ressources matérielles disponibles. Il est en effet possible d utiliser plusieurs méthodes de synthèse dont les principales sont : la synthèse de fonctions à 4 ou 5 variables avec des portes classiques ET, OU et NON, la synthèse de fonctions à l aide de multiplexeurs, la synthèse de fonctions combinatoires à l aide de mémoires vives. Dans ce dernier cas, on dit aussi réalisation de fonctions logique par LUT (Look-Up Table) signifiant table de réalisation (ou d observation). La partie séquentielle comporte en règle générale une ou deux bascules de type D. 47

60 Chapitre 2. Architectures d implantation matérielles Figure 2.3 Organisation des FPGA de Xilinx La révolution technologique subie par les FPGA est sans aucun doute le fruit d une bataille commerciale. Effectivement dans le lot des fabricants de circuits reconfigurables, deux fabricants nord américains, Xilinx et Altera ont rapidement conquis le marché, et sont devenus respectivement leader et challenger [40]. Dès l origine, les FPGA, avaient la réputation de mettre à disposition de l utilisateur une conception rapide, fiable et simple. Les progrès technologiques au niveau des circuits et des outils ont permis d accéder à des matrices logiques programmables de plusieurs millions de portes. Malgré la forte complexité des applications actuelles, il est tout à fait possible de les intégrer dans des FPGA. Cela moyennant une bonne connaissance des ressources offertes par le FPGA et en maitrisant le flot de conception associé. La Figure 2.3, montre l architecture simplifiée d un FPGA Xilinx (pour les familles Spartan-IIE, Virtex-E et Virtex-II). Les principales caractéristiques de ces trois familles sont : Des complexités allant de 1500 à plus de 8 millions de portes. Une faible consommation d énergie. Une grande souplesse d utilisation des entrées/sorties avec adaptation d impédance (Virtex-II) et en mode différentiel (Spartan-IIE, Virtex-E et Virtex-II). Des unités mémoires cablées en dur (blocs RAM). Des dispositifs de gestion des horloges (DLL et DCM). Des unités de multiplication/multiplication-accumulation cablés en dur. Le module de base d un FPGA Xilinx est le bloc logique configurable nommé 48

61 2.2. Les circuits ASIC et les circuits logiques programmables Figure 2.4 Architecture simplifiée d un Slice CLB. Ce dernier est constitué en interne de slices. La Figure 2.4, illustre l architecture simplifiée d une slice. La logique combinatoire est implantée grâce aux tables de scrutation LUT (Look- Up Table) contenues dans chaque slice. Ces LUT peuvent également être configurés comme éléments de mémorisation synchrone (simple ou double-port), ou encore comme registres à décalage. Il existe trois modes de configuration de ces LUT. Plus précisément, le fonctionnement en mode combinatoire est obtenu en lisant le contenu pointé par les signaux d entrée (Figure 2.5a). Autrement dit, les LUT sont des mémoires dont le contenu est initialisé lors de la configuration du FPGA. De ce fait, elles permettent à l utilisateur d en disposer en mode " élément mémoire " dans chacun des slices si nécessaire (Figure 2.5b). La Figure 2.5c décrit le mode de configuration particulier en registre à décalage de longueur programmable jusqu à 16 bits. Par ailleurs, une logique supplémentaire utile pour la réalisation des fonctions arithmétiques est disponible dans chaque slice. Grâce à ces éléments, et au style d écriture adapté, des modules de type accumulateur chargeable en addition/soustraction pourront être implantés à raison de 2 bits par slice. La figure 2.6 présente la structure d une cellule logique d un bloc logique programmable CLB de la technologie Xilinx. Cette structure comporte une table LUT (Look-up Table) à 4 entrées. Cette LUT4 permet d implanter n importe quelle fonction combinatoire à quatre variables logiques. Cette table LUT peut être aussi configurée comme une mémoire RAM (16x1) ou comme un registre à décalage de 16 bits. Elle comporte aussi un multiplexeur et une bascule D. Afin d améliorer les performances des applications déployées sur FPGA, ces der- 49

62 Chapitre 2. Architectures d implantation matérielles Figure 2.5 Trois modes de configuration des LUT Figure 2.6 Structure d une cellule logique à 4 entrées niers ont progressivement intégré des ressources spécialisées. En outre les FPGA ont connu, dans cette dernière décennie, une évolution considérable sur plusieurs niveaux. Ces améliorations se traduisent sous forme d une augmentation du nombre et de la taille des ressources logiques, l apparition des opérateurs arithmétiques complexes pour le traitement du signal, des modules de mémoire (RAM), des blocs matériels dédiés, des éléments de gestion de l horloge, des entrées/sorties configurables et même des microprocesseurs. Prenons par exemple le cas de la famille Virtex-5 de Xilinx, les circuits FPGA peuvent intégrer des blocs matériels dédiés au traitement du signal (DSP bloc [35]), au stockage d informations (block RAM [41]), aux communications à haut débit (PCI express [42]) ainsi des cœurs de processeurs (PPC [4]). L ensemble de ces ressources permet la conception de systèmes complexes. La tendance pour les circuits FPGA est la possibilité de réaliser des systèmes sur puce (ou SoC) en utilisant des " composants virtuels " et de concevoir ainsi des blocs de propriété intellectuelle (Intellectual Property ou IP) qui sont par exemple des fonctions VHDL/Verilog génériques réutilisables. 50

63 2.3. Conception des systèmes numériques complexes Figure 2.7 Evolution de la conception numérique 2.3 Conception des systèmes numériques complexes Un système numérique complexe est un assemblage sur une carte de différents composants discrets réalisant chacun une fonction particulière plus ou moins complexe telle qu une mémoire, un composant d interface, un processeur, etc. En cas d erreur de conception, le développeur peut nécessiter l ajout de connexions entre les composants. Pour cela il peut être nécessaire de reconcevoir intégralement une carte. L augmentation de la complexité des systèmes implique une augmentation du nombre de composants nécessaires. Cette amélioration du nombre de composants provoque une augmentation du prix de la carte ainsi que l apparition perturbation électrique. L évolution de l intégrations des circuits FPGA et ASIC offre l avantage de pouvoir intégrer un système numérique complexe au sein d un unique composant : c est le concept du " single chip ". En tenant compte de la loi empirique de Moore qui dit que pour une surface de silicium donnée, nous doublons le nombre de transistors intégrés tous les 18 mois [43], la manière de conception des systèmes numériques complexes est changée puisqu il est d implémenter des algorithmes complexes sur des systèmes numériques complexes de futures générations. Nous passons alors du niveau portes logiques au niveau système (ou fonctionnalité). Cette évolution de la conception des systèmes numérique complexes peut être résumée sur la figure 2.7. De nos jours, la conception de systèmes à base de descriptions structurelles au niveau portes logiques ou bien au niveau RTL (Register Transfer Logic) est délaissée au profit d approches de niveau comportementales. En effet les progrès réalisées durant la dernière decennie dans le domaine des outils CAO ont permi aux concepteurs de s affranchir de certaines étapes de conception (GAUT [36], Graphlab[?], AutoESL[44], 51

64 Chapitre 2. Architectures d implantation matérielles Catapult C[?], CoDeNios[45]). Cependant, l approche " structurelle" reste toujours valable et utilisée pour la conception de faible complexité. Au niveau de l approche " textuelle ", le système est conçu en utilisant un langage de description matériel tel que le VHDL ou Verilog offrant la possibilité de synthétiser un circuit. Ces langages sont devenus des normes et leur choix participe ainsi à la réalisation du produit. Ils sont en fait des langages des implantations qui utilisent une syntaxe bien définie et qui sont simultanément utilisés avec un synthétiseur ou un simulateur. Le développement des systèmes numériques complexes ne doit plus se contenter d offrir les fonctionnalités définies dans son cahier des charges ; mais il doit aussi s adapter aux différents besoins qui reviennent fréquemment. Pour répondre à ces besoins, certaines sociétés proposent sur le marché des modules connus sous le nom de modules IP (fonctions mathématiques : DCT, FIR, interfaces bus : PCI, RapidIO, coupleurs divers : UART, HDLC... ). Ces modules IP peuvent être achetés ou téléchargés librement sur Internet. Ainsi, concevoir un système peut en partie consiste à assenbler des modules IP existants [46]. Toutefois ces approches sont souvent sous optimales à cause des problèmes d interfaçage des IPs. En effet le besoin d insertion d adaptateurs de protocoles peut dégrader les performances [47] Les architectures mixtes (conception conjointe ou Codesign) Un SoC (System On Chip) est composé de plusieurs modules fonctionnels intégrés dans un même circuit. La figure 2.8 représente un SoC qui est basé sur un cœur de processeur. Un SOC peut être developpé : sans utilisation de cœur de processeur [48, 49], centré autour d un cœur de processeur [50] ou bien autour d une architecture multicore [51]. L approche SoC a été créée pour le développement de systèmes complexes sur technologie ASIC. Cependant, elle a été étendue pour le développement sur cible FPGA. On parlera alors de SoPC (System On Programmable Chip). Les systèmes de type SoPC peuventt intégrer un ou plusieurs processeurs softcore ou Hardcore avec ses périphériques au sein d un unique FPGA. Le code exécutable correspondant à l application logicielle déployér sur le ou les processeur peut être soit mémorisé dans une mémoire interne au FPGA, soit dans une mémoire externe. Le concept de conception conjointe Matériel/Logiciel propose d associer au sein d un même système un ou plusieurs cœurs de processeurs embarqués avec des blocs matériels dédiés. Le flot de conception Codesign permettant de sélectionner les parties applicatives à développer en logicielle ou matérielle [52] est représenté sur la figure 2.9. Cette methodologie a pour objectif d aider à la conception de systèmes embarqués 52

65 2.3. Conception des systèmes numériques complexes Figure 2.8 Ssytème sur puce basé sur l utilisation d un cœur de processeur Figure 2.9 Le flot de conception Codesign : Présentation générale spécifiques associant des parties matérielles dédiées à des parties logicielles exécutées sur des cœurs de processeurs. Plusieurs étapes sont distinguées dans le flot de conception traditionnel : 1. Partitionnement de l application sous forme de modules communicant implantés en logiciel et/ou matériel. 2. Développement et raffinement des descriptions matérielles et des codes sources logiciels à partir des spécifications de l application. 3. Synthèse/compilation. 4. Co-simulation : vérification du fonctionnement des éléments de base du synthèse ainsi que du système (éléments interconnectés) par simulation. La spécification est de conception une étape indispensable du système. Durant 53

66 Chapitre 2. Architectures d implantation matérielles cette étape, on évalue le cahier des charges en étudiant les aspects techniques (évaluation de la complexité, type de fonction à développer, performances électriques recherchées (surface, consommation... )) et économiques (délais de conception et de fabrication, budget, marché (quantité de pièces prévues)). Les méthodologies et outils de codesign logiciel/matériel [53] réalisent une étape d exploration architecturale afin de guider le concepteur vers une décomposition et une implantation efficace de chacune des fonctions composant l application à implanter. L étape de partitionnement HW/SW permet d identifier les parties de l application dont l implantation sera efficace en logiciel et celles qui peut tirer partie du parallélisme offert par une implantation matérielle. Afin d effectuer ces choix de partitionnement, des estimateurs de performance doivent estimer les performances et le coût d une réalisation architecturale. Ces métriques de performances se basent sur : 1. Le parallélisme de calcul disponible dans la fonction étudiées. 2. Le nombre d informations à mémoriser. 3. le nombre et le type des E/S (communication inter fonctions). Les différents modules, ainsi que leurs interfaces de communication, sont ensuite implémentés en fonction des décisions prises durant l étape de partitionnement. L implémentation des parties logicielles et matérielles peut être réalisée manuellement (développement de code ASM ou RTL) ou à l aide d outils adaptés (compilateurs ou outils de synthèse). L étape de synthèse regroupe les synthèses de la partie logicielle, de la partie matérielle et des interfaces et protocoles de communication. Compilation logicielle Correspond à la conversion d une description décrite dans un langage fonctionnel en un code exécutable par un processeur. Synthèse matérielle Correspond à la conversion d une description décrite dans un langage fonctionnel en un ensemble d équations différentielles décrivant la structure d un layout. Synthèse des interfaces de communications Cette étape essentielle doit garantir les transferts de données entre les différents blocs matériels et logiciels à l aide de protocoles adaptés en termes de compatibilité/performances. Ces interfaces peuvent être de type point à point ou bien utilisant un canal de communication partagé (bus, NoC, etc) 54

67 2.3. Conception des systèmes numériques complexes La conception conjointe matériel-logiciel nécessite la co-simulation des parties matérielles et logicielles pour valider le fonctionnement du système, estimer le coût et les performances obtenues. La dernière étape consiste à valider fonctionnellement le système obtenu sur la plateforme, même si des validations fonctionnelles par cosimulation sont pratiquées durant l ensemble du processus de raffinement du système. En effet, le temps de simulation d un circuit numérique dépend principalement du niveau d abstraction de sa description. S il faut quelques secondes pour simuler la description d un système avant synthèse/compilation des composants, plusieurs jours peuvent être nécessaires lorsque le système complet est décrit à bas niveau (modèles RTL et ASM). Dans cette dernière décennie, à cause de la complexité des architectures, plusieurs processeurs sont embarqués sur une même puce de silicium. Dans ce qui suit, nous détaillerons les caractéristiques des processeurs embarqués Les processeurs embarqués Le choix du processeur embarqué dans un SoC dépend de plusieurs critères. Dans le domaine des systèmes SoPC, le nombre de processeurs embarqués de type softcore ou câblé est plus limité que dans le domaine des SoC. Parmi les processeurs embarqués intégrables dans un système SoPC, on peut citer les solutions propriétaires MicrBlaze [54] et nios [55] respectivement développées par Xilinx et Altera ainsi que d autres processeurs performants issus du monde opensource : processeurs Leon 2/3, plasma, ARM, Sun... L architecture interne du processeur est un élément important qui influe directement sur ses performances. Il existe principalement deux grandes familles d architectures de processeur : l architecture Von Neumann et l architecture Harvard. L architecture Von Neumann est caractérisée par le stockage des programmes et des données dans une même zone mémoire ce qui nécessite d enregistrer le code opératoire et l adresse de l opérande dans la même instruction. Cependant, l architecture Harvard se distingue de l architecture Von Neumann par le fait que les espaces mémoires programmes et données sont physiquement séparés. L accès à chacune des deux mémoires se fait via un bus dédié. Cette organisation permet de transférer les instructions et les données simultanément, ce qui améliore les performances de l architecture. Les processeurs actuels se classent en deux catégories en fonction de leur jeu d instructions : les processeurs CISC (Complex Instruction Set Computer) et les processeurs RISC (Reduced Instruction Set Computer). Les architectures de type RISC possèdent un jeu d instructions réduit et uniforme, chaque instruction effectue une seule opération élémentaire. Toutes les instructions 55

68 Chapitre 2. Architectures d implantation matérielles sont codées sur la même taille et s exécutent en un même nombre de cycle d horloge (en règle générale). La complexité se situe dans le compilateur. Les exemples les plus connus de ce type d architecture sont : Alpha (DEC), PowerPC (Motorola), PA-RISC (Hewlett-Packard), SPARC... Les architectures de type CISC possèdent un jeu étendu d instructions complexes. Chacune de ces instructions peut effectuer plusieurs opérations élémentaires (comme charger une valeur en mémoire, faire une opération arithmétique et ranger le résultat en mémoire). La complexité se situe dans le microprogramme. Les exemples les plus connus de ce type d architecture sont : VAX (DEC), S/360 (IBM), 68xx, 680x0 (Motorola), x86, Pentium (Intel)... En outre, le choix d un processeur pour les systèmes SoPC est assuré en tenant compte de leur type architectural : Hardcore, softcore, propriétaire. Dans ce contexte, les processeurs Hardcore qui sont optimisés pour une technologie particulière et dont le travail d optimisation est garanti, sont présents dans différents circuits FPGA. Xilinx propose soit un processeur PowerPC [4], soit un processeur ARM tandis qu Altera ne supporte que les processeurs ARM. Nous nous intéresserons au processeur PowerPC intégré dans les FPGA Xilinx par la suite. Les processeurs propriétaires (firmcore) ne peuvent pas être utilisés dans un circuit FPGA autre que celui pour lequel il a été prévu. Les processeurs Nios [56] d Altera et MicroBlaze [54] de Xilinx sont des processeurs propriétaires. Concernant les processeurs softcore, ils sont implémentés dans un système reprogrammable comme un circuit FPGA avec un langage de description matériel de haut niveau. Ces processeurs sont décrits avec un langage de description matériel (VHDL/Verilog) dont le code source peut être implémenté en théorie dans n importe quel circuit FPGA ou technologie ASIC. le processeur LEON [57] est un des processeurs opencore les plus aboutis. Ce processeur utilisé principalement dans le domaine aéronautique et spatial a été implanté avec succès sur de très nombreuses cibles technologiques. Nous pouvons citer comme principaux processeurs softcore libres le processeur Leon [cms], le processeur OpenRisc [OR], le processeur F-CPU [fcpu], le processeur LatticeMico32 [58]... Nous détaillerons dans la suite de ce chapitre les processeurs disponibles nativement pour les FPGA Xilinx (cible que nous avons utilisée pour nos travaux) Les processeurs embarqués de la famille Xilinx Le processeur embarqué PowerPC 440 Le processeur embarqué PowerPC 440 [UM08] est une version Hardcore récente du processeur PowerPC. Ce processeur est un processeur 32 bits basé sur un cœur PPC440. Il est caractérisé par ses performances et sa 56

69 2.3. Conception des systèmes numériques complexes Figure 2.10 Schéma de base du processeur PowerPC 440 [4] faible consommation d énergie. Le processeur PPC440 intègre des unités de gestion de la mémoire et de gestions des caches d instructions et de données. La figure 2.10 présente l architecture interne du processeur PPC440. Le bus PLB (Processor Local Bus) [59] est utilisé pour interfacer le processeur avec les autres périphériques. Ce bus est compatible avec l architecture IBM CoreConnect. Le processeur PPC440 comprend sept niveaux de pipeline. Il comprend également une unité de gestion mémoire MMU (Memory Mangement Unit), des caches d instructions et de données, une interface JTAG, des timers... Le processeur embarqué MicroBlaze Le processeur MicroBlaze [MPR] est un processeur softcore de type RISC développé par Xilinx pour leurs circuits FPGA. Son architecture interne est de type Harvard. Les principales caractéristiques du processeur MicroBlaze sont : bus d adresse de 32 bits. 3 ou 5 niveaux de pipeline. 32 registres généraux de 32 bits (R0 à R31). 57

70 Chapitre 2. Architectures d implantation matérielles Figure 2.11 Schéma de base de MicroBlaze Un codage d instruction sur 32 bits avec trois opérandes et deux modes d adressage. Depuis la version 7, le processeur a une unité de gestion de mémoire virtuelle MMU (Memory Management Unit) optionnelle. Le processeur MicroBlaze est paramétrable et permet l activation sélective de fonctionnalités supplémentaires. Seule la version du processeur MicroBlaze (7.10) et les versions suivantes supportent toutes les options [60]. L architecture interne du Micro- Blaze est représentée figure Ce processeur de type softcore a pour avantage de permettre aux concepteurs de systèmes complexes d intégrer facilement de la flexibilité dans leurs systèmes. Cette flexibilité est obtenue à l aide des outils de programmation. Cependant, ce processeur flexible possède une puissance de calcul assez faible. Pour cette raison, il est généralement utilisé pour contrôler le fonctionnement d accélérateurs matériels dédiés. 2.4 Conclusion Dans ce chapitre, nous avons présenté les architectures logiques programmables et les circuits ASIC ainsi que les principaux processeurs embarqués utilisés dans les circuits FPGA. Nous nous sommes focalisés sur la famille Xilinx. Les notions introduites dans les deux premiers chapitres seront ainsi mises à profit dans les chapitres 58

71 2.4. Conclusion suivants. Pour faire face à la complexité croissante des systèmes sur puce et aux contraintes de performances, de nouvelles méthodologies d intégration se basant sur l utilisation des composants logiciels et matériels (IP) au sein d un même système sont apparues. En effet, dans les applications pratiques, c est surtout les performances qui nous intéressent. De ce fait, l utilisation d une architecture spécifique bien adaptée à une application déterminée peut être plus efficace en termes de coût et de performances. Dans notre travail, nous utiliserons alors les circuits FPGA comme cible de prototypage, d expérimentation et de validation de part ses capacités, sa vitesse et sa grande flexibilité. Dans le chapitre suivant, nous allons aborder la partie intégration matérielle du filtre anti-blocs de la norme H.264/AVC. Cette intégration a été réalisée de manière à respecter les contraintes fixées par le standard H.264/AVC. L objet central du travail effectué dans le cadre de cette thèse a été de proposer une nouvelle approche algorithmique de ce filtre permettant de concevoir une architecture matérielle à haut débit. 59

72

73 Implantation efficace du filtre anti-blocs de la norme H.264/AVC 3 Sommaire 3.1 Introduction Description de l algorithme de filtrage Modifications algorithmiques proposées dans la littérature Algorithme de filtrage proposé Architecture matérielle d implantation Conclusion

74

75 3.1. Introduction 3.1 Introduction Le filtre anti-blocs proposé par la norme H.264/AVC a pour objectif principal d améliorer la qualité visuelle des vidéos compressées. Cette amélioration de la qualité visuelle est obtenue en éliminant les artéfacts visuels générés par la segmentation des images sous forme de blocs lors du processus de compression. La norme H.264/AVC spécifie l algorithme de filtrage. Toutefois, dans la littérature, il existe plusieurs variantes algorithmiques. Ces variantes qui sont conformes aux spécifications de la norme ont pour but d améliorer le débit des architectures matérielles d implantation. Le but de ce chapitre est de présenter une nouvelle variante algorithmique qui permet de maximiser le parallélisme entre les calculs réalisés ainsi que l architecture matérielle qui en découle. Dans un premier temps, nous détaillerons le fonctionnement du filtre anti-blocs tel qu il est spécifié dans la norme H.264/AVC. Ensuite nous présenterons et analyserons les approches proposées dans la littérature pour faciliter son implantation matérielle et améliorer ses performances. Dans un second temps, nous présenterons notre contribution. Ensuite, nous détaillerons les résultats d implantation de notre approche sur cible ASIC en termes de débit, de surface et de fréquence de fonctionnement. Ces résultats seront comparés avec les travaux publiés dans la littérature. Ensuite, nous présenterons une extension de notre approche afin de l adapter aux modes 4 : 2 : 2 et 4 : 4 : 4 de la norme H.264/AVC. Enfin, la dernière partie de ce chapitre liste les performances de l architecture proposée sur circuit FPGA. La cible FPGA utilisée est un circuit Virtex-5 de Xilinx, cible matérielle employée lors de l étape de prototypage réalisée afin de valider fonctionnellement l architecture proposée. 3.2 Description de l algorithme de filtrage La norme H.264/MPEG-4 part10 est un standard de compression vidéo permettant d atteindre des performances élevées en termes de compression de l information et de qualité visuelle. Cette norme intègre ainsi un filtre anti-blocs (deblocking filter ou loopfilter) pour améliorer la qualité visuelle des séquences vidéo en éliminant certains effets indésirables liés à la compression de la vidéo (Figure 3.1). En effet après le décodage des images, un processus de filtrage est indispensable afin de lisser 63

76 Chapitre 3. Implantation efficace du filtre anti-blocs de la norme H.264/AVC Figure 3.1 Impact du filtre anti-blocs les bords horizontaux et verticaux des Macroblocs. Ce filtrage permet une meilleure prédiction des mouvements apportant des gains substantiels du taux de compression (de l ordre de 5 % à 10 % [23]) tout en maintenant une qualité visuelle identique. L algorithme de filtrage est la partie la plus complexe parmi les algorithmes de la chaîne de décodage H264/AVC. Il est responsable d environ un tiers de la complexité calculatoire du décodeur [2, 3]. La forte complexité calculatoire du filtre couplée à l irrégularité des accès aux données nécessite la conception et l utilisation de circuits dédiés afin de respecter les contraintes de débit imposées par exemple par les vidéos HD. L étape de filtrage s applique à chaque Macrobloc de taille pixels composant l image décodée. Afin de pouvoir filtrer les différents bords des blocs 4 4 d un Macrobloc (en mode 4 : 2 : 0), l algorithme nécessite l accès aux données : 1. De l ensemble du Macrobloc. 2. Des bords extérieurs du Macrobloc (les 4 blocs 4 4 au dessus et les 4 blocs 4 4 à gauche du Macrobloc traité). La norme H.264/AVC spécifie l ordre de traitement des blocs élémentaires (de taille 4 4) lors de filtrage : les bords verticaux sont filtrés de gauche à droite suivis par le filtrage des bords horizontaux de haut en bas. La figure 3.1 présente les index des blocs 4 4 pour la luminance et la chrominance avec les parties supérieures (T) et les 64

77 3.2. Description de l algorithme de filtrage Figure 3.2 Filtrage horizontal et vertical des blocs 4 4 pour les deux composantes luminance et chrominance blocs voisins à gauche (L). Pour pouvoir réaliser une étape de filtrage sur 24 blocs 4 4 (un Macrobloc en mode 4 : 2 : 0), il est nécessaire d accéder aux informations contenues dans 40 blocs 4 4 (Figure 3.2). Le standard H.264/AVC, contraint seulement l ordre de traitement des bords des blocs 4 4. En effet, le standard impose que le filtrage des bords verticaux des blocs doit avoir lieu avant le filtrage des bords horizontaux. La figure 3.3 illustre le processus de filtrage des bords d un bloc 4 4 selon les critères imposés par la norme. Ce processus s effectue en quatre étapes : 1. Le bord vertical gauche du bloc Q0 dit courant est filtré horizontalement avec les données du bloc P0 dit précédent. 2. Le bord vertical droit du bloc Q0 (semi filtré, nommé dans la figure 3.3 P1) est filtré horizontalement avec les données du bloc Q1. 3. Le bord horizontal supérieur du bloc Q2 (filtré horizontalement) est filtré verticalement avec les données du bloc P2. 4. Le bord horizontal supérieur du bloc Q3 est filtré verticalement avec les données du bloc P3 (semi filtré verticalement). L étape de filtrage des bords est contraint par un paramètre nommé BS (Boundary Strength). Ce paramètre BS détermine l intensité du filtrage à appliquer. La valeur de BS est calculée en autres à partir de la localisation du bloc à traiter et du mode de prédiction utilisé. La valeur du paramètre BS varie de 0 à 4. La valeur 0 indique que les bords ne doivent pas être filtrés tandis que la valeur 4 implique un lissage 65

78 Chapitre 3. Implantation efficace du filtre anti-blocs de la norme H.264/AVC Figure 3.3 Les quatre étapes de filtrage d un groupe 4x4 de pixels BS Condition p ou q est codé en intra et le bord à filtrer est un bord du MB 4 p ou q est codé en intra et le bord à filtrer n est pas un bord du 3 MB Ni p ou q est codé en intra ; p ou q contient des coefficients codés 2 Ni p ou q est codé en intra ; ni p ou q contient des coefficients 1 codés ; p et q ont différentes images de référence ou différents nombres d images de référence ou les valeurs des vecteurs de mouvement sont différentes Ni p ou q est codé en intra ; ni p ou q contient des coefficients 0 codés ; p et q ont la même image de référence ou même vecteur de mouvement Table 3.1 Détermination de la valeur de BS important des bords horizontaux et verticaux. Le tableau 3.1 récapitule les différents critères d évaluation utilisés dans le calcul du paramètre BS. La figure 3.4 illustre le principe du filtre anti-blocs à l aide d une visualisation à une dimension d un bord d un bloc 4 4. Comme le montre la figure 3.2, les pixels q 0, q l, q 2 et q 3 appartiennent au bloc 4 4 courant alors que p 0, p 1, p 2, p 3 appartiennent au bloc 4 4 voisin (à gauche). Les pixels p 0 et q 0 ainsi que p1 et q1 sont filtrés en se basant sur deux variables de seuil α et β. Ces variables de seuil sont utilisés pour empêcher le filtrage des bords vrais (non affectés par un artéfact visuel). Les valeurs de α et β dépendent essentiellement de la valeur du pas de quantification QP utilisé pour compresser le macrobloc en cours de filtrage. L intensité du filtrage pour un bord est déterminée en comparant les gradients des pixels avec les valeurs de seuil α et β du bord concerné. 66

79 3.2. Description de l algorithme de filtrage Figure 3.4 Principe du filtrage anti-blocs d un bord 4x4 Par ailleurs, le processus de filtrage de p 0 et q 0 n a lieu que si les conditions décrites dans l équation 3.1 sont satisfaites. BS = 0 and p 0 q 0 α and p 1 p 0 β and q 1 q 0 β (3.1) De même, le filtrage de p 1 ou q 1 se produit si l équation 3.2 est satisfaite : p 2 p 0 β and q 2 q 0 β (3.2) Les deux variables IndexA et IndexB correspondent à la valeur du pas de quantification des deux blocs situés de part et d autre du bord à filtrer. Ces variables sont respectivement calculées grâce aux équations 3.3 et 3.4 où les valeurs de FilterOffsetA et FilterOffsetB sont calculées grâce aux équations 3.6 et 3.7. Ces deux paramètres sont calculés une unique fois par slice (le slice considéré ici est celui qui contient le Macrobloc contenant l échantillon q 0 ). La valeur de slice_alpha_c0_offset_div2, paramètre présent dans le flux binaire compressé, doit être comprise entre -6 et 6. Lorsque slice_alpha_c0_offset_div2 n est pas présent dans l en-tête du slice, sa valeur est fixée par défaut à 0. Le principe est identique pour le paramètre slice_beta_offset_div2. IndexA = Clip3(0.51, qp av + FilterO f f seta) (3.3) IndexB = Clip3(0.51, qp av + FilterO f f setb) (3.4) qp av = (MBp Qp + MBq Qp + 1) >> 1 (3.5) FilterO f f seta = Slice_alpha_c0_o f f set_div2 << 1 (3.6) FilterO f f setb = Slice_beta_c0_o f f set_div2 << 1 (3.7) L idée de base du filtre anti-blocs est que si la différence absolue entre les échantillons (pixels) près d un bord du bloc est relativement importante, il est fort probable 67

80 Chapitre 3. Implantation efficace du filtre anti-blocs de la norme H.264/AVC qu il s agit d un artéfact. Dans ce cas, le filtrage doit permettre de minimiser l artéfact. Cependant, si l amplitude de cette différence est si importante qu elle ne peut pas être expliquée par la valeur de QP (la valeur du quantificateur) utilisée dans le codage, alors le bord est plus susceptible de refléter le comportement réel de l image source et ne doit pas être lissé. Il est donc nécessaire d identifier le cas de figure dans lequel se trouve le bord afin d appliquer ou pas le filtrage. On a donc ainsi besoin de passer par des conditions de filtrage afin de préciser si le filtrage d un bord est nécessaire ou pas. En fonction de la valeur de BS les équations à employer sont différentes : Equations à employer lorsque 1 BS 3 : pour calculer les nouvelles valeurs de p 0 et q 0 lorsque le bord est considéré comme n étant affublé d un artéfact visuel, tout d abord, un paramètre nommé Di f 0 est calculé à l aide de l équation 3.8 : Di f 0 = Clip(c 1, c 1, ((((q 0 p 0 ) << 2) + (p 1 q 1 ) + 4) >> 3)) (3.8) Le paramètre c 1 utilisé par la fonction Clip est défini par la norme H.264 (Tableau Clip) comme indiqué dans le tableau 3.3 [61]. La valeur de ce paramètre dépend des valeurs de BS et d IndexA. Les nouvelles valeurs de p 0 et q 0 (nommées respectivement p 0 et q 0 ) sont calculées à partir des équations 3.9 et 3.10 : p 0 = Clip(p 0 + Di f 0 ) (3.9) q 0 = Clip(q 0 Di f 0 ) (3.10) Le calcul des valeurs des pixels filtrés p 1 et q 1 se fait de manière similaire. Les valeurs appropriées de Di f 1 et Di f 1 sont calculées puis les valeurs de p 1 etq 1 sont obtenues à l aide des équations 3.12 et 3.14 : Di f 1 = Clip(c 0, c 0, (p 2 + ((p 0 + q >> 1) (p 1 << 1)) >> 1 (3.11) p 1 = p 1 + Di f 1 (3.12) Di f 1 = Clip(c 0, c 0, (q 2 + ((p 0 + q >> 1) (q 1 << 1)) >> 1 (3.13) q 1 = q 1 + Di f 1 (3.14) Equations employées lorsque BS=4 : les expressions suivantes sont utilisées pour calculer les nouvelles valeurs des pixels filtrés lorsque le bord est considéré comme possédant un artéfact visuel : 68

81 3.3. Modifications algorithmiques proposées dans la littérature Pour la luminance : q 0 = (p 1 + 2p 0 + 2q 0 + 2q 1 + q 2 + 4) >> 3 (3.15) q 1 = (p 0 + q 0 + q 1 + q 2 + 2) >> 2 (3.16) q 2 = (2q 3 + 3q 2 + q 1 + q 0 + p 0 + 4) >> 3 (3.17) p 0 = (q 1 + 2q 0 + 2p 0 + 2p 1 + p 2 + 4) >> 3 (3.18) p 1 = (q 0 + p 0 + p 1 + p 2 + 2) >> 2 (3.19) p 2 = (2p 3 + 3p 2 + p 1 + p 0 + q 0 + 4) >> 3 (3.20) Pour la chrominance : q 0 = (2q 1 + q 0 + p 1 + 2) >> 2 (3.21) p 0 = (2p 1 + p 0 + q 1 + 2) >> 2 (3.22) Lorsque BS=4, la valeur de six pixels est recalculée tandis que dans le cas où (1 BS 3) seules les valeurs des deux premiers pixels de part et d autre du bord à filtrer sont mises à jour. Toutefois, ce constat se vérifie que lorsque la valeur du gradient indique que le filtrage atténuera l artéfact visuel, sinon, aucune donnée n est recalculée. 3.3 Modifications algorithmiques proposées dans la littérature La figure 3.5 présente l ordre de filtrage tel qu il est proposé dans le standard H.264/AVC [61]. L ordre de filtrage des bords 4 4 est séquentiel : l ensemble des bords verticaux des blocs 4x4 est recalculé, ensuite, l ensemble des bords horizontaux est recalculé. L ordre de calcul des bords proposé par la norme H.264/AVC limite le parallélisme d implantation (logiciel ou matériel) et donc les performances (débit et latence) de la solution d intégration. De plus, cet ordonnancement des calculs est coûteux en termes de mémorisation. En effet, l ordre des calculs génère un nombre important de données temporaires (24 blocs de dimension 4 4, 16 blocs dans le Macrobloc de luminance, 4 blocs dans le bloc 8 8 chrominance rouge et 4 blocs dans le bloc 8 8 chrominance bleu). 69

82 Chapitre 3. Implantation efficace du filtre anti-blocs de la norme H.264/AVC Figure 3.5 Ordre de filtrage proposée par le standard H.264/AVC Figure 3.6 Ordre de filtrage suivant la position du bloc 4 4 Plusieurs approches ont été proposées afin de minimiser le temps de calcul (en augmentant le parallélisme) ainsi que les besoins en termes de mémorisation des données temporaires. L idée directrice de ces travaux consiste à modifier l ordre de filtrage des bords des blocs 4x4 tout en se conformant aux contraintes imposées par le standard. La figure 3.6 présente l ordre d exécution du filtrage des différents bords au sein d un bloc 4 4. En effet, suivant la position du bloc dans le Macrobloc à filtrer, l ordre de filtrage change en fonction de la disponibilité des blocs voisins. Dans ce contexte, l ordonnancement des opérations de filtrage proposé par G. Khurana [5] est présenté dans la figure 3.7. Ce dernier se base principalement sur une alternance entre filtrage horizontal et filtrage vertical des bords. Cette solution conduit à une réduction des besoins de mémorisation car une seule ligne de blocs 4 4 doit être conservée en mémoire pour les prochaines étapes de filtrage. Toutefois, le parallélisme de calcul est inexistant. 70

83 3.3. Modifications algorithmiques proposées dans la littérature Figure 3.7 Ordre de filtrage proposée par G. Khurana [5] De manière analogue, la proposition d He Jing [6] est basée sur le principe de réutilisation rapide des données temporaires. Toutefois, il vise aussi la réduction du temps de traitement d un Macrobloc. Pour cela, il fait l hypothèse selon laquelle deux filtres sont disponibles : un pour réaliser les filtrages horizontaux et un pour réaliser les filtrages verticaux. A partir de l ordonnancement proposé (Figure 3.8), on constate qu il devient possible en théorie de reduire le temps de traitement d un Macrobloc si l architecture matérielle contient deux unités de filtrage pouvant s exécuter en parallèle. En effet, durant l étape 4, on peut filtrer simultanément un bord horizontal et un bord vertical. Les nombres répétés dans la figure 3.8 schématisent les bords qui peuvent être recalculés en parallèle (même cycle d horloge). En utilisant l ordre de calcul de C. Chien [7], présenté dans la figure 3.9, jusqu à trois filtrages peuvent être réalisés simultanément pour accélérer le traitement. Cependant, le nombre de filtres simultanés est limité en raison de dépendances des données entre les calculs. En se basant sur l ordre de filtrage proposé par K-H. Chen [8], jusqu à quatre filtrages simultanés sont possibles (Figure 3.10). En effet, dans un premier temps, les bords verticaux numérotés de 0 à 3 (première ligne) sont traités successivement afin de réutiliser les données de contenu de manière aussi efficace que possible. Après que les bords gauche et droit vertical du premier bloc 4 4 ont été filtrés avec succès, les données du bloc filtré verticalement et le bloc T0 seront transposées puis transférées à l étape suivante. Par ailleurs, c est le processus de filtrage vertical qui doit être mis en place. En rappelant que ce processus effectue le traitement des bords toujours suivant 71

84 Chapitre 3. Implantation efficace du filtre anti-blocs de la norme H.264/AVC Figure 3.8 Ordre de filtrage propoée par He Jing [6] Figure 3.9 Ordre de filtrage proposée par C. Chien [7] les principes précédemment mentionnés du filtre anti-blocs (en fonction de la valeur de BS, on choisit entre les deux filtres proposés par le standard H.264/AVC). Les ordres de filtrage présentés précédemment sont tous réalisés au niveau des blocs, à savoir, le filtrage d un bord du bloc 4 4 est réalisé en série par le même filtre notant que le bord d un bloc peut être filtré seulement après le filtrage de quatre lignes de pixels LOP (Line Of Pixels) du bloc précédent (situé à gauche). 72

85 3.4. Algorithme de filtrage proposé Figure 3.10 Ordre de filtrage proposée par K-H. Chen [8] Figure 3.11 Ordre de filtrage proposée 3.4 Algorithme de filtrage proposé Afin de réduire le temps de traitement d un Macrobloc nous avons proposé un nouvel ordonnancement du filtrage des bords. Cet ordonnancement est présenté dans la figure Les chiffres répétés correspondent aux filtrages qui peuvent être exécutés en parallèle. L objectif principal de notre ordonnancement était de maximiser le parallélisme de calcul. Dans l ordonnancement que nous proposons, nous autorisons jusqu à six filtrages en parallèle. Le parallélisme de calcul est supérieur à celui atteint par les précédents travaux. Dans le tableau 3.4 nous récapitulons les performances des travaux précédemment présentés en termes de nombre de filtres s exécutant en parallèle et de nombre de 73

86 Chapitre 3. Implantation efficace du filtre anti-blocs de la norme H.264/AVC Algorithme Degré de parallélisme Nombre de macrocycles G. Khurana [5] 1 48 He Jing [6] 2 27 Cheng-An Chien [7] 3 32 K-H. Chen [8] 4 19 Algorithme proposé 6 11 Table 3.2 Comparaison des ordres de filtrage macrocycles nécessaires à la mise à jour d un Macrobloc. Un macrocycle correspond au temps nécessaire à la réalisation du filtrage d un bord vertical ou horizontal (ce qui correspond à 4 cycles d horloge lorsque les filtres sont implantés séquentiellement). 3.5 Architecture matérielle d implantation Afin de réaliser l algorithme de filtrage proposé qui se base essentiellement sur un nouvel ordonnancement des calculs, nous avons utilisé une nouvelle organisation des données dans les bancs mémoires. Organisation mémoire L objectif principal de nos travaux consiste à paralléliser les traitements afin de réduire le temps d exécution. Cependant, nous avons aussi pris en considération la minimisation des besoins de mémoire. Afin de garantir que tous les transferts de données puissent être effectués en un seul cycle d horloge, nous devons utiliser 14 modules de mémoire locale (Figure 3.12). Chaque module mémoire a pour tâche de stocker une ligne de blocs 4 4 afin d avoir la possibilité d accéder aux différentes données sans conflit d accès aux données. Ainsi, dès que les calculs précédant ont été réalisés, il est possible d accéder aux données. Les données intermédiaires sont stockées dans des mémoires de 4 32 bits ainsi que dans des registres (4 4 pixels). L architecture du filtre anti-blocs a été conçue afin d être implantée sous forme d un accélérateur matériel autonome. Ce dernier exploite six unités de filtrage identiques afin de tirer parti au mieux de l ordonnancement des calculs que nous avons proposé. Les unités matérielles de filtrage sont découpées en deux sous ensembles de 3 unités : le premier est en charge du filtrage des bords verticaux et le seconde des bords horizontaux. 74

87 3.5. Architecture matérielle d implantation Figure 3.12 Organisation méemoire Présentation du travail sur le séquencement Dans cette partie, nous allons étudier le séquencement des calculs et des transpositions au sein de l architecture matérielle. La figure 3.13 résume le processus de filtrage d un Macrobloc à l aide de l architecture proposée (flux de données pour chaque groupe de quatre cycles d horloge). Les quatre premiers cycles d horloge réalisent le filtrage des pixels associés aux trois bords initiaux (un pour la luminance et deux pour les chrominances). En effet, les blocs de part et d autre des bords ainsi nommés sont chargés respectivement des mémoires suivantes : mem_luma_gauche et mem_luma_ligne1, mem_chroma_gauche U et mem_chroma_ligne1 U ainsi que mem_chroma_gauche V et mem_chroma_ligne1 V (Figure 3.12). En effet, le bord vertical (L 0 bloc 0 ), le bord vertical (L 5 bloc 16 ) et le bord vertical (L 7 bloc 20 ) sont simultanément filtrés. Par ailleurs, les blocs L 0, L 5, L 7 (partiellement filtrés) sont transférés directement à la phase d écriture en les affectant aux mémoires appropriées. Les blocs bloc 0 et bloc 16 (partiellement filtrés) sont ensuite transmis directement aux filtres appropriés via des mémoires FIFO. Cependant, le bloc bloc 20 est transféré à la mémoire tampon appropriée 4 32 bits pour être utilisé dans le filtrage du bord qui se situe entre les blocs bloc 20 et bloc 21. Durant les quatre prochains cycles d horloge, les blocs bloc 1, L 1, bloc 4, bloc 1 7 sont chargés simultanément et les bords (bloc 0 bloc 1), (L 1 bloc 4 ), (bloc 16 bloc 17) sont alors fil- 75

88 Chapitre 3. Implantation efficace du filtre anti-blocs de la norme H.264/AVC Figure 3.13 Chronogramme de l architecture proposée trés. Les blocs bloc 0, bloc 16 (verticalement filtrés), le bloc T 0 et le bloc T 4 sont envoyés aux modules de transposition appropriés afin de convertir la mémorisation des pixels sous forme de ligne en représentation colonne et vice vers ça. Cette transposition permet d utiliser les mêmes filtres matériels pour le filtrage des bords horizontaux et des bords verticaux. Architecture matérielle L architecture globale du filtre anti-blocs est schématisée dans la figure Elle est composée : D une unité de calcul de la valeur de BS. Cette valeur est calculée à partir des informations disponibles en entrée du composant (vecteurs de mouvement, modes de prédiction, nombre des images de référence...). D un banc de 6 filtres réalisant les calculs nécessaires au filtrage des bords. D un ensemble de mémoires. Ces mémoires assurent le stockage du Macrobloc à filtrer, des blocs qui se situent à gauche et en haut du Macrobloc ainsi que des pixels filtrés. 76

89 3.5. Architecture matérielle d implantation Figure 3.14 Architecture globale du filtre anti-blocs Les Macroblocs sont traités suivant l ordonnancement proposé. En effet, afin de respecter les contraintes imposées par le standard, nous allons commencer par le chargement des données nécessaires dans les mémoires appropriées. Lorsque les données et les paramètres associés sont prêts, le filtre de base commence le traitement afin de générer le Macrobloc filtré qui va être par la suite stocké dans les mémoires adéquates. Les modules qui constituent l architecture globale sont synchronisés par le contrôleur. L architecture que nous proposons est basée sur un nouvel ordonnancement de filtrage et sur une nouvelle organisation de la mémoire afin d optimiser le temps d exécution en essayant de maximiser les filtres de base qui s exécutent en parallèle sans toucher aux exigences imposées par le standard H.264/AVC et sans avoir une augmentation importante au niveau de la surface d intégration. L architecture proposée a été décrite structurellement à l aide du langage VHDL. Pour valider le fonctionnement de l architecture, nous avons utilisé l outil de simulation ModelSim. Ce dernier a permis une validation fonctionnelle de l architecture avant synthèse. Ensuite, l architecture matérielle a été prototypée sur carte sous la forme d un accélérateur matériel au sein d une chaîne de décodage H.264/AVC dans une approche de codesign. Cette dernière partie sera détaillée dans le quatrième chapitre. Une vue globale des interfaces de notre architecture est illustrée par la figure L architecture de filtrage consomme en entrées les valeurs des pixels à filtrer ainsi que la valeur du paramètre BS précédemment calculée (en amont dans le processus de décompression). 77

90 Chapitre 3. Implantation efficace du filtre anti-blocs de la norme H.264/AVC Figure 3.15 Vue globale de l architecture proposée Figure 3.16 Processus de filtrage La figure 3.16 présente le séquencement des phases de chargement, calcul et déchargement de l architecture matérielle. Les données d entrées arrivent sous forme de ligne de quatre pixels. Cette séquence est liée aux traitements amont. Le filtrage (loopfilter ou deblocking filter) est un traitement optionnel qui doit pouvoir être désactivé. Pour cette raison, nous produisons les informations de sortie de manière strictement identique à la séquence d entrée. Cette contrainte que nous appliquons à l architecture matérielle permet de simplifier la conception des blocs matériels situés en aval. En effet, l activation ou non du module de filtrage devient transparent. Pour illustrer ainsi l architecture proposée, nous allons en décrire les principales composantes. L architecture interne du filtre anti-blocs proposée est présentée par la figure Grâce à l organisation de la mémoire proposée (Figure 3.12), lors du filtrage des bords verticaux, on peut ainsi accéder aux blocs 0, 1, 2 et 3 simultanément, ce qui va nous permettre d utiliser moins de cycles pour accéder aux pixels stockés dans les différentes mémoires suivant les besoins. Dans ce contexte, le stockage des données dans la mémoire appropriée est synchronisé à travers le module de contrôle. Le bloc de contrôle est décrit sous la forme d une machine d états. Il permet de générer les signaux de contrôle nécessaires pour : 78

91 3.5. Architecture matérielle d implantation Figure 3.17 Architecture globale du filtre anti-blocs Synchroniser le chargement des pixels du Macrobloc à filtrer et des blocs voisins. Piloter les différents filtres, les modules de transposition et les autres modules nécessaires pour faire suivre les blocs semi-filtrés aux étapes suivantes. Il faut aussi noter que les mémoires utilisées ont un fonctionnement synchrone. Deux modes sont réalisés à l aide de l entrée wren : Mode écriture (wren=1) : dans ce mode, les mémoires reçoivent les données et les stockent dans des adresses définies. Mode lecture (wren=0) : dans ce mode, on peut lire depuis la mémoire les pixels stockés en donnant seulement l adresse des pixels désirés. Le basculement entre les différents modes de fonctionnement est réalisé de manière automatique. En effet, un compteur interne à l architecture séquence le passage du mode écriture, au mode calcul puis au mode lecture. Comme montre la figure 3.17, notre approche est constituée de six unités de filtrage identiques (FV1...FH3). Elles sont exploitées à la fois pour le filtrage des bords horizontaux et des bords verticaux d où la présence des modules de transposition à l entrée des unités de filtrage des bords horizontaux. La figure 3.18 présente cette unité de filtrage. De ce fait, les unités T et T inv permettent de transposer les blocs 4 4 en transformant les colonnes en lignes et inversement. Ces modules de transposition sont utilisés avant et après le filtre anti-blocs afin de récupérer les données dans le même ordre de départ. L unité T transpose un bloc 4 4 en quatre cycles d horloge (dans chaque cycle d horloge, nous recevons une ligne de pixels via un bus de 32 bits). Le tableau 79

92 Chapitre 3. Implantation efficace du filtre anti-blocs de la norme H.264/AVC Figure 3.18 Architecture d une unitée de filtrage Data input Data output a 00,a 01,a 02,a 03 a 00,a 10,a 20,a 30 a 10,a 11,a 12,a 13 a 01,a 11,a 21,a 31 a 20,a 21,a 22,a 23 a 02,a 12,a 22,a 32 a 30,a 31,a 32,a 33 a 03,a 13,a 23,a 33 Table 3.3 Entrées et sorties du module de transposition 3.5 et la figure 3.19 présentent les opérations réalisées par ce module pour un bloc 4 4 en spécifiant les indices des pixels d entrée et de sortie. L entrée de ce bloc est {a i0, a i1, a i2, a i3 } (i = 0, 1, 2, 3) et la sortie transposée est {a 0i, a 1i, a 2i, a 3i } (i = 0, 1, 2, 3). Résultats expérimentaux post-synthèse Evaluation des performances de l architecture Le filtre anti-blocs représente le goulot d étranglement du système en termes de cycles de traitement. L architecture que nous avons développée permet une exploitation efficace du parallélisme de calcul lié à notre ordonnancement des calculs de filtrage (section III.4). Une étude comparative a été menée afin d estimer l intérêt de notre approche vis-à-vis de celles publiées précédemment. Notre étude compare : la surface des parties opératives, les besoins mémoire, la fréquence de fonctionnement nécessaire pour atteindre un débit fixé ainsi que le débit maximum. La grande majorité des travaux présents dans la littérature fournissent des résultats d implantation sur technologie ASIC. Afin de pouvoir nous comparer avec les résultats antérieurs, nous avons implanté notre technologie 65 nm basse consommation de STMicroelectronics. A fin de réaliser la synthèse logique de l architecture décrite en VHDL nous avons employé l outil Design Compiler (2011) de Synopsys. La figure 80

93 3.5. Architecture matérielle d implantation Figure 3.19 Entrées et sorties du module de transposition Modules de transposition les unités de filtrage 22% 39% 5% 34% les modules de contrôle et autres Les mémoires Figure 3.20 Répartition de la complexité matérielle de l architecture proposée 3.20 illustre la répartition de la surface dans l architecture proposée. L unité de mesure utilisée pour la surface est le nombre de portes NAND équivalentes. L implantation matérielle proposée offre un compromis très intéressant : elle réduit le temps d exécution en contre partie d une faible augmentation de la surface silicium occupée. Notre architecture consomme 22 % de la surface d intégration globale pour les noyaux de filtrage. Cette surface est plus faible en proportion que celle obtenue par [8] (44 %). De plus, notre architecture est également plus rapide que celles présentées dans le tableau 3.6. En effet, ses performances en termes de débit sont supérieures à celles atteintes par les autres architectures présentées dans la littérature (tableau 3.6) à équi-fréquence comparées. Si le système où est intégrée notre architecture est contraint en débit, alors cette dernière travaille à fréquence inférieure. Cela permet ainsi de minimiser la consommation d énergie. 81

94 Chapitre 3. Implantation efficace du filtre anti-blocs de la norme H.264/AVC En utilisant l architecture proposée, nous pouvons réduire relativement le nombre des cycles nécessaire pour générer le Macrobloc filtré (ne prend que 44 cycles d horloge) et améliorer le débit. La conception proposée coûte 25,08 kgates. Cette valeur est relativement plus faible que les solutions précédentes proposées dans la littérature [7, 8, 62]. Les architectures présentées dans le tableau 3.6 ont été construites afin d assurer de 2 à 8 filtrages en parallèle. Leurs caractéristiques ainsi que les technologies d intégration sont fournies pour démontrer les avantages de notre solution. 82

95 83 Hu WEI [63] C.A. Chien Tobajas [64] Ke. Xu [65] LIN Y.C. C.M. CHEN K.-H. Chen Architecture [7] [66] [62] [8] proposée Technologie (nm) (µm) Application cible Fréquence a 62 MHz 225 MHz 100 MHz 200 MHz 98 MHz 60 MHz 135 MHz MHz Nombre de portes (kgates) Nombre de filtres Mémoires (Byte) Temps de traitement (cycles/mb) Débit maximum (kmb/s) b Architecture matérielle d implantation a. Correspond à la fréquence nécessaire pour l application cible 1 b. Débit(kMB/s) = (( Fmax ) temps de traitement) 1 Table 3.4 Comparaison avec les autres architectures de la littérature

96 Chapitre 3. Implantation efficace du filtre anti-blocs de la norme H.264/AVC 3,500 3,000 Débit (MBit/s) 2,500 2,000 1,500 1, [63] [7] [5] [66] [65] [62] [8] MOEZ Figure 3.21 Comparaison des performances basée sur le débit (kmb/s) Quand on regarde l architecture proposée par [63], nous pouvons constater que le coût total de cette conception et la notre sont proches même si nous avons utilisé une organisation différente de la mémoire et des six unités de filtrage. Ainsi, avec notre conception, nous consommons une surface d intégration modérée tout en minimisant le temps de calcul. L architecture proposée est basée sur six filtres synchronisés à travers un module de contrôle. Ce module permet de maximiser l utilisation des différents filtres à chaque étape du filtrage. Le design [64] réduit considérablement la surface d intégration car il effectue le filtrage du Macrobloc en mode pipeline. Cependant, l utilisation d une petite quantité de mémoire nécessite un accès plus fréquent à la mémoire externe, ce qui conduit à une plus grande consommation d énergie. Il est à noter que le modèle proposé contient quatorze modules de mémoire locale afin de favoriser le traitement parallèle de plusieurs bords en se basant sur l ordre de filtrage proposé. La figure 3.21 compare le débit supporté par notre modèle et celui des autres travaux présentés dans la littérature. Le débit est basé sur la fréquence de fonctionnement et le temps de traitement nécessaire pour générer un Macrobloc filtré. Nous pouvons alors constater que la conception proposée atteint quatre fois les performances d une conception récente [7] alors que le coût d intégration est sensiblement équivalent (moins de portes NAND mais plus de mémoires). De même, lorsque l on compare avec [65, 66], les performances en termes de débit de notre conception dépassent trois fois les architectures précédemment mentionnées tandis que le coût 84

97 3.5. Architecture matérielle d implantation Application cible @60fps @30fps @30fps @30fps Fréquence MHz MHz MHz MHz Table 3.5 Fréquence de fonctionnement requise pour certains standards vidéo matériel de notre architecture est supérieur de 20 % pour les parties calculatoires et supérieur de 15 % à 200 % pour le coût mémoire. La fréquence utilisée pour calculer le débit de l architecture proposée est égale à 150 MHz. Cette fréquence est le maximum qui peut être atteint sur la technologie ASIC considérée (faible consommation d énergie). La figure 3.21 montre que nous pouvons traiter le même débit que [8] avec une fréquence moins élevée. En outre, le travail proposé offre un compromis très intéressant entre la complexité du matériel (surface d intégration) et le temps de traitement. Notre filtre anti-blocs est également capable d effectuer un traitement des applications vidéo avec une résolution de 6000x4000 à 30 fps en temps réel avec une fréquence de fonctionnement faible ( 120 MHz). Cette caractéristique est intéressante à la vue de l évolution des normes. Cette capacité de traiter des flux vidéo de grande taille n est pas possible avec la majorité des solutions proposées dans la littérature. Enfin, pour conclure, en comparant les architectures [7, 8, 63, 65, 64, 62, 66] avec notre conception, nous constatons que la nôtre atteint un débit plus élevé et une fréquence de travail relativement plus haute avec une légère augmentation de la surface finale de l architecture due à l utilisation de six noyaux de filtrage. Dans le tableau 3.7, nous présentons les fréquences de fonctionnement nécessaires au traitement de différentes applications. L architecture proposée, grâce aux performances fournies, sera employée comme un accélérateur matériel au sein d une plateforme embarquée dans laquelle on intègrera le décodeur H.264/AVC. Extension de l approche aux modes 4 : 2 : 2 et 4 : 4 : 4 La modification de l ordonnancement des calculs de filtrage ainsi que l architecture matérielle d implantation peut être utilisée pour traiter des vidéos aux formats 4 : 2 : 2 et 4 : 4 : 4 utilisés dans les profils haute qualité de la norme H.264/AVC. Ces profils se basent sur des images pour lesquelles les informations de chrominance (Cr et Cb) sont pas ou peu sous 85

98 Chapitre 3. Implantation efficace du filtre anti-blocs de la norme H.264/AVC Figure 3.22 Estimation de l ordre de filtrage pour le mode 4 :2 :2 Figure 3.23 Estimation de l ordre de filtrage pour le mode 4 :4 :4 échantillonnées. Cette modification dans la chaîne de compression et décompression permet d améliorer la qualité visuelle des vidéos. Toutefois, cela se traduit par une augmentation de la complexité calculatoire : le mode 4 : 2 : 2 augmente d un facteur de 1,33 le nombre de données à traiter (par rapport au mode 4 : 2 : 0) tandis que le mode 4 : 4 : 4 multiplie par 2 le nombre de calculs. Les figures 3.22 et 3.23 présentent l ordonnancement du filtrage des bords pour réaliser le traitement des Macroblocs associés aux modes 4 : 2 : 2 et 4 : 4 : 4. Cet ordonnancement en contraint par le nombre d unités de filtrage disponibles dans notre architecture matérielle (six unités matérielles). Dans les modes 4 : 2 : 2 et 4 : 4 : 4, le nombre de données à mémoriser est plus important : nous devons charger et mémoriser dans l architecture la totalité du Macrobloc de luminance et les deux blocs de chrominance de taille Pour le mode 4 : 4 : 4, l architecture doit mémoriser trois blocs de taille Comme le montre la figure 3.22, 14 macrocycles de calcul sont nécessaires pour 86

99 3.5. Architecture matérielle d implantation Figure 3.24 Ordre de filtrage pour le mode 4 :4 :4 utilisant 12 unités de filtrage Figure 3.25 Ordre de filtrage pour le mode 4 :4 :4 utilisant 12 unités de filtrage filtrer un Macrobloc en mode 4 : 2 : 2. La durée du traitement correspond à 56 cycles d horloge. De même, en se référant à la figure 3.23, on constate que pour réaliser le filtrage d un Macrobloc en mode 4 : 4 : 4, il faut 19 macrocycles (76 cycles d horloges). Afin de réduire le temps de traitement des Macroblocs en mode 4 : 2 : 2 et 4 : 4 : 4, il est nécessaire d augmenter le nombre d unités de filtrage dans notre architecture. Evidemment, ces unités s exécutent en parallèle tout en respectant le standard. Il s agit d une nouvelle proposition d architectures qui n ont pas été abordées dans la littérature. Le tableau 3.8 fournit une estimation des ressources utilisées dans les architectures proposées pour les deux modes 4 : 2 : 2 et 4 : 4 : 4. Evaluation des performances sur circuit FPGA Il est à noter que nous avons utilisé le circuit FPGA Virtex-5 d une carte d évaluation Xilinx ML507 (circuit xc5vfx70t). 87

100 Chapitre 3. Implantation efficace du filtre anti-blocs de la norme H.264/AVC 4 :2 :2 4 :4 :4 Nombre de portes (kgates) 33, Nombre des filtres 8 12 Mémoires (octets) Temps de traitement (cycles/mb) Table 3.6 Fréquence de fonctionnement requise pour certains standards vidéo Figure 3.26 Répartition en termes de LUTs des différents modules Les résultats de synthèse de l architecture proposée sont : Le nombre total d éléments logiques (LUT6) est de 10600, ce qui représente 22 % du nombre des éléments disponibles sur le circuit Virtex-5. Le nombre des slice registers utilisé est de 6800, ce qui représente 14 % du nombre total disponible dans ce composant. Nous constatons, d après la figure 3.26, que les unités de filtrage (Filtre_1D) ainsi que les deux modules Data_out et Data_out_trans occupent la majorité des éléments logiques. En effet, ces modules nécissitent 86 % de l espace occupé dans le FPGA. 3.6 Conclusion Dans ce chapitre, nous avons détaillé le principe de l algorithme de filtrage de la norme H.264/AVC. De plus, nous avons analysé les travaux antérieurs proposés dans la littérature. Dans une deuxième partie, nous avons présenté et analysé l architecture originale proposée pour le filtre anti-blocs ainsi que les résultats de synthèse obtenus sur cibles ASIC et FPGA. Nous avons aussi étudié les possibilités d extension du module de traitement proposé en vue du traitement de flux vidéo professionnels. A 88

101 3.6. Conclusion partir de cette étude, une estimation des coûts matériels et des performances a été présentée. Dès lors, afin d optimiser le temps de traitement global de la chaîne de décodage de la norme H.264/AVC et de valider le fonctionnement de l architecture ainsi proposée, nous allons utiliser cette dernière comme accélérateur matériel dans un système SoPC. Nous allons ainsi mettre en place une plateforme embarquée bâtie autour d un circuit FPGA Xilinx intégrant un processeur hardcore PowerPC afin d optimiser par les performances et la flexibilité des systèmes développés. L approche codesign (matériel/logiciel) sera également mise en œuvre afin de faciliter la conception d un tel système SoPC. Cette architecture matérielle complexe, fortement parallèle, mettra en œuvre l usage d un système d exploitation comme (Linux) capable de gérer les différentes unités qui la composent tout en prenant en compte les critères de performances et de supervision d exécution des applications embarquées. 89

102

103 Validation fonctionnelle sur plateforme FPGA 4 Sommaire 4.1 Introduction Environnement logiciel et matériel de la plateforme Evaluation des performances de l implantation tout logiciel du décodeur H.264/ MPEG-4 AVC Evaluation des performances d une implantation conjointe matérielle/logicielle du décodeur H Conclusion

104

105 4.1. Introduction 4.1 Introduction Après avoir proposé et implanté une version efficace du filtre anti-blocs en termes de débit grâce au langage de description matériel VHDL, nous présentons dans ce chapitre l étude et l implémentation conjointe matérielle et logicielle du décodeur H.264/AVC. La validation fonctionnelle de ce filtre, module le plus complexe du décodeur, est réalisée dans le but de mettre en évidence son impact sur la réduction du temps d exécution. Pour cela, nous commencerons par présenter l environnement matériel et logiciel de la plateforme ayant servi de démonstrateur. Ensuite, une évaluation des performances d une implantation logicielle du décodeur H.264/AVC sera présentée. Puis, nous discuterons de l apport du bloc IP dans un contexte de développement conjoint matériel/logiciel tout en précisant les limitations rencontrées au niveau de la plateforme matérielle. Nous montrerons enfin l intérêt de l usage d un système d exploitation (Linux) afin de faciliter le développement conjoint matériel/logiciel en lui apportant de la flexibilité. Finalement, nous montrerons l intérêt de mettre en œuvre une extension Temps Réel dur (Xenomai) en modifiant le décodeur H.264/AVC. Cela sera démontré à l aide de mesures réalisées lors d un stress de la plateforme. 4.2 Environnement logiciel et matériel de la plateforme La carte de développement ML507 La carte utilisée pour notre démonstrateur est une carte Xilinx ML507. Celle-ci possède de nombreux composants et interfaces. Nous ne nous intéresserons cependant qu à ceux qui sont en lien direct avec nos travaux. Le circuit FPGA Xilinx Virtex 5 XC5VFX70T est le composant programmable disponible sur la carte. Celui-ci appartient à la famille Virtex-5. Cette dernière fournie de hautes performances pour un usage ciblant l embarqué. Le Virtex-5 utilisé possède un nombre important de blocs RAM. Ceux-ci sont indispensables dans les applications qui traitent des flux vidéo car elles nécessitent systématiquement des mémoires tampon pour stocker les données temporaires liées aux traitements. La carte ML507 possède également plusieurs types de mémoire : mémoires RAM (DDR2 SODIMM 256 Mo, SRAM 1 Mo) et mémoire Flash (32 Mo). Ces mémoires sont mises à contribution pout installer et faire fonctionner les parties logicielles. On trouve également une interface JTAG pour la programmation du circuit FPGA et une 93

106 Chapitre 4. Validation fonctionnelle sur plateforme FPGA Figure 4.1 Carte de développement Xilinx ML507 liaison série RS-232 qui est utilisée pour le dialogue entre la carte et le poste de développement. La carte possède enfin un connecteur PCI Express géré directement par le circuit FPGA. On y trouve également un certain nombre de blocs DSP48E qui intègrent des fonctions arithmétiques câblées (multiplieurs, accumulateurs, additionneurs). Ils permettent de mettre en œuvre des chaînes de traitement performantes pour le traitement du signal et des images. Un élément important au sein du FPGA est le coeur de processeur PowerPC. Il s agit d un processeur PowerPC 440, présent en dur dans le silicium du FPGA. Ce processeur peut être instancié et configuré directement à partir des outils Xilinx. Le support de nos travaux est principalement le processeur PowerPC. C est ce processeur qui a pour vocation de permettre le contrôle des futures chaînes de décodage de la norme H.264/AVC. Et c est sur celui-ci que nous allons tenter d implanter un OS embarqué (Linux) fournissant les services de base qui nous sont nécessaires à la conception du démonstrateur. 94

107 4.2. Environnement logiciel et matériel de la plateforme Système d exploitation : Linux pour l embarqué Linux est un système d exploitation multitâche de la famille Unix. Il est possible d y exécuter plusieurs processus qui partagent les ressources du système (CPU, mémoire, ports de communication...). De plus, il permet une gestion aisée des systèmes de fichiers. Enfin, les protocoles TCP/IP sont pris en charge. Pour cela, il inclut les pilotes pour une multitude de cartes réseau Ethernet. Linux fut initialement développé pour les processeurs de type Intel x86 mais il a depuis été adapté à un grand nombre d architectures matérielles comme le PowerPC (le processeur utilisé dans ces travaux), SPARC, Alpha, Nios II, MicroBlaze... Linux est libre et disponible au niveau source (open source). En effet, les codes sources des différents composants du système sont librement disponibles et téléchargeables sur Internet [67]. Ces mêmes codes sources peuvent être redistribués gratuitement en respectant les règles de fonctionnement de la licence GPL (General Public License) et de sa variante, la licence LGPL (Lesser General Public License). Linux est conforme à la norme POSIX (Portable Operating System Interface X), ce qui signifie que les programmes développés sous Linux peuvent être recompilés facilement sur d autres systèmes d exploitation compatibles POSIX [67]. Linux est également réputé pour sa grande interopérabilité, c est-à-dire qu il peut facilement s intégrer dans un réseau informatique utilisant d autres systèmes d exploitation. Vue la complexité croissante des systèmes de traitement de l information, nous sommes à un stade où il devient difficile de gérer les ressources matérielles d une architecture sans avoir recours à une logique programmée (logiciel) plus ou moins complexe. Cette couche logicielle assure l accès abstrait aux ressources matérielles (virtualisation des accès aux ressources), cela afin de masquer l accès hétérogène au matériel. Cette interface logicielle est appelée système d exploitation. Le développement d une application embarquée dans le système SoPC nécessite l utilisation d un système d exploitation capable de gérer les différentes unités qui la composent tout en tenant compte des critères de performances et de superviser l exécution des applications. Durant les dix dernières années, les systèmes embarqués sont devenus capables de conquérir divers domaines (du téléphone mobile à l ordinateur de poche...). Ce progrès a sollicité de façon considérable le domaine de conception des architectures et des systèmes d exploitation embarqués car au contraire d un système informatique classique, dans un système embarqué, il est impossible de s abstraire des contraintes liées à l environnement physique dans lequel il s exécute. 95

108 Chapitre 4. Validation fonctionnelle sur plateforme FPGA Figure 4.2 Systèmes d exploitation pour les applications embarquées Le choix d un système d exploitation (Operating System) dépend essentiellement des contraintes imposées et des ressources disponibles [68]. La figure 4.2 illustre une classification des systèmes d exploitation pour l embarqué en fonction des contraintes temporelles et des ressources mémoire disponibles [69]. Le choix de l usage d un système d exploitation pour notre système embarqué multimédia permet de gérer au mieux la complexité algorithmique. Le choix d un système d exploitation libre comme Linux pour l embarqué a semblé judicieux à juste titre : Logiciel Libre, accès aux sources, flexibilité, configurabilité et connectivité réseau sont des atouts importants. La possibilité aussi de pouvoir utiliser d autres briques logicielles libres (dont les avantages ressemblent forts à ceux des modules IP) est aussi une force. Environnement de développement d un système SoPC L outil ISE (Integrated System Evironment) est un logiciel proposé par la société Xilinx. Il est utilisé pour la gestion d un flot de conception FPGA. La figure 4.3 présente l interface graphique d ISE. Ce logiciel permet de faire une saisie graphique ou une description VHDL/Verilog d une architecture numérique, d en réaliser une simulation afin de valider son fonctionnement et finalement la synthèse et l implantation sur un circuit FPGA. 96

109 4.2. Environnement logiciel et matériel de la plateforme Figure 4.3 Outil Xilinx ISE L outil Xilinx XPS (Xilinx Platform Studio) comprend une large bibliothèque de blocs IP que l on pourra intégrer dans le système en fonction de nos besoins. Ainsi, cet outil va nous permettre de construire un système SoPC à base d un processeur embarqué (softcore ou hardcore), de ses périphériques associés comme par exemple les contrôleurs de mémoire SRAM et de mémoire SDRAM, contrôleur DMA (Direct Memory Access), etc. On peut également intégrer autant de périphériques que l on veut, n étant limité que par le nombre de broches et de cellules logiques du circuit FPGA. Le mapping mémoire et les interruptions utilisées et leur niveau du design sont fixés durant cette phase de conception. On peut aussi ajouter au design des accélérateurs matériels spécifiques qui vont être ainsi ajoutés comme étant des blocs IP externes. La figure 4.4 présente l interface graphique de l outil XPS. Pour créer un système SoPC, nous devons choisir dans un premier temps la carte 97

110 Chapitre 4. Validation fonctionnelle sur plateforme FPGA Figure 4.4 Outil Xilinx XPS de développement, le type et le nombre de processeurs utilisés ainsi que leurs caractéristiques (PowerPC à 400MHz, activation de l unité de calcul en virgule flottante...) comme montré dans la figure 4.5. A l issue de la phase de construction du système SoPC, XPS génère le projet en intégrant tous les modules IP nécessaires à son fonctionnement. Après l étape de synthèse, on aura alors le fichier de programmation du circuit FPGA correspondant au design SoPC mais aussi un kit de développement logiciel qui comprend tous les fichiers en langage C (.h et.c) pour piloter simplement les périphériques d E/S du système SoPC. C est en fait la passerelle logicielle avec le logiciel embarqué développé (ou un système d exploitation). L approche conjointe de codesign apparaît comme la possibilité de développer une partie de l application avec un langage de description matériel et une autre partie en logiciel à l aide du langage C. La répartition entre le développement matériel et le développement logiciel étant dépendant des choix du concepteur. 98

111 4.3. Evaluation des performances de l implantation tout logiciel du décodeur H.264/ MPEG-4 AVC Figure 4.5 Choix du processeur embarqué Dans l objectif de tester l environnement matériel par logiciel, Xilinx fournit l outil SDK (Software Development Kit). Cet outil permet aux développeurs de faire tourner des applications logicielles en générant des exécutables au format ELF (Executable and Linking Format) qui vont être chargés sur la carte par l interface JTAG. 4.3 Evaluation des performances de l implantation tout logiciel du décodeur H.264/ MPEG-4 AVC Afin de pouvoir analyser les performances du décodeur H.264/AVC, nous avons implanter dans un premier temps le système d exploitation Linux sur la carte cible. Cet OS est exécuté par le processeur PowerPC. Dans ce qui suit, nous détaillerons les principales phases du portage de Linux sur le processeur embarqué PowerPC de la carte cible Xilinx ML507. Portage de Linux sur le processeur PowerPC 440 du circuit FPGA Xilinx Virtex-5 de la carte ML507 Xilinx fournit les fichiers sources modifiés d un noyau (système d exploitation) Linux 2.6 pour le support de ces circuits FPGA. Ce noyau se trouve sur un serveur de fichiers git. On peut le télécharger sur son PC de développement que l on supposera qu il exécute une distribution Linux via la ligne de commande suivante : $ git clone git ://git.xilinx.com/linux-2.6-xlnx.git 99

112 Chapitre 4. Validation fonctionnelle sur plateforme FPGA Figure 4.6 Développement d applications de test avec XPS SDK On peut aussi le télécharger directement depuis le site de Xilinx (http ://git.xilinx.com > tree > snapshot). Le noyau doit être adapté à l architecture matérielle de la carte cible (mapping mémoire des périphériques, périphériques, interruptions, configuration réseau, type de boot...). Cette configuration est faite dans un fichier d extension.dts. (Device Tree Specification). C est un fichier de type XML donnant les caractéristiques que l on souhaite durant l étape d autoconfiguration. Il est généré grâce à l outil Xilinx EDK [70]. Pour notre carte Xilinx ML507, nous avons ainsi les commandes suivantes : $ make ARCH=powerpc CROSS_COMPILE=ppc_4xx- 44x/virtex5_defconfig $ make ARCH=powerpc CROSS_COMPILE=ppc_4xx- zimage La première commande sert à générer le fichier de configuration du noyau en utilisant le fichier.dts. Nous spécifions à chaque fois l architecture du processeur de la cible (PowerPC) ainsi que le compilateur croisé utilisé (ppc_4xx-). Dans un premier temps, nous cherchons à porter le système d exploitation en mémoire vive du circuit FPGA de la carte cible. C est l une des façons les plus simples pour implanter rapidement notre système d exploitation. Nous devons ainsi le préciser dans le fichier.dts. Cela est réalisé en précisant les paramètres suivant : chosen { bootargs = "console=ttys0 ip= root=/dev/ram ramdisk_size=128768" ; 100

113 4.3. Evaluation des performances de l implantation tout logiciel du décodeur H.264/ MPEG-4 AVC linux,stdout-path = "/plb@0/serial@83e00000" ; Le système d exploitation Linux offre un système de fichiers. Pour cela, il est possible d en intégrer un à partir d un fichier ramdisk compressé que l on doit fournir en la copiant dans ce répertoire (arch/powerpc/boot/ramdisk.image.gz). Xilinx fournit un fichier ramdisk que l on peut ensuite modifier en fonction des besoins. A l issue de la compilation du noyau, on trouvera dans ce dossier (arch/powerpc/boot/) 4 fichiers importants : simpleimage.virtex440-ml507.elf (bitstream sans système de fichiers) simpleimage.initrd.virtex440-ml507.elf (bitstream avec système de fichiers) simpleimage.initrd.virtex440-ml507 simpleimage.virtex440-ml507 Pour charger le fichier simpleimage.initrd.virtex440-ml507.elf dans la mémoire de la carte par l interface JTAG, nous utilisons l outil XMD fourni par Xilinx : XMD% connect ppc hw -debugdevice devicenr 5 cpunr 1 XMD% dow arch/powerpc/boot/simpleimage.virtex440-ml507.elf XMD% run Afin d avoir accès à un panel exhaustif de commandes Linux, nous allons utiliser l outil Busybox [71]. Busybox est un projet libre qui permet de fournir via un seul exécutable un ensemble de commandes Linux (cd, mkdir, ls, rm...). La configuration de Busybox se fait dans son menu config : $make ARCH=powerpc CROSS_COMPILE=ppc_4xx- menuconfig Après avoir correctement paramétré son fichier de configuration, nous pouvons le compiler de façon croisée puis l installer dans notre système de fichier root qui servira ensuite à générer le fichier ramdisk : $ make ARCH=powerpc CROSS_COMPILE=ppc_4xx- $ make ARCH=powerpc CROSS_COMPILE=ppc_4xx- CONFIG_PREFIX=rootfs_path install La chaîne rootfs_path correspond à la racine de notre système de fichiers (la racine de la distribution Linux embarqué exécuté par le processeur PowerPC). Afin de vérifier la disponibilité des commandes Linux de base, il suffit d aller dans le répertoire rootfs_path/bin. Au final, pour charger le tout dans la carte cible Xilinx, il est nécessaire par l inter- 101

114 Chapitre 4. Validation fonctionnelle sur plateforme FPGA face JTAG : de charger le fichier bitstream (.bit) dans le circuit FPGA Virtex-5 issu de la synthèse du design créé avec XPS à l aide du logiciel Impact, charger le fichier.elf généré après la compilation du noyau à l aide du logiciel XMD puis de l ensemble le noyau Linux... Profiling du décodeur H.264 / MPEG-4 AVC Après avoir validé le portage de Linux sur notre plateforme, nous pouvons mettre en œuvre un décodeur H.264/AVC tout logiciel. Le groupe JVT (Joint Video Team) a développé un logiciel de référence dans le but d expérimenter et de valider les fonctionnalités de la norme H.264/AVC. Ce logiciel s appelle JM (Joint Model), la version courante au moment de la rédaction de cette thèse est la version Les sources sont librement téléchargeables sur la page web du site du groupe JVT [72]. Pour nos travaux, nous avons utilisé ainsi la version JM Cette version a servi à valider fonctionnellement les modifications algorithmiques proposées ainsi que les architectures matérielles développées. Par ailleurs, le codeur/décodeur qui représente plus de lignes de code nous a aussi permis une compréhension approfondie de la majorité des mécanismes de la compression H.264/AVC. Son code source est très lisible mais n a pas été conçu pour être performant. Il est écrit en langage C pour des besoins de portabilité. De nombreux paramètres peuvent être modifiés tels que le nombre d images de référence, le pas de quantification QP, les modes de partitionnement d un Macrobloc, le mode de sous-échantillonnage (4 :2 :0, 4 : 2 : 2, 4 : 4 : 4), etc. Lors de la compilation croisée de la version JM 10.2, nous devons configurer JM pour utiliser le compilateur associé au processeur PowerPC. Pour cela, nous avons modifié le fichier makefile : CC= $(shell which ppc_4xx-gcc) Il reste alors à mettre à jour l exécutable, le bitstream (test.264) généré par l encodeur, les séquences de test (.cif) dans le fichier ramdisk et charger le nouveau bitstream (.bit) dans notre plateforme ainsi que l image du noyau Linux complété de son fichier ramdisk. La figure 4.7 présente les séquences de tests. Les séquences de test de la figure 4.7 correspondent à des séquences soit statiques (séquence Akiyo), soit dynamiques (Foreman, Mobile, Tb420). La figure 4.8 décrit le système embarqué réalisé. Il est constitué de différents blocs IP tels que le processeur PowerPC, le bus Xilinx PLB et différents périphériques (DDR2 SDRAM, xps_timer, RS232_UART...) nécessaires au bon fonctionnement de 102

115 4.4. Evaluation des performances d une implantation conjointe matérielle/logicielle du décodeur H.264 Figure 4.7 Séquences de test notre plateforme de validation. Le processeur PowerPC est le cœur de notre système embarqué. Il est connecté aux différents périphériques grâce au bus PLB. Pour calculer le temps d exécution des différents modules qui composent le décodeur H.264/AVC sur notre plateforme embarquée, nous avons utilisé la fonction macro RDTSC (ReaD Time Stamp Counter). Cette instruction donne le nombre de cycles d horloge écoulés depuis la mise en marche de processeur et retourne le résultat sous forme d une valeur 64 bits. Ce compteur 64 bits du processeur PowerPC sert ainsi à mesurer le temps écoulé (clock source au sens Linux) L instruction RDTSC offre des mesures de loin plus précises et déterministes par rapport aux autres outils utilisés pour mesurer les performances temporelles (outil gprof, appel système gettimeofday()...). La figure 4.9 fournit les résultats du profiling du décodeur H.264/AVC sur notre plateforme embarquée. Les résultats mesurés confirment ceux présentés dans [2, 3]. En effet, on constate que la complexité du décodeur est fortement localisée dans le module de filtrage anti-blocs (environ 36 % du temps de traitement du décodeur). 4.4 Evaluation des performances d une implantation conjointe matérielle/logicielle du décodeur H.264 Dans cette partie, nous présenterons l intégration des blocs IP que nous avons développés sur notre plateforme de validation. Cela a permis une validation fonc- 103

116 Chapitre 4. Validation fonctionnelle sur plateforme FPGA Figure 4.8 Système embarquée PowerPC de la plateforme de validation Compensation de mouvement 26% 36% Filtre anti-blocs CAVLC 18% Prédiction Intra 10% 10% autres Figure 4.9 Profiling du décodeur H.264/AVC tionnelle des IPs. Par ailleurs, nous détaillerons dans un premier temps le principe de l intégration des blocs IP comme accélérateurs matériels. Dans un second temps, nous présenterons les résultats et les apports de ces coprocesseurs en termes de performances mais aussi les limitations rencontrées au niveau matériel notamment au niveau de bus de données de la plateforme de validation. Ajout d un bloc IP dans l environnement EDK de Xilinx La création d un bloc IP dans l environnement EDK (Embedded Development Kit) commence par la création ou par l importation de l accélérateur matériel. La figure 4.10 présente la phase de départ de la mise en œuvre d un bloc IP en cliquant sur Hardware et en choisissant ensuite Create/Import Peripheral Wizard. Durant cette étape, nous avons le choix entre la création d un nouveau périphérique ou l importation d un périphérique existant. Après la sélection du design dans 104

117 4.4. Evaluation des performances d une implantation conjointe matérielle/logicielle du décodeur H.264 Figure 4.10 Interface graphique pour l ajout d un bloc IP Figure 4.11 choix de bus de communication lequel nous allons ajouter nos accélérateurs matériels, nous devrons choisir le bus (Figure 4.11) qui va assurer la communication entre le bloc matériel et les autres périphériques du système SoPC (dans notre cas le bus Xilinx PLB). L opération suivante (Figure 4.12) consiste à préciser le nombre d entrées/sorties du périphérique à travers le nombre des registres de 32 bits utilisés pour la communication entre la partie matérielle et la partie logicielle. La création du modèle nécessaire pour la mise en œuvre des blocs IP passe par la modification des fichiers (.vhd). Ces fichier sont générés après la configuration réussie de l accélérateur matériel à intégrer. Ils sont relatifs à la partie matérielle. Ces fichiers se situent dans le dossier pcores (fichiers user_logic.vhd et nom_blocip.vhd). Dans le premier fichier, on doit incorporer le code VHDL de l architecture du bloc IP ainsi que ses entrées/sorties. La figure 4.13 illustre la disposition des entrées/sorties 105

118 Chapitre 4. Validation fonctionnelle sur plateforme FPGA Figure 4.12 Précision du nombre d entrées/sorties Figure 4.13 Ajout des entrées/sorties du périphérique. Concernant le fichier nom_blocip.vhd, il réalise lien entre le bloc matériel et le système (à travers l interface IPIF "Intellectual-Property InterFace" qui est le protocole du bus PLB). Afin de finaliser l intégration du périphérique, il suffit de l importer avec ces modifications. Mise en place de la plateforme de validation matérielle et logicielle La plateforme de validation correspondant à un système multimédia embarqué ainsi réalisé est constituée des éléments suivants : Processeur embarqué PowerPC (PPC440) Coprocesseur pour le filtre anti-blocs Coprocesseur pour la transformation inverse Mémoire DDR2_SDRAM (256 Mo) Mémoire Flash (32 Mo) Liaison série RS232 Bus PLB Contrôleur Ethernet Interface JTAG Ces différents composants sont générés et associés en utilisant l outil Xilinx XPS. La figure 4.14 illustre notre système SoPC ainsi construit. Les blocs IP qui constituent notre système sont reliés entre eux via le bus Xilinx PLB. 106

119 4.4. Evaluation des performances d une implantation conjointe matérielle/logicielle du décodeur H.264 Figure 4.14 Généeration du système SoPC avec XPS Après le développement des différents blocs IP et afin de les mettre en œuvre, nous avons développé pour chaque accélérateur matériel le pilote de périphérique (driver) pour pouvoir l utiliser de façon homogène et standardisé depuis le système d exploitation via les appels systèmes standards. Ce pilote de périphérique joue le rôle de couche d abstraction. Il faut noter que nous avons développé un pilote de périphérique simple de type caractère bien adapté à ce contexte. L évaluation de notre implantation conjointe matérielle/logicielle sur la plateforme de validation sera faite en comparaison à la solution tout logicielle du décodeur en utilisant des séquences vidéo de type CIF (Common Intermediate Format). Le premier module IP intégré fut l ICT-1D qui implante la transformation inverse. Cet IP permet de calculer le produit de la matrice C f avec la matrice (K) fournie en entrée Y = (C j KCj T) = (K)

120 Chapitre 4. Validation fonctionnelle sur plateforme FPGA Figure 4.15 Module matériel ICT_1D Figure 4.16 Implémentation de la transformée entière 1D La figure 4.15 montre l architecture matérielle interne de ce module. D après cette figure, ce module est constitué de quatre sous-modules notés ICT_i (i= 0..3). Chaque sous-module effectue les opérations sur une ligne de la matrice de transformation et de la matrice de données. La matrice de transformation C f ne contient que 4 coefficients, 1, -1, 2 et -2, donc, l implémentation matérielle utilise uniquement des opérations de décalage, d addition et de soustraction. Le module ICT-1D est conçu pour traiter 16 pixels par cycle d horloge. L implémentation de la transformée entière 1-D est présentée par la figure Evaluations des performances Après la mise en place de notre système sur la plateforme de validation, nous avons noté que l usage du bus PLB pour l accès à nos blocs IP ralentit le temps de traitement car : ce bus a une fréquence quatre fois inférieure à la fréquence du processeur PowerPC et de plus le temps d arbitrage est élevé. L accès à la mémoire DDR2 où est stocké le noyau Linux et les programmes se fait à la fréquence du processeur 108

121 4.4. Evaluation des performances d une implantation conjointe matérielle/logicielle du décodeur H.264 Séquences.cif 100 Décodeur tout logiciel Décodeur Pourcentage frames sous Linux HW/SW sous gain (%) Linux (avec les accélérateurs matériels) Foreman 127,055 s 113,052 s 11,02 Tb ,532 s 139,995 s 9,4 Mobile 159,587 s 146,251 s 8,3 Akiyo 89,402 s 78,835 s 11,08 de Table 4.1 Résultats de mesures PowerPC à 400MHz alors que l accès à la mémoire statique SRAM et aux blocs IP se fait à la fréquence du bus PLB quatre fois moindre soit 100 MHz (Figure 4.7). Pour être dans les mêmes conditions de mesure, nous avons modifié la compilation de notre noyau Linux pour mettre le noyau et les applications (via le ramdisk) en mémoire statique SRAM connectée sur le bus PLB comme nos blocs IP. Cela permet d avoir les mêmes conditions de mesure pour comparaison entre une implantation logicielle du décodeur et notre solution mixte. Le tableau 4.1 résume les résultats mesurés dans ces 2 cas d utilisation. D après le tableau 4.1, nous remarquons que nous obtenons un gain de l ordre de 10% du temps de traitement. A noter que les résultats trouvés sont presque multipliés par 4 à cause de l utilisation d un bus PLB qui a une fréquence de 100MHz alors que la fréquence du processeur PowerPC est de l ordre de 400MHz. Evaluation des performances en fonction de la charge du système L expansion du marché des systèmes embarqués a motivé la recherche académique pour offrir des solutions sur les problèmes d encombrement et de connectivité. En effet, l implémentation d un processeur sur FPGA contribue à économiser de la place et assure une interaction meilleure entre l exécution des programmes et les accélérateurs matériels. En outre, l ajout d un système d exploitation permet de s abstraire des éléments matériels et de piloter les périphériques par logiciel de façon homogène. Le temps réel permet de garantir les temps de traitement quelque soit l état de charge du système. Nous allons voir comment l usage d un système d exploitation temps réel, permet de mieux répondre en cas de stress du système. 109

122 Chapitre 4. Validation fonctionnelle sur plateforme FPGA Introduction Un système d exploitation temps réel se caractérise par la prise en compte des contraintes temporelles dont le respect est aussi important que l exactitude des résultats. Autrement dit, le système ne doit pas simplement délivrer des résultats exacts, il doit les délivrer dans des délais imposés (temps maximum). Il exploite le matériel d une plateforme et partage le temps du processeur entre les différentes tâches logicielles exécutées. Cette notion de partage implique une gestion du passage d une tâche à l autre qui est effectuée par un ensemble d algorithmes appelés ordonnanceur (scheduler). L ordonnanceur désigne le composant du système d exploitation qui choisit la prochaine tâche qui va être exécutée par le processeur. Un système d exploitation temps réel n est pas forcement plus rapide qu un système traditionnel dit à temps partagé. La communauté Linux étant très active, plusieurs solutions techniques sont cependant disponibles afin de rendre le comportement du noyau Linux compatible avec les contraintes requises pour un système temps réel. Dans ce contexte, le projet Xenomai [73] a été lancé en 2001 dans le but de créer un système d émulation de systèmes d exploitation temps réel RTOS (Real Time Operating System) dans l environnement Linux. Nous étudierons brièvement l extension temps réel Xenomai pour Linux. Une dernière partie détaille les résultats obtenus avec ou sans l extension Xenomai et cela en fonction de la charge du noyau Linux. Structure et fonctionnement d une application temps réel Xenomai Xenomai est avant tout un outil de migration de solutions propriétaires temps réel (VxWorks, psos, VRTX, RTAI) vers une solution temps réel libre sous Linux. Sa particularité est la présence d interfaces ou skins permettant d adapter le code source provenant d un système temps réel propriétaire dans l environnement Linux étendu avec Xenomai. Son autre particularité est la possibilité de développer des applications temps réel dans l espace utilisateur et non plus seulement sous forme de modules dans l espace noyau. Pour Xenomai, le développement en espace noyau est désormais réservé aux pilotes de périphériques temps réel RTDM (Real Time Driver Model). L architecture générale de Xenomai est visible sur le schéma ci-dessous (Figure 4.17). L adaptation au matériel est réalisée par la couche ADEOS que l on peut voir comme une couche d abstraction du matériel HAL (Hardware Abstraction Layer) [69], le portage de Xenomai sur une nouvelle architecture correspond alors au portage d ADEOS sur ce matériel. ADEOS (Adaptative Domain Environment for Operating Systems) est ainsi une couche de virtualisation qui permet d abstraire les ressources matérielles dans le but de les partager entre divers systèmes d exploitation ou plu- 110

123 4.4. Evaluation des performances d une implantation conjointe matérielle/logicielle du décodeur H.264 Figure 4.17 Architecture générale de Xenomai Figure 4.18 Schèma général d un système Linux avec Xenomai sieurs instances d un même système d exploitation. En effet, le but de l ADEOS est de permettre la cohabitation sur le même matériel d un noyau Linux et d un noyau temps réel. Pour ce faire, ADEOS crée des entités appelées domaines. Les différents domaines sont concurrents vis-à-vis des évènements externes comme les interruptions. Ils réagissent en fonction des niveaux de priorité accordés à chacun d eux. Le principe sous-jacent est de fournir à la fois un environnement temps réel dur et un autre environnement d exécution plus classique permettant ainsi d avoir des processus classiques mais également de profiter des avantages de Linux pour les autres processus. Comme le présente la figure 4.18, chaque système d exploitation correspond à un domaine particulier. Un domaine est une sorte de boîte possédant une priorité et contenant le système d exploitation. Ces domaines pourraient être comparés globalement avec les concepts généraux de la virtualisation. 111

124 Chapitre 4. Validation fonctionnelle sur plateforme FPGA Figure 4.19 Système embarquée PowerPC La concurrence au niveau des ressources matérielles se fait à travers la couche basse ADEOS. Résultats de mesure Après avoir porté Linux pour le processeur PowerPC de la carte ML507, nous avons alors porté l extension Xenomai pour Linux. La figure 4.19 présente notre système embarqué global ainsi construit. Pour les tests, nous avons utilisé 100 trames (frames) de chaque séquence CIF comme ci-indiqué dans la Tableau 4.2 et nous avons mesuré le temps de décodage des différentes situations. Nous avons utilisé le programme stress [74] pour charger le noyau. Pour que la comparaison puisse être vraiment pertinente, il est primordial de faire une évaluation non seulement dans le cas où le noyau n est pas chargé mais également quand celui-ci est stressé. Cela peut être ainsi le cas quand le décodeur s exécute en même temps que d autres applications. D après le tableau 4.2, on constate l apport de Xenomai surtout lorsque le noyau est stressé. Les résultats pour un système stressé (sans l extension temps réel Xenomai) sont mauvais. Par ailleurs, on constate que Linux, quand il est chargé, n est plus capable de gérer le traitement dans un temps du même ordre de grandeur que quand le noyau n est pas chargé ce qui n est pas le cas avec l extension temps réel Xenomai même quand le noyau est chargé. 112

Livrable 2.1 Rapport d analyse et de restructuration de code monothread des modules P, T, Q et F de l encodage MPEG-4 AVC

Livrable 2.1 Rapport d analyse et de restructuration de code monothread des modules P, T, Q et F de l encodage MPEG-4 AVC Groupe des Ecoles des Télécommunications Institut National des Télécommunications Département ARTEMIS Advanced Research & TEchniques for Multidimensional Imaging Systems Livrable 2.1 Rapport d analyse

Plus en détail

Codage hiérarchique et multirésolution (JPEG 2000) Codage Vidéo. Représentation de la couleur. Codage canal et codes correcteurs d erreur

Codage hiérarchique et multirésolution (JPEG 2000) Codage Vidéo. Représentation de la couleur. Codage canal et codes correcteurs d erreur Codage hiérarchique et multirésolution (JPEG 000) Codage Vidéo Représentation de la couleur Codage canal et codes correcteurs d erreur Format vectoriel (SVG - Scalable Vector Graphics) Organisation de

Plus en détail

Chapitre 13 Numérisation de l information

Chapitre 13 Numérisation de l information DERNIÈRE IMPRESSION LE 2 septembre 2013 à 17:33 Chapitre 13 Numérisation de l information Table des matières 1 Transmission des informations 2 2 La numérisation 2 2.1 L échantillonage..............................

Plus en détail

Transmission d informations sur le réseau électrique

Transmission d informations sur le réseau électrique Transmission d informations sur le réseau électrique Introduction Remarques Toutes les questions en italique devront être préparées par écrit avant la séance du TP. Les préparations seront ramassées en

Plus en détail

ISO/CEI 11172-3 NORME INTERNATIONALE

ISO/CEI 11172-3 NORME INTERNATIONALE NORME INTERNATIONALE ISO/CEI 11172-3 Première édition 1993-08-01 Technologies de l information - Codage de l image animée et du son associé pour les supports de stockage numérique jusqu à environ Ii5 Mbit/s

Plus en détail

Traitement numérique de l'image. Raphaël Isdant - 2009

Traitement numérique de l'image. Raphaël Isdant - 2009 Traitement numérique de l'image 1/ L'IMAGE NUMÉRIQUE : COMPOSITION ET CARACTÉRISTIQUES 1.1 - Le pixel: Une image numérique est constituée d'un ensemble de points appelés pixels (abréviation de PICture

Plus en détail

Chap17 - CORRECTİON DES EXERCİCES

Chap17 - CORRECTİON DES EXERCİCES Chap17 - CORRECTİON DES EXERCİCES n 3 p528 Le signal a est numérique : il n y a que deux valeurs possibles pour la tension. Le signal b n est pas numérique : il y a alternance entre des signaux divers

Plus en détail

Formats d images. 1 Introduction

Formats d images. 1 Introduction Formats d images 1 Introduction Lorsque nous utilisons un ordinateur ou un smartphone l écran constitue un élément principal de l interaction avec la machine. Les images sont donc au cœur de l utilisation

Plus en détail

Chaine de transmission

Chaine de transmission Chaine de transmission Chaine de transmission 1. analogiques à l origine 2. convertis en signaux binaires Échantillonnage + quantification + codage 3. brassage des signaux binaires Multiplexage 4. séparation

Plus en détail

Chapitre 18 : Transmettre et stocker de l information

Chapitre 18 : Transmettre et stocker de l information Chapitre 18 : Transmettre et stocker de l information Connaissances et compétences : - Identifier les éléments d une chaîne de transmission d informations. - Recueillir et exploiter des informations concernant

Plus en détail

Communications immersives : Enjeux et perspectives

Communications immersives : Enjeux et perspectives Journée Futur et Ruptures Communications immersives : Enjeux et perspectives Béatrice Pesquet-Popescu Télécom ParisTech, Département TSI 5 mars 2015 Institut Mines-Télécom Tendances actuelles Plus, plus,

Plus en détail

TP SIN Traitement d image

TP SIN Traitement d image TP SIN Traitement d image Pré requis (l élève doit savoir): - Utiliser un ordinateur Objectif terminale : L élève doit être capable de reconnaître un format d image et d expliquer les différents types

Plus en détail

M1 Informatique, Réseaux Cours 9 : Réseaux pour le multimédia

M1 Informatique, Réseaux Cours 9 : Réseaux pour le multimédia M1 Informatique, Réseaux Cours 9 : Réseaux pour le multimédia Olivier Togni Université de Bourgogne, IEM/LE2I Bureau G206 olivier.togni@u-bourgogne.fr 24 mars 2015 2 de 24 M1 Informatique, Réseaux Cours

Plus en détail

Limitations of the Playstation 3 for High Performance Cluster Computing

Limitations of the Playstation 3 for High Performance Cluster Computing Introduction Plan Limitations of the Playstation 3 for High Performance Cluster Computing July 2007 Introduction Plan Introduction Intérêts de la PS3 : rapide et puissante bon marché L utiliser pour faire

Plus en détail

DEVANT L UNIVERSITE DE RENNES 1

DEVANT L UNIVERSITE DE RENNES 1 N o d ordre: 3063 THÈSE présentée DEVANT L UNIVERSITE DE RENNES 1 pour obtenir le grade de : DOCTEUR DE L UNIVERSITE DE RENNES 1 Mention Informatique par Nathalie CAMMAS Équipe d accueil : France Télécom

Plus en détail

2. Couche physique (Couche 1 OSI et TCP/IP)

2. Couche physique (Couche 1 OSI et TCP/IP) 2. Couche physique (Couche 1 OSI et TCP/IP) 2.1 Introduction 2.2 Signal 2.3 Support de transmission 2.4 Adaptation du signal aux supports de transmission 2.5 Accès WAN 2.1 Introduction Introduction Rôle

Plus en détail

Analyse d images. Edmond.Boyer@imag.fr. Edmond Boyer UFRIMA 1

Analyse d images. Edmond.Boyer@imag.fr. Edmond Boyer UFRIMA 1 Analyse d images Edmond.Boyer@imag.fr Edmond Boyer UFRIMA 1 1 Généralités Analyse d images (Image Analysis) : utiliser un ordinateur pour interpréter le monde extérieur au travers d images. Images Objets

Plus en détail

Enregistrement et transformation du son. S. Natkin Novembre 2001

Enregistrement et transformation du son. S. Natkin Novembre 2001 Enregistrement et transformation du son S. Natkin Novembre 2001 1 Éléments d acoustique 2 Dynamique de la puissance sonore 3 Acoustique géométrique: effets de diffusion et de diffraction des ondes sonores

Plus en détail

Cours n 12. Technologies WAN 2nd partie

Cours n 12. Technologies WAN 2nd partie Cours n 12 Technologies WAN 2nd partie 1 Sommaire Aperçu des technologies WAN Technologies WAN Conception d un WAN 2 Lignes Louées Lorsque des connexions dédiées permanentes sont nécessaires, des lignes

Plus en détail

Systèmes de transmission

Systèmes de transmission Systèmes de transmission Conception d une transmission série FABRE Maxime 2012 Introduction La transmission de données désigne le transport de quelque sorte d'information que ce soit, d'un endroit à un

Plus en détail

TD : Codage des images

TD : Codage des images TD : Codage des images Les navigateurs Web (Netscape, IE, Mozilla ) prennent en charge les contenus textuels (au format HTML) ainsi que les images fixes (GIF, JPG, PNG) ou animée (GIF animée). Comment

Plus en détail

Maintenir un service de traitement de son ou d image d ordinateur

Maintenir un service de traitement de son ou d image d ordinateur Maintenir un service de traitement de son ou d image d ordinateur Dominique Pagnier Table des matières 1. Introduction... 3 2. Les formats d image... 3 2.1. Formats d infographie : EPS et TIF... 4 2.2.

Plus en détail

En DV (PAL ou NTSC), la largeur est toujours de 720 pixels, c'est la proportion du pixel qui change la proportion de l'image.

En DV (PAL ou NTSC), la largeur est toujours de 720 pixels, c'est la proportion du pixel qui change la proportion de l'image. En DV (PAL ou NTSC), la largeur est toujours de 720 pixels, c'est la proportion du pixel qui change la proportion de l'image. Il s agit de la notion de pixels non carrés Cette histoire de pixel non carrés

Plus en détail

Le poids et la taille des fichiers

Le poids et la taille des fichiers Le poids et la taille des fichiers Au tout départ des 0 et des 1 En français et en anglais on appelle cela un bit 8 bit donne un octet (ou byte en anglais) Exemple d octet : 11111111 10111010 00001000

Plus en détail

Chapitre 22 : (Cours) Numérisation, transmission, et stockage de l information

Chapitre 22 : (Cours) Numérisation, transmission, et stockage de l information Chapitre 22 : (Cours) Numérisation, transmission, et stockage de l information I. Nature du signal I.1. Définition Un signal est la représentation physique d une information (température, pression, absorbance,

Plus en détail

Numérisation du signal

Numérisation du signal Chapitre 12 Sciences Physiques - BTS Numérisation du signal 1 Analogique - Numérique. 1.1 Définitions. Signal analogique : un signal analogique s a (t)est un signal continu dont la valeur varie en fonction

Plus en détail

Compression et Transmission des Signaux. Samson LASAULCE Laboratoire des Signaux et Systèmes, Gif/Yvette

Compression et Transmission des Signaux. Samson LASAULCE Laboratoire des Signaux et Systèmes, Gif/Yvette Compression et Transmission des Signaux Samson LASAULCE Laboratoire des Signaux et Systèmes, Gif/Yvette 1 De Shannon à Mac Donalds Mac Donalds 1955 Claude Elwood Shannon 1916 2001 Monsieur X 1951 2 Où

Plus en détail

QoS et Multimédia SIR / RTS. Introduction / Architecture des applications multimédia communicantes

QoS et Multimédia SIR / RTS. Introduction / Architecture des applications multimédia communicantes QoS et Multimédia SIR / RTS Introduction / Architecture des applications multimédia communicantes Isabelle Guérin Lassous Isabelle.Guerin-Lassous@ens-lyon.fr http://perso.ens-lyon.fr/isabelle.guerin-lassous

Plus en détail

INTRODUCTION A L ELECTRONIQUE NUMERIQUE ECHANTILLONNAGE ET QUANTIFICATION I. ARCHITECTURE DE L ELECRONIQUE NUMERIQUE

INTRODUCTION A L ELECTRONIQUE NUMERIQUE ECHANTILLONNAGE ET QUANTIFICATION I. ARCHITECTURE DE L ELECRONIQUE NUMERIQUE INTRODUCTION A L ELECTRONIQUE NUMERIQUE ECHANTILLONNAGE ET QUANTIFICATION I. ARCHITECTURE DE L ELECRONIQUE NUMERIQUE Le schéma synoptique ci-dessous décrit les différentes étapes du traitement numérique

Plus en détail

Codage vidéo par block matching adaptatif

Codage vidéo par block matching adaptatif Traitement et analyse d'images(39) Codage vidéo par block matching adaptatif Abdelhamid Djeffal Département d informatique Université Mohamed Khider BISKRA, ALGERIE Abdelhamid_Djeffal@yahoo.fr Zine Eddine

Plus en détail

Dan Istrate. Directeur de thèse : Eric Castelli Co-Directeur : Laurent Besacier

Dan Istrate. Directeur de thèse : Eric Castelli Co-Directeur : Laurent Besacier Détection et reconnaissance des sons pour la surveillance médicale Dan Istrate le 16 décembre 2003 Directeur de thèse : Eric Castelli Co-Directeur : Laurent Besacier Thèse mené dans le cadre d une collaboration

Plus en détail

Outils permettant la diffusion de l information. Un point sur le droit numérique

Outils permettant la diffusion de l information. Un point sur le droit numérique Technologies de l Information et de la Communication Introduction aux NTE/TICE Présentation des UNR UNT Outils permettant la diffusion de l information Conceptualisation d un module d apprentissage numérique

Plus en détail

IPHONE BANNIÈRE CLASSIQUE DIMENSIONS. Standard : 320 x 53 (portrait) 20Ko Jpeg/Gif/Png. HD : 640 x 106 (portrait) 20Ko Jpeg/Gif/Png DESCRIPTION

IPHONE BANNIÈRE CLASSIQUE DIMENSIONS. Standard : 320 x 53 (portrait) 20Ko Jpeg/Gif/Png. HD : 640 x 106 (portrait) 20Ko Jpeg/Gif/Png DESCRIPTION IPHONE BANNIÈRE CLASSIQUE DIMENSIONS Standard : 320 x 53 (portrait) 20Ko Jpeg/Gif/Png HD : 640 x 106 (portrait) 20Ko Jpeg/Gif/Png DESCRIPTION Format publicitaire très répandu et simple Permet une présence

Plus en détail

Comme chaque ligne de cache a 1024 bits. Le nombre de lignes de cache contenu dans chaque ensemble est:

Comme chaque ligne de cache a 1024 bits. Le nombre de lignes de cache contenu dans chaque ensemble est: Travaux Pratiques 3. IFT 1002/IFT 1005. Structure Interne des Ordinateurs. Département d'informatique et de génie logiciel. Université Laval. Hiver 2012. Prof : Bui Minh Duc. Tous les exercices sont indépendants.

Plus en détail

Introduction à l informatique temps réel Pierre-Yves Duval (cppm)

Introduction à l informatique temps réel Pierre-Yves Duval (cppm) Introduction à l informatique temps réel Pierre-Yves Duval (cppm) Ecole d informatique temps réel - La Londes les Maures 7-11 Octobre 2002 -Définition et problématique - Illustration par des exemples -Automatisme:

Plus en détail

كر اس الشروط الفني ة اخلاص ة

كر اس الشروط الفني ة اخلاص ة اجلمهورية التونسية وزارة التعليم العالي والبحث العلمي جامعة املنستري كر اس الشروط الفني ة اخلاص ة Camera de Surveillance interne Full HD Camera Jour/Nuit IP Camera Norme : IP66 Caméra capteur : 1/2 2 Méga

Plus en détail

xdsl Digital Suscriber Line «Utiliser la totalité de la bande passante du cuivre»

xdsl Digital Suscriber Line «Utiliser la totalité de la bande passante du cuivre» xdsl Digital Suscriber Line «Utiliser la totalité de la bande passante du cuivre» Le marché en France ~ 9 millions d abonnés fin 2005 ~ 6 millions fin 2004 dont la moitié chez l opérateur historique et

Plus en détail

Multimedia. Systèmes, Communications et Applications. Ahmed MEHAOUA

Multimedia. Systèmes, Communications et Applications. Ahmed MEHAOUA Multimedia Systèmes, Communications et Applications Ahmed MEHAOUA Professeur - Laboratoire CRIP5 Ahmed.mehaoua@math-info.univ-paris5.fr Plan 1. Multimedia : principes et définitions 2. Algorithmes et normes

Plus en détail

Conception et Intégration de Systèmes Critiques

Conception et Intégration de Systèmes Critiques Conception et Intégration de Systèmes Critiques 15 12 18 Non 50 et S initier aux méthodes le développement de projet (plan de développement, intégration, gestion de configuration, agilité) Criticité temporelle

Plus en détail

CONFERENCE EXPO-PROTECTION

CONFERENCE EXPO-PROTECTION CONFERENCE EXPO-PROTECTION Agenda Conférence Se conformer à l arrêté du 3 août 2007 : opportunités et menaces Points clés de l arrêté du 3 août 2007 et de la loi 95-73 Bénéfices de la mise en conformité

Plus en détail

Modélisation de la Reconfiguration Dynamique appliquée à un décodeur LDPC Non Binaire

Modélisation de la Reconfiguration Dynamique appliquée à un décodeur LDPC Non Binaire Modélisation de la Reconfiguration Dynamique appliquée à un décodeur LDPC Non Binaire LAURA CONDE-CANENCIA 1, JEAN-CHRISTOPHE.PREVOTET 2, YASET OLIVA 2, YVAN EUSTACHE 1 1 Université Européenne de Bretagne

Plus en détail

UE 503 L3 MIAGE. Initiation Réseau et Programmation Web La couche physique. A. Belaïd

UE 503 L3 MIAGE. Initiation Réseau et Programmation Web La couche physique. A. Belaïd UE 503 L3 MIAGE Initiation Réseau et Programmation Web La couche physique A. Belaïd abelaid@loria.fr http://www.loria.fr/~abelaid/ Année Universitaire 2011/2012 2 Le Modèle OSI La couche physique ou le

Plus en détail

Chapitre 2 : communications numériques.

Chapitre 2 : communications numériques. Chapitre 2 : communications numériques. 1) généralités sur les communications numériques. A) production d'un signal numérique : transformation d'un signal analogique en une suite d'éléments binaires notés

Plus en détail

Technique de codage des formes d'ondes

Technique de codage des formes d'ondes Technique de codage des formes d'ondes Contenu Introduction Conditions préalables Conditions requises Composants utilisés Conventions Modulation par impulsions et codage Filtrage Échantillon Numérisez

Plus en détail

H.323. Internet Multimédia. Sommaire

H.323. Internet Multimédia. Sommaire Internet Multimédia La Visioconférence H.323 2011 André Aoun - Internet Multimédia H.323-1 Sommaire 1. Présentation 2. La Norme 3. 4. Appel H.323 Les Gatekeepers 5. Les ponts multipoints (MCU) 6. Les terminaux

Plus en détail

Réseaux Multimédia et Qualité de Service

Réseaux Multimédia et Qualité de Service Réseaux Multimédia et Qualité de Service M2 RISE 2011-2012 JJ Pansiot 2011 RMMQoS-chap1 1 Références Analyse structurée des réseaux, Jim Kurose, Keith Ross Pearson Education (en particulier chapitre 6

Plus en détail

Les techniques de multiplexage

Les techniques de multiplexage Les techniques de multiplexage 1 Le multiplexage et démultiplexage En effet, à partir du moment où plusieurs utilisateurs se partagent un seul support de transmission, il est nécessaire de définir le principe

Plus en détail

Information. BASES LITTERAIRES Etre capable de répondre à une question du type «la valeur trouvée respecte t-elle le cahier des charges?

Information. BASES LITTERAIRES Etre capable de répondre à une question du type «la valeur trouvée respecte t-elle le cahier des charges? Compétences générales Avoir des piles neuves, ou récentes dans sa machine à calculer. Etre capable de retrouver instantanément une info dans sa machine. Prendre une bouteille d eau. Prendre CNI + convocation.

Plus en détail

Approche par marquage pour l évaluation de la qualité d image dans les applications multimédias

Approche par marquage pour l évaluation de la qualité d image dans les applications multimédias UNIVERSITÉ DU QUÉBEC EN OUTAOUAIS Département d informatique et d ingénierie Approche par marquage pour l évaluation de la qualité d image dans les applications multimédias MÉMOIRE (INF6021) pour l obtention

Plus en détail

Traitement bas-niveau

Traitement bas-niveau Plan Introduction L approche contour (frontière) Introduction Objectifs Les traitements ont pour but d extraire l information utile et pertinente contenue dans l image en regard de l application considérée.

Plus en détail

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions Cours d introduction à l informatique Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions Qu est-ce qu un Une recette de cuisine algorithme? Protocole expérimental

Plus en détail

Transmission de données. A) Principaux éléments intervenant dans la transmission

Transmission de données. A) Principaux éléments intervenant dans la transmission Page 1 / 7 A) Principaux éléments intervenant dans la transmission A.1 Equipement voisins Ordinateur ou terminal Ordinateur ou terminal Canal de transmission ETTD ETTD ETTD : Equipement Terminal de Traitement

Plus en détail

EMETTEUR ULB. Architectures & circuits. Ecole ULB GDRO ESISAR - Valence 23-27/10/2006. David MARCHALAND STMicroelectronics 26/10/2006

EMETTEUR ULB. Architectures & circuits. Ecole ULB GDRO ESISAR - Valence 23-27/10/2006. David MARCHALAND STMicroelectronics 26/10/2006 EMETTEUR ULB Architectures & circuits David MARCHALAND STMicroelectronics 26/10/2006 Ecole ULB GDRO ESISAR - Valence 23-27/10/2006 Introduction Emergence des applications de type LR-WPAN : Dispositif communicant

Plus en détail

Architectures et Protocoles des Réseaux

Architectures et Protocoles des Réseaux Chapitre 5 - Les réseaux xdsl Claude Duvallet Université du Havre UFR Sciences et Techniques 25 rue Philippe Lebon - BP 540 76058 LE HAVRE CEDEX Claude.Duvallet@gmail.com Claude Duvallet 1/32 Plan de la

Plus en détail

TS 35 Numériser. Activité introductive - Exercice et démarche expérimentale en fin d activité Notions et contenus du programme de Terminale S

TS 35 Numériser. Activité introductive - Exercice et démarche expérimentale en fin d activité Notions et contenus du programme de Terminale S FICHE Fiche à destination des enseignants TS 35 Numériser Type d'activité Activité introductive - Exercice et démarche expérimentale en fin d activité Notions et contenus du programme de Terminale S Compétences

Plus en détail

Projet de Traitement du Signal Segmentation d images SAR

Projet de Traitement du Signal Segmentation d images SAR Projet de Traitement du Signal Segmentation d images SAR Introduction En analyse d images, la segmentation est une étape essentielle, préliminaire à des traitements de haut niveau tels que la classification,

Plus en détail

Groupe Eyrolles, 2000, 2004, ISBN : 2-212-11330-7

Groupe Eyrolles, 2000, 2004, ISBN : 2-212-11330-7 Groupe Eyrolles, 2000, 2004, ISBN : 2-212-11330-7 Sommaire Cours 1 Introduction aux réseaux 1 Les transferts de paquets... 2 Les réseaux numériques... 4 Le transport des données... 5 Routage et contrôle

Plus en détail

Les Réseaux Informatiques

Les Réseaux Informatiques Les Réseaux Informatiques Licence Informatique, filière SMI Université Mohammed-V Agdal Faculté des Sciences Rabat, Département Informatique Avenue Ibn Batouta, B.P. 1014 Rabat Professeur Enseignement

Plus en détail

L analyse d images regroupe plusieurs disciplines que l on classe en deux catégories :

L analyse d images regroupe plusieurs disciplines que l on classe en deux catégories : La vision nous permet de percevoir et d interpreter le monde qui nous entoure. La vision artificielle a pour but de reproduire certaines fonctionnalités de la vision humaine au travers de l analyse d images.

Plus en détail

Voix sur IP Étude d approfondissement Réseaux

Voix sur IP Étude d approfondissement Réseaux Voix sur IP Étude d approfondissement Réseaux Julien Vey Gil Noirot Introduction Ce dont nous allons parler L architecture VoIP Les protocoles Les limites de la VoIP Ce dont nous n allons pas parler Le

Plus en détail

Introduction au Data-Mining

Introduction au Data-Mining Introduction au Data-Mining Alain Rakotomamonjy - Gilles Gasso. INSA Rouen -Département ASI Laboratoire PSI Introduction au Data-Mining p. 1/25 Data-Mining : Kèkecé? Traduction : Fouille de données. Terme

Plus en détail

ADSL. Étude d une LiveBox. 1. Environnement de la LiveBox TMRIM 2 EME TRIMESTRE LP CHATEAU BLANC 45120 CHALETTE/LOING NIVEAU :

ADSL. Étude d une LiveBox. 1. Environnement de la LiveBox TMRIM 2 EME TRIMESTRE LP CHATEAU BLANC 45120 CHALETTE/LOING NIVEAU : LP CHATEAU BLANC 45120 CHALETTE/LOING THEME : ADSL BAC PROFESSIONNEL MICRO- INFORMATIQUE ET RESEAUX : INSTALLATION ET MAINTENANCE ACADÉMIE D ORLÉANS-TOURS 2 EME TRIMESTRE NIVEAU : TMRIM Étude d une LiveBox

Plus en détail

Glossaire technique Veditec

Glossaire technique Veditec Glossaire technique Veditec 3D/2D DNR (digital noise réduction) La technologie DNR est un système de réduction numérique de bruit ayant pour but de réduire le bruit sur l image. Elle permet d obtenir des

Plus en détail

TABLETTE MPMAN MP724 : EMPORTEZ LE MONDE AVEC VOUS

TABLETTE MPMAN MP724 : EMPORTEZ LE MONDE AVEC VOUS TABLETTE MPMAN MP724 : EMPORTEZ LE MONDE AVEC VOUS Internet Nomade La tablette internet MPMAN MP724 est spécialement conçue pour une utilisation nomade. A tout moment accédez directement à Internet et

Plus en détail

Errata et mises à jour

Errata et mises à jour Errata et mises à jour Modifications du chapitre 9. Le tableau page 74 est remplacé par le suivant. Technologie Débit descendant / montant en Kbit/s Distance maximale sans répéteur de paires Codage HDSL

Plus en détail

Création de maquette web

Création de maquette web Création de maquette web avec Fireworks Il faut travailler en 72dpi et en pixels, en RVB Fireworks étant un logiciel dédié à la création de maquettes pour le web il ne propose que les pixels pour le texte

Plus en détail

Solution Vidéo Surveillance

Solution Vidéo Surveillance Solution Vidéo Surveillance Objectifs de la solution : Mettre sous surveillance électronique un lieu sensible de votre établissement : o L entrée du bureau d études o L entrée du stock de matière première

Plus en détail

Quantification Scalaire et Prédictive

Quantification Scalaire et Prédictive Quantification Scalaire et Prédictive Marco Cagnazzo Département Traitement du Signal et des Images TELECOM ParisTech 7 Décembre 2012 M. Cagnazzo Quantification Scalaire et Prédictive 1/64 Plan Introduction

Plus en détail

Analyse de la bande passante

Analyse de la bande passante Analyse de la bande passante 1 Objectif... 1 2 Rappels techniques... 2 2.1 Définition de la bande passante... 2 2.2 Flux ascendants et descandants... 2 2.3 Architecture... 2 2.4 Bande passante et volumétrie...

Plus en détail

Analyse de la vidéo. Chapitre 4.1 - La modélisation pour le suivi d objet. 10 mars 2015. Chapitre 4.1 - La modélisation d objet 1 / 57

Analyse de la vidéo. Chapitre 4.1 - La modélisation pour le suivi d objet. 10 mars 2015. Chapitre 4.1 - La modélisation d objet 1 / 57 Analyse de la vidéo Chapitre 4.1 - La modélisation pour le suivi d objet 10 mars 2015 Chapitre 4.1 - La modélisation d objet 1 / 57 La représentation d objets Plan de la présentation 1 La représentation

Plus en détail

Les tablettes. Présentation tablettes Descriptif Fournisseurs Caractéristiques Comparatifs Conseils Perspectives Démonstration

Les tablettes. Présentation tablettes Descriptif Fournisseurs Caractéristiques Comparatifs Conseils Perspectives Démonstration Les Tablettes Les tablettes Présentation tablettes Descriptif Fournisseurs Caractéristiques Comparatifs Conseils Perspectives Démonstration Les tablettes Description: Appareil mobile positionné entre smartphone

Plus en détail

Vidyo : une maquette pour la visioconférence sur le poste de travail

Vidyo : une maquette pour la visioconférence sur le poste de travail Vidyo : une maquette pour la visioconférence sur le poste de travail 1 Bertrand DECOUTY, Franck YAMPOLSKY INRIA (Rennes et Sophia-Antipolis) Journée JoSy, 26/05/2009 La visioconférence à l INRIA 2 Fin

Plus en détail

Preliminary Spec Sheet

Preliminary Spec Sheet ARNOVA présente sa nouvelle tablette Android : l'arnova 90 G3 Elle est dotée d'un grand et lumineux écran tactile LCD de 9" (soit environ 23 cm). Alimentée par un puissant processeur d 1 GHz, tout parait

Plus en détail

LES DIFFÉRENTS FORMATS AUDIO NUMÉRIQUES

LES DIFFÉRENTS FORMATS AUDIO NUMÉRIQUES LES DIFFÉRENTS FORMATS AUDIO NUMÉRIQUES Compétences mises en jeu durant l'activité : Compétences générales : S'impliquer, être autonome. Compétence(s) spécifique(s) : Reconnaître des signaux de nature

Plus en détail

IMAGES NUMÉRIQUES MATRICIELLES EN SCILAB

IMAGES NUMÉRIQUES MATRICIELLES EN SCILAB IMAGES NUMÉRIQUES MATRICIELLES EN SCILAB Ce document, écrit par des animateurs de l IREM de Besançon, a pour objectif de présenter quelques unes des fonctions du logiciel Scilab, celles qui sont spécifiques

Plus en détail

Intelligence Artificielle et Systèmes Multi-Agents. Badr Benmammar bbm@badr-benmammar.com

Intelligence Artificielle et Systèmes Multi-Agents. Badr Benmammar bbm@badr-benmammar.com Intelligence Artificielle et Systèmes Multi-Agents Badr Benmammar bbm@badr-benmammar.com Plan La première partie : L intelligence artificielle (IA) Définition de l intelligence artificielle (IA) Domaines

Plus en détail

Q6 : Comment calcule t-on l intensité sonore à partir du niveau d intensité?

Q6 : Comment calcule t-on l intensité sonore à partir du niveau d intensité? EXERCICE 1 : QUESTION DE COURS Q1 : Qu est ce qu une onde progressive? Q2 : Qu est ce qu une onde mécanique? Q3 : Qu elle est la condition pour qu une onde soit diffractée? Q4 : Quelles sont les différentes

Plus en détail

Projet EVO. Enabling Virtual Organizations

Projet EVO. Enabling Virtual Organizations Projet EVO Enabling Virtual Organizations JoSy 26 mai 2009 Pour Qui est EVO? EVO fournit un service mondial collaboratif et de vidéoconférence pour la communauté de la physique. Le service est accessible

Plus en détail

La vidéosurveillance sur réseau qui surpasse vos attentes

La vidéosurveillance sur réseau qui surpasse vos attentes La vidéosurveillance sur réseau qui surpasse vos attentes Solutions innovatrices Omnicast MC est le système de vidéosurveillance sur IP du Security Center, la plate-forme de sécurité unifiée de Genetec.

Plus en détail

Cours des réseaux Informatiques (2010-2011)

Cours des réseaux Informatiques (2010-2011) Cours des réseaux Informatiques (2010-2011) Rziza Mohammed rziza@fsr.ac.ma Supports Andrew Tanenbaum : Réseaux, cours et exercices. Pascal Nicolas : cours des réseaux Informatiques, université d Angers.

Plus en détail

Cours Informatique 1. Monsieur SADOUNI Salheddine

Cours Informatique 1. Monsieur SADOUNI Salheddine Cours Informatique 1 Chapitre 2 les Systèmes Informatique Monsieur SADOUNI Salheddine Un Système Informatique lesystème Informatique est composé de deux parties : -le Matériel : constitué de l unité centrale

Plus en détail

Vers du matériel libre

Vers du matériel libre Février 2011 La liberté du logiciel n est qu une partie du problème. Winmodems Modem traditionnel Bon fonctionnement Plus cher Electronique propriétaire Blob sur DSP intégré au modem Bien reçu par les

Plus en détail

Les systèmes embarqués Introduction. Richard Grisel Professeur des Universités Université de Rouen Nacer Abouchi Professeur ESCPE Lyon

Les systèmes embarqués Introduction. Richard Grisel Professeur des Universités Université de Rouen Nacer Abouchi Professeur ESCPE Lyon Les systèmes embarqués Introduction Richard Grisel Professeur des Universités Université de Rouen Nacer Abouchi Professeur ESCPE Lyon Introduction aux systèmes embarqués Définition. Caractéristiques d

Plus en détail

basée sur le cours de Bertrand Legal, maître de conférences à l ENSEIRB www.enseirb.fr/~legal Olivier Augereau Formation UML

basée sur le cours de Bertrand Legal, maître de conférences à l ENSEIRB www.enseirb.fr/~legal Olivier Augereau Formation UML basée sur le cours de Bertrand Legal, maître de conférences à l ENSEIRB www.enseirb.fr/~legal Olivier Augereau Formation UML http://olivier-augereau.com Sommaire Introduction I) Les bases II) Les diagrammes

Plus en détail

Intérêt du découpage en sous-bandes pour l analyse spectrale

Intérêt du découpage en sous-bandes pour l analyse spectrale Intérêt du découpage en sous-bandes pour l analyse spectrale David BONACCI Institut National Polytechnique de Toulouse (INP) École Nationale Supérieure d Électrotechnique, d Électronique, d Informatique,

Plus en détail

11 Février 2014 Paris nidays.fr. france.ni.com

11 Février 2014 Paris nidays.fr. france.ni.com 11 Février 2014 Paris nidays.fr Construire l enregistreur de données autonome de demain Marc-Junior LARROUY, Ingénieur d Applications, National Instruments France Contenu Introduction à l enregistrement

Plus en détail

RELEVÉ DES RÉVISIONS

RELEVÉ DES RÉVISIONS RELEVÉ DES RÉVISIONS Révision Paragraphe Description 0 s.o. Version originale 1 6.4 Exigences de conception Suppression de l exigence relative à la commande locale 6.14 Exigences de conception Suppression

Plus en détail

ARTICLE. Dix raisons d acheter une caméra réseau ou ce que votre fournisseur de caméras analogiques ne vous révèlera jamais

ARTICLE. Dix raisons d acheter une caméra réseau ou ce que votre fournisseur de caméras analogiques ne vous révèlera jamais ARTICLE Dix raisons d acheter une caméra réseau ou ce que votre fournisseur de caméras analogiques ne vous révèlera jamais TABLE DES MATIÈRES Introduction 3 Dix arguments que ne vous révèlera pas votre

Plus en détail

Algorithme des fourmis appliqué à la détection et au suivi de contours dans une image

Algorithme des fourmis appliqué à la détection et au suivi de contours dans une image IN52-IN54 A2008 Algorithme des fourmis appliqué à la détection et au suivi de contours dans une image Etudiants : Nicolas MONNERET Alexandre HAFFNER Sébastien DE MELO Responsable : Franck GECHTER Sommaire

Plus en détail

Modélisation et simulation des performances de nœuds de routage optique dans les réseaux dorsaux hybrides

Modélisation et simulation des performances de nœuds de routage optique dans les réseaux dorsaux hybrides Modélisation et simulation des performances de nœuds de routage optique dans les réseaux dorsaux hybrides )UpGpULF/(&2&+(%UXQR)5$&$662$PD.$/, (167%UHWDJQH 'psduwhphqwg RSWLTXH Sommaire Contexte Nœuds de

Plus en détail

A la découverte du Traitement. des signaux audio METISS. Inria Rennes - Bretagne Atlantique

A la découverte du Traitement. des signaux audio METISS. Inria Rennes - Bretagne Atlantique A la découverte du Traitement des signaux audio METISS Inria Rennes - Bretagne Atlantique Les conférences scientifiques au Lycée Descartes Imagerie médicale et neuronavigation par Pierre Hellier Le respect

Plus en détail

CONTEXTE DSI - Pôle Infrastructures/ Multimédia

CONTEXTE DSI - Pôle Infrastructures/ Multimédia Département du Système d Information CONTEXTE DSI - Pôle Infrastructures/ Multimédia SUJET CCTP pour la mise en œuvre d'une solution de visioconférence référence MLTD00110V01T version statut créé le 27.05.2008

Plus en détail

Enregistrement automatique. des données

Enregistrement automatique. des données Enregistrement automatique des données Chapitre: 6 Page No.: 1 Il n y a que quelques années que l enregistrement manuel de données géotechniques était de coutume. L introduction de l enregistrement automatique

Plus en détail

Profil UML pour TLM: contribution à la formalisation et à l automatisation du flot de conception et vérification des systèmes-sur-puce.

Profil UML pour TLM: contribution à la formalisation et à l automatisation du flot de conception et vérification des systèmes-sur-puce. INSTITUT NATIONAL POLYTECHNIQUE DE GRENOBLE N attribué par la bibliothèque T H È S E pour obtenir le grade de DOCTEUR DE L INPG Spécialité : «Micro et Nano Électronique» préparée au laboratoire CEA LIST/DTSI/SOL/LISE

Plus en détail

testgratuit@empreinte.com

testgratuit@empreinte.com LIVE TV RIA MOBILE Avant propos page 2 Composantes de l offre page 3 Web TV page 4 Visualisation page 5 Live enrichi page 6 Hébergement page 7 Compatibilité page 8 Offre budgétaire page 9 Conditions Générales

Plus en détail

SYSTEME DE PALPAGE A TRANSMISSION RADIO ETUDE DU RECEPTEUR (MI16) DOSSIER DE PRESENTATION. Contenu du dossier :

SYSTEME DE PALPAGE A TRANSMISSION RADIO ETUDE DU RECEPTEUR (MI16) DOSSIER DE PRESENTATION. Contenu du dossier : SYSTEME DE PALPAGE A TRANSMISSION RADIO ETUDE DU RECEPTEUR (MI16) DOSSIER DE PRESENTATION Contenu du dossier : 1. PRESENTATION DU SYSTEME DE PALPAGE A TRANSMISSION RADIO....1 1.1. DESCRIPTION DU FABRICANT....1

Plus en détail

Eternelle question, mais attention aux arnaques Question qui est souvent mise en premier plan => ce n est pas une bonne idée

Eternelle question, mais attention aux arnaques Question qui est souvent mise en premier plan => ce n est pas une bonne idée Son PC portable 1 2 Eternelle question, mais attention aux arnaques Question qui est souvent mise en premier plan => ce n est pas une bonne idée Analysons d abord vos besoins Ensuite on n y reviendra 3

Plus en détail

La VoIP & la convergence

La VoIP & la convergence République Algérienne Démocratique D et Populaire Autorité de Régulation R de la Poste et des Télécommunications La VoIP & la convergence Par M me Leila CHERID Département Veille Technologique Direction

Plus en détail

étude de Cas Profil du client www.evs.tv

étude de Cas Profil du client www.evs.tv Décembre 2009 étude Diffusion sans bandes et mise en œuvre de technologies AVANCÉES Profil du client Host Broadcast Services (HBS), filiale à 100 % de l agence de marketing sportif Infront Sports & Media,

Plus en détail