12
1 Composants logiciels et matériels d’un système embarqué 1. Introduction 2. Composants matériels a. Circuits électroniques et électriques i. Alimentation Afin de pouvoir fonctionner, un système embarqué a besoin d’être alimenté en énergie électrique. Il doit dispenser d’une source d’énergie qui peut être : - Le courant du secteur : par exemple machine à laver, récepteur, poste de télévision, système d’alarme… - Batteries et piles pour les systèmes mobiles : téléphone portable, robot … - Générateur de courant électrique : alternateur de voiture pour le cas du GPS, de l’ABS, de l’ESP - Energie renouvelable : énergie solaire - Energie produite par le système : par exemple Certains systèmes de contrôle de pression des pneus se trouvent embarqués dans les roues elles-mêmes, et n’ont pas d’accès filaire pour leur alimentation ou leur communication. Ils doivent donc s’auto- alimenter (grâce à l’énergie piézoélectrique) et communiquer par radio avec l’organe de gestion central de la voiture. Dans le cas des systèmes critiques, une alimentation redondante doit être utilisée. Par exemple un système d’alarme doit fonctionner correctement en cas de coupure du courant de secteur. Un système embarqué doit être équipé d’un système de gestion de l’alimentation. Par exemple les systèmes alimentés par une batterie comme les téléphones. ii. Convertisseur Analogique/Numérique/Analogique Le monde physique est par nature analogique (dans la quasi-totalité des cas). Il est perçu via des signaux analogiques (son, ondes visuelles, etc.) qui peuvent être traités par des systèmes analogiques. 2 Depuis une vingtaine d’années, le traitement numérique des données prend le pas sur les approches purement analogiques. Le recours au numérique permet en effet un stockage aisé de l’information, une excellente reproductibilité des traitements, la possibilité de développer relativement aisément des fonctionnalités complexes, une réduction des coûts de production. L’interface nécessaire entre le monde analogique et un traitement numérique donné est réalisé par des convertisseurs analogique – numérique (CAN, ou ADC pour Analog to Digital Converter en anglais1) et numérique – analogique (CNA, ou DAC pour Digital to Analog Converter). Le rôle d’un CAN est de convertir un signal analogique en un signal numérique pouvant être traité par une logique numérique, et le rôle d’un CNA est de reconvertir le signal numérique une fois traité en un signal analogique. - Convertisseur Analogique-Numérique Un convertisseur analogique – numérique (CAN) est un dispositif électronique permettant la conversion d’un signal analogique en un signal numérique. Signal analogique : signal continu en temps et en amplitude. Signal numérique : signal échantillonné et quantifié, discret en temps et en amplitude. Conceptuellement, la conversion analogique – numérique peut être divisée en trois étapes : l’échantillonnage temporel, la quantification et le codage. Un signal analogique, va(t) continu en temps et en amplitude (i) est échantillonné à une période d’échantillonnage constante Tech. On obtient alors un signal échantillonné vech(k.Tech) discret en temps et continu en amplitude (ii). Ce dernier est ensuite quantifié, on obtient alors un signal numérique vq[k] discret en temps et en amplitude (iii). La quantification est liée à la résolution du CAN (son nombre de bits) ; dans l’exemple précédent vq[k] peut prendre huit amplitudes différentes (soit 23, 3 étant le nombre de bits du CAN). La figure II.1.iii présente également le code numérique sur trois bits (en code binaire naturel) associé à vq[k] en fonction du temps. Généralement, un CAN possède: - une entrée " début de conversion " qui permet de démarrer la conversion (Start) - une sortie " fin de conversion " qui indique que la conversion est terminée (End) - une entrée analogique (courant ou tension) - plusieurs sorties numériques, dont le nombre est fonction de la résolution

Composants logiciels et matériels d’un système … · modifient au cours du temps (vieillissement des composants) Convertisseur à rampe numérique : ... un actionneur est l'organe

  • Upload
    vannhi

  • View
    214

  • Download
    0

Embed Size (px)

Citation preview

1

Composants logiciels et matériels d’un système embarqué 1. Introduction

2. Composants matériels

a. Circuits électroniques et électriques i. Alimentation

Afin de pouvoir fonctionner, un système embarqué a besoin d’être alimenté en énergie électrique. Il doit dispenser d’une source d’énergie qui peut être :

− Le courant du secteur : par exemple machine à laver, récepteur, poste de télévision, système d’alarme…

− Batteries et piles pour les systèmes mobiles : téléphone portable, robot … − Générateur de courant électrique : alternateur de voiture pour le cas du GPS, de

l’ABS, de l’ESP − Energie renouvelable : énergie solaire − Energie produite par le système : par exemple Certains systèmes de contrôle de

pression des pneus se trouvent embarqués dans les roues elles-mêmes, et n’ont pas d’accès filaire pour leur alimentation ou leur communication. Ils doivent donc s’auto-alimenter (grâce à l’énergie piézoélectrique) et communiquer par radio avec l’organe de gestion central de la voiture.

Dans le cas des systèmes critiques, une alimentation redondante doit être utilisée. Par exemple un système d’alarme doit fonctionner correctement en cas de coupure du courant de secteur. Un système embarqué doit être équipé d’un système de gestion de l’alimentation. Par exemple les systèmes alimentés par une batterie comme les téléphones.

ii. Convertisseur Analogique/Numérique/Analogique Le monde physique est par nature analogique (dans la quasi-totalité des cas). Il est perçu via des signaux analogiques (son, ondes visuelles, etc.) qui peuvent être traités par des systèmes analogiques.

2

Depuis une vingtaine d’années, le traitement numérique des données prend le pas sur les approches purement analogiques. Le recours au numérique permet en effet un stockage aisé de l’information, une excellente reproductibilité des traitements, la possibilité de développer relativement aisément des fonctionnalités complexes, une réduction des coûts de production. L’interface nécessaire entre le monde analogique et un traitement numérique donné est réalisé par des convertisseurs analogique – numérique (CAN, ou ADC pour Analog to Digital Converter en anglais1) et numérique – analogique (CNA, ou DAC pour Digital to Analog Converter). Le rôle d’un CAN est de convertir un signal analogique en un signal numérique pouvant être traité par une logique numérique, et le rôle d’un CNA est de reconvertir le signal numérique une fois traité en un signal analogique.

− Convertisseur Analogique-Numérique Un convertisseur analogique – numérique (CAN) est un dispositif électronique permettant la conversion d’un signal analogique en un signal numérique. Signal analogique : signal continu en temps et en amplitude. Signal numérique : signal échantillonné et quantifié, discret en temps et en amplitude. Conceptuellement, la conversion analogique – numérique peut être divisée en trois étapes : l’échantillonnage temporel, la quantification et le codage.

Un signal analogique, va(t) continu en temps et en amplitude (i) est échantillonné à une période d’échantillonnage constante Tech. On obtient alors un signal échantillonné vech(k.Tech) discret en temps et continu en amplitude (ii). Ce dernier est ensuite quantifié, on obtient alors un signal numérique vq[k] discret en temps et en amplitude (iii). La quantification est liée à la résolution du CAN (son nombre de bits) ; dans l’exemple précédent vq[k] peut prendre huit amplitudes différentes (soit 23, 3 étant le nombre de bits du CAN). La figure II.1.iii présente également le code numérique sur trois bits (en code binaire naturel) associé à vq[k] en fonction du temps. Généralement, un CAN possède: - une entrée " début de conversion " qui permet de démarrer la conversion (Start) - une sortie " fin de conversion " qui indique que la conversion est terminée (End) - une entrée analogique (courant ou tension) - plusieurs sorties numériques, dont le nombre est fonction de la résolution

3

Il existe différentes technologies: - rampe numérique - rampe analogique - approximations successives - parallèle Convertisseur à rampe analogique :

Une impulsion " Start " remet à zéro le compteur et décharge le condensateur Vs croît linéairement. Lorsque Vs > Vx, le comparateur bascule: la sortie " End " passe à zéro Le compteur se bloque à la valeur numérique correspondant à la grandeur Vx

Ce type de convertisseur nécessite un étalonnage fréquent car les valeurs de R et C se modifient au cours du temps (vieillissement des composants)

Convertisseur à rampe numérique :

L'impulsion " Start " (niveau haut) met à zéro le compteur et bloque la porte " ET " La tension de sortie V' du C.N.A. est nulle

La sortie " End " est au niveau haut

4

Lorsque " Start " retrouve l'état bas, la porte " ET " est validée, le signal d'horloge arrive au compteur qui s'incrémente et fait évoluer la sortie du C.N.A. par bonds successifs de la valeur de la résolution

Quand V' > Vx, la sortie du comparateur passe au niveau bas (End) et bloque le compteur à la valeur numérique représentant Vx

Convertisseur par approximations successives : Ce type de C.A.N. a un temps de conversion beaucoup plus court. De plus la durée de la conversion est fixe, quelle que soit la valeur de la grandeur analogique d'entrée.

Un ordre de " Start " remet à zéro le compteur et autorise l'horloge par enclenchement de la bascule RS Le compteur s'incrémente sur chaque front actif de l'horloge Dans l'exemple ci-dessous, Vx passe de 2v à 5v Convertisseur parallèle : C'est le plus rapide. Il contient un très grand nombre de circuits, ce qui explique son prix plus élevé. Il y a 2n-1 comparateurs, n étant le nombre de bits du convertisseur Dans l'exemple ci-dessous, il y a 7 comparateurs pour un convertisseur 3 bits

5

− Convertisseur Numérique- Analogique Un convertisseur numérique - analogique permet de traduire une information numérique (binaire) en une information analogique, c'est à dire en une grandeur physique (courant, tension...).

Principe de fonctionnement :

6

a0, a1, a2, a3 sont des coefficients pouvant prendre les valeurs 1 ou 0. Par exemple, si le contact a3 est fermé: a3 = 1

Application numérique Soit le nombre binaire N% = a3 a2 a1 a0, R = R' = 10 k , Vref = +8v L'amplificateur opérationnel est tel que: +Vs(sat) = +15v et -Vs(sat) = -15v N% = 0000 (a3, a2, a1, a0 ouverts) donc Vs = 0v N% = 0001 (a0 fermé) donc Vs = -1v N% = 1111 (a3, a2, a1, a0 fermés) donc Vs = -15v

Spécifications techniques La plupart des C.N.A. sont commercialisés sous forme de circuits intégrés - Résolution: elle est exprimée en % de la pleine échelle ou en nombre de bits - Précision: on distingue deux types d'erreurs: - erreur pleine échelle: écart maximal entre la valeur de sortie et la valeur idéale - erreur de linéarité: écart maximal entre le pas de progression réel et le pas de progression idéal - Temps d'établissement: temps que met la sortie pour passer de 0 à la valeur " pleine échelle " (entre 50ns et 10µs), les convertisseurs à sortie " courant " étant généralement plus rapides que les convertisseurs à sortie " tension " - Tension de décalage: tension de sortie présente lorsque les entrées binaires sont à zéro

Réseau R - 2R

Le commun des commutateurs a3, a2, a1 et a0 est toujours la masse, ceci quelle que soit la position des commutateurs

7

iii. Actionneurs

Dans une machine ou un système de commande à distance, semi automatique ou automatique, un actionneur est l'organe de la partie opérative qui, recevant un ordre de la partie commande via un éventuel pré-actionneur, convertit l'énergie qui lui est fournie en un travail utile à l'exécution de tâches, éventuellement programmées, d'un système automatisé.

En d'autres termes, un actionneur est l'organe fournissant la force nécessaire à l'exécution d'un travail ordonné par une unité de commande distante.

Les Actionneurs permettent de transformer l’énergie reçue en un phénomène physique (déplacement, dégagement de chaleur, émission de lumière ...) Exemples d’actionneurs :

- Les vérins : Les vérins permettent d’obtenir un mouvement rectiligne avec plus ou moins de force. Ils peuvent fonctionner soit avec de l’air comprimé (vérin pneumatique), soit avec de l’huile hydraulique (vérin hydraulique).

- Les moteurs électriques : Le moteur électrique permet d’obtenir des mouvements en rotation par le biais de l’axe de sortie du moteur. Cependant, à l’aide d’un système mécanique (crémaillère par exemple), ce mouvement circulaire peut être transformé en un mouvement rectiligne. Egalement à l’aide d’un «réducteur» en sortie du moteur, ce mouvement circulaire peut avoir davantage de force (un couple plus grand).

- Les servomoteurs : Un servomoteur est un moteur électrique «amélioré», dont la

rotation de l’axe de sortie est paramétrable. C’est à dire que l’axe de sortie du servomoteur est capable de s’arrêter sur une position prédéterminée puis de rester sur cette position. Cette position sera indiquée en degrés. Par exemple : moteur d’essuie glace d’une voiture.

- Une électrovanne : C'est un actionneur qui permet de contrôler, à partir d'un courant

électrique, le débit d'un liquide. On l'utilise par exemple dans un système d'arrosage automatique ou bien les robinets automatiques

- Haut parleur ou sirènes : systèmes d’alarme et système de détection d’incendie

8

- Afficheur ou voyant : Permet de créer un échange visuel, soit par un voyant, soit par

un message textuel ou numérique.

- Résistance chauffante : C'est un actionneur qui permet, à partir d'un courant électrique, de produire de la chaleur.

iv. Capteurs

Un capteur est un dispositif transformant l'état d'une grandeur physique observée en une grandeur utilisable, telle qu'une tension électrique, une hauteur de mercure (température), une intensité ou la déviation d'une aiguille.

Le capteur se distingue de l'instrument de mesure par le fait qu'il ne s'agit que d'une simple interface entre un processus physique et une information manipulable. Par opposition, l'instrument de mesure est un appareil autonome se suffisant à lui-même, disposant d'un affichage ou d'un système de stockage des données. Le capteur, lui, en est dépourvu.

Les capteurs sont les éléments de base des systèmes d'acquisition de données. Leur mise en œuvre est du domaine de l'instrumentation.

Les capteurs peuvent être classés par apports énergétiques, par type de sortie et par type de détection.

Apports énergétique :

- Capteurs Passifs : Ils ont besoin dans la plupart des cas d'apport d'énergie extérieure pour fonctionner (exemples : thermistance, photorésistance, potentiomètre, jauge d’extensométrie appelée aussi jauge de contrainte… ). Ce sont des capteurs modélisables par une impédance. Une variation du phénomène physique étudié (mesuré) engendre une variation de l'impédance. Il faut leur appliquer une tension pour obtenir un signal de sortie

9

- Capteurs Actifs : On parle de capteur actif lorsque le phénomène physique qui est utilisé pour la détermination du mesurande effectue directement la transformation en grandeur électrique.

Type de sorties :

- Capteurs analogiques : La sortie est une grandeur électrique dont la valeur est proportionnelle à la grandeur physique mesurée par le capteur. La sortie peut prendre une infinité de valeurs continues. Le signal des capteurs analogiques peut être du type : sortie tension, sortie courant, règle graduée, jauge (avec une aiguille ou un fluide).

- Capteurs numériques : La sortie est une séquence d'états logiques qui, en se suivant, forment un nombre. La sortie peut prendre une infinité de valeurs discrètes. Le signal des capteurs numériques peut être du type train d'impulsions, avec un nombre précis d'impulsions ou avec une fréquence précise, code numérique binaire ;

- Capteurs logiques : La sortie est un état logique que l'on note 1 ou 0. La sortie peut prendre ces deux valeurs. Le signal des capteurs logiques peut être du type : courant présent/absent dans un circuit ; potentiel, souvent 5 V/0 V ; Diode électroluminescente allumée/éteinte ; signal pneumatique (pression normale/forte pression) ;

Type de détection :

- Détection avec contact : le capteur doit entrer en contact physique avec un phénomène pour le détecter.

- Détection sans contact : le capteur détecte le phénomène à proximité de celui-ci.

Caractéristiques d’un capteur : - Etendue de mesure : Valeurs extrêmes pouvant être mesurée par le capteur. - Résolution : Plus petite variation de grandeur mesurable par le capteur. - Sensibilité : Variation du signal de sortie par rapport à la variation du signal d'entrée. - Précision : Aptitude du capteur à donner une mesure proche de la valeur vraie. - Rapidité : Temps de réaction du capteur. La rapidité est liée à la bande passante. - Linéarité : représente l'écart de sensibilité sur l'étendue de mesure

Exemples de capteurs :

- Capteur de position (GPS) - Ecran tactile (capteur de position du doigt) - Capteur d’inclinaison, - Capteur infrarouge : Les barrières de parking - Capteurs de présence ou de mouvement : portes automatiques dans les magasins - Capteur de température - Capteur de fumée - Capteur d’humidité : essuie glace automatique - Capteur de lumière : fonctionne avec une photorésistance

10

v. Bus Dans un système électronique et microinformatique, nous trouverons tout ou partie des sous-ensembles :

- Le circuit microcontrôleur, cœur du système. - Un clavier, un afficheur, des convertisseurs Analogique-numérique et D-A, des ports

d'entrées sorties, des mémoires, etc. Ces composants étant parfois situés sur des cartes séparées, il est hors de question de relier chacun par des nappes de dizaines de fils véhiculant des données en parallèle. C'est ici qu'intervient la notion de bus, pour sérialiser les données et permettre les échanges. Tous ces composants vont dialoguer avec 2 ou trois fils ce qui va beaucoup simplifier la réalisation. Définir un bus consiste donc à fixer les points clefs :

- Combien de signaux seront véhiculés (nombre de fils) - Tensions des niveaux logiques et type des fils et connecteurs (séparés, torsadés, coaxial...) - Vitesse des échanges (horloge) - Format de la trame et codage des informations - Normalisation des adresses des périphériques - Gestion des conflits de bus et dispositions anti-collisions

vi. Ports d’entrées/sortie

Dans un système à base d'un processeur, d'un microprocesseur, d'un microcontrôleur ou d'un automate, on appelle Entrées-Sorties les échanges d'informations entre le processeur et les périphériques qui lui sont associés. De la sorte, le système peut réagir à des modifications de son environnement, voire le contrôler. Elles sont parfois désignées par l'acronyme I/O, issu de l'anglais Input/Output ou encore E/S pour Entrées/Sorties. Les périphériques sont reliés au reste du système par des circuits appelés ports d'entrées et ports de sortie (certains ports peuvent combiner les deux fonctions).

b. Circuits numériques

i. Circuits logiques standards L'ordinateur est un dispositif électronique sophistiqué qui traite l'information mise sous forme d'impulsions électriques traduisant les chaînes binaires utilisées pour représenter les symboles qu’on y introduit codés sous forme d’une suite bits. Rappelons qu’un ordinateur ne comprend que les impulsions électriques. Les traitements, pour leur part, sont essentiellement réalisés à l'aide d'opérations telles l'addition, la soustraction, la multiplication, la division, la comparaison. Plus fondamentalement, les opérations sont composées d'opérations logiques qui sont effectuées par des circuits logiques de base appelés portes. Une porte est en fait un circuit combinatoire à une ou plusieurs entrées et à au moins une sortie. Les conditions aux entrées d'une porte déterminent l'état des sorties. Il existe trois portes de base correspondant aux trois opérations logiques: OU, ET, NON.

11

Par ailleurs, les circuits logiques d’un ordinateur sont divisés en deux catégories suivant leur structure fonctionnelles : les circuits combinatoires et les circuits séquentiels. Circuits combinatoires : Un circuit est dit combinatoire si les sorties ne dépendent que des valeurs assignées aux valeurs d’entrée au moment considéré. Autrement dit, dans un tel circuit, le comportement des sorties peut toujours être exprimé par des fonctions logiques.

Circuits séquentiels : Un circuit est dit séquentiel si les sorties le comportement des sorties dépend des valeurs assignées aux variables ‘entrée et selon son histoire. De tels circuits contiennent une mémoire à côté d’une partie combinatoire. Cette mémoire a pour rôle de conserver l’histoire du circuit, histoire qui peut influencer les sorties pour une nouvelles combinaison de valeurs assignées aux entrées. L’information qui se trouve en mémoire à un moment donné définit l’état du circuit séquentiel. L’état suivant et le comportement des sorties sont déterminés par l’état actuel et la combinaison des valeurs données aux entrées. Par conséquent, un circuit séquentiel se caractérise par une séquence de signaux aux entrées et une séquence d’états pour chaque séquence de signaux appliquées aux entrées.

Exemples de circuits logiques :

- Le semi-additionneur Il s'agit de réaliser un circuit permettant d'additionner 2 bits d'entrée, et d'obtenir comme sortie le résultat de l'addition et la retenue:

12

- L’additionneur Le semi-additionneur permet d'additionner deux bits, et de donner la somme et la retenue. L'additionneur complet tient compte non seulement des deux entrées, mais aussi de la retenue obtenue lors de l'addition des deux valeurs de la position précédente. On a alors, pour l'addition des deux valeurs de position n, les entrées suivantes: xn, yn et Rn-1 (la retenue de l'addition des deux valeurs de la position n-1).

13

Ceci nous donne le circuit logique suivant :

- Le décodeur Un décodeur k bits possède k entrées et 2k sorties. La sortie dont le numéro est donné par les entrées est active (valeur 1) alors que toutes les autres sorties sont inactives (valeur 0).

14

- Le multiplexeur Un multiplexeur k bits permet de sélectionner une entrée parmi 2k disponibles. Un multiplexeur k bits a k + 2k entrées et une seule sortie. Les k premières entrées A0,…,Ak-1 sont appelées bits d'adresses car elles donnent le numéro de l'entrée à sélectionner parmi les entrées B0,…,B2

k-1. La sortie S est alors égale à cette entrée sélectionnée.

Par exemple, le multiplexeur 2 bit a donc 6 entrées A0, A1, B0, B1, B2 et B3 et une seule sortie S. La formule donnant la sortie S en fonction des entrées est la suivante.

S = (A1 . A0 . B3) + (A1 . ¬A0 . B2) + (¬A1 . A0 . B1) + (¬A1 . ¬A0 . B0)

Caractéristiques en tension : Les entrées et les sorties d’un circuit logique sont représentée sous forme de tension. Ci-dessous quelques caractéristiques d’un circuit logique en tension :

- Vih (Voltage Input High) : Il s'agit de la tension (voltage) d'entrée (Input) à partir de laquelle le circuit logique considère qu'un niveau logique "1" (High) lui est appliqué

- Vil (Voltage Input Low) : C'est la tension d'entrée limite jusque laquelle le circuit considère qu'un niveau logique "0" (Low) lui est appliqué

- Voh (Voltage Output High) : C'est la tension de sortie (Output) du circuit logique, à partir de laquelle on considère qu'un niveau logique "1" est délivré.

- Vol (Voltage Output Low) : c'est la tension de sortie limite en dessous de laquelle on considère qu'un niveau logique "0" est délivré.

- Immunité au bruit ou marge de bruit : C'est une marge de protection qui évite qu'une perturbation (un parasite par exemple) ne change le niveau de sortie de la porte logique. Elle correspond à la différence entre Voh et Vil d'une part et entre Vih et Vil

15

d'autre part. Plus cette marge est importante, et plus le circuit peut être utilisé dans un milieu parasité.

- Tension de déchet : C'est la différence de tension entre la tension théorique correspondant respectivement au niveau logique "1" ou au niveau logique "0" et la tension réelle.

Technologiquement, il existe actuellement deux familles prépondérantes de circuits de logique qui correspondent à deux techniques différentes de réalisation sous forme intégrée. Ces deux technologies sont la famille des circuits logiques TTL (Transistor-Transistor Logic) et la famille des circuits logiques CMOS (Complementary Metal Oxide Semi-conductor). Parmi les avantages de ces deux familles, nous retiendrons la faible consommation statique et la grande impédance d'entrée (~109) des CMOS, ainsi que la rapidité de la famille TTL. Transistor-Transistor Logic ou TTL est une famille de circuits logiques utilisée en électronique inventée dans les années 1960. Cette famille est réalisée avec la technologie du transistor bipolaire et tend à disparaître du fait de sa consommation énergétique élevée (comparativement aux circuits CMOS). La technologie TTL est normalisée pour une tension d'alimentation de 5 V. Un signal TTL est défini comme niveau logique bas entre 0 et 0,5 V, et comme niveau logique haut entre 2,4 V et 5 V (ces niveaux varient légèrement entre les différentes séries). L'alimentation des circuits TTL doit être précise : +5 V +-5 %, en comparaison aux circuits CMOS qui ont, eux, une plage de tension d'alimentation bien plus vaste (de +3 à +18 V). La technologie CMOS, ou Complementary Metal Oxide Semiconductor, est une technologie de fabrication de composants électroniques et, par extension, l'ensemble des composants fabriqués selon cette technologie. À l'instar de la famille Transistor-Transistor logic (TTL), ces composants sont en majeure partie des portes logiques (NAND, NOR, etc.) mais peuvent être aussi utilisés comme résistance variable.

ii. Circuits programmables

o Microcontrôleur Un microcontrôleur (en notation abrégée µc, ou uc ou encore MCU en Anglais) est un circuit intégré qui rassemble les éléments essentiels d'un ordinateur : processeur, mémoires (mémoire morte pour le programme, mémoire vive pour les données), unités périphériques et interfaces d'entrées-sorties. Les microcontrôleurs se caractérisent par un plus haut degré d'intégration, une plus faible consommation électrique, une vitesse de fonctionnement plus faible (de quelques mégahertz jusqu'à plus d'un gigahertz)

16

et un coût réduit par rapport aux microprocesseurs polyvalents utilisés dans les ordinateurs personnels. Par rapport à des systèmes électroniques à base de microprocesseurs et autres composants séparés, les microcontrôleurs permettent de diminuer la taille, la consommation électrique et le coût des produits. Ils ont ainsi permis de démocratiser l'utilisation de l'informatique dans un grand nombre de produits et de procédés. Les microcontrôleurs sont fréquemment utilisés dans les systèmes embarqués, comme les contrôleurs des moteurs automobiles, les télécommandes, les appareils de bureau, l'électroménager, les jouets, la téléphonie mobile, etc.

Le processeur est l'élément central d'un système informatique : il interprète les instructions et traite les données d'un programme. Il a besoin de certains éléments externes pour fonctionner :

- une horloge pour le cadencer - de la mémoire pour stocker les variables durant l’exécution du programme (mémoire

vive RAM) et le programme d’une mise sous tension (mémoire morte ROM). - des périphériques (pour interagir avec le monde extérieur).

Ces éléments sont reliés par 3 bus :

- le bus d'adresse qui permet au microprocesseur de sélectionner la case mémoire ou le périphérique auquel il veut accéder pour lire ou écrire une information (instruction ou donnée) ;

- le bus de données qui permet le transfert des informations entre les différents éléments ; ces informations seront soit des instructions, soit des données en provenance ou à destination de la mémoire ou des périphériques ;

- le bus de contrôle qui indique si l'opération en cours est une lecture ou une écriture, si un périphérique demande une interruption pour faire remonter une information au processeur, etc.

17

Traditionnellement, ces composants sont intégrés dans des circuits distincts. Le développement d'un tel système à base de microprocesseur se trouve donc pénalisé par :

- la nécessité de prévoir l'interconnexion de ces composants (bus, câblage, nappes de connexion) ;

- la place occupée physiquement par les composants et les moyens d'interconnexion ; - la consommation énergétique ; - la chaleur dégagée ; - le coût financier.

Les microcontrôleurs améliorent l'intégration et le coût (lié à la conception et à la réalisation) d'un système à base de microprocesseur en rassemblant ces éléments essentiels dans un seul circuit intégré. Un microcontrôleur est donc un composant autonome, capable d'exécuter le programme contenu dans sa mémoire morte dès qu'il est mis sous tension. Selon les modèles et les conditions de fonctionnement, les microcontrôleurs peuvent avoir besoin de quelques composants externes (quartz, quelques condensateurs, parfois une ROM), mais ceci reste très limité. Un microcontrôleur intègre sur un unique circuit intégré :

- un processeur (CPU), avec une largeur du chemin de données allant de 4 bits pour les modèles les plus basiques à 32 ou 64 bits pour les modèles les plus évolués ;

- de la mémoire vive (RAM) pour stocker les données et variables ; - de la mémoire morte (ROM) pour stocker le programme. Différentes technologies

peuvent être employées : EPROM, EEPROM, mémoire flash (la plus récente) ; - souvent un oscillateur pour le cadencement. Il peut être réalisé avec un quartz, ou

un circuit RC ; - des périphériques, capables d'effectuer des tâches spécifiques. On peut mentionner

entre autres : o les convertisseurs analogiques-numériques (CAN) o les convertisseurs numériques-analogiques (CNA) o les générateurs de signaux à modulation de largeur d'impulsion (MLI, ou en

anglais, PWM pour Pulse Width Modulation), o les timers/compteurs (compteurs d'impulsions d'horloge interne ou

d'événements externes), o les chiens de garde (watchdog), (pour s'assurer qu'un automate ou

un ordinateur ne reste pas bloqué à une étape particulière du traitement qu'il effectue. C'est une protection destinée généralement à redémarrer le système, si une action définie n'est pas exécutée dans un délai imparti.)

o les comparateurs (comparent deux tensions électriques), o les contrôleurs de bus de communication.

Le fonctionnement des périphériques peut être paramétré et commandé par le programme et/ou les entrées-sorties. Les périphériques peuvent générer une interruption qui contraint le processeur à quitter le programme en cours pour effectuer une routine de traitement de l’interruption, lorsque l’événement qui la déclenche survient. Les microcontrôleurs peuvent généralement se placer dans un état de sommeil, dans lequel ils présentent une très faible consommation électrique. Un signal envoyé par l'un de leurs périphériques (timer, broche d'entrée-sortie, watchdog, etc.) permet de les faire sortir de cet état de sommeil.

18

Certains microcontrôleurs ont un nombre très restreint de broches, si bien qu'une broche donnée peut correspondre à plusieurs périphériques internes. La fonction choisie doit alors être sélectionnée par logiciel. Le choix des périphériques à intégrer dans un microcontrôleur est délicat. Les fabricants doivent réaliser un compromis entre des besoins contradictoires : utiliser des fréquences élevées, réduire la taille du circuit, apporter des fonctionnalités nombreuses, élaborer une architecture flexible, assurer des coûts modérés, etc. Un microcontrôleur peut effectuer la plupart des instructions machine habituelles, avec certaines restrictions liées à son caractère embarqué (taille restreinte des mots machine, petite taille disponible, etc.). On note cependant quelques particularités. Les capacités mathématiques sont en général particulièrement limitées, réduites à des additions, soustractions et décalages sur des octets pour les plus simples d'entre eux. Les calculs mathématiques évolués doivent donc être ramenés à une succession d'opérations simples portant seulement sur des octets. Des routines mathématiques (petits programmes permettant de réaliser les calculs complexes) ont été développées pour la plupart des microcontrôleurs populaires. Les instructions d'entrée-sortie sont bien développées, de façon à pouvoir :

- lire l'état d'un port d'entrée ; - écrire une information dans le registre d'un port de sortie, qui maintient l'information à

la disposition des circuits extérieurs. Les microcontrôleurs disposent généralement de nombreuses instructions destinées aux opérations sur les bits, de façon à rendre les programmes plus compacts, notamment lorsqu'ils agissent sur une entrée-sortie donnée. Ainsi, un processeur généraliste peut avoir besoin de plusieurs instructions pour tester la valeur d'un bit d'un registre et effectuer un saut si le bit vaut vrai. Cette fonction courante est assurée par une seule instruction dans certains microcontrôleurs. Les modes d'adressage utilisables sont en général semblables à ceux des autres processeurs. De façon générale, les instructions et modes d'adressage disponibles varient fort selon les familles de microcontrôleurs. Les microcontrôleurs représentent la plus grosse partie des ventes dans le marché des microprocesseurs. 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). Une automobile de milieu de gamme est équipée d'au moins 50 microcontrôleurs Le programme d'un microcontrôleur est généralement appelé micrologiciel ou microprogramme. À l'origine, les microcontrôleurs se programmaient en assembleur. Fortement bas niveau (et donc, intrinsèquement optimisé), l'assembleur posa et pose toujours d'énormes problèmes pour la maintenance et l'évolution des logiciels embarqués. Désormais, on utilise de plus en plus des langages de haut niveau, notamment le langage C Des simulateurs sont disponibles pour certains microcontrôleurs, comme l'environnement MPLAB de Microchip. Les développeurs peuvent ainsi analyser le comportement du microcontrôleur et du programme, comme s'il s'agissait du composant réel. Une fois le programme compilé, le fichier binaire doit être envoyé au microcontrôleur. On utilise soit :

19

- un programmateur, pour microcontrôleurs et souvent également d’EEPROM. On parle alors de programmateur universel.

- un programmateur ISP qui a l'avantage de ne pas nécessiter de sortir le microcontrôleur du système électronique complet. Ce type de programmation pourra se faire via le bus de communication standard JTAG ou un autre bus, souvent propriétaire (Microchip par ex. avec sa série PIC16F) et, malheureusement, inadapté au test des cartes lors de la phase de production.

o DSP Un DSP (de l'anglais « Digital Signal Processor », qu'on pourrait traduire par « processeur de signal numérique » ou « traitement numérique de signal ») est un microprocesseur optimisé pour exécuter des applications de traitement numérique du signal (filtrage, extraction de signaux, etc.) le plus rapidement possible . Les DSP sont utilisés dans la plupart des applications du traitement numérique du signal en temps réel. On les trouve dans les modems (modem RTC, modem ADSL), les téléphones mobiles, les appareils multimédia (lecteur MP3), les récepteurs GPS... Ils sont également utilisés dans des systèmes vidéo, les chaînes de traitement de son, partout où l'on reçoit un signal complexe que l'on doit modifier à l'aide du filtrage. Un DSP fournit des instructions usuelles comme la multiplication, l'addition, la soustraction, etc. Mais le jeu d'instruction d'un DSP est aussi optimisé de façon à exécuter des opérations très courantes dans les algorithmes de traitement de signal les plus usuels. Les DSP sont aussi fortement optimisés pour exécuter des boucles le plus rapidement possible. En effet, il n'est pas rare que les programmes de traitement du signal utilisent des boucles, notamment pour parcourir des tableaux. Accélérer ces boucles est donc un enjeu majeur de la conception des DSP. Les DSP sont capables de gérer des boucles FOR en un seul cycle d'horloge. Les DSP supportent souvent des modes d'adressages assez particuliers, qu'on ne retrouve pas sur les autres jeux d'instructions.

20

L'accès à la mémoire est aussi particulièrement optimisé sur les DSP. Nos DSP sont en effet capables d'effectuer plusieurs accès mémoires simultanés. Ils peuvent ainsi effectuer plusieurs lectures ou écritures en parallèle. Pour gérer ces accès mémoires simultanés, un DSP est souvent relié à plusieurs mémoires, ou à des mémoires multiports. 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). Il possède aussi quelques caractéristiques assez spécialisées :

- Seulement des processus parallèles, pas de multitâche. Des contraintes sont imposées car les DSP n'ont qu'une gestion rudimentaire des interruptions quand ils en ont une.

- La possibilité d'être utilisé comme un périphérique accédant directement à la mémoire dans un environnement hôte.

- Peut acquérir les données numériques d'un convertisseur analogique-numérique (CAN ou ADC), appliquer un traitement à ces données et les restituer au monde extérieur grâce à un convertisseur numérique-analogique (CNA ou DAC).

- Pas de mémoire virtuelle, pour diminuer les couts de fabrication et la latence des accès mémoires.

Les DSP peuvent être combinés avec d'autres composants dans le même boîtier. Par exemple, un ou plusieurs DSP peuvent être combinés avec un microprocesseur classique et des convertisseurs ADC et DAC. Ce type d'assemblage (circuits intégrés dédiés) permet de réduire les coûts dans des fabrications de grande série. Dans un appareil équipé de DSP, la vitesse d'exécution des calculs dans le DSP est généralement la partie déterminante de la vitesse d'exécution du travail effectué par la machine. Il s'agit souvent de programmes très courts, de quelques centaines de lignes au maximum dont certaines parties (boucles) doivent être optimisées au maximum. C'est pourquoi beaucoup de programmeurs de DSP utilisent l'assembleur et analysent en détail le schéma d'exécution du code par la machine. Cependant, certains DSP ont une architecture tellement complexe qu'il devient long et difficile pour le programmeur d'optimiser manuellement l'exécution. Il peut alors écrire son programme en C et laisser au compilateur le soin de réaliser l'optimisation du code. S'il le souhaite, le programmeur pourra alors analyser le code généré par le compilateur et y apporter les dernières retouches permettant d'obtenir du DSP la meilleure performance possible. Le choix entre ces deux langages se fera donc en fonction de la complexité du programme, de la vitesse de traitement souhaitée, du nombre de programmeurs qui travailleront sur le projet et du coût du produit. D'autres facteurs comme l'expérience personnelle et les outils que propose le constructeur doivent aussi être considérés.

21

o FPGA Un circuit logique programmable, ou réseau logique programmable, est un circuit intégré logique qui peut être reprogrammé après sa fabrication. Il est composé de nombreuses cellules logiques élémentaires et bascules logiques librement connectables (c'est justement la reconfiguration, ou programmation, du composant qui définit les connexions faites entre portes logiques). Les FPGA (Field Programmable Gate Arrays ou "réseaux logiques programmables") sont des composants VLSI (Very Large Scale Integration: circuits intégrés à très haut niveau d'intégration) entièrement reconfigurables ce qui permet de les reprogrammer à volonté afin d'accélérer notablement certaines phases de calculs. L'avantage de ce genre de circuit est sa grande souplesse qui permet de les réutiliser à volonté dans des algorithmes différents en un temps très court. Le progrès de ces technologies permet de faire des composants toujours plus rapides et à plus haute intégration, ce qui permet de programmer des applications importantes. Les circuits FPGA sont constitués d'une matrice de blocs logiques programmables entourés de blocs d'entrée sortie programmable. L'ensemble est relié par un réseau d'interconnexions programmable. Les FPGA sont bien distincts des autres familles de circuits programmables tout en offrant le plus haut niveau d'intégration logique. L'avantage des FPGA est de pouvoir être configuré sur place, sans envoi du circuit chez le fabricant, ce qui permet de les utiliser quelques minutes après leur conceptions. Les FPGA les plus récents sont configurables en une centaine de millisecondes. La plupart des grands FPGA modernes sont fondés sur des cellules SRAM aussi bien pour le routage du circuit que pour les blocs logiques à interconnecter. 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 (Flip-Flop en anglais). La LUT sert à implémenter des équations logiques ayant généralement 4 à 6 entrées et une sortie. Elle peut toutefois être considérée comme une petite mémoire, un multiplexeur ou un registre à décalage. Le registre permet de mémoriser un état (machine séquentielle) ou de synchroniser un signal (pipeline). Les blocs logiques, présents en grand nombre sur la puce (de quelques milliers à quelques millions en 2007) sont connectés entre eux par une matrice de routage configurable. Ceci permet la reconfiguration à volonté du composant, mais occupe une place importante sur le silicium et justifie le coût élevé des composants FPGA. Afin de pouvoir finaliser un FPGA, il est nécessaire d'utiliser un langage de description matériel ou bien un outil de saisie graphique. Après compilation de cette description, on obtient un fichier de configuration pour le FPGA choisi. VHDL et Verilog sont les deux langages de description les plus répandus.

22

o CPLD Les CPLD (Complex Programmable Logic Device), de conception plus ancienne, utilisent des « macrocellules » logiques, composées d'un réseau combinatoire de portes ET et OU afin d'implémenter des équations logiques. Des bascules sont disponibles seulement dans les blocs d'entrée-sortie. Un composant contient de quelques dizaines à quelques centaines de macrocellules. Comme le routage est fixe, les temps de propagations sont bornés et permettent une fréquence de fonctionnement élevée et indépendante du design. Par contre, l'utilisation des ressources n'est pas optimale (tout terme non utilisé dans une équation logique équivaut à des portes perdues), avec des taux d'utilisation d'environ 25 %. Comparés aux FPGA, les PLD contiennent un nombre relativement petit de portes logiques et les fonctions implémentables sont plus petites et plus simples

o ASIC Un ASIC (acronyme de l'anglais Application-Specific Integrated Circuit, littéralement « circuit intégré propre à une application », ou bien circuit intégré développé pour un client) est un circuit intégré spécialisé. En général, il regroupe un grand nombre de fonctionnalités uniques ou sur mesure. Les circuits ASIC regroupent tous les circuits dont la fonction peut être personnalisée d'une manière ou d'une autre en vue d'une application spécifique, par opposition aux circuits standards dont la fonction est définie et parfaitement décrite dans le catalogue de composants. Les ASIC sont conçus pour une tâche bien précise et cela leur permet d'être plus petits, moins chers, plus rapide et de consommer moins de puissance. D'une manière générale l'utilisation d'un ASIC conduit à de nombreux avantages provenant essentiellement de la réduction de la taille des systèmes. Il en ressort :

• Réduction du nombre de composants sur le circuit imprimé. La consommation et l'encombrement s'en trouvent considérablement réduits.

• Le concept ASIC par définition assure une optimisation maximale du circuit à réaliser. Nous disposons alors d'un circuit intégré correspondant réellement à nos propres besoins.

• La personnalisation du circuit donne une confidentialité au concepteur et une protection industrielle.

• Enfin, ce type de composant augmente la complexité du circuit, sa vitesse de fonctionnement et sa fiabilité.

Dans l'approche des circuits personnalisés, l'inconvénient majeur réside dans le fait du passage obligatoire chez le fondeur ce qui implique des frais de développement élevés du circuit.

iii. Mémoires : SRAM, DRAM, FLASH EPROM, …. Une mémoire est un élément de stockage d'information. Les bits stockés sont organisés en forme de matrice: la dimension de la mémoire est donnée par le nombre de lignes fois la largeur de la ligne. Chaque ligne de la mémoire est appelée un mot. Elle est identifiée par une adresse (numéro de la ligne). Le nombre de lignes est toujours une puissance de deux. Deux opérations sont possibles, toujours sur un mot complet: la lecture (read) et l'écriture (write).

23

Il existe deux grands types de mémoire: - RAM (random-access memory): mémoire volatile

o Statique (SRAM): l'information est conservée tant que la tension d'alimentation est présente

o Dynamique (DRAM): il faut recharger (rafraîchir) périodiquement les cellules de mémoire pour conserver les données

- ROM (read-only memory): mémoire non volatile o mask: le contenu est initialisé au moment de la fabrication et ne peut plus être

modifié o PROM (programmable ROM) ou OTP ROM (one-time programmable): le

contenu peut être modifié une fois par l'utilisateur, à l'aide d'un équipement spécialisé

o EPROM (erasable PROM): le contenu peut être effacé et modifié plusieurs fois

o UV EPROM: le contenu est effacé par des rayons ultra-violets (plusieurs minutes)

o EEPROM (electrically EPROM) ou E2PROM: le contenu est effacé électriquement (quelques millisecondes)

o Flash: le contenu est effacé électriquement et plus rapidement que sur les EEPROM

iv. Système sur puce (SoC)

Un système sur une puce, également souvent désigné dans la littérature scientifique par le terme anglais system on a chip ou son abréviation SoC, est un système complet embarqué sur une seule puce, pouvant comprendre de la mémoire, un ou plusieurs microprocesseurs, des périphériques d'interface, ou tout autre composant nécessaire à la réalisation de la fonction attendue. On peut intégrer de la logique, de la mémoire (statique, dynamique, flash, ROM, PROM, EPROM, EEPROM), des dispositifs mécaniques (capteurs), électroniques, chimiques ou biologiques ou des circuits radio. Ils permettent une réduction des coûts, une adaptation fine des composants et une réduction de la consommation. Ils nécessitent la cohabitation de technologies incompatibles et la collaboration de compétences variées.

24

3. Composants logiciels

a. Système d’exploitation Un système d'exploitation est un programme qui gère le matériel. Il sert d'intermédiaire entre l'application logiciel et le matériel informatique. Un système d'exploitation embarqué est un système d'exploitation pouvant être installé sur un système embarqué. Ce système d'exploitation est conçu avec des spécificités à gérer afin de répondre à des besoins spécifiques au type de système embarqué. Dans le cadre d'un système d'exploitation embarqué, l'interface homme-machine pour pouvoir interagir avec peut être bien spécifique (clavier à digicode, écrans de smartphones,...) Étant la plupart du temps hors de portée humaine, un système d'exploitation embarqué doit avoir un niveau de robustesse bien au dessus des exigences d'un système d'exploitation de bureau. Les systèmes d'exploitation embarqués nécessitent une très grande fiabilité, ainsi que de bonnes performances. Des systèmes embarqués peuvent avoir des contraintes d'ordre temporel. Pour y remédier, il existe des systèmes d'exploitation temps réel qui fournissent des services et des primitives qui peuvent garantir les délais d’exécution souhaités. Exemples :

- Systèmes mobiles : Android, BlackBerry OS, Firefox OS, iOS, Palm OS, HP webOS, Windows Mobile, Windows Phone.

- Systèmes temps réel : FreeRTOS, Linux embarqué, LynxOS, QNX, RTLinux - Automobile : Windows Embedded Automotive, iOS in the car - Capteurs en réseau : TinyOS, Contiki, LiteOS - Carte à puce : java card, multos