Conception de composants programmables et langage HDL, PDF
Document Details
Uploaded by BrainiestBirch818
ESIEA
Chiraz Trabelsi
Tags
Summary
This document is an introduction to Field-Programmable Gate Arrays (FPGAs) and VHDL (VHSIC Hardware Description Language). It discusses different types of integrated circuits, their advantages and disadvantages, and various applications. The document also describes the process of designing and implementing a system using HDL.
Full Transcript
Conception de composants programmables et langage HDL Introduction aux S o u sFPGAs -Titre et au VHDL...
Conception de composants programmables et langage HDL Introduction aux S o u sFPGAs -Titre et au VHDL Chiraz TRABELSI Conception de composants programmables et langage HDL 4A-S1 Majeure systèmes embarqués et autonomes [email protected] 1 Organisation du module Cours intégrés => 6 séances (9h) TP => 12 séances (18h) Evaluations Examen TPs Mini-projet Conception de composants programmables et langage HDL 2 4A-S1 Majeure systèmes embarqués et autonomes Implémentation matérielle Un algorithme peut être implémenté de deux façons différentes Une implémentation logicielle exécutée par un processeur Une implémentation matérielle exécutée par des portes logiques et/ou des composants analogiques Conception de composants programmables et langage HDL 3 4A-S1 Majeure systèmes embarqués et autonomes Implémentation matérielle Avantage de l’implémentation matérielle L’implémentation matérielle permet un grand degré de parallélisme (plusieurs tâches peuvent être exécutées en parallèle) L’implémentation logicielle sur un processeur est une implémentation séquentielle (une instruction à la fois) Même en exploitant le pipeline du processeur et la programmation parallèle sur des multi-cœurs, le nombre de tâches exécutables en parallèle restent limité Les cibles matérielles modernes contiennent un grand nombre de ressources permettant d’exécuter des dizaines /centaines de tâches en parallèle Implémentation logicielle Implémentation matérielle Conception de composants programmables et langage HDL 4 4A-S1 Majeure systèmes embarqués et autonomes Implémentation matérielle Contraintes Complexité de conception: une implémentation matérielle nécessite plus de temps de conception qu’une implémentation logicielle Time-to-market: une implémentation matérielle nécessite plus de temps avant la mise sur le marché Prix: dépend du coût de la conception et des ressources matérielles utilisées Le choix d’une implémentation matérielle ou logicielle dépend des contraintes du produit sur lequel on travaille (temps d’exécution, temps de conception, prix, etc.) Conception de composants programmables et langage HDL 5 4A-S1 Majeure systèmes embarqués et autonomes Les circuits intégrés Un circuit intégré standard a une fonctionnalité donnée (multiplexeur, encodeur, mémoire, microprocesseur, etc.) Un ASIC (Application-Specific Integrated Circuit) intègre plusieurs fonctionnalités pour implémenter une application spécifique optimisé pour une application donnée une haute performance de calculs une basse consommation Conception de composants programmables et langage HDL 6 4A-S1 Majeure systèmes embarqués et autonomes Les circuits intégrés Un ASIC peut être soit entièrement personnalisé ou semi-personnalisé Conception de composants programmables et langage HDL 7 4A-S1 Majeure systèmes embarqués et autonomes Les circuits intégrés Les circuits sur mesure Pour les circuits sur mesure, le cahier de charges est traduit en des portes logiques et des composants personnalisés Conception de composants programmables et langage HDL 8 4A-S1 Majeure systèmes embarqués et autonomes Les circuits intégrés Les circuits précaractérisés Pour les circuits pré-caractérisés, le cahier de charges est traduit en des portes logiques et des composants choisis parmi les composants disponibles dans une bibliothèque de composants pré-caractérisés Ces cellules sont organisées sous forme de lignes. Sur une même ligne, on peut avoir des composants de complexité variable allant des portes logiques basiques aux composants complexes comme des microprocesseurs Conception de composants programmables et langage HDL 9 4A-S1 Majeure systèmes embarqués et autonomes Les circuits intégrés Les circuits prédiffusés Pour les circuits pré-diffusés, le système est sous-forme de cellules de base identiques préfabriquées disposées suivant une architecture prédéfinie. Seules les connexions sont personnalisées en suivant des structures prédéfinies Conception de composants programmables et langage HDL 10 4A-S1 Majeure systèmes embarqués et autonomes Les circuits intégrés Les circuits configurables (Programmable Logic Device: PLD) Pour les circuits configurables, ni les blocs logiques ni les connexions sont personnalisés, mais ils peuvent être tous les deux programmables par l’utilisateur. Conception de composants programmables et langage HDL 11 4A-S1 Majeure systèmes embarqués et autonomes Les circuits intégrés Les circuits configurables (Programmable Logic Device: PLD) 1) PAL: Une matrice de portes ET programmables, associée à une matrice fixes de portes OU, utilisées pour implémenter des sommes de produits 2) GAL: Un PAL reprogrammable (en utilisant un programmeur) Conception de composants programmables et langage HDL 12 4A-S1 Majeure systèmes embarqués et autonomes Les circuits intégrés Les circuits configurables (Programmable Logic Device: PLD) 3) CPLD: Complex Programmable Logic Device combinaison de PALs/GALs connectés avec des interconnexions reprogrammables CPLD Conception de composants programmables et langage HDL 13 4A-S1 Majeure systèmes embarqués et autonomes Les circuits intégrés Les circuits configurables (Programmable Logic Device: PLD) 4) FPGA: Field Programmable Gate Array Matrice de cellules logiques reprogrammables Connexions reprogrammables FPGA Les FPGAs sont utilisées pour des fonctionnalités plus complexes que les CPLDs, puisque les FPGAs intègrent des portes logiques, des parties séquentielles, et des composants plus complexes (mémoires, additionneurs, DSPs, microprocesseurs, etc.) Conception de composants programmables et langage HDL 14 4A-S1 Majeure systèmes embarqués et autonomes FPGA FPGA: Field-Programmable Gate Array Field-Programmable: Programmable sur place: peut être programmé et reprogrammé par l’utilisateur. Gate Array: matrice de cellules Conception de composants programmables et langage HDL 15 4A-S1 Majeure systèmes embarqués et autonomes Structure d’un FPGA Les blocs logiques Dans le FPGA sur lequel on a va travailler (Cyclone V d’Intel) ont a des blocs logiques qui s’appellent ALM (Adaptive Logic Module) Différents modes sont disponibles pour l’ALM. Dans le mode normal, on peut utiliser les deux LUTs (LookUp Tables) de l’ALM pour implémenter deux fonctions ayant jusqu’à 4 entrées ou une seule fonction ayant jusqu’à 6 entrées. Les fonctions plus complexes utilisent plusieurs ALMs Logique combinatoire Un ALM contient entre autres des LUTs, des bascules, Table de vérité des mux et des logiques de retenue Conception de composants programmables et langage HDL 16 4A-S1 Majeure systèmes embarqués et autonomes Structure d’un FPGA Les blocs mémoires Configurables en RAM/ROM DIA DIPA DOA DOPA ADDRA CLKA DIB DOB DIPB DOPB ADDRB CLKB Conception de composants programmables et langage HDL 17 4A-S1 Majeure systèmes embarqués et autonomes Structure d’un FPGA Les blocs d’E/S Deux possibilités Single-ended: la tension d’un fil prend la masse comme référence Différentiel: on se basse sur la différence de potentiel entre deux fils différentiels Plus robuste dans un environnement avec beaucoup de bruit Un grand choix de standard d’E/S Conception de composants programmables et langage HDL 18 4A-S1 Majeure systèmes embarqués et autonomes Structure d’un FPGA Les blocs DSP (Digital Signal Processing) Des blocs optimisés pour l’implémentation des sommes de produits (opérations de base pour le traitement numériques de signal) Conception de composants programmables et langage HDL 19 4A-S1 Majeure systèmes embarqués et autonomes Structure d’un FPGA Les processeurs Les FPGA modernes intègrent une Dans les anciens FPGAs, Par la suite, les FPGAs ont puce SoC (processeur dual-core, les processeurs commencé à intégrer des contrôleurs mémoire, interfaces (softcore) étaient processeurs en hard (plus série, réseau…) en plus des blocs implémentés en performant et consomment moins) programmables (interfaçage configurant les blocs sur la puce FPGA (processeurs optimisé et processeurs logiques et mémoires hardcore) performants) Conception de composants programmables et langage HDL 20 4A-S1 Majeure systèmes embarqués et autonomes Evolution Les FPGA sont de plus en plus performants, intègrent plus de ressources et sont de moins en moins cher donc de plus en plus utilisés. Les FPGA viennent lentement remplacer les circuits ASIC. Evolution Les années 90: le FPGA contient essentiellement des blocs logiques programmables avec une capacité limitée. Les systèmes électroniques qui utilisent les FPGAs doivent donc ajouter d’autres éléments comme le processeur, les mémoires ainsi que des parties ASICs Les années 2000: Les FPGA augmentent leurs capacités et intègrent des blocs mémoires et peuvent remplacer donc les ASICs dans la plupart des systèmes, mais on a toujours besoin d’intégrer en plus du FPGA des processeurs génériques ou des DSPs Depuis 2005, les FPGAs intègrent des processeurs et des blocs DSP, ils peuvent donc être utilisés pour implémenter un système électronique complet (moyennant des mémoires externes, puisque les capacités mémoires des FPGA sont limitées) Conception de composants programmables et langage HDL 21 4A-S1 Majeure systèmes embarqués et autonomes Principaux fabricants de FPGAs Xilinx Intel (Altera) Lattice Semiconductor Microchip Cypress QuickLogic Conception de composants programmables et langage HDL 22 4A-S1 Majeure systèmes embarqués et autonomes Exemples de FPGAs FLOPS: Floating-Point Operations per Second FPGA Leadership across Multiple Process Nodes, 2016 Conception de composants programmables et langage HDL 23 4A-S1 Majeure systèmes embarqués et autonomes Différences entre les ASICs et les FPGAs Les ASICs Les FPGAs Avantages Avantages hautes intégrations possibilité de prototypage hautes performances (vitesse, consommation) time-to-market faible coûts faibles pour de gros volumes de adaptabilité aux futurs évolutions grâce à production la reconfiguration sécurité industrielle flexibilité Inconvénients Inconvénients prix du 1er exemplaire intégration limitée par les ressources de pas d’erreur possible routage non-flexible performance plus faible que celle des ASICs time-to-market élevé prix à l’unité élevé pour de grosses productions fabrication réservée aux spécialistes (fondeur) Conception de composants programmables et langage HDL 24 4A-S1 Majeure systèmes embarqués et autonomes Comparaison avec les CPUs Les CPUs Les FPGA Utilisation Utilisation Exécuter un grand nombre d’applications Exécuter une application spécifique diverses Avantages Avantages Grand degré de parallélisme Facilité de programmation Moins de consommation d’énergie Inconvénients Architecture personnalisable selon l’application ciblée Parallélisme limité Implémentation possibles de plusieurs interfaces sur la Des latences plus importantes même puce réduisant la taille du produit Inconvénients Prix assez élevé Complexité de la conception Par rapport aux CPUs, les FPGAs ne conviennent pas pour faire tourner des applications variées sur ordinateur/smartphone mais pour des tâches spécifiques (en co-processeur sur des ordinateurs/serveurs ou dans les systèmes embarqués) qui nécessitent un grand degré de parallélisme, une basse consommation, une taille réduite ou un interfaçage optimisé avec d’autres composants. Conception de composants programmables et langage HDL 25 4A-S1 Majeure systèmes embarqués et autonomes Comparaison avec les MPUs Les MPUs Les FPGAs Utilisation Utilisation Exécuter des applications spécifiques Exécuter des applications spécifiques Avantages Avantages Facilité de programmation Grand degré de parallélisme Moins de consommation d’énergie Architecture personnalisable selon l’application ciblée Inconvénients Personnalisation des interfaces utilisables sur Parallélisme limité la même puce Des latences plus importantes Inconvénients Prix assez élevé Complexité de la conception Par rapport aux MPUs, les FPGAs conviennent pour des tâches qui nécessitent un grand degré de parallélisme et des contraintes de temps-réel strictes. Conception de composants programmables et langage HDL 26 4A-S1 Majeure systèmes embarqués et autonomes Comparaison avec les GPUs Les GPUs Les FPGAs Utilisation Utilisation Exécuter des applications facilement parallélisables souvent de type SIMD (Single Instruction Multiple Exécuter des applications plus personnalisées Data) (plusieurs cœurs exécutent la même (avec des tâches SIMD et autres) instruction sur différentes données) Avantages Avantages Moins de consommation d’énergie Plus performants pour les tâches SIMD (pour les GPUs Implémentation de tâches variées en parallèle ayant un très grand nombre de cœurs) Implémentation possibles de plusieurs interfaces sur Plus performants sur les calculs à virgule flottante la même puce réduisant la taille du produit Programmation plus facile Moins de latence dans la transmission des données Inconvénients Inconvénients Une haute consommation Prix assez élevé Moins performants dans les tâches nécessitant une Complexité de la conception acquisition optimisée de données externes Par rapport aux GPUs, les FPGA conviennent pour des tâches nécessitant une basse consommation, un interfaçage personnalisé ou une réaction temps-réel aux données reçues. Conception de composants programmables et langage HDL 27 4A-S1 Majeure systèmes embarqués et autonomes Comparaison avec d’autres plateformes Les points forts des FPGAs Un outil de prototypage rapide et un prix intéressant pour les petites quantité par rapport à un ASIC Une adaptation plus facile aux évolutions rapides des standards utilisés dans les protocoles de communication par rapport aux ASICs Une grande capacité d’implémenter des tâches en parallèle Une implémentation personnalisée des tâches et une flexibilité qu’on peut pas avoir avec les CPUs/MPUs et GPUs Les tâches implémentées sur un FPGA en parallèle peuvent être variées, ce qui n’est pas le cas pour les GPUs. Une consommation réduite en énergie en comparaison avec les CPUs et les GPUs Des blocs mémoires intégrés dans la même puce que le FPGA, ce qui minimise les accès aux données d’une façon externe et résout des problèmes de latence par rapport aux CPUs et GPUs Conception de composants programmables et langage HDL 28 4A-S1 Majeure systèmes embarqués et autonomes Domaines d’application des FPGAs L’utilisateur le plus connu: Microsoft Moteur de recherche Cloud Computing Deep-Learning (principalement en vision par ordinateur, et traitement du langage naturel) Conception de composants programmables et langage HDL 29 4A-S1 Majeure systèmes embarqués et autonomes Domaines d’application des FPGAs La console de jeux rétro Mister Projet Open Source depuis 2017 Implémentation très fidèle aux consoles de jeux rétro FPGA Intel DE10-Nano Performance supérieure à une émulation sur PC Des consoles de jeux portables pour les jeux rétro telles que Analogue Pocket Implémentation plus fidèle aux consoles de jeux originales, moins de latences que d’autres consoles portables de jeux rétro basées sur des processeurs Conception de composants programmables et langage HDL 30 4A-S1 Majeure systèmes embarqués et autonomes Domaines d’application des FPGAs 1) En entreprise Data Analytics Les FPGAs permettent d’alléger la quantité des données traitées par les CPU et les serveurs dans les data centers Avantages des FPGAs par rapport aux GPU dans le domaine des data centers: Les FPGAs permettent une consommation d’énergie très réduite par rapport aux GPUs Les FPGAs sont plus performants dans la compression des données que les GPUs, pour affronter l’explosion des données à sauvegarder Applications financières et calcul à haute performance Applications avec une quantité énorme de données qui peut bénéficier de l’accélération des FPGAs Exemples: applications d’analyse de risques, traitement des données de l’historique, etc. Conception de composants programmables et langage HDL 31 4A-S1 Majeure systèmes embarqués et autonomes Domaines d’application des FPGAs 1) En entreprise Intelligence Artificielle Utilisé surtout pour la prédiction et pas pour l’apprentissage (les GPUs sont plus performants au niveau de l’apprentissage) Traitement d’images et vidéo Accélération des traitements liées aux applications d’e-commerce et réseaux sociaux dans les data-centers Conception de composants programmables et langage HDL 32 4A-S1 Majeure systèmes embarqués et autonomes Domaines d’application des FPGAs 2) Embarqué Automobile (Véhicules autonomes, véhicules électriques et hybrides, …) Robotique Médical Télécommunication (5G, Interconnexion entre data centers, dispositifs réseaux programmables, …) Militaire et aérospatial (crypto, radars,...) Spatial Emulation et prototypage pour la production des ASICs IoT Traitements vidéo (Consoles de jeux, caméras, ….) ….. Conception de composants programmables et langage HDL 33 4A-S1 Majeure systèmes embarqués et autonomes Comment programmer un FPGA? Trois principales façons 1) Schématique (adaptée aux petits projets) Conception de composants programmables et langage HDL 34 4A-S1 Majeure systèmes embarqués et autonomes Comment programmer un FPGA? Trois principales façons 2) En utilisant un langage matériel LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY SM3 IS PORT ( Traduction automatique du code HDL reset : IN STD_LOGIC := '0'; clock : IN STD_LOGIC; en bascules et portes logiques Mapping X : IN STD_LOGIC := '0'; F : OUT STD_LOGIC automatique sur les ); END SM3; ressources du FPGA ARCHITECTURE BEHAVIOR OF SM3 IS TYPE type_fstate IS (state1,state2); SIGNAL fstate : type_fstate; SIGNAL reg_fstate : type_fstate; BEGIN PROCESS (clock,reg_fstate) BEGIN IF (clock='1' AND clock'event) THEN fstate