Composants logiciels et matériels d`un système

Transcription

Composants logiciels et matériels d`un système
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.
Composants logiciels et matériels d’un système embarqué
1. Introduction
− 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.
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’autoalimenter (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.
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
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.
1
2
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
Il existe différentes technologies:
- rampe numérique
- rampe analogique
- approximations successives
- parallèle
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.
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 :
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
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
3
4
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
− 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 :
Le commun des commutateurs a3, a2, a1 et a0 est toujours la masse, ceci quelle que soit la
position des commutateurs
5
6
iii. Actionneurs
-
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.
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).
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 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
7
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
8
-
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
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.
Exemples de capteurs :
-
v. Bus
Dans un système électronique et microinformatique, nous trouverons tout ou partie des sousensembles :
- 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
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
9
10
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:
11
- 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).
12
- 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,…,B2k-1. La sortie S est alors égale à cette entrée sélectionnée.
Ceci nous donne le circuit logique suivant :
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)
- 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).
Caractéristiques en tension :
Les entrées et les sorties d’un circuit logique sont représentée sous forme de tension. Cidessous 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
13
14
-
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.
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.
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)
15
16
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.
17
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 :
18
-
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.
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.
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.
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.
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.
19
20
o FPGA
o CPLD
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.
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).
21
22
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.
23
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
24

Documents pareils