Informatique industrielle Les circuits programmables (Langage de description VHDL) Les DSP Licence SPI 2ème année Systèmes embarqués (RaspBerry Pi, BeagleBone Black) Les micro-contrôleurs (Langage assembleur, C, C++, basic) Thomas Quiniou 1 Plan • Introduction • Quelques Rappels – – – • Les différentes bases de numération (bin, déc, hex) Représentation des nombres (entiers, flottants) Logique combinatoire et séquentielle Les différents types de composant – – – – Les circuits Logiques Programmables (PLD) – Langage de description VHDL Les DSP Les µContrôleurs (assembleur, basic, C, C++) Les cartes mini-PC type BeagleBone black (OS Linux) • Les µcontrôleurs PIC • Le µcontrôleur PIC 18F45K22 • La platine de développement EasyPic7 de chez Lextronics – – • La carte et ses différents modules L’environnement de développement Langage C embarqué sur µcontrôleur Licence SPI 2ème année Thomas Quiniou 2 Les composants programmables Software (SW) : logiciel (matière molle) Hardware (HW) : matériel (matière dure) Firmware (FW) : micrologiciel (matière ferme) Le mot firmware est une combinaison des mots software (programme informatique) et firm (« ferme », état intermédiaire entre soft et hard). Désigné comme logiciel système, logiciel embarqué ou d'exploitation, le FW est un logiciel intégré dans un composant matériel, plus exactement dans sa mémoire. Il assure le fonctionnement du composant. Licence SPI 2ème année Thomas Quiniou 3 Les différentes composants programmables Il existe différents types de circuits numériques que l’on peut classer de différentes manières. L’une d’entre elles est la suivante : Les composants qui vont principalement nous intéresser ici sont les µprocesseurs et les circuits à architecture programmable (FPGA). Licence SPI 2ème année Thomas Quiniou 4 Les différentes composants programmables Circuits logiques standards : il s’agit de circuits intégrés logiques qui réalisent des fonctions booléennes. Ces circuits ne sont donc pas programmables. Exemple : 74HC00 4 portes NAND à 2 entrées Implantation sur carte Avantages : faible prix unitaire (prototypage), disponibilité « sur étagère », fiabilité éprouvée, sources multiples Inconvénients : taille du circuit, cout pour les grandes séries, pas d’optimisation possible Licence SPI 2ème année Thomas Quiniou 5 Les différentes composants programmables Les ASICs : Application-Specific Integrated Circuits De manière basique, un ASIC est un circuit intégré conçu pour une application spécifique et pour un seul client (les processeurs INTEL sont des ASICs par exemple). La propriété intellectuelle, le design et le déploiement d’un ASIC sont contrôlés par une seule compagnie, généralement l’utilisateur final. Celui-ci peut concevoir lui-même ou sous-traiter la conception de l’ASIC mais il est réalisé physiquement chez un fondeur (à partir de fichiers sources). Le cout élevé du développement d’un ASIC rend cette approche viable uniquement pour les « très » grandes séries. Par rapport à un circuit intégré tel que le 74HC00 qui intègre seulement 4 portes logiques, un ASIC peut en contenir des millions… Licence SPI 2ème année Thomas Quiniou 6 Les différentes composants programmables Les ASIC : Application-Specific Integrated Circuits Dans les années 70-80, le développement s’opérait en dessinant les motifs des circuits servant à fabriquer les masques par un procédé photographique. Aujourd'hui, on développe un circuit électronique numérique en utilisant un langage de description (VHDL, Verilog ou encore SystemC), qui est ensuite compilé par synthèse logique pour produire automatiquement le dessin du circuit. On utilise les mêmes langages de description pour réaliser des prototypes et des préséries avec des composants logiques programmables ou FPGA. Source : http://www.toshiba-components.com/ Licence SPI 2ème année Thomas Quiniou 7 Les différentes composants programmables Les circuits logiques programmables (PLD - Programmable Logic Device) Dans le cas des ASICs, il est nécessaire de passer par un fondeur pour réaliser les circuits, ce qui introduit un délai de quelques mois dans le processus de conception. Cet inconvénient a conduit les fabricants à proposer des circuits à architecture programmable par l'utilisateur (sans passage par le fondeur) qui sont devenus au fil des années, de plus en plus évolués. Rassemblés sous le terme générique PLD, les circuits (ou réseaux) programmables par l'utilisateur se décomposent en trois familles : 1. Les SPLD (S = Simple) : les PLA, les PAL 2. Les CPLD (C = Complex), 3. les FPGA (Field Programmable Gate Array). Les circuits logiques programmables sont des circuits composés de nombreuses cellules logiques élémentaires librement assemblables. Celles-ci sont connectées de manière définitive ou réversible par programmation, afin de réaliser la ou les fonctions numériques voulues. L'intérêt est qu'une même puce peut être utilisée dans de nombreux systèmes électroniques différents. Licence SPI 2ème année Thomas Quiniou 8 Les différentes composants programmables SPLD : PAL (Programmable Array Logic) et PLA (Programmable Logic Array) : Les SPLD ont été développés au milieu des années 70 par MMI (ex-AMD). La programmation se fait par destruction de fusibles, aucun fusible n’est grillé à l’achat. - les fusibles intactes sont représentés par une connexion - les fusibles détruits sont représentés par une absence de connexion Exemple d’un “OU EXCLUSIF” Licence SPI 2ème année Thomas Quiniou 9 Les différentes composants programmables La plupart des PAL et PLA sont constituées : • • d’un ensemble de portes « ET » sur lesquelles viennent se connecter les variables d’entrée et leurs compléments, d’un ensemble de portes « OU » sur lesquelles les sorties des opérateurs « ET » sont connectées les variables d’entrée. Les ensembles «ET» et «OU» forment chacun ce qu’on appelle une matrice. Dans le cas d’une PLA, les 2 matrices sont programmables tandis que dans le cas d’une PAL, seule la matrice des ET est programmable. Structure d’une PLA Licence SPI 2ème année Structure d’une PAL Thomas Quiniou 10 Les différentes composants programmables Les structures de sortie : Il existe 3 structures de sortie qui peuvent aussi être des entrées/sorties : combinatoire, séquentielle et versatile. 1. Sortie combinatoire – sortie 3 états rebouclée vers la matrice : • une sortie peut servir de variable intermédiaire • une sortie peut servir d’entrée (en mode haute impédance) 2. Sortie à registre - une bascule D permet la logique séquentielle : • sorties séquencées sur une horloge H • une sortie ne peut pas servir d’entrée • une commande OE (Ouput Enable) permet de désactiver la sortie 3. Sortie versatile (VPAL) On peut configurer par programmation le mode d’utilisation de la broche de sortie Licence SPI 2ème année Thomas Quiniou 11 Les différentes composants programmables Les PLA (Programmable Logic Array) Un PLA est donc constitué : 1. D'entrées (Input): I1 à In avec 8<n<20, 2. De sorties (Output, O1 à On) ou d’entrées/sorties (I/O) de type Totem Pôle ou Trois Etats (IO1 à IOn), avec 2<n<15, 3. Une entrée d'horloge (Clock): Clk ou Clock, 4. Une entrée de validation des sorties trois états: OE (Output Enable) ou Enable, 5. Une entrée de remise à zéro des registres: RESET. Une « macrocellule » est un bloc contenant de la logique combinatoire (porte ET et OU) et une bascule Flip-Flop. Il n’y a donc qu’une seule macrocellule par sortie. Licence SPI 2ème année Thomas Quiniou 12 Les différentes composants programmables Les CPLD (Complex Programmable Logic Device) Les CPLD contiennent des cellules individuelles similaires à celles des PAL, chacune avec des matrices ET et OU programmables. Les modules d’interconnections permettent de relier les sorties d’un bloc logique aux entrées d’un autre bloc. La taille d’un composant se mesure en nombre de portes équivalentes (porte NAND à 2 entrées). Un SPLD ou CPLD possède typiquement l’équivalent de 20 portes par macrocellule, autrement dit un PAL qui contient 8 macrocellules est équivalent à 160 portes tandis qu’un CPLD contenant 500 macrocellules est équivalent à 10 000 portes. Licence SPI 2ème année Thomas Quiniou 13 Les différentes composants programmables Les FPGA (Fields Programmable Gate Array) : Les FPGAs, à la différence des CPLDs, sont assimilables à des A.S.I.C. (Application Specific Integrated Circuit) programmables par l’utilisateur. La puissance de ces circuits est telle qu’ils peuvent être composés de plusieurs milliers voire millions de portes logiques et de bascules. Les deux plus grands constructeurs de FPGA sont XILINX et ALTERA. Ils sont composés de blocs logiques élémentaires (plusieurs milliers de portes) qui peuvent être interconnectés. Licence SPI 2ème année Thomas Quiniou 14 Les différentes composants programmables Les FPGA (Fields Programmable Gate Array) : Lancé sur le marché en 1984 par la firme XILINX, le FPGA (Field Programmable Logic Device) est un circuit prédiffusé* programmable. Chaque FPGA est constitué d'un grand nombre de petites macrocellules (jusqu’à 5 entrées) disposées en pavage et reliées par un réseau d’interconnexions régulier. Remarque : la topologie des FPGA est dite « Manhattan », en référence aux rues à angle droit de ce quartier de New York. *circuits intégrés dont la conception est fondée sur l’utilisation de réseaux de cellules dont les éléments ont été préalablement diffusés et dont seule l’interconnexion reste à réaliser. Licence SPI 2ème année Thomas Quiniou 15 Les différentes composants programmables Les FPGA (Fields Programmable Gate Array) : La grande différence entre les circuits CPLD et les FPGA est leur complexité. Typiquement, un CPLD peut contenir de quelques centaines à dizaines de milliers de portes alors qu’un FPGA peut en contenir plusieurs millions. Cela permet d’intégrer des fonctions complexes dans une seule puce. Une autre différence réside dans l’architecture. Un CPLD est basé sur un réseau mer-de-portes (sea of gates en anglais) dont la fonction de base est une somme de produits. Un FPGA est quantà lui basé sur une mémoire SRAM utilisé comme table de vérité (LUT pour Look Up Table). La mémoire SRAM étant volatile, la configuration est perdue après coupure de l’alimentation. Il est donc nécessaire d’associer au FPGA une mémoire ROM qui elle conservera le bootloader. Notons enfin que dans le cas des CPLD, le routage est fixe et les temps de propagation sont donc prédictibles. La fréquence de fonctionnement du circuit est donc indépendante du design. Ce n’est ps le cas pour un FPGA car les temps de propagation dépendent de la longueur des liaisons entre cellules logiques. Licence SPI 2ème année Thomas Quiniou 16 Les différentes composants programmables Un bloc logique est de manière générale constitué d'une table de correspondance (LUT ou Look-Up-Table) et d'une bascule D. La LUT sert à implémenter des équations logiques ayant généralement 4 à 6 entrées et une sortie. Multiplexeur L.U.T Logique combinatoire Logique séquentielle Bascule D Cellule de base d’un FPGA (bloc logique) Licence SPI 2ème année Thomas Quiniou 17 Les différentes composants programmables Structure d’une LUT (Look-Up-Table ou table de correspondance) Une LUT est une structure de données, employée pour remplacer un calcul par une opération plus simple de consultation. Le gain de vitesse peut être significatif, car rechercher une valeur en mémoire est souvent plus rapide qu'effectuer un calcul important. Licence SPI 2ème année Thomas Quiniou 18 Les différentes composants programmables Les circuits logiques programmables (PLD - programmable Logic Device) Les SoC (System on Chip) : les dernières générations de FPGA permettent l’intégration d’un système à processeur complet, d’un DSP ou d’un microcontrôleur. En anglais, l’abréviation est SoC pour System on Chip. Licence SPI 2ème année Thomas Quiniou 19 Les différentes composants programmables Les bloc IP ou « IP core » IP : Intellectual Propertie ou Composant virtuel Un bloc IP est un Bloc fonctionnel complexe pouvant être réutilisés dans plusieurs conceptions. Il existe des blocs IP « logiciel » (Soft IP) et « matériel » (Hard IP). Hard IP : déjà implanté, dépendant de la technologie, fortement optimisé Soft IP : dans un langage de haut niveau (Verilog, VHDL, C++) On peut être amené à intégrer ces blocs IP dans un composant soit pour gagner du temps (on achète une IP déjà toute faite), soit parce qu’il est protégé par un brevet. Un bloc IP peut être vu comme une « boite noire », paramétrable et synthétisable. Licence SPI 2ème année Thomas Quiniou 20 Les différentes composants programmables Les outils de développement Ces outils vont permettre au concepteur de programmer le circuit à partir de la description de la fonction à réaliser. Cette description peut être textuelle (VHDL, Verilog etc.) ou graphique (symboles de fonction, graphes des états, chronogrammes). Approche graphique Licence SPI 2ème année Code VHDL Thomas Quiniou 21 Les différentes composants programmables Licence SPI 2ème année Thomas Quiniou 22 Les différentes composants programmables Les outils de développement La compilation va permettre dans un premier temps de vérifier la cohérence de la description et la syntaxe du langage utilisé, puis d'effectuer une simulation fonctionnelle (simulation avant synthèse) dans un premier temps (avec ModelSim par exemple). La simulation fonctionnelle consiste à vérifier le bon fonctionnement du circuit (au niveau logique) à partir de signaux tests (les stimuli). Ces signaux sont regroupés dans un fichier que l’on appelle « testbench » ou fichier de simulation. Après avoir réalisé une simulation fonctionnelle approfondie, c'est à dire après avoir validé la conception et la description, le synthétiseur génère la netlist du circuit logique en fonction du circuit cible utilisé. A ce stade, on peut procéder à une simulation après synthèse (prise en compte des composants). Le synthétiseur n'est pas forcément un « logiciel propriétaire » du fabricant de chip. Licence SPI 2ème année Thomas Quiniou 23 Les différentes composants programmables Les outils de développement Le "placeur-routeur" effectue ensuite le placement et routage des blocs logiques. Dans le cas des CPLDs et FPGAs, le "placeur-routeur" est en général un « logiciel propriétaire » du fabricant de ces circuits logiques. La dernière étape, pas toujours appliquée, pour autant que le design soit synchrone, est la vérification du timing ou le simulateur importe les temps de propagation calculés en fonction du placement routage (simulation après placement routage). On utilise généralement le même testbench que pour la simulation fonctionnelle. Vient enfin la programmation du circuit et la vérification du fonctionnement sur la carte. Si la simulation et la vérification on été faites correctement, aucune erreur de fonctionnement ne doit apparaître. Licence SPI 2ème année Thomas Quiniou 24 Introduction au VHDL Le langage VHDL L’abréviation VHDL signifie VHSIC Hardware Description Language (VHSIC : Very High Speed Integrated Circuit). Ce langage a été écrit dans les années 70 pour réaliser la simulation de circuits électroniques. La standardisation du VHDL s’effectuera jusqu’en 1987, époque à laquelle elle sera normalisée par l’IEEE (VHDL87). On l’a ensuite étendu en intégrant, entre autre, le type std_logic (VHDL-93) et la possibilité de décrire et simuler des circuits mixtes, analogiques et numériques (VHDL-99 ou VHDL-AMS pour VHDL-Analog and Mixed Systems). Les sociétés de développement et les ingénieurs ont voulu s’affranchir des contraintes technologiques des circuits. Ils ont donc créé des langages dits de haut niveau à savoir VHDL et VERILOG. Ces deux langages font abstraction des contraintes technologies des circuits PLDs. Ils permettent au code écrit d’être portable, c’est à dire qu’une description écrite pour un circuit peut être facilement utilisée pour un autre circuit. Licence SPI 2ème année Thomas Quiniou 25 Introduction au VHDL Le langage VHDL Il faut avoir à l’esprit que ces langages dits de haut niveau permettent de matérialiser les structures électroniques d’un circuit. En effet les instructions écrites dans ces langages se traduisent par une configuration logique de portes et de bascules qui est intégrée à l’intérieur des circuits PLDs. C’est pour cela que l’on parle parfois de description VHDL ou VERILOG plutôt que de langage. Licence SPI 2ème année Thomas Quiniou 26 Les différentes composants programmables Les circuits intégrés programmables : Sous cette appellation, nous regroupons ici les microprocesseurs, les DSP et les microcontrôleurs. 1. Les microprocesseurs (ou CPU pour Central Processor Unit) Un microprocesseur est un processeur dont les composants ont été suffisamment miniaturisés pour être regroupés dans un unique circuit intégré. Fonctionnellement, le processeur est la partie d’un ordinateur qui exécute les instructions et traite les données des programmes. Premier microprocesseur Intel 4004 x86 de Marcian Hoff Licence SPI 2ème année microprocesseur Intel I7 Thomas Quiniou 27 Les différentes composants programmables Licence SPI 2ème année Thomas Quiniou 28 Loi de Moore Licence SPI 2ème année Thomas Quiniou 29 Les différentes composants programmables Les DSP (Digital Signal Processor ou processeur de signal numérique) Un DSP est un microprocesseur optimisé pour les calculs. Son application principale est le traitement numérique du signal (filtrage, extraction de signaux, etc.). Un DSP est un processeur dont l'architecture est optimisée pour effectuer des calculs complexes en un cycle d'horloge, mais aussi pour accéder très facilement à un grand nombre d'entrées-sorties (numériques ou analogiques). La fonction principale utilisée dans le DSP est la fonction multiply-accumulate (MAC), c'est-à-dire une multiplication suivie d'une addition et d'un stockage du résultat. Filtre FIR (Finite Impulse Response) Multiplication + Addition ⇒ Licence SPI 2ème année MAC Thomas Quiniou 30 Les différentes composants programmables Les DSP (Digital Signal Processor ou processeur de signal numérique) Exemple : appareil portable XRF utilisé dans les mines pour l’analyse des teneurs en éléments : nickel, fer, cobalt, chrome etc. DSP Analyse des teneurs dans les latérites en Nouvelle-Calédonie Licence SPI 2ème année Thomas Quiniou 31 Les différentes composants programmables Les microcontrôleurs Un microcontrôleur est un circuit intégré rassemblant dans un même boitier un microprocesseur (généralement peu puissant), plusieurs types de mémoires et des périphériques de communication (Entrées-Sorties). Le premier microcontrôleur est sortie en 1974 (Texas Instrument – TMS1000). Les microcontrôleurs représentent la plus grosse partie des ventes dans le marché des microprocesseur. En effet, un foyer moyen d'un pays développé est susceptible d'être équipé de seulement un ou deux microprocesseurs généralistes (ordinateurs), mais d'une ou deux douzaines de microcontrôleurs (appareils électroménagers). Les microcontrôleurs sont des composants microprogrammés. Plusieurs langage sont utilisés : assembleur (bas niveau), Basic, langage C et plus récemment C++. Il existe une grande variété de microcontrôleurs sur le marché, les familles Atmel (ATmega), Intel (8051), Siemens (C167), Microchip (PIC) etc. Licence SPI 2ème année Thomas Quiniou 32 Les différentes composants programmables Arduino Sortie en 2005 comme un modeste outil pour les étudiants de Banzi à l’Interaction Design Institute Ivrea (IDII), Arduino a initié une révolution DIY dans l’électronique à l’échelle mondiale. Arduino est une plateforme électronique open-source basée sur un microcontrôleur ATmega. Elle est très populaire chez les roboticiens, les amateurs et les professionnels. Son succès est principalement dû à sa conception de type ouverte et à sa facilité extrême d’utilisation, tant au niveau du matériel (module) que du logiciel (IDE open-source facile à utiliser). Il est par ailleurs très simple de débuter avec l’Arduino grâce aux très nombreux projets et matériels d’apprentissage facilement accessibles. Arduino UNO (ATmega328P) Licence SPI 2ème année Modules Arduino Thomas Quiniou Arduino Masterclass 33 Les différentes composants programmables Les cartes mini-PC Contrairement à l’arduino qui est un système basé sur un microcontôleur, les cartes mini-pc sont basées sur un microprocesseur et embarquent donc un OS (généralement linux). Raspberry pi Licence SPI 2ème année Beaglebone Black Thomas Quiniou Udoo 34 Les différentes composants programmables Les cartes mini-PC 2 exemples basés sur le Raspberry Pi Un robot contrôlé à distance (RoverPi) Un quadcopter (Picopter) Licence SPI 2ème année Thomas Quiniou 35 Les différentes composants programmables La carte BeagleBone Black (BBB) La carte BeagleBone Black est le module le plus récent de la famille des BeagleBoard. C’est aussi la moins chère, environ 40 €. Elle est basé sur le processeur AM335x (Cortex A8) de chez Texas Instrument (TI). Elle est livrée avec la distribution Linux Angstrom Licence SPI 2ème année Thomas Quiniou 36 Les différentes composants programmables La carte BeagleBone Black (BBB) En plus de posséder 1 port Ethernet et 1 port USB, la platine dispose de 2 ports d’extension (connecteurs 2×23 broches), P8 et P9, qui regroupent : - des alimentations +3.3V et +5V - 1 port SPI - 1 port I2C - 6 ports séries (UART) - 2 ports PWM - 7 entrées analogiques (conversion sur 12 bits) - 1 connecteur pour afficheur LCD - une soixantaine d’entrées/sortie GPIO Licence SPI 2ème année Thomas Quiniou 37 Les différentes composants programmables La carte BeagleBone Black (BBB) Toutes les fonctionnalités ne sont cependant pas disponibles simultanément, les broches sont en fait multiplexées (Pin Mux). Ainsi, seule le port série UART0 est actif par défaut. Pour utiliser les autres, il faudra les activer (fichier uEnv.txt). Licence SPI 2ème année Thomas Quiniou 38