Composants programmables 2014pages.univ-nc.nc/~quiniou/documents/Cours/Composants... ·...

38
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

Transcript of Composants programmables 2014pages.univ-nc.nc/~quiniou/documents/Cours/Composants... ·...

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 22

Les différentes composants programmables

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 28

Les différentes composants programmables

Licence SPI 2ème année Thomas Quiniou 29

Loi de Moore

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