Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
SYSTEMES PROGRAMMES
I. Généralités
– l’architecture de Von Neumann qui utilise une mémoire unique pour les programmes
et les données et basée sur un bus unique. Celui-ci véhicule les instructions et les données.
(Fig.1) ;
– l’architecture de Harvard où la mémoire pour les programmes est séparée de la
mémoire pour les données ; cette architecture est basée sur deux bus. Un bus est utilisé pour
les données et un autre pour les instructions. (Fig.2).
Avantages et inconvénients.
-Le processeur est l’organe principal du système, c’est lui qui exécute le programme qu’on lui
a demandé.
-La mémoire (RAM et ROM) permet de stocker le programme et les données (initiales et
III.2. La mémoire :
1°) Principe:
Il faut voir la mémoire comme un tableau, où les lignes contiennent les données, et le numéro
de la ligne du tableau est l’adresse.
Les données sont groupées :
Un groupe de 4 bits s’appelle un quartet,
Un groupe de 8 bits s’appelle un octet,
Un groupe de 16 bits s’appelle un mot, …
Un groupe de 32 bits s’appelle un double mot, …
2°) Capacité d’une mémoire :
La capacité d’une mémoire représente le nombre total de bits et le format correspond à la
longueur des mots. Le nombre de bits d'adresse k définit le nombre total de mots de la
mémoire, si n est le nombre de bits par mot, la capacité de la mémoire est donnée par :
Capacité = 2k mots = 2k x n bits
Cette capacité est exprimée en multiple de 1024 ou kilo. La table suivante résume la valeur
des autres préfixes utilisés pour exprimer les capacités des mémoires :
4° ) Mémoire morte :
a) Définition :
La mémoire morte, aussi appelée ROM (Read Only Memory, soit mémoire à lecture seule)
est une mémoire informatique impossible à modifier.
La mémoire morte n'est pas volatile, elle ne perd pas ses données, en l'absence de courant
électrique, contrairement à la mémoire vive.
b) Utilisation :
Les mémoires mortes sont utilisées, entre autres, pour stocker :
les informations vitales d'un ordinateur (exemples :BIOS, instructions de démarrage,
microcode)
Puisqu'elles ne peuvent pas être modifiées, il n'y a pas de risque d'effacement accidentel par
l'utilisateur.
des tables de constantes ou bien des tables de translation d'une valeur par une autre.
des jeux vidéo de consoles d'ancienne génération.
c) Types de ROM :
Il existe différents types de ROM en fonction de la possibilité de les programmer ou de les
effacer :
Les ROM (Read Only Memory) dont le contenu est défini lors de la fabrication.
Les PROM (Programmable Read Only Memory) sont programmables par l'utilisateur,
mais une seule fois.
Les EPROM (Erasable Programmable Read Only Memory) sont programmables par
l'utilisateur. Effaçables par une machine spéciale, la mémoire doit donc être facilement
démontable de son support.
Les EEPROM (Electrically Erasable Programmable Read Only Memory) sont
programmables par l'utilisateur. Elles sont effaçables électriquement.
Les UVPROM (Ultra Violet Programmable Read Only Memory) sont programmables par
l'utilisateur. Elles sont effaçables par bombardement d'ultra violet.
5°) Synthèse :
Les sorties sont en haute impédance lorsque le circuit n’est pas validé.
1°). Généralités :
Le processeur, (ou CPU, Central Processing Unit, « Unité centrale [de traitement] » en
anglais) est le composant essentiel d'un Système (Micro) Programmé. Il exécute les
programmes qui permettent d’effectuer les principaux calculs. C’est en grande partie de lui
que dépendent les performances du système. Il permet d'effectuer des opérations
arithmétiques (additions, soustraction, multiplications, …) et logiques (Non, Ou, Et, OU
3°). Fonctionnement :
Les microprocesseurs sont cadencés par une horloge. Au milieu des années 1980, les
microprocesseurs fonctionnaient de 4 à 8 MHz.
Les microprocesseurs actuels sont optimisés pour exécuter plus d'une instruction par cycle
d'horloge, ce sont des microprocesseurs avec des unités d'exécution parallélisées. De plus ils
sont dotés de procédures qui « anticipent » les instructions suivantes avec l'aide de la
statistique.
Dans la course à la puissance des microprocesseurs, deux méthodes d'optimisation sont en
concurrence :
1. La technologie du jeu d'instructions simplifié (RISC, Reduced Instruction Set Computer),
rapide avec des instructions simples, facile à fabriquer et dont on peut monter la vitesse de
l'horloge sans trop de difficultés techniques.
2. La technologie appelée CISC (Complex Instruction Set Computer), dont chaque
instruction complexe nécessite plus de cycles d'horloge, mais qui a en son coeur beaucoup
d'instructions pré-câblées.
Néanmoins, avec la considérable augmentation de la taille des puces électroniques et la
5.3.Temps d’exécution
Chaque instruction nécessite un certain nombre de cycles d’horloges pour s’effectuer. Le
nombre de cycles dépend de la complexité de l’instruction. Il dépend également de l’endroit
où le processeur doit récupérer la donnée. Il est plus long d’accéder à la mémoire qu’aux
registres du processeur.
La durée d’un cycle d’horloge dépend de la fréquence d’horloge utilisée. Plus l’horloge bat
rapidement, plus un cycle est court et plus on exécute un grand nombre d’instructions par
seconde.
On distingue plusieurs familles de jeux d'instructions, selon la façon dont les instructions
accèdent à leurs opérandes, leur codage et leur complexité. Les jeux d'instructions des
processeurs diffèrent aussi dans la façon dont sont spécifiés les opérandes des instructions.
6°). Performances
Les performances d'un ordinateur mesurent le temps qui lui est nécessaire pour effectuer un
traitement donné. Trois éléments influencent ces performances :
la puissance du processeur ;
la mémoire disponible ;
le temps consacré aux opérations d'entrées/sorties.
Le temps nécessaire pour un traitement informatique quel qu'il soit est toujours déterminé par
un de ces trois éléments mais celui des entrées/sorties est généralement prépondérant. En
effet, le temps consacré aux opérations I/O se compte en millisecondes alors que celui
consacré aux instructions effectuées par le processeur se compte en nanosecondes.
La taille de la mémoire est surtout importante dans la mesure où elle permet de réduire le
nombre d'opérations d'entrées/sorties, soit parce qu'une part plus importante des programmes
applicatifs peut résider en mémoire, réduisant ainsi les phénomènes de pagination, soit parce
qu'une partie de cette mémoire peut-être utilisée comme tampon (mémoire cache) pour le
stockage des flux de données des opérations I/O.
la charge du processeur (i.e. son taux d'occupation), qui fournit les données sortantes
ou traite les données entrantes ;
la charge du dispositif d'entrée/sortie, qui émet ou reçoit les données (on parle
généralement des lectures/écritures notamment pour les accès disques).
Si les ressources CPU ou I/O sont insuffisantes lors de l'exécution d'un ou plusieurs
traitements simultanés, on parle de saturation.
L’adressage mémoire se base sur la structure ci-dessous constituant la structure d’un système
minium à µp :
C'est une extraction des fils d'adresses, dirigées vers une unité de décodage qui contrôle les
broches Chip Select des unités raccordées sur les bus d'adresses et données. Le CPU est le
processeur, le PIO le contrôleur d'entrées/sorties parallèle et SIO le contrôleur
d'entrées/sorties série. Sur un ordinateur plus «étoffé» on trouvera plutôt des contrôleurs de
bus (PCI etc.).
Suivant le nombre de fils que possède le bus d'adresse d'un microprocesseur, on peut
déterminer la taille mémoire maximum qu'il peut adresser. Par exemple s'il possède 16 fils
d'adresse, il pourra accéder à 64 KO (216Octets) de mémoire.
Le bus d'adresse est donc décodé pour contrôler la ligne chip select des puces qui y sont relié.
Il faut donc construire un circuit à 6 entrées (de A10 à A15) et 2 sorties CSROM et CSRAM qui
contrôleront chacune la broche Chip Select de la ROM et de la RAM.
Il est possible de partiellement décoder l'adresse, dans cet exemple seul un inverseur est
utilisé.
Dans l'exemple précédent, on remarque que le bit A12 est discriminant. On peut donc tout
simplement l'utiliser pour partiellement décoder l'adresse : on économisera des circuits. On
notera que l'adresse 0xFxxx sélectionnera la RAM, alors qu'il n'y a pas de RAM à cette
adresse.
a. l’état logique des lignes A12 à A15 qui sélectionnent la mémoire est :
A15A14A13A12=0010
74LS138
Réponse :
A15=1, A14=1 et A13=0. Alors la plage d’adresses est: $C000 à $DFFF.
A15 B Y0 Table de
A14 A Y1 CS vérité de U2
Y2
B A sortie
Y3
E CS
0 0 Y0
DECODEUR 0 1 Y1
CPU D'ADRESSE MEM 1 0 Y2
6809 1 1 Y3
V. Plan mémoire
Un plan mémoire (en anglais memory map) est une représentation graphique de ce que le
microprocesseur est susceptible de trouver à telle ou telle adresse. Le plan mémoire est la
traduction graphique du décodage d’adresses.
Exemple ; Soit le tableau suivant indiquant les plages d’adresses des circuits composant un
système à µp 6809 de Motorola :
Ce type d’interface, répartie sur plusieurs ports (maximum 8 bits pour un µp 8 bits), permet de
prendre en compte des états logiques appliqués en entrée (état de capteurs) ou de générer des
signaux binaires en sortie (commande d’actionneurs). Les broches de ces ports peuvent donc
être configurées en entrée ou en sortie, avec différentes options (résistances de rappel, sorties
collecteurs ouverts, interruption...). La configuration ainsi que l’état logique de ces broches
est obtenue par des opérations d’écriture ou de lecture dans différents registres
associés à chaque port. On trouve généralement :
Un registre de direction pour une configuration en entrée ou en sortie,
Un registre de donnée recopiant les états logiques de chaque broche de
port,
Un registre d’option permettant plusieurs configurations en entrée ou en
sortie.
Le 6821 de Motorola ou le 8255 d’Intel sont des interfaces parallèles programmables : elles
peuvent être configurée en entrée et/ou en sortie par programme.
Exemple : transmission du caractère ’E’ (code ASCII 45H = 01000101B) sous forme série
selon la norme RS232 :
Entrées/sorties programmées
Interruptions
Cette technique est utilisée lorsque le processeur doit réagir rapidement à un changement
d'état d'un port d'entrée. Le périphérique prévient le processeur par une ligne d'interruption
prévue à cet effet. Le processeur interrompt la tâche en cours, saute dans le sous-programme
destiné à gérer la demande spécifique qui lui est adressée ; à la fin du sous-programme, le
processeur reprend l'exécution du programme principal là où il l'avait laissée et donne un
résultat cohérent.
Cette technique, connue souvent par ses initiales DMA (Direct Memory Access), est utilisée
lorsque l'on doit procéder à un transfert rapide d'un grand nombre de données entre, par
exemple, un lecteur de CD et un disque dur. Plutôt que de transférer les octets d'abord vers un
registre du processeur, puis seulement vers le disque dur, les octets sont transférés directement
d'un périphérique à l'autre sans passer par les registres du processeur. Le transfert des données
est organisé par un circuit spécial appelé contrôleur DMA, qui prend la place du processeur
pendant le transfert et gère les bus d'adresses et de contrôle.
V. Généralités
1. Du microprocesseur au microcontrôleur
Le microcontrôleur est un dérivé du microprocesseur. Sa structure est celle des systèmes à
base de microprocesseurs. Il est donc composé en plus de l’unité centrale de traitement, d’une
mémoire (mémoire vive RAM et mémoire morte ROM), une (ou plusieurs) interface de
communication avec l’extérieur matérialisé par les ports d'entrée/sortie.
En plus de cette configuration minimale, les microcontrôleurs sont dotés d'autres circuits
d’interface qui vont dépendre du microcontrôleur choisi à savoir les systèmes de comptage
(TIMER), les convertisseur analogique/numérique (CAN) intégré, gestion d’une liaison série
ou parallèle, un Watchdog (surveillance du programme), une sortie PWM (modulation
d’impulsion),…
4. Familles de microcontrôleurs
Il existe plusieurs familles de microcontrôleurs dont les plus connues sont :
Atmel : AT; familles AT89Sxxxx, AT90xxxx, …
Motorolla : famille 68HCxxx, …
Microship : PIC ; familles 12Cxxx, 16Cxxx, 16Fxxx, 18Fxxx, …
Intel : famille 80C186XX
STMicroelectronics : famille STX
Analog Devices : famille ADuC
Nous allons nous intéresser dans le cadre de ce cours à la famille Microchip PIC
(Programmable Integrated Circuit) de moyenne gamme (MIDRANGE).
Selon les besoins de l’application et les modèles de microcontrôleurs disponibles dans une
famille (PIC, ATMEL, INTEL) il peut comprendre en plus :
des blocs analogiques (CAN, CNA, filtres, amplificateurs, comparateurs analogiques,
…..)
des blocs numériques (temporisateurs, modulateurs, multiplexeur, UART,…..)
Un chien de garde : système anti-plantage du microcontrôleur. Il s’assure qu’il
n’y ait pas d'exécution prolongé d’une même suite d’instruction.Un compteur
préchargeable se décrémente régulière au rythme de la fréquence d’horloge. Si aucun
préchargement n’est effectué avant qu’il n’atteigne la valeur “0” un Reset est généré
relançant ainsi le microcontrôleur. Il faut donc penser à précharger régulièrement ce
chien de garde par programme lorsqu’il est activé.
2. Programmation du microcontrôleur
Les microcontrôleurs sont des composants programmables. Ils font ce que leur dit de faire le
programme et rien d'autre. Le programme est une suite d'instructions. Elles sont codées en
binaire pour pouvoir être exécutées par le microcontrôleur (code machine).
Pour écrire un programme, il existe plusieurs solutions mais chacune nécessite une forme de
traduction.
On peut écrire le programme dans un langage de programmation de haut niveau (quelque
chose proche de l'Anglais) et ensuite utiliser plusieurs programmes pour le traduire en code
machine.
On peut écrire le programme dans un langage proche du code machine. C'est un langage de
bas niveau appelé assembleur. Il est alors aisé de le traduire en code machine.
La première méthode est habituellement plus rapide et plus facile pour le programmeur, mais
sa traduction n'est pas optimisée (la taille du programme est plus grande). La deuxième est
plus longue pour le programmeur mais elle permet de produire un code optimisé.
Dans tous les cas, la programmation débute par un algorithme ou un algorigramme qui décrit
l'enchaînement des actions à réaliser. A partir de là, le programmeur traduit chaque étape de
l'algorithme en langage évolué, comme le langage C ou en assembleur.
L’ALGORITHME.
Définition :
L’algorithme est une série des actes ou opérations élémentaires, qu’il faut exécuter en
séquence pour accomplir une tache quelconque, en suivant un enchaînement strict.
Représentation normalisée :
l’algorithme s’établit par une succession de phrases simples. L’algorithme utilise ce que l’on
appelle des structures algorithmiques.
L’ALGORIGRAMME
Définition :
L’algorigramme ou ordinogramme ou organigramme est une représentation graphique et
normalisée de l’algorithme.
Ex: P = U x I
Répéter
Structure alternative :
2. Le choix du microcontrôleur
Lorsqu’on décide de développer un nouveau produit à base de μC, puisque l’offre est très vaste,
plusieurs paramètres vont orienter notre choix vers un produit plutôt qu’un autre :
1) Le prix : il y a de grand écart de prix entre les produits, liés par exemple à la
taille et au type de mémoire, ainsi qu’à la nature et le nombre de périphériques.
2) Les périphériques : on peut se demander si toutes les fonctions décrites dans le
cahier des charges seront réalisées par le μC ou s’il faut ajouter des
périphériques externes.
3) La taille des espaces mémoire : L’espace mémoire programme sera-t-il
suffisant pour l’application ?
4) La consommation électrique : déterminant pour des produits destinés à
fonctionner sur batterie.
5) Les outils de développement de programmes : peut-on développer en langage
évolué ? Existe-t-il un environnement de développement intégré (éditeur,
assembleur, compilateur, simulateur/debugger) ?
6) Expérience/savoir faire.