Licence SPI 2ème année Thomas Quiniou 1 Informatique industrielle Les circuits programmables (Langage de description VHDL) Les micro-contrôleurs (Langage assembleur, C, C++, basic) Systèmes embarqués (RaspBerry Pi, BeagleBone Black) Les DSP
Licence SPI 2ème année Thomas Quiniou 1
Informatique industrielle
Les circuits programmables(Langage de description VHDL)
Les micro-contrôleurs(Langage assembleur, C, C++, basic )
Systèmes embarqués(RaspBerry Pi, BeagleBone Black)
Les DSP
Licence SPI 2ème année Thomas Quiniou 2
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 3
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.
Les composants programmables
Licence SPI 2ème année Thomas Quiniou 4
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 différentes composants programmables
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 5
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.
Les différentes composants programmables
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
Exemple : 74HC004 portes NAND à 2 entrées
Implantation sur carte
Licence SPI 2ème année Thomas Quiniou 6
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.
Les différentes composants programmables
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 7
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.
Les différentes composants programmables
Source : http://www.toshiba-components.com/
Licence SPI 2ème année Thomas Quiniou 8
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.
Les différentes composants programmables
Licence SPI 2ème année Thomas Quiniou 9
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 différentes composants programmables
- 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 10
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 Structure d’une PAL
Licence SPI 2ème année Thomas Quiniou 11
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 12
Les PLA (Programmable Logic Array)
Les différentes composants programmables
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 13
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 14
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.
Les différentes composants programmables
Licence SPI 2ème année Thomas Quiniou 15
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.
Les différentes composants programmables
*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.
Remarque : la topologie des FPGA est dite « Manhattan », en référence aux rues à angle droit de ce quartier de New York.
Licence SPI 2ème année Thomas Quiniou 16
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.
Les différentes composants programmables
Licence SPI 2ème année Thomas Quiniou 17
Les différentes composants programmables
Cellule de base d’un FPGA
(bloc logique)
L.U.T
Bascule D
Multiplexeur
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.
Logique
combinatoire
Logique
séquentielle
Licence SPI 2ème année Thomas Quiniou 18
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 19
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.
Les différentes composants programmables
Licence SPI 2ème année Thomas Quiniou 20
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.
Les différentes composants programmables
Licence SPI 2ème année Thomas Quiniou 21
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).
Les différentes composants programmables
Approche graphique Code VHDL
Licence SPI 2ème année Thomas Quiniou 23
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.
Les différentes composants programmables
Licence SPI 2ème année Thomas Quiniou 24
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.
Les différentes composants programmables
Licence SPI 2ème année Thomas Quiniou 25
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 (VHDL-
87). 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.
Introduction au VHDL
Licence SPI 2ème année Thomas Quiniou 26
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.
Introduction au VHDL
Licence SPI 2ème année Thomas Quiniou 27
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.
Les différentes composants programmables
Premier microprocesseur Intel 4004 x86 de Marcian Hoff
microprocesseur Intel I7
Licence SPI 2ème année Thomas Quiniou 30
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.
Les différentes composants programmables
Filtre FIR (Finite Impulse Response)
Multiplication Addition+ ⇒ MAC
Licence SPI 2ème année Thomas Quiniou 31
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.
Les différentes composants programmables
DSP
Analyse des teneurs dans les latérites en Nouvelle-Calédonie
Licence SPI 2ème année Thomas Quiniou 32
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 différentes composants programmables
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 33
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.
Les différentes composants programmables
Arduino UNO (ATmega328P) Modules Arduino Arduino Masterclass
Licence SPI 2ème année Thomas Quiniou 34
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).
Les différentes composants programmables
Raspberry pi Beaglebone Black Udoo
Licence SPI 2ème année Thomas Quiniou 35
Les cartes mini-PC
2 exemples basés sur le Raspberry Pi
Les différentes composants programmables
Un quadcopter (Picopter)
Un robot contrôlé à distance(RoverPi)
Licence SPI 2ème année Thomas Quiniou 36
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
Les différentes composants programmables
Licence SPI 2ème année Thomas Quiniou 37
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
Les différentes composants programmables
Licence SPI 2ème année Thomas Quiniou 38
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).
Les différentes composants programmables