Composants programmables - Université de la Nouvelle

publicité
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
Téléchargement