Professional Documents
Culture Documents
I- Préambule
Le microprocesseur et son compagnon le microcontrôleur sont devenus des
éléments incontournables en instrumentation, mais ils ont progressivement été complétés,
par le biais de diverses approches technologiques, par d'autres composants numériques.
Il faut tout d'abord corriger une idée fausse largement répandue par les médias : ce
n'est pas le marché de l'informatique qui constitue le principal débouché du
microprocesseur. L'informatique, et plus particulièrement le monde PC, est dominé par 3
fabricants de composants électroniques, dont Intel qui se taille actuellement la part du lion.
Mais le marché du microprocesseur, plusieurs centaines de fabricants, est d'un tout autre
ordre de grandeur et en 1998, derniers chiffres connus, 99% des microprocesseurs ont été
destinés au marché des systèmes embarqués, c'est à dire essentiellement de
l'instrumentation et du contrôle.
III- Historique
• 1632 Oughtred en Angleterre invente la règle à calcul
• 1642 Pascal (F) imagine sa machine à calculer
• 1666 Moreland (GB) identifie la multiplication comme une suite d'additions
• 1770 Hahn (D) crée une machine à cylindre
• 1820 Babbage (GB) initie ses premiers travaux
• 1833 Babbage invente le concept de calculateur programmé, c'est à dire
l'enchaînement automatique des opérations
1
La machine analytique de Charles Babbage
L'ENIAC
• 1948 Bardeen, Brattain, Shockley (USA) découvrent l'effet transistor aux Bell Labs
• 1949 première machine IBM à cartes perforées
2
• 1968 Dreyfus (F) première exploitation d'un système multiprocesseurs (Centre de
Calcul Scientifique de l'Armement à Arcueil, machine UNIVAC 7108)
• 1972 la compagnie INTEL (USA) invente le microprocesseur environ 2 ans après le
premier circuit intégré
• 1986 la même lance le 80386
• 1990 les premiers circuits périphériques configurables (selon le concept FPGA)
• 2000 la barrière du GHz est franchie pour des circuits à base de silicium (AMD et
Intel).
Par contre l'emploi qu'on en fait est réellement différent : Un CRAY est employé à
du calcul scientifique ou à de la gestion bancaire, tandis qu'un micro-ordinateur s'il peut
certes faire des calculs ou assurer la gestion d'un cabinet médical sera aussi
essentiellement employé à des applications d'informatique industrielle.
Micro-système
3
V- Environnement d’un µP
Un microprocesseur est le composant essentiel d'un micro-système. Il présente
divers avantages : - moins de composants
- modification aisée du programme
- consommation réduite. En technologie CMOS avec quelques mW on
peut avoir un système très puissant.
2- L'environnement du µP
- Mémoires ROM et RAM : stockage de données et du programme applicatif
- Périphériques : autres dispositifs reliés au µP par le biais d'un coupleur
d'interface.
3- Fonctionnement simplifié du µP
Explication du fonctionnement d'un µP relativement simple (typiquement 8 bits).
a- Constitution
Un µP comporte 3 parties principales : une unité de contrôle, une unité arithmétique
et logique (ALU) et un certain nombre de registres, le tout relié par un réseau complexe de
bus interne muni de nombreux aiguillages.
b- Cycle Fetch
Un µP sous tension va travailler, mais seulement si on lui en donne l'ordre en
"levant un drapeau". Ensuite le µP peut démarrer. Admettons que le compteur de
programme (CP) contienne la valeur 0800H (en hexadécimal sur 16 bits). Ce nombre
représente l'adresse de la première instruction à effectuer. Pour identifier cet ordre le µP
va devoir en premier lieu aller le chercher (to fetch en anglais) ce qui implique toute une
succession d'opérations élémentaires. Notons qu'en interne le bus du µP est sur 8 bits, ce
qui va impliquer 2 phases pour transmettre une adresse qui comporte 16 bits. On va donc
avoir les opérations suivantes :
• transfert de l'octet de poids faible du CP dans le registre d'adresse
• transfert de l'octet de poids fort du CP dans le registre d'adresse
• envoi d'un ordre de lecture à la mémoire centrale (RD)
• attente de WAIT puis
• transfert du contenu du poids faible du CP vers l'ALU
• incrémentation de 1 et retour dans le CP
• transfert du poids fort du CP dans l'ALU et addition de la retenue éventuelle de
l'opération précédente, puis retour dans le CP
• simultanément la donnée est transférée de la mémoire vers le registre de
données via le bus de données
c- Registre d'instruction
Le mot chargé dans le registre d'instruction va être redistribué vers un décodeur
d'adresse interne à l'UCT permettant d'accéder à la MMP (mémoire de micro-programme).
d- Déroulement du micro-programme
• chargement de la donnée dans le registre d'instructions de l'UCT
• décodage, c'est à dire association de cette donnée (8 bits) avec le contenu d'un
compteur par 16 (4 bits) ce qui donne un mot de12 bits
• ce mot sert d'adresse pour la ROM interne du µP (mémoire de micro-programme),
laquelle est constituée de registres de 32 bits.
• le contenu du registre 32 bits correspondant va être envoyé sur un bus à 32 fils.
5
Les processeurs Motorola
I- Avant-Propos
L’évolution des microprocesseurs a été, depuis leur création quelque peu
anecdotique, fulgurante. Elle a connu l’euphorie de la jeunesse avec le foisonnement des
nouveaux produits. Elle a connu des périodes d’interrogation avec la remise en cause de
l’architecture. Elle connaît une période de maturité relative avec la stabilisation de
quelques grands concepts (mais cette maturité, ou du moins la stabilité qui en découle,
est, selon toute évidence, un état provisoire). Les premiers produits ont ouvert des
horizons nouveaux qui ont justifié la profusion. Intel, Motorola, Rockwell, Zilog, Texas, NS,
Fairchild et bien d’autres encore, se sont lancés à la conquête du marché. Certains sont
devenus (dans le domaine général) marginaux, d’autres ont tout simplement abandonné,
d’autres encore se sont spécialisés ; deux géants se sont affrontés à coups d’avancées
technologiques et d’annonces médiatiques, et ils ont proposé des produits d’un niveau de
sophistication tel que l’on conçoit mal de les surpasser sans remettre en cause le principe.
Nous avons atteint avec les processeurs Intel et Motorola, l’asymptote du concept CISC
(Complex Instruction Set Computer). Coté Motorola, citons :
- Les processeurs : 6800 - 6802, 6809, 68000, 68020, 68030 …
- Les circuits de la périphérie : PIA 6821, ACIA 6850, DUART 68681, USART …
- Les microcontrôleurs : 6805, 68HC11, 68302, 68331, 68332, 68340 ...
II- Introduction
A- Qu’est-ce qu’un microprocesseur CISC?
Dans la foule des types de processeurs actuellement utilisés, les CISC sont
apparus les premiers; ils ont comme principale caractéristique de mettre à disposition du
programmeur un jeu d’instructions très développé et un choix de modes d’adressage
important. C’est le processeur qui s’adapte aux besoins de l’algorithme et non l’inverse
(comme ce sera le cas dans la famille RISC).
B- Architecture de Communication
1- Les signaux
Figure 1
Figure 2
Un périphérique peut n’être relié qu’à quelques unes des lignes de contrôle (par
exemple une mémoire n’est pas susceptible de générer une situation événementielle).
L’architecture de communication est donc définie par les trois bus et paramétrée
par la taille des deux premiers et la nature des signaux du troisième.
7
2- Le système à microprocesseur
Un système est une combinaison entre un microprocesseur et divers périphériques.
La description de son fonctionnement est faite dans un programme. On distingue deux
types de programmes :
- Le programme général définissant, entre autres, le fonctionnement des
périphériques, qui est figé. Il peut éventuellement contenir la définition des modes
d’appel ou de chargement des programmes non liés intrinsèquement à la
machine.
- Le programme applicatif qui caractérise l’application en cours de fonctionnement
sur la machine.
Pour essayer d’apporter à ces définitions un aspect concret on peut s’appuyer sur
l’exemple du micro ordinateur qui, lors de sa mise sous tension va exécuter un programme
(intrinsèquement lié au matériel) qui notamment initialise tous les périphériques (et en
particulier le contrôleur de disque), ensuite il va charger, depuis le disque, un système
d’exploitation ou bien attendre une information de la part de l’utilisateur pour choisir le
système d’exploitation à charger. Le premier programme cité est figé, le second est libre.
L’application a besoin de stocker pour une durée au plus égale à son temps
d’exécution, des données relatives aux traitements en cours, c’est bien sur dans la
mémoire vive qu’elle effectuera ces stockages.
Le monde extérieur interagit avec l’application en lui envoyant des stimuli (données)
et en en recevant d’elle. Le micro ordinateur reçoit des données du clavier, des liaisons
série, du contrôleur de disque, et en émet vert les liaisons série, l’écran, le contrôleur de
disque, entre autres. Il faut une adaptation électrique formelle et temporelle qui est
réalisée par les circuits appelés génériquement Interfaces d’entrée/sortie (on utilise
également l’abréviation anglo-saxonne IO qui signifie Input Output).
8
C- Le modèle générique de programmation
La programmation est une succession d’appels d’instructions auxquelles on attribue
des opérandes :
L’exécution d’une instruction fait appel, soit à des données venant d’un
périphérique, soit à des résultats intermédiaires (issus d’un calcul précédent). Un
processeur CISC possède un unique bus de données, il ne peut donc effectuer l’opération
suivante :
Il lui faudrait, pour pouvoir faire cela, voir simultanément trois emplacements, or il
n’en voit qu’un par l’intermédiaire de son bus de données. Il utilise pour résoudre ce
problème une mémoire interne qu’on appelle Registre de données. L’instruction ci-dessus
est alors décomposée de la manière suivante :
9
Un registre d’adresse présente en outre un avantage certain dans un dialogue avec
un périphérique (sous réserve que l’on dispose d’un nombre suffisant de registres
d’adresse). Le fait d’affecter à un registre l’adresse du périphérique permet de ne plus
avoir besoin d’aller lire l’adresse dans le programme, mais en interne, ce qui constitue un
gain de temps appréciable. On peut comparer le fonctionnement du microprocesseur à
notre propre fonctionnement ; il est plus rapide d’utiliser une donnée qu’on a en tête que
d’aller lire cette donnée dans un livre. Par exemple sur un 68000 on consommera 12
cycles d’horloge pour générer une adresse fournie par le programme, alors qu’une
adresse contenue dans un registre d’adresse sera générée en 8 cycles. Il s’agit de
registres d’adresse d’usage général, mais le processeur contient également des registres
d’adresse spécialisés. Ces registres sont de deux types. Un registre unique est appelé
Pointeur de programme. Il sert à localiser dans la mémoire programme la prochaine
instruction à exécuter. La fonction attribuée à l’autre type de registre spécialisé peut se
comprendre à l’aide de l’analogie suivante :
Les opérateurs d’évaluation des conditions sont du type <, >, =, >0, <0, etc... Le
Status contient des témoins de résultats d’évaluation que l’on va pouvoir tester pour
décider de la poursuite en séquence ou de la rupture. Prenons comme exemple l’un de
ces témoins (en anglais flag) présent dans tous les microprocesseurs, c’est le témoin de
zéro Z. Chaque opération positionne Z.
10
Copier le contenu d’une adresse dans un registre
positionne Z à 1 si le contenu de l’adresse recopiée est 0.
2- Le 6802
Il ne diffère du 6800 que par deux points :
- Il contient 128 octets de RAM interne adressée de $00 à $7F.
- Il possède un état de repli en faible consommation (sur batterie ou pile)
dans lequel la RAM interne est maintenue.
3- Le 6809
Il réalise un progrès considérable par rapport au 6800. Son architecture interne se
compose, vue par le programmeur, de :
• L’ALU
• Un registre de données sur 16 bits pouvant être utilisé comme deux registres
sur 8 bits, assurant la compatibilité avec le 6800. On appelle le registre de 16
bits l’accumulateur D et ses deux moitiés l’accumulateur A (octet fort) et
l’accumulateur B (octet faible).
• 2 registres d’adresse d’usage général sur 16 bits appelés les index X et Y.
• Un registre d’adresse sur 16 bits pouvant être utilisé soit en usage général,
soit comme pointeur de pile.
• Un pointeur de pile dédié sur 16 bits.
• Un pointeur de programme sur 16 bits.
• Un status sur 8 bits tous utilisés.
4- Le 68000
Le concept change radicalement, il n’y a plus de compatibilité avec les processeurs
antérieurs.
Son modèle de programmation comporte
• L’ALU
• Huit registres de données sur 32 bits (utilisables également sur 16 ou 8 bits)
• Sept registres d’adresse sur 32 bits (dont 24 seulement sont utilisables)
• Deux pointeurs de pile sur 32 bits (dont 24 seulement sont utilisables)
• Un pointeur de programme sur 32 bits (dont 24 seulement sont utilisables)
• Un status sur 16 bits
5- Le 68010
Il est passé quelque peu inaperçu alors qu’il apporte par rapport au 68000 des
fonctionnalités intéressantes.
Les registres de transfert entre espaces (SFC, DFC) qui sont liés à l’existence des
modes utilisateur et superviseur. La encore nous abordons un domaine un peu délicat à
expliquer actuellement. Il est possible d’utiliser l’état du processeur pour décoder des
adresses de blocs de mémoire, ainsi on peut dire: dans l’état utilisateur l’adresse 1000 est
13
dans un certain pavé de mémoire, dans l’état superviseur elle se trouve dans un autre
pavé, l’utilisateur ne peut donc pas voir la mémoire réservée au système d’exploitation.
Mais si le système d’exploitation qui a lui tous les droits veut lire des données dans
l’espace utilisateur et le recopier dans son propre espace, il doit indiquer dans les registres
appropriés à quel espace appartient l’adresse à laquelle il accède faute de quoi il n’accède
qu’à son propre espace.
L’architecture de communication est identique à celle du 68000.
6- Le 68020
C’est un nouveau bond en avant qui est effectué, mais la compatibilité avec le
68000 reste assurée.
Au modèle de programmation du 68010 on ajoute :
- Un troisième pointeur de pile
- Deux registres pour contrôler et adresse la mémoire cache.
7- Le 68030
Il apporte par rapport au 68020 une unité de gestion de mémoire paginée (PMMU)
intégrée, un bus synchrone, et une mémoire cache de données interne de 256 octets.
Ceci concerne la partie visible pour le programmeur. Mais une autre nouveauté
invisible celle là apporte des accélérations importantes dans les traitements. Alors que
presque tous les CISC ont une architecture Von Neumann, le 68030 a quand à lui une
architecture Harvard, c’est à dire en première approximation qu’il accepte un certain
parallélisme interne cachant des temps d’exécution (on peut faire simultanément une
lecture un calcul et une écriture).
Son modèle de programmation comporte les mêmes éléments que le 68020
augmentés du registre de contrôle de mémoire paginée et du registre d’adressage de
cette même mémoire paginée.
14
Figure 7- Registres internes : 6800, 6802, 6809, 68000, 68010
B- La notion de Microcontrôleur
L’objectif d’un microcontrôleur est de diminuer les interconnexions de circuits,
sources de plus-values et de pannes. Pour cela on va intégrer sur la même puce de
silicium le microprocesseur et un certain nombre de périphériques.
Comme le microcontrôleur universel n’existe pas il est nécessaire de trouver un
compromis, il est donc rare qu’une application d’un certain niveau se contente des
périphériques internes du microcontrôleur, c’est néanmoins possible dans des applications
comme l’électroménager ou la domotique, et dans les applications de très grande diffusion
15
(par exemple les montres) pour lesquelles on n’hésitera pas à fabriquer le microcontrôleur
sur mesures.
Parmi les périphériques que l’on va intégrer on trouve :
- La mémoire RAM
- La mémoire ROM ou plus souvent OTPROM
- La mémoire EEPROM
- Des ports de liaisons parallèles
- Des ports de liaison série
- Des compteurs temporisateurs
- Des convertisseurs numériques analogiques et analogiques numériques
- Des contrôleurs de DMA, etc...
Toutefois les microcontrôleurs Intel occupaient une place plus importante sur le
marché de cette époque. Sans remettre en cause l’intérêt de ces derniers (leur très faible
coût), la famille 68HC11 a fait progresser dans des proportions importantes le marché de
Motorola. Parallèlement au développement de la famille 68HC11, Motorola a, à la
demande de sa clientèle, développé des microcontrôleurs ayant un cœur 16 et 32 bits
(68000 68020), c’est la famille des 683XX.
1- Le 6805
Son créneau d’application est centré sur le « bas niveau », il n’est donc pas
nécessaire de lui attribuer un cœur très évolué. Il est en effet plus simple que celui du
6800, mais possède quelques instructions le rendant plus apte à traiter des applications
de type « Tout ou Rien » (Instructions de test et forçage de bits).
Le modèle de programmation comporte :
- Un registre de données sur 8 bits l’Accumulateur A
- Un registre d’adresse sur 8 bits l’Index X
- Un pointeur de programme sur 11 bits PC
- Un pointeur de pile sur 5 bits SP (invisible à la programmation)
- Un status sur 5 bits.
2- Le 68HC11
Beaucoup plus récente que la précédente cette famille bénéficie des progrès en
matière d’intégration sur le silicium. Les périphériques intégrés dans le modèle applicatif
ne constituent toutefois pas une véritable révolution, en revanche, leurs fonctionnalités
sont étendues, et le cœur est beaucoup plus évolué. Une autre différence majeure : les
68HC11 possèdent des bus d’extension optionnels, et peuvent donc enrichir l’application
(au détriment bien sur d’un surcroît de câblage.
3- Le 68302
Le 68302 est un microcontrôleur de haut de gamme et possède un cœur 68000. Il
s’agit d’un processeur orienté communication multiprotocoles. Le cœur 68000 correspond
au modèle de programmation décrit plus haut. Le modèle applicatif se décompose en trois
parties :
- Le cœur 68000
- Le bloc du système intégré
- Le processeur de communication
L’originalité du composant réside aussi bien dans le système intégré que dans le
processeur de communication et dans les liens qui les unissent. Tout d’abord ce
processeur de communication gère trois canaux sériels asynchrones, un canal synchrone
et un port auxiliaire. Un processeur RISC avec un programme paramétrable par
l’utilisateur assure le fonctionnement de cette partie. Les différents canaux peuvent
accéder individuellement à plusieurs protocoles, et être associés à plusieurs couches
physiques de réseaux, par simple configuration. La communication entre les ports sériels
et l’application gérée par le cœur 68000 se fait par l’intermédiaire d’une RAM double-
accès interne, voyant d’un côté les bus du processeur RISC, de l’autre ceux du 68000.
Vingt huit lignes de communication avec le monde extérieur peuvent être utilisées,
soit comme les lignes de dialogue et de protocole des ports sériels, soit comme des
entées soties parallèles TOR. Elles sont programmables individuellement.
Le schéma en trois blocs se trouve en figure 13. On notera que les bus du 68000
sont disponibles à l’extérieur, le contrôleur n’étant pas autonome. Il faut au minimum lui
adjoindre de la ROM externe et de la RAM (l’utilisation de la RAM interne devant être
réservée à la communication).
18
Figure 13- Schéma bloc du 68302
a- Le système intégré
Le 68302 est destiné en priorité aux concentrateurs de réseaux puisqu’il peut gérer
simultanément trois voies avec des protocoles différents. Bien que puissant le 68000 est
chargé par cette tâche, il est donc vraisemblable qu’il se comportera en coprocesseur d’un
processeur central, déchargeant ce dernier de toute gestion de réseau. Pour faciliter la
communication rapide un contrôleur de DMA est intégré, lequel est totalement
indépendant des ports sériels et totalement disponible pour le programmeur.
19
b- Le processeur de communication
C’est la partie originale du composant. Elle comporte essentiellement six types de
blocs :
- Le processeur RISC
- Trois canaux de communication série indépendants qui supportent
différents protocoles de couche liaison tels que HDLC SDLC, le protocole
standard UART, le protocole Communication binaire synchrone (BISYNC),
etc...
a- Rôle du SIM
Quelle que soit la configuration du SIM le bus de données (16 bits) ainsi que 19 bits
du bus d’adresse (A0 à A18) ainsi que quelques bits du bus de contrôle sont disponibles à
l’extérieur. Les bits d’adresse A19 à A23 ainsi qu’une grande partie des bits de contrôle
peuvent être vus à travers des lignes de port configurables. Par exemple la ligne
d’adresse A19 peut être, par programmation du SIM, vue de l’extérieur, ou masquée, le bit
du port parallèle correspondant étant alors réservé à un « chip select » pré décodé, ou à
une sortie tout ou rien d’usage général. La véritable originalité du composant repose donc
sur le SIM qui permet de multiples configurations, s’adaptant à presque toutes les
situations.
Les lignes d’interconnexion de ces ports avec le monde extérieur font parties des
lignes configurables par le SIM, elles partagent donc les bornes avec d’autres fonctions
(chip select).
Toute application ne recourt en général qu’à une partie des fonctions potentielles du
GPT, c’est pourquoi les connexions de ces fonctions au monde extérieur sont faites par
l’intermédiaire d’un port dont les lignes, individuellement peuvent être programmées
également en entrées sorties tout ou rien d’usage général.
5- Le 68340
C’est également un composant non autonome, car lui non plus ne dispose pas de
mémoire interne. Cela rend indispensable la visibilité externe du bus processeur. Le cœur
est un 68020 dont quelques rares instructions ont été supprimées.
Le modèle applicatif comporte six modules principaux :
- Le cœur (68020)
- Deux modules compteurs temporisateurs
- Un module double liaison série asynchrone comparable à un DUART
- Un module contrôleur de DMA deux canaux
- Un module de gestion de bus comparable au SIM du 68331
a- Le SIM
Les blocs périphériques (ports série, canaux DMA et timers) possèdent leurs lignes
dédiées de communication avec l’extérieur. Le SIM gère les bus d’extension et les
fonctions auxiliaires qui peuvent partager les lignes des bus d’extension. Ces fonctions
sont les requêtes et accusés de réception d’interruption, les chip select (blocs d’adresses
pré-décodés) et les ports parallèles tout ou rien. Le schéma des lignes gérées par le SIM
est en figure 18.
Sept lignes de requêtes d’interruption sont utilisables, IRQ1 à IRQ7. Chacune d’elle
est associée à un niveau de priorité. Le contrôleur d’interruption interne se charge de créer
les signaux IPL nécessaires au cœur. A chaque interruption est associé un accusé de
réception IACK1 à IACK7. La programmation du SIM permet d’affecter ces lignes
individuellement, soit au fonctions d’interruption, soit aux chip select, soit aux ports
22
parallèles, soit au complément du bus d’adresse A24 à A 31, le contrôleur d’interruption
peut donc être totalement ou partiellement inhibé.
En ce qui concerne le 68340, c’est un produit de la société française AIM qui nous a
permis de nous pencher sur sa mise en oeuvre. Il s’agit, comme dans le cas précédent,
d’une unité centrale d’automate programmable. Le 68340 a été retenu ici pour la
puissance du coeur et la simplification de la circuiterie externe par la richesse des chip
select programmables. En outre un automate programmable doit disposer d’une liaison de
connexion à la console de programmation que le 68340 est apte à fournir, tout en laissant
une liaison applicative disponible. Par ailleurs le bloc compteur temporisateur met à
disposition des fonctionnalités qui simplifient l’implantation d’un noyau multitâches sur
l’automate.
24