You are on page 1of 63

P ET C : UNE INTRODUCTION

0) OBJET DE CE DOCUMENT............................................................................................ 6 1) MICROPROCESSEUR ET SYSTME MICROPROCESSEUR...................................... 6


1.1) Gnralits ........................................................................................................................... 6 1.1.1) Microprocesseur ou P................................................................................................................. 6 1.1.2) Systme P ................................................................................................................................... 6 1.1.3) Microprocesseur (P) / microcontrleur (C) ......................................................................... 7 1.2) Acquisition, restitution de linformation : entres/sorties (E/S) dun systme P ........ 8

2) PRINCIPE DE FONCTIONNEMENT DUN SYSTME P ......................................... 8


2.1) Instruction, programme....................................................................................................... 8 2.2) Excution du programme .................................................................................................... 9

3) FLUX DE CONCEPTION .............................................................................................. 10


3.1) Obtention du code binaire ................................................................................................ 10
Traducteur.............................................................................................................................................................. 10 Assembleur (Assembler en anglais) ................................................................................................................. 10 Compilateur ........................................................................................................................................................... 11

3.2) Essais / Mise au point ........................................................................................................ 11 3.2.1) Essais matriels : Solution mulateur....................................................................................11 3.2.2) Essais matriels : Autres solutions.............................................................................................12 3.3) Programmation .................................................................................................................. 12

4) STRUCTURE DUN SYSTME MINIMUM P ......................................................... 12


4.1) Les constituants dun systme minimum P ................................................................. 12 4.2) Les 2 architectures dun systme P .............................................................................. 13

5) SYSTME MINIMUM ARCHITECTURE VON NEUMAN ........................................ 14


5.1) Structure dun systme minimum ..................................................................................... 14 5.2) Fonctionnement simplifi du systme minimum ............................................................. 15 5.2.1) Addition ..........................................................................................................................................15
Recherche de linstruction ................................................................................................................................. 15 Excution de linstruction ................................................................................................................................... 16 Calcul de ladresse de linstruction suivante.................................................................................................. 16

5.2.2) Transfert dune donne du P vers lextrieur.......................................................................16


Recherche de linstruction ................................................................................................................................. 17 Excution de linstruction ................................................................................................................................... 17 Calcul de ladresse de linstruction suivante.................................................................................................. 18

5.2.3) Saut une adresse .......................................................................................................................19


Recherche de linstruction ................................................................................................................................. 19 Excution de linstruction et calcul de ladresse de linstruction suivante.............................................. 19

6) SYSTME MINIMUM ARCHITECTURE HARVARD ................................................ 19


6.1) Structure d'un systme minimum ..................................................................................... 19 6.2) Fonctionnement simplifi .................................................................................................. 20 6.2.1) Transfert de la constante dans le registre W..........................................................................20 6.2.2) Transfert constante / excution -- Addition / Recherche du code....................................21 6.2.3) Addition / Excution -- Transfert / Recherche du code.....................................................22
P et C : une introduction P. Morenton 25/11/06

6.2.4) Transfert / Excution Saut / Recherche du code...............................................................22 6.2.5) Saut / Excution............................................................................................................................23

7) LMENTS DE LA STRUCTURE INTERNE DUN MICROPROCESSEUR................... 23


7.1) Organisation interne simplifie dun P........................................................................... 23 7.2) Unit Arithmtique et Logique (UAL) et registres associs............................................. 24 7.2.1) Rle de lUAL ................................................................................................................................24 7.2.2) Rsultat de la dernire opration / Bits dtat.......................................................................25 7.2.3) Oprande(s) et rsultat de lopration / REgistres Associs ..............................................25 7.2.4) Exemples de fonctionnement dUAL dun P Motorola .....................................................25
Addition .................................................................................................................................................................. 26 Dcalage sur un mot binaire ............................................................................................................................. 26

7.3) Squenceur......................................................................................................................... 26 7.3.1) Horloge du squenceur..............................................................................................................27 7.3.2) dure dexcution dune instruction / Cycle machine ........................................................27 7.3.3) Exemple de dcomposition en cycle machine......................................................................27
1er cycle machine ................................................................................................................................................ 28 2me cycle machine............................................................................................................................................ 28

7.4) Quelques registres ............................................................................................................. 29


Registre dadresse ................................................................................................................................................ 29 Compteur Ordinal (CO) ..................................................................................................................................... 29 Registre Instruction (RI)....................................................................................................................................... 30

8) LES INSTRUCTIONS ET LES MODES DADRESSAGE ................................................ 30


8.1) Catgories dinstructions ................................................................................................... 30 8.2) Nombres doprandes ....................................................................................................... 30 8.3) Jeux dinstructions reduit / etendu ................................................................................... 31 8.4) Format des instructions ..................................................................................................... 31 8.5) Modes dadressage............................................................................................................. 32 8.5.1) criture des instructions et des modes dadressage langage d'assemblage ...................33 8.5.2) Quelques exemples de modes dadressage...........................................................................33
Adressage inhrent ou implicite ...................................................................................................................... 33 Adressage immdiat ............................................................................................................................................ 34 Adressage relatif ................................................................................................................................................... 34 Adressage index et utilisation de tableau..................................................................................................... 34 Adressage tendu (Motorola) ........................................................................................................................... 34 Adressage registre (Intel) .................................................................................................................................... 35

9) DROULEMENT DUN PROGRAMME....................................................................... 35


9.1) La pile et le droulement dun programme...................................................................... 35 9.2) Droulement normal ......................................................................................................... 37 9.2.1) Droulement simplifi lors de lappel dun sous programme ............................................37 9.2.2) Droulement dtaill...................................................................................................................38 9.2.3) criture et appel de sous programme dans le programme source...................................38 9.3) Interruption ........................................................................................................................ 38 9.3.1) Prsentation...................................................................................................................................38 9.3.2) Droulement Simplifi dune procdure dinterruption......................................................40 9.3.3) Droulement dtaill...................................................................................................................40 9.3.4) identification des sources dinterruption.................................................................................41 9.3.5) Prise en compte des interruptions............................................................................................42 9.3.6 Traitement des interruptions / Imbrication des interruptions..............................................42
P et C : une introduction P. Morenton 25/11/06

9.3.7) Priorit des interruptions ............................................................................................................43


Dtermination de la priorit dune interruption ........................................................................................... 43

9.3.8) Les interruptions dans le programme source.........................................................................43 9.3.9 Acquittement dune interruption ...............................................................................................43 9.4) Lancement du programme et rinitialisation ................................................................... 44 Commande externe de la RZ..............................................................................................................44 Adresse de dpart du programme principal......................................................................................44 9.5) Surveillance du droulement du programme : le chien de garde................................... 45
Chien de garde externe ...................................................................................................................................... 45 Chien de garde interne ....................................................................................................................................... 45

10) STRUCTURE INTERNE / MODLE LOGICIEL DUN P OU CPU DUN C ......... 46


10.1) Structure interne .............................................................................................................. 46 10.2) Modle logiciel................................................................................................................. 47

11) LES PRINCIPALES INTERFACES DUN P ................................................................ 47


11.1) Introduction ..................................................................................................................... 47 11.2) Connexion dun botier dinterface................................................................................. 48 11.3) Interfaces dE/S parallle................................................................................................. 48 11.3.1) changes sans protocole de communication......................................................................48 11.3.2) changes avec protocoles de communication ...................................................................49 11.4) Interfaces sries................................................................................................................ 49 11.4.1) Gnralits ..................................................................................................................................49 11.4.2) Interfaces sries asynchrones..................................................................................................50 11.4.3) Interfaces srie synchrones......................................................................................................51 11.5) Convertisseur Analogique Numrique (CAN)................................................................ 52 11.5.1) CAN dans un systme P .....................................................................................................52 11.5.2) CAN intgr dun C ................................................................................................................52 11.5.3) CAN externe pour un C.........................................................................................................52 11.6) Convertisseur Numrique Analogique (CNA)................................................................ 52 11.6.1) CNA dans un systme P .....................................................................................................52 11.6.2) CNA dans un C ........................................................................................................................53 11.6.3) CNA externe pour un C.........................................................................................................53 11.7) COMPTEUR-Temporisateur (Timer) ............................................................................... 53

12) STRUCTURE MATRIELLE DUN SYSTME P/C............................................... 54


12.1) Bus dadresses et bus de donnes................................................................................... 54 12.1.1) Mode circuit seul / mode tendu ....................................................................................54 12.1.2) Multiplexage adresses/donnes .............................................................................................54 12.2) Composants annexes au P ou C et connexions ......................................................... 55

13) STRUCTURE DU PROGRAMME SOURCE EN LANGAGE DASSEMBLAGE.......... 57


13.1) Gnralits ....................................................................................................................... 57 13.2) Exemple de structure dun fichier source ....................................................................... 58
Structure de la section programme ................................................................................................................. 58

14) RSUM ...................................................................................................................... 59


Gnralits ................................................................................................................................. 59 Flux de conception .................................................................................................................... 59
P et C : une introduction P. Morenton 25/11/06

Systme minimum ..................................................................................................................... 60 lments de la structure interne dun P ................................................................................. 60 Jeu dinstructions......................................................................................................................................61 Modes dadressage..................................................................................................................................61 Droulement dun programme................................................................................................ 62 La pile..........................................................................................................................................................62 Droulement normal...............................................................................................................................62 Interruption................................................................................................................................................63

P et C : une introduction

P. Morenton

25/11/06

Table des illustrations Fig. 1 : Systme microprocesseur............................................................................................................... 7 Fig. 2 : Exemple de systme avec ses E/S ..................................................................................................... 8 Fig. 3 : Rangement des instructions dans la mmoire programme......................................................... 9 Fig. 4 : Cycle de base dun microprocesseur ............................................................................................... 9 Fig. 5 : Conception dun programme...........................................................................................................10 Fig. 6 : Codes correspondant linstruction DEC $4000 du 68HC11.................................................11 Fig. 7 : Architecture Von Neuman................................................................................................................13 Fig. 8 : Architecture Harvard..........................................................................................................................13 Fig. 9 : Systme minimum P......................................................................................................................14 Fig. 10 : Premier exemple de programme ..................................................................................................15 Fig. 11 : ADDA, recherche du code opration..........................................................................................15 Fig. 12 : ADDA, recherche de loprande ..................................................................................................16 Fig. 13 : STAA, recherche du code opration............................................................................................17 Fig. 14 : STAA, recherche du poids fort de ladresse................................................................................17 Fig. 15 : STAA, recherche du poids faible de ladresse............................................................................18 Fig. 16 : STAA, excution de linstruction ...................................................................................................18 Fig. 17 Systme minimum Harvard...............................................................................................................19 Fig. 18 exemple de programme ....................................................................................................................20 Fig. 19 MOVLW, recherche du code instruction ......................................................................................21 Fig. 20 : ADDWF, recherche du code instruction / MOVLW, excution ...........................................21 Fig. 21 : MOWF, recherche du code instruction / ADDWF, excution ..............................................22 Fig. 22 : GOTO, recherche / MOVWF, excution ...................................................................................22 Fig. 23 : GOTO, excution .............................................................................................................................23 Fig. 24 : structure d'un P ...............................................................................................................................24 Fig. 25 : UAL et accumulateurs .....................................................................................................................25 Fig. 26 : Addition de laccumulateur et dune donne ............................................................................26 Fig. 27 : Dcalage gauche de laccumulateur.........................................................................................26 Fig. 28 : Recherche du code opration .......................................................................................................28 Fig. 29 : Recherche de loprande................................................................................................................28 Fig. 30 : Calcul puis stockage du rsultat....................................................................................................29 Fig. 31 : Codage dune instruction................................................................................................................31 Fig. 32 : Format des instructions dans les P 8 bits ..................................................................................32 Fig. 33 : exemple de pile.................................................................................................................................35 Fig. 34 : tat de la pile aprs empilement ...................................................................................................36 Fig. 35 : tat de la pile aprs rcupration automatique du PC ............................................................36 Fig. 36 : Exemple dinitialisation de la pile ..................................................................................................36 Fig. 37 : Principe dune interruption.............................................................................................................39 Fig. 38 : Sauvegarde puis restitution du contexte de A ...........................................................................40 Fig. 39 : liaisons de demandes dinterrupion dans C .............................................................................41 Fig. 40 : liaisons de demandes dinterruption dans un systme P ...................................................41 Fig. 41 : Structure interne simplifie du 80186 dIntel.............................................................................46 Fig. 42 : modle logiciel CPU 68HC11 .......................................................................................................47 Fig. 43 : Liaisons avec poigne de main entre interface et priphrique ............................................49 Fig. 44 : mission / rception de donnes srie........................................................................................50 Fig. 45 : Transmission avec horloge rception correcte et incorrecte .................................................51 Fig. 46 : liaison srie synchrone.....................................................................................................................51 Fig. 47 : 2 modes de fonctionnement tendu du 80C196 .....................................................................55 Fig. 48 : bus adresses/donnes et sigaux de contrle du 80C196 .......................................................55 Fig. 49 : 68HC11 en mode tendu avec mmoire externe....................................................................56

P et C : une introduction

P. Morenton

25/11/06

MICROPROCESSEURS ET MICROCONTROLEURS : UNE INTRODUCTION

0) OBJET DE CE DOCUMENT
Ce document est un support de cours destination d'un public d'lectroniciens. Il permet dintroduire progressivement les diffrentes notions pour la comprhension du fonctionnement dun systme microprocesseur (ou microcontrleur) simple (8 bits ou 16 bits voir 5.1). Il ne sagit pas dun document synthtique. Ce document est orient pour permettre par la suite une mise en uvre dun systme P. Ce document a t initialement rdig pour servir dans 2 cas : introduction l'tude des Ps et Cs en classe de STS lectronique. Dans ce cas, certaines parties du document ne sont pas utilises. support de rvision pour formation post BTS. Certaines parties du document donnent quelques indications pour un approfondissement ultrieur. Des TPs et TDs complmentaires assurent une bonne assimilation. Seule la 1re partie de ce document ncessite une lecture linaire. Le reste est lire en partie en fonction des TPs envisags, avec retours en arrire pour approfondissement ultrieur.

1) MICROPROCESSEUR ET SYSTME MICROPROCESSEUR 1.1) GNRALITS


1.1.1) MICROPROCESSEUR OU P Un microprocesseur ou P est un composant (un circuit intgr) n du dveloppement de linformatique et de llectronique. Il comprend plusieurs units fonctionnelles autrefois ralises par de nombreux composants dans les anciens ordinateurs ou actuellement par quelques composants dans les ordinateurs rcents dassez grande puissance. Lemploi du P ne se limite pas aux ordinateurs. Les Ps et dautres composants intgrant quelques fonctions supplmentaires, les microcontrleurs ou Cs, sont employs pour les contrles de processus industriels et les applications embarques ou enfouies (embedded) (automobile, photocopieur, ). Un P est capable denchaner automatiquement des oprations arithmtiques, logiques, etc. sur des donnes binaires. Lenchanement de ces oprations est command par un programme enregistr dans une mmoire. 1.1.2) SYSTME P Un systme P permet de raliser un traitement automatique de linformation ; le terme information devant tre compris comme lment significatif : parole, image, mesure dune

P et C : une introduction

P. Morenton

25/11/06

grandeur physique, etc. Un systme P comprend le P proprement dit et des composants annexes.

Informations d'entre

Traitement automatique SYSTEME A P

Informations,actions de sortie

Fig. 1 : Systme microprocesseur

Un systme P procde priodiquement une acquisition dinformation, un traitement automatique de cette information puis sa restitution. Exemples Balance lectronique acquisition : prix au kg (Pkg) saisi partir dun clavier, masse de larticle (M) issue dun capteur et d'un conditionnement (amplification, ) traitement : calcul du prix payer (P) P = M Pkg restitution : affichage de la masse, du prix au kg et du prix payer, etc. Asservissement en vitesse dun moteur acquisition : vitesse souhaite (consigne C ) et vitesse relle du moteur ( ) traitement : calcul de la commande appliquer au moteur en fonction de la diffrence = C restitution : pilotage de linterface de puissance de commande du moteur. 1.1.3) MICROPROCESSEUR (P) / MICROCONTRLEUR (C) Au dbut de la commercialisation des Ps, un systme minimum tait obligatoirement constitu de plusieurs circuits intgrs. Les Cs sont apparus ensuite, lorsque lintgration des composants a fait des progrs. Actuellement, dans un circuit intgr, un C regroupe lquivalent dun systme P dans un mme botier. Un systme P peut tre constitu de nombreux composants (mmoires, etc.) ; il est facilement extensible. Les constituants d'un C sont figs1. Les Cs sont plutt ddis aux applications qui ne ncessitent pas une grande quantit de calculs complexes, mais qui demandent beaucoup de manipulations dentres / sorties. Cest le cas des contrles de processus, tel que par exemple le contrle des organes dune photocopieuse. Les systmes P sont plutt rservs pour les applications demandant beaucoup de traitement de linformation et assez peu de gestion dentres / sorties. Les ordinateurs sont raliss avec des systmes P.

Certains Cs actuels ont des modes de fonctionnement qui les rapprochent des Cs : on peut rajouter des composants externes comme avec un systme P. La distinction P / C n'est pas toujours trs marque.
P. Morenton 25/11/06

P et C : une introduction

1.2) ACQUISITION, RESTITUTION DE LINFORMATION : ENTRES/SORTIES (E/S) DUN SYSTME P


Un systme P na dutilit que sil peut changer des informations avec le milieu extrieur ; il dispose donc dentres/sorties (notes E/S). Un systme P comprend une unit de traitement dont les E/S sont de type binaire (0/1). Le cur de cette unit est le P. En gnral les E/S sont groupes par paquet, ou mot (frquemment de 8 bits) ; on parle alors de port dE/S. Un port 8 bits peut correspondre plusieurs E/S (tat dun poussoir, dun dtecteur de passage, commande dun relais, etc.) ou une seule information code sur 8 bits (mesure de la vitesse dun moteur issue dun C.A.N. par exemple). Pour traiter dinformations analogiques, un systme P doit possder des convertisseurs (Convertisseur Analogique Numrique -CAN- et Convertisseur Numrique Analogique CNA-), comme sur la figure suivante.

Systme P
Entres logiques Unit de traitement Entre analogique C.A.N. C.N.A. Sortie analogique Sorties logiques

Fig. 2 : Exemple de systme avec ses E/S

2) PRINCIPE DE FONCTIONNEMENT DUN SYSTME P 2.1) INSTRUCTION, PROGRAMME


Le traitement automatique de linformation consiste en lexcution par le P dune suite de tches lmentaires appele instructions. Lensemble de ces instructions constitue le programme. Prenons lexemple de lasservissement de vitesse prsent prcdemment. Le programme correspondant, trs simplifi, ressemble ce qui suit : acqurir le mot reprsentatif (octet) de la consigne (ici la vitesse de rotation dsire), acqurir le mot reprsentatif de la vitesse relle du moteur, soustraire loctet reprsentatif de la vitesse de loctet de la consigne, multiplier le rsultat par 32 (cest un exemple), envoyer le rsultat de la multiplication sur la sortie de commande du moteur, Chacune des lignes prcdentes correspond une instruction. En pratique, chaque type de P peut comprendre un ensemble limit dinstructions parfaitement dfinies ; on parle de jeu dinstructions du P. A chacune de ces instructions correspond un code (sur un ou plusieurs mots mmoire) connu du P.

P et C : une introduction

P. Morenton

25/11/06

Le P est donc obligatoirement associ une mmoire (mmoire programme) qui contient les codes des instructions excuter rangs dans des mots mmoires des adresses successives (sauf en cas de rupture de squence).
Ad+5 Ad+4 Instruction sur 2 octets Ad+3 Ad+2 Ad+1 Ad Instruction 5 Instruction 4 Instruction 3 Instruction 3 Instruction 2 Instruction 1 Sens d'excution

Fig. 3 : Rangement des instructions dans la mmoire programme

Si le programme est fig , on emploie une mmoire de type ROM ; au contraire si ce dernier doit tre chang rgulirement comme cest le cas pour les logiciels dapplications des microordinateurs on utilise une RAM dans laquelle on charge au pralable ( partir dune disquette par exemple) les codes du programme. La mmoire programme dun C est souvent de petite taille (qqs kO ou qqs dizaines de kO), alors que celle associe un P peut tre trs importante (plusieurs MO ou beaucoup plus).

2.2) EXCUTION DU PROGRAMME


Une fois le programme plac dans la mmoire associe au P, le P fonctionne de la faon suivante : Un P dcrit en permanence le cycle dcrit cicontre. Ainsi, si on considre lexemple de la figure 3, le P : place ladresse Ad sur le bus dadresses (voir plus loin) et lit loctet ainsi adress en ROM, excute linstruction correspondante, calcule ladresse de linstruction suivante Ad+1, place Ad+1 sur le bus, excute linstruction 2, etc. Remarque : le cycle dcrit ici correspond des P simples. Certains P peuvent, dans certains cas, excuter une instruction pendant quils recherchent la suivante (voir plus loin Systme minimum architecture Harvard). Il existe mme des possibilits plus volues qui ne peuvent tre traites dans le cadre de cette introduction.

Recherche de l'instruction excuter en mmoire

(cycle Fetch)

Dcodage et excution de l'instruction

Calcul de l'adresse de la prochaine instruction

Fig. 4 : Cycle de base dun microprocesseur

P et C : une introduction

P. Morenton

25/11/06

3) FLUX DE CONCEPTION
La conception dun ensemble comprenant un systme P ou un C peut se dcomposer en 3 parties : obtention du code placer en mmoire programme partir du cahier des charges essais / mise au point programmation industrielle de la mmoire associe au P ou interne au C Chacune de ces trois parties est brivement mentionne ici. Chacune fait lobjet de dveloppement dans un autre document.

3.1) OBTENTION DU CODE BINAIRE


Le code plac en mmoire est dit code excutable ou code binaire ou encore code objet.

La dmarche simplifie suivie pour concevoir un programme, donc pour obtenir la suite de codes correspondante est prsente ci-contre : Lcriture du programme et la traduction se font sur un micro-ordinateur. Le rsultat est un fichier qui contient le code excutable.

ANALYSE

Grandes lignes du logiciel et du matriel

Ecriture du programme SOURCE dans un langage (C, Pascal, etc.)

Traducteur (assembleur ou compilateur)

Code excutable
Fig. 5 : Conception dun programme

Traducteur Terme gnral pour dsigner un logiciel capable de traduire le SOURCE (crit dans un langage facilement comprhensible par le programmeur) en un fichier EXECUTABLE comprhensible par le P. Assembleur (Assembler en anglais) Traducteur pour langage bas directement sur le jeu dinstruction du P. A chaque instruction du P correspond un mnmonique. Celui-ci est en gnral la contraction du ou des mots dsignant laction exerce par linstruction. Le mnmonique permet donc dvoquer facilement ce que
P et C : une introduction P. Morenton 25/11/06

10

ralise linstruction. Le langage de programmation utilis est le langage d'assemblage (Assembly language). Par exemple, en langage d'assemblage 68HC11 (microcontrleur 8 bits de MOTOROLA) la ligne suivante : DEC $4000 signifie : dcrmenter (do le mnmonique DEC) la donne enregistre ladresse 4000h. Aprs assemblage puis chargeMmoire ment en mmoire on obtienprogramme drait la suite de codes dcrite figure 6. Le programme source, crit en langage d'assemblage (assembly Instruction sur language), est constitu des 3 octets mnmoniques et d'autres informations prsentes plus loin.
Ad+2 Ad+1 Ad
00 40 7A

Adresse de la donne dcrmenter (sur 16 bits - 2 octets)

Code de l'opration DEC

Fig. 6 : Codes correspondant linstruction DEC $4000 du 68HC11

Remarque : On utilise frquemment le terme assembleur la place de langage d'assemblage . On dira alors un programme crit en assembleur. Chaque P ses instructions propres et donc des mnmoniques diffrents si bien quun programme crit en assembleur ne peut tre directement utilis avec un P autre que celui pour lequel il a t crit. Compilateur Traducteur pour langage indpendant du jeu dinstruction (C, Pascal, FORTRAN, etc.). Par exemple, en C lopration prcdente pourrait scrire : DATA = DATA - 1; avec DATA (nom donn la donne) enregistre ladresse 4000h. Cette criture est bien indpendante du P choisi et peu tre compile aussi bien pour un 68HC11 (elle produit alors les codes prcdents), que pour un 8031, quun pentium, etc.

3.2) ESSAIS / MISE AU POINT


Aprs avoir obtenu le code excutable, il existe plusieurs possibilits pour la mise au point. On commence gnralement par vrifier que le logiciel est correct d'un point de vue fonctionnel, avec un logiciel de simulation sur ordinateur, puis on procde aux essais avec le matriel. 3.2.1) ESSAIS MATRIELS : SOLUTION MULATEUR Cest la solution la plus performante et la plus utilise industriellement pour des P 8/16 bits (et mme plus). Lors de la phase de mise au point, le programme nest pas directement charg dans la mmoire associe au P ou dans la mmoire interne du C, mais il est plac dans un outil charg de se substituer cette mmoire et de remplacer le P ou C. Il est alors possible de procder lexcution contrle du programme. On appelle mulateur loutil de mise au point. Il est constitu dun botier qui se connecte :
P et C : une introduction P. Morenton 25/11/06

11

une sonde qui remplace le P ou C sur le systme cible. La sonde senfiche sur le support de CI dans lequel vient normalement prendre place le P ou le C. un micro-ordinateur qui, avec le logiciel appropri, permet de contrler le fonctionnement de lmulateur. Plusieurs commandes permettent une excution contrle du programme, fonctionnement en pas pas, affichage de valeurs de registres internes du systme, 3.2.2) ESSAIS MATRIELS : AUTRES SOLUTIONS Il existe des solutions moins performantes pour les P 8/16 bits (carte dvaluation, kit pdagogique). Avec le dboguage in situ, le C dispose alors de connexions spciales pour une liaison srie avec un PC et des ressources ncessaires pour une excution par partie du programme (point darrt). Cette possibilit commence se dvelopper sur des Cs rcents. La mmoire programme est dabord programme par la liaison srie. Puis les commandes de dboguage sont envoyes par cette mme liaison. Le dboguage in situ nest possible quavec des C intgrant de la mmoire flash facile programmer et reprogrammer depuis lordinateur de dboguage.

3.3) PROGRAMMATION
Selon la quantit de production souhaite, on utilise un des types de mmoire suivants : ROM par masquage : programmation lors de la fabrication. Pour les trs grosses quantits. ROM OTP programmable par lutilisateur. EPROM programmable par lutilisateur. EEPROM programmable par lutilisateur. Pour les 3 derniers types, la programmation seffectue avec un programmateur de mmoire.

4) STRUCTURE DUN SYSTME MINIMUM P


On appelle systme minimum P lensemble comprenant le P et les composants indispensables son fonctionnement. Cet ensemble est inclus dans tout C.

4.1) LES CONSTITUANTS DUN SYSTME MINIMUM P


Nous avons vu que le microprocesseur doit pouvoir lire le code des instructions en mmoire, acqurir des donnes, les traiter puis les restituer. Un systme minimum P est constitu de : une unit dchanges : les interfaces dE/S, une unit centrale de traitement (CPU - Central Processing Unit) : le P ou une partie du C. Cest elle qui calcule les adresses des instructions, des donnes utiliser, effectue les traitements indiqus par les instructions, une unit de stockage du programme et des donnes : les mmoires. Lunit dchange est vue par lunit centrale comme un ensemble de registres accessibles. Les informations vers lextrieur transitent par certains de ces registres.
P et C : une introduction P. Morenton 25/11/06

12

Les diffrentes units sont runies par des canaux dchanges : les bus. Les bus permettent de vhiculer : les adresses des instructions, des donnes et des registres des priphriques dE/S (unit dchange) les instructions du programme pour lunit centrale de traitement les constantes figes dans le programme les variables provenant de lunit dchange les variables, provenant de calculs intermdiaires, stockes dans une mmoire temporaire (RAM) Pour que toutes les informations puissent circuler correctement entre toutes les units, des signaux de contrles regroups sous le nom de bus de contrle sont utiliss.

4.2) LES 2 ARCHITECTURES DUN SYSTME P


Pour lorganisation des diffrentes units, il existe deux architectures : larchitecture Von Neuman (du nom dun des savants qui contribua la mise au point dun des tout premiers ordinateurs). Cest la plus courante. Les instructions, les constantes et les variables circulent sur le mme bus appel bus de donnes larchitecture Harvard. Les instructions et les constantes circulent sur un bus diffrent de celui utilis pour les variables (provenant des E/S ou de calculs). Ce type darchitecture est utilis sur des C qui ont connu un trs grand dveloppement ces dernires annes : les PIC de Microchip Les avantages et les inconvnients de ces deux architectures sont mentionnes plus loin, aprs le fonctionnement de systmes avec ces 2 architectures et aprs prsentations des jeux d'instructions (voir Les instructions et les modes d'adressage / Jeux d'instructions rduit / tendu). Dans les applications embarques, le programme est fig et par consquent stock dans une mmoire de type ROM tandis quune RAM permet de stocker des rsultats intermdiaires de calcul, des donnes temporaires, etc. Les figures ci-dessous reprsentent, de faon trs simplifie, les architectures Von Neuman et Harvard. Les diffrents bus ne sont pas distingus.

Unit centrale C.P.U.

Mmoire instructions programme & constantes + mmoire variables

Mmoire variables

Unit centrale C.P.U.

Mmoire instructions programme & constantes

Unit d'changes

Unit d'changes

Systme min P ou C
Milieu extrieur Milieu extrieur

Systme min P ou C

Fig. 7 : Architecture Von Neuman

Fig. 8 : Architecture Harvard

P et C : une introduction

P. Morenton

25/11/06

13

5) SYSTME MINIMUM ARCHITECTURE VON NEUMAN 5.1) STRUCTURE DUN SYSTME MINIMUM
Seule la structure des systmes les plus simples est prsente ici.
Bus de contrle Dcodeur d'adresse

Bus d'adresse CS1 CS2 CS3

Mmoire programme EPROM

Mmoire donnes RAM

Interface parallle

OE

RD/WR

RD/WR

Bus de donne

Fig. 9 : Systme minimum P

Le P utilise le mme canal dchange pour lire les instructions et acqurir (lire) et restituer (crire) des donnes : le bus de donnes. La taille de ce bus est une des caractristiques principales des P et C. Les tailles les plus courantes des bus de donnes sont : 8 bits pour les petites applications embarques (ex 68HC11, 8051, ) 16 bits pour les applications embarques de moyenne complexit (ex 68HC16, 80196, ) 32 bits, 64 bits pour les gros calculateurs, les ordinateurs (et mme certaines consoles de jeux grand public) Les adresses dlivres par le P sont vhicules par le bus dadresses (16 bits pour le 68HC11 ce qui correspond 216 = 65536 adresses). La taille de bus dadresse est en gnral en relation avec celle du bus de donnes. Remarque : Certains Ps utilisent, pour rduire le nombre de broches utilises pour le bus dadresses et le bus de donnes, une technique qui sera prsente plus loin.

P et C : une introduction

P. Morenton

25/11/06

14

5.2) FONCTIONNEMENT SIMPLIFI DU SYSTME MINIMUM


Le fonctionnement est prsent dans ses grandes lignes au travers de quelques exemples dinstructions pour un systme organis autour dun P ou C Motorola 8 bits (6809, 68HC11, ). Une tude plus dtaille sera prsente dans les paragraphes suivants. Le fonctionnement pour une autre famille de P est trs proche la diffrence des mnmoniques et codes opratoires. On suppose que : la mmoire est programme le C a effectu un certain nombre de tches le C est prt excuter le programme prsent ci-contre.

9007h 9006h 9005h 9004h 9003h 9002h 9001h 9000h

00 90 7E 00 40 B7 10 8B

JMP $A000

STAA $4000

ADDA #$10

Fig. 10 : Premier exemple de programme

5.2.1) ADDITION Le C commence par excuter linstruction ADDA #$10 pour laquelle le contenu dun registre A (interne au C) est additionn au nombre 10h et le rsultat rang dans A. On suppose que le code de linstruction excuter est rang ladresse 9000h et que le nombre 10h est rang en 9001h. Recherche de linstruction
Bus de contrle Dcodeur d'adresse

9000h

Bus d'adresse CS1 CS2 CS3

P ou CPU d'un C

10 8B EPROM
OE RD/WR

Mmoire donnes RAM

Interface parallle

RD/WR

Bus de donne

Fig. 11 : ADDA, recherche du code opration

P et C : une introduction

P. Morenton

25/11/06

15

Le C va chercher linstruction en plaant son adresse, ici 9000h, sur le bus dadresse. Le dcodeur active CS1, seule lEPROM est slectionne; les autres circuits ont leurs sorties en tat haute impdance. Le contenu de la position mmoire adresse (8Bh qui est le code de linstruction ADDA) est plac sur le bus de donnes et lu par le C. Excution de linstruction
Bus de contrle Dcodeur d'adresse

9001h

Bus d'adresse CS1 CS2 CS3

P ou CPU d'un C

10 8B EPROM
OE RD/WR

Mmoire donnes RAM

Interface parallle

RD/WR

Bus de donne

Fig. 12 : ADDA, recherche de loprande

Le C reconnat le code de linstruction ADDA (dcodage) et sait alors quil doit additionner A avec le contenu de ladresse suivante. Le C va alors chercher le nombre additionner en dlivrant ladresse mmoire qui suit immdiatement celle o tait rang le code opration. Tout se passe comme prcdemment et la donne 10h est transfre dans le microcontrleur via le bus de donnes. Enfin, le C additionne A et 10h en interne puis stocke le rsultat dans A. Calcul de ladresse de linstruction suivante Ici 9002h. 5.2.2) TRANSFERT DUNE DONNE DU P VERS LEXTRIEUR Le C excute linstruction suivante STAA $4000

pour laquelle le contenu du registre A est transfr vers lextrieur via un registre de linterface parallle (localis ladresse 4000h).

P et C : une introduction

P. Morenton

25/11/06

16

Recherche de linstruction
Bus de contrle Dcodeur d'adresse

9002h

Bus d'adresse CS1 CS2 CS3

P ou CPU d'un C

00 40 B7 EPROM
OE RD/WR

Mmoire donnes RAM

Interface parallle

RD/WR

Bus de donne

Fig. 13 : STAA, recherche du code opration

Tout se passe comme pour lexemple prcdent. Le C place ladresse denregistrement de linstruction, ici 9002h, sur le bus dadresses; le dcodeur active CS1 et le code opration est transmis au C. Excution de linstruction Le C reconnat linstruction, il sait dsormais quil doit successivement aller chercher le poids fort de ladresse de stockage de A (40h) puis le poids faible de cette adresse (00h).
Bus de contrle Dcodeur d'adresse

9003h

Bus d'adresse CS1 CS2 CS3

P ou CPU d'un C

00 40 B7 EPROM
OE RD/WR

Mmoire donnes RAM

Interface parallle

RD/WR

Bus de donne

Fig. 14 : STAA, recherche du poids fort de ladresse

P et C : une introduction

P. Morenton

25/11/06

17

Bus de contrle

Dcodeur d'adresse

9004h

Bus d'adresse CS1 CS2 CS3

P ou CPU d'un C

00 40 B7 EPROM
OE RD/WR

Mmoire donnes RAM

Interface parallle

RD/WR

Bus de donne

Fig. 15 : STAA, recherche du poids faible de ladresse

Le C a maintenant en sa possession toutes les informations ncessaires lexcution de linstruction proprement parler : il connat laction raliser, ici transfrer A vers lextrieur, et il connat ladresse de la destination, 4000h.

Bus de contrle

Dcodeur d'adresse

4000h

Bus d'adresse CS1 CS2 CS3

registre d'adresse 4000h

P ou CPU d'un C

00 40 B7 EPROM
OE RD/WR

Mmoire donnes RAM Interface parallle


RD/WR=0

Bus de donne

Fig. 16 : STAA, excution de linstruction

Le C place alors 4000h sur le bus dadresses, place A sur le bus de donnes et fait une demande dcriture de donne (activation dune ligne WR en gnral). Ceci a pour effet denregistrer A dans un registre de linterface parallle et de permettre sa sortie vers lextrieur (pour commander un afficheur 7 segments par exemple). Calcul de ladresse de linstruction suivante Ici 9005h.

P et C : une introduction

P. Morenton

25/11/06

18

5.2.3) SAUT UNE ADRESSE Le C excute alors linstruction JMP $A000 qui permet de sauter directement linstruction enregistre ladresse A000h Recherche de linstruction Comme prcdemment, le C acquiert le code de linstruction (7Eh pour JMP). Excution de linstruction et calcul de ladresse de linstruction suivante Le C va chercher ladresse du saut, ici A000h. Ladresse de la prochaine instruction est force A000h (au lieu de 9008h comme on pourrait le supposer). Lors du cycle suivant, lexcution du programme reprendra donc linstruction range cette adresse.

6) SYSTME MINIMUM ARCHITECTURE HARVARD 6.1) STRUCTURE D'UN SYSTME MINIMUM


Seule la structure correspondant un C extrmement simple est prsente ici
Dcodeur d'adresse Bus d'adresse instructions CS1 Bus d'adresse donnes CS2

Mmoire programme EPROM

CPU

Mmoire donnes RAM

Interface parallle

RD WR

RD WR

Bus d'instruction

Bus de donne Bus de contrle


Fig. 17 Systme minimum Harvard

La CPU utilise 2 canaux d'change pour lire les instructions et acqurir (lire) et restituer (crire) les donnes : le bus instruction ou bus programme et le bus de donne. Les tailles de ces bus sont en gnral diffrentes. La taille la plus courante du bus de donnes pour un C est de 8 bits.

P et C : une introduction

P. Morenton

25/11/06

19

Les deux bus distincts programme et donne permettent de raliser simultanment une recherche d'une instruction et l'excution de l'instruction prcdente.

6.2) FONCTIONNEMENT SIMPLIFI


Le fonctionnement est prsent dans ces grandes lignes au travers de quelques instructions d'un PIC 16C5x de Microchip. Le fonctionnement pour un autre C est trs proche, la diffrence des mnmoniques et des codes opratoires. La mmoire programme est organise en mots de 12 bits. Le bus de donne est de 8 bits. Un mot en mmoire programme contient la fois le code opratoire et l'oprande si c'est une constante ou des informations sur l'adresse de l'oprande s'il s'agit d'une variable. On suppose que : la mmoire est programme le C a effectu un certain nombre de tches le C est prt excuter le programme prsent cicontre

43h 42h 41h 40h

A80 026 10F C10

GOTO 0x80 MOVWF 0x06 ADDWF 0x15,W MOVLW 0x10 (C: code instruction, 10: oprande)

Fig. 18 exemple de programme

Ce programme permet d'effectuer une addition d'une variable contenue dans un registre d'adresse 15h avec la constante 10h, de ranger le rsultat sur la sortie d'un port d'adresse 06h puis de sauter l'adresse programme 80h. Une addition doit ncessairement se faire avec un oprande dans un registre W (quivalent de l'accumulateur dans d'autres P/C) et l'autre dans un registre quelconque. On a choisi ici le registre d'adresse 15h. Il faut donc avec de raliser l'addition ranger la constante 10h dans le registre W. 6.2.1) TRANSFERT DE LA CONSTANTE DANS LE REGISTRE W On utilise l'instruction MOVLW 10h (MOVe Litteral [ici 10] to W). Le code en mmoire programme est C10 soit 1100 0001 0000. Les 4 MSB correspond au code de l'instruction, les 8 LSB correspondent la constante. En une seule le lecture de la mmoire programme, le C a le code de l'instruction et la constante ncessaire pour excuter l'instruction.

P et C : une introduction

P. Morenton

25/11/06

20

Dcodeur d'adresse Bus d'adresse instructions 40h CS1 Bus d'adresse donnes CS2

10F C10

CPU

Mmoire donnes RAM

Interface parallle

C10h Bus d'instruction

RD WR

RD WR

Bus de donne Bus de contrle

Fig. 19 MOVLW, recherche du code instruction

Pendant qu'il effectue la lecture de l'instruction, le C excute l'instruction qu'il a prcdemment lue (non reprsent ci-dessus). 6.2.2) TRANSFERT CONSTANTE / EXCUTION -- ADDITION / RECHERCHE DU CODE Pendant qu'elle crit la valeur de la constante prcdemment lue dans W, la CPU recherche le code de l'instruction suivante. ADDWF 15h,W permet d'additionner la valeur contenue dans W (10h) la valeur contenue dans le registre d'adresse 15h.
Dcodeur d'adresse Bus d'adresse instructions 41h CS1
Ecriture dans W

Bus d'adresse donnes CS2

10Fh C10

CPU

Mmoire donnes RAM

Interface parallle

10Fh Bus d'instruction

RD WR

RD WR

Bus de donne Bus de contrle

Fig. 20 : ADDWF, recherche du code instruction / MOVLW, excution

Les informations sur le bus d'instruction correspondent au code de l'instruction et l'adresse de l'oprande utiliser pour l'excution.

P et C : une introduction

P. Morenton

25/11/06

21

6.2.3) ADDITION / EXCUTION -- TRANSFERT / RECHERCHE DU CODE Le C utilise les 2 bus d'adresse simultanment. D'un ct, il recherche le code de l'instruction suivante l'adresse 42h, d'un autre ct il recherche l'oprande l'adresse 15h. Cette dernire adresse tait place avec le code de l'instruction prcdente.
Dcodeur d'adresse Bus d'adresse instructions 42h
addition entre W et le bus de donne rsultat dans W

15h CS1

Bus d'adresse donnes CS2

026 10Fh C10

xx

Interface parallle

CPU
RD WR RD WR

026h Bus d'instruction

Bus de donne Bus de contrle

Fig. 21 : MOWF, recherche du code instruction / ADDWF, excution

MVWF 06h permet de transfrer le contenu de W dans un registre d'adresse 6 qui correspond un port de sortie. 6.2.4) TRANSFERT / EXCUTION SAUT / RECHERCHE DU CODE Le C utilise les 2 bus d'adresse simultanment. D'un ct, il recherche le code de l'instruction suivante l'adresse 43h, d'un autre ct il transfre le contenu de W l'adresse 06h. Cette dernire adresse tait place avec le code de l'instruction prcdente.
Dcodeur d'adresse Bus d'adresse instructions 43h CS1 Bus d'adresse donnes 06h CS2 Registre d'adresse 06h

A80 026

CPU

Mmoire donnes RAM

yy

A80h Bus d'instruction

RD WR

RD WR

Bus de donne Bus de contrle

Fig. 22 : GOTO, recherche / MOVWF, excution

P et C : une introduction

P. Morenton

25/11/06

22

GOTO 80h permet de continuer le programme partir de l'adresse indique. 6.2.5) SAUT / EXCUTION L'excution de l'instruction revient rechercher la nouvelle instruction l'adresse contenue avec le code du saut (prcdente instruction).
Dcodeur d'adresse Bus d'adresse instructions 80h CS1 Bus d'adresse donnes CS2

CPU
zzz

Mmoire donnes RAM

Interface parallle

zzz Bus d'instruction

RD WR

RD WR

Bus de donne Bus de contrle


Fig. 23 : GOTO, excution

7) LMENTS DE LA STRUCTURE INTERNE DUN MICROPROCESSEUR 7.1) ORGANISATION INTERNE SIMPLIFIE DUN P
Le microprocesseur renferme tous les circuits logiques qui permettent de rechercher, dcoder et excuter automatiquement les instructions loges en mmoire. Le P peut tre considr comme un automate compos de deux ensembles : la partie oprative. Elle permet deffectuer les oprations arithmtiques et logiques sur les donnes ainsi que de calculer ladresse mmoire des instructions ou des donnes la partie commande. Elle est notamment compose dun registre instruction o est stock le code de linstruction excuter. Ce registre est associ un squenceur charg de dlivrer lensemble des signaux internes ncessaires au fonctionnement de la partie oprative du P La figure ci-dessous donne une reprsentation d'un P (ou de l'unit centrale de traitement d'un C) architecture Von Neuman.

P et C : une introduction

P. Morenton

25/11/06

23

Partie Commande

Squenceur

Registre Instruction

Busde Contrle Partie Oprative Unit de Traitement Unit de Getion Mmoire Bus d'adresse Busde Donne

Fig. 24 : structure d'un P

La partie oprative est ralise avec une Unit Arithmtique et Logique (UAL ou ULA ou en anglais ALU pour Arithmetic Logic Unit) et des registres dont certains sont associs des compteurs, Le rle du squenceur est dcrit plus loin, aprs une premire approche lors du fonctionnement de lUAL. Les informations entre les registres, lUAL, sont changes par lintermdiaire de bus internes quon nomme aussi chemins de donnes internes. Les informations sont achemines dun endroit un autre et mmorises grce aux signaux de contrle dlivrs par le squenceur pilot par un signal dhorloge.

7.2) UNIT ARITHMTIQUE ET LOGIQUE (UAL) ET REGISTRES ASSOCIS


7.2.1) RLE DE LUAL Cest lorgane de calcul du microprocesseur : il permet deffectuer des oprations arithmtiques et logiques. Lopration raliser est dtermine par un mot de commande appliqu lUAL partir du code de linstruction range dans le registre instruction. LUAL peut effectuer les oprations suivantes (en gras italique les oprations ralises par la grande majorit des P) : oprations arithmtiques (les mots manipuls sont reprsentatifs de nombres) addition en base 2 addition en DCB soustraction incrmentation, dcrmentation multiplication, division comparaison entre 2 nombres oprations logiques oprations de base sur des mots binaires non, et, ou, ou exclusif dcalage et rotation

P et C : une introduction

P. Morenton

25/11/06

24

7.2.2) RSULTAT DE LA DERNIRE OPRATION / BITS DTAT A lUAL est associ un registre qui contient des bits donnant des informations sur le rsultat de la dernire opration. Ces bits sont appels bits dtat (status bits) ou drapeaux (flags). La grande majorit des P disposent des informations suivantes : rsultat gal 0 rsultat ngatif (MSB 1) retenue dpassement de capacit Le registre contenant les bits dtat peut aussi contenir des bits rservs dautres usages. Le nom de ce registre dpend des constructeurs. Quelques exemples de noms : registre dtat (status register). Nom utilis si le registre na que cette seule utilit registre code condition (Code Condition Register). Chez Motorola ; ce registre contient des bits rservs dautres usages mot dtat du programme (Program Status Word). Chez Intel ; ce registre contient des bits rservs dautres usages 7.2.3) OPRANDE(S) ET RSULTAT DE LOPRATION / REGISTRES ASSOCIS Le ou les oprandes sont rangs dans un (ou plusieurs) registre(s) interne(s) du P ou de lunit centrale du C ou en mmoire externe. Pour les oprations un oprande (complmentation, dcrmentation, mise 0, ), loprande peut tre : dans un registre interne. Loprande a t auparavant charg dans ce registre depuis la mmoire ou lunit dchange. ou en mmoire externe. Dans les oprations 2 oprandes (addition, et logique, ) : un des oprandes est dans un registre interne et lautre oprande est en mmoire externe ou les 2 oprandes sont dans des registres internes. Selon les P ou C, le rsultat de lopration est rang : ncessairement dans le registre interne qui contenait un des oprandes (qui est cras ). Dans ce cas le P dispose dun (ou deux) registre(s) spcialis(s) pour contenir le (ou les) oprande(s) et le rsultat de lopration. Ce(s) registre(s) se nomme(nt) : accumulateur (P Motorola, ), registre de travail W (PIC de MicroChip) ou dans un des registres internes gnraux, si le P ne dispose pas de registre spcialis 7.2.4) EXEMPLES DE FONCTIONNEMENT DUAL DUN P MOTOROLA La figure suivante reprsente un ALU et 2 registres spcialiss, les accumulateurs A et B, dun P Motorola. Ce qui suit est facilement transposable un autre P ou C. Chaque entre de lUAL peut tre connecte : un accumulateur au bus de donnes externe
P et C : une introduction P. Morenton 25/11/06

U.A.L.
Fig. 25 : UAL et accumulateurs

25

La sortie de lUAL est connecte un des 2 accumulateurs. Ces connexions se font laide de bus internes (non reprsents) que lon peut aiguiller. Un des rles du squenceur mentionn plus haut est de commander tous les aiguillages ncessaires, durant lexcution dune instruction. Addition On dsire raliser une addition entre le contenu de laccumulateur A et une constante range en mmoire programme. La ligne de programme en assembleur est : ADDA #$10 le contenu de A, par exemple 22h, est additionn la donne 10h qui provient du bus de donnes. Lorsque lopration est termine, lancien contenu de A est remplac par le rsultat, ici 32h.
10 A 22 B
A 32 B

32

Fig. 26 : Addition de laccumulateur et dune donne

Dcalage sur un mot binaire On peut galement oprer un dcalage gauche de A avec linstruction ASLA (qui signifie Arithmetic Shift Left A) Si on suppose que A contient initialement 94h soit 10010100b alors le rsultat du dcalage est 00101000b soit 28h.
A B 1001 0100 A B 1001 0100
A B 0010 1000

1001 0100

1001 0100 0

01010 1000

a) chargement de A dans lU.A.L.

b) dcalage

c) stockage du rsultat

Fig. 27 : Dcalage gauche de laccumulateur

7.3) SQUENCEUR
Nous avons vu que le microprocesseur recherche puis excute automatiquement les instructions stockes en mmoire. Lenchanement de ces oprations est command par un circuit squentiel. Le squenceur a dj t introduit dans les exemples sur lULA. Le squenceur gnre : les signaux du bus de commande ( RD,WR , etc.),

P et C : une introduction

P. Morenton

25/11/06

26

les signaux internes aux P (gestion des registres, de lA.L.U., aiguillages des bus internes, etc.). Le squenceur est ralis avec une structure qui comprend une mmoire ROM intgre. Celle-ci contient des micro-instructions ( ne pas confondre avec les instructions contenues dans la mmoire programme). La mmoire des micro-instructions nest pas accessible lutilisateur. Chacune des phases dcrites en 5.2) ncessite plusieurs micro-instructions et donc plusieurs cycles dhorloge. 7.3.1) HORLOGE DU SQUENCEUR Les signaux (externes et internes) produits par le squenceur sont synchrones dun signal dhorloge produit par un oscillateur. Loscillateur peut tre : quartz. Cest le cas le plus frquent. Il peut tre constitu de : une circuiterie interne au P et un quartz externe. un oscillateur externe comprenant son quartz et son lectronique rseau RC. On rencontre ce cas avec des C bon march o la dure prcise dexcution dune instruction na pas beaucoup dimportance. 7.3.2) DURE DEXCUTION DUNE INSTRUCTION / CYCLE MACHINE Le temps dexcution dune instruction sexprime en cycles machine ; un cycle machine correspondant un nombre entier de priodes de lhorloge. Selon les constructeurs de P, on utilise les termes cycles machine (CPU cycle) ou dure dtat (state time). A chacune des phases dcrites en 5.2) correspond en gnral un cycle machine. Pour la dure de chaque phase, on rencontre 2 cas : la dure de chaque phase est fixe. Cest le cas le plus frquent avec des P et C relativement lent (cycle machine > qqs centaines de ns) la dure dune phase comportant un accs une mmoire ou une unit dchange externe est variable, pour permettre des accs des organes rapides ou lents. En gnral cest ltat dune broche externe du P/C qui dtermine sil faut ou non rajouter des cycles dhorloge. Par exemple avec un 80C196 avec un quartz de 20 MHz, lors dun accs une mmoire EPROM de temps daccs lev, il faut gnrer une impulsion sur lentre READY du C pour augmenter la dure de la phase de lecture en insrant des tats dattente (wait state) dans le cycle machine. Lorsque la dure de chaque phase est fixe, le constructeur donne pour chaque instruction, sa dure dexcution exprime en cycles machine. Exemple de dure dexcution dune instruction Pour un 68HC11, la dure de chaque phase (recherche instruction en mmoire, excution) est fixe. Un cycle machine correspond 4 priodes dhorloge. Les instructions durent de 2 6 cycles machines. Avec un quartz 8MHz, un cycle machine dure 500ns ; une instruction est excute en 1 3s.

7.3.3) EXEMPLE DE DCOMPOSITION EN CYCLE MACHINE Dans lexemple suivant, la dcomposition en cycles correspond aux cycles de recherche et dexcution. Il nen est pas toujours ainsi.
P et C : une introduction P. Morenton 25/11/06

27

On utilise un P type 6809. Le microprocesseur va excuter linstruction EOR #$5A pour laquelle un OU EXCLUSIF est ralis entre le contenu de laccumulateur A (E7h par exemple) et la donne 5Ah ; le rsultat stock dans A. On suppose que le code opration est rang ladresse AFFFh. On note (R) le contenu dun registre. 1er cycle machine
Bus de contrle Dcodeur d'adresse

AFFFh

Bus d'adresse CS1 CS2 CS3

68HC11
Squenceur PC AFFF A B E7

5A 3D EPROM
OE RD/WR

Mmoire donnes RAM

Interface parallle

IR 3D

RD/WR

Bus de donne

Fig. 28 : Recherche du code opration

- (PC) est plac sur le bus dadresses, - Le registre instruction est charg avec le code de linstruction EOR, (IR) = 3Dh, - (IR) est dcod et le P sait quil doit aller chercher loprande ladresse suivante, - PC (PC)+1. 2me cycle machine
Bus de contrle Dcodeur d'adresse

B000h

Bus d'adresse CS1 CS2 CS3

68HC11
Squenceur PC B000 A B E7

5A 3D EPROM
OE RD/WR

Mmoire donnes RAM

Interface parallle

IR 3D

RD/WR

Bus de donne

Fig. 29 : Recherche de loprande

- (PC) est plac sur le bus, - La donne 5Ah est transfre vers lU.A.L.,

P et C : une introduction

P. Morenton

25/11/06

28

Bus de contrle

Dcodeur d'adresse

Bus d'adresse

68HC11
Squenceur PC B001 A B BD

CS1 CS2

CS3

5A 3D EPROM
OE RD/WR

Mmoire donnes RAM

Interface parallle

IR 3D

BD

RD/WR

Bus de donne

Fig. 30 : Calcul puis stockage du rsultat

- le C excute lopration est stocke le rsultat dans laccumulateur, - puis le PC est prpar pour linstruction suivante PC (PC)+1. Durant ce 2me cycle, il y a eu plusieurs phases gres par le squenceur. Lexcution complte de linstruction dure 2 cycles machine.

7.4) QUELQUES REGISTRES


Un microprocesseur contient des registres (8, 16, 32 voire 64 bits) qui lui permettent de mmoriser les informations ncessaires son bon fonctionnement. Toutes les donnes et adresses manipules par le P transitent par ces registres. Leur nombre est variable dun P lautre. Il nest possible de les prsenter dans leur ensemble quaprs avoir vu dautres parties (droulement dun programme, modes dadressage, ) Quelques registres, fondamentaux, sont dans sur tous les composants. Certains ont dj t prsents prcdemment. Registre dadresse Il contient ladresse dpose sur le bus dadresses. Elle peut correspondre ladresse dune instruction, dune constante, dune variable, dun registre dune unit dchange, Dans certains cas, le contenu du compteur ordinal est transfr dans ce registre Compteur Ordinal (CO) Ce registre, galement appel Compteur Programme (Program Counter -PC) contient ladresse de linstruction excuter. Le contenu de CO est plac sur le bus dadresses, via le registre dadresse, pendant le cycle de recherche de linstruction en mmoire (cycle Fetch) puis il est automatiquement incrment afin de pointer la prochaine instruction.

P et C : une introduction

P. Morenton

25/11/06

29

Registre Instruction (RI) Il contient le code de linstruction excuter. Ce code est celui qui vient dtre lu en mmoire programme. La logique de dcodage dinstruction du P analyse le contenu de RI pour dterminer la tche effectuer. Le squenceur est command partir de RI. Remarque : On a vu comment, sur un P de type 6809 ou 68HC11, certaines instructions permettent daccder aux registres. Par exemple linstruction ADDA permet dadditionner une valeur A, JMP permet de forcer le contenu de CO donc de sauter une instruction donne, etc. En revanche, RI nest pas accessible au programmeur.

8) LES INSTRUCTIONS ET LES MODES DADRESSAGE


Le jeu dinstruction dun P/C permet dassurer un modle de calcul universel. Tous les P/C disposent donc de catgories dinstructions communes et dans ces catgories des instructions similaires.

8.1) CATGORIES DINSTRUCTIONS


Bien que chaque microprocesseur ait un jeu dinstruction propre, il est toujours possible de classer ses instructions dans une des 4 catgories suivantes : a) Les instructions de transfert : - Mmoire Accumulateur ou registre, - Accumulateur ou registre accumulateur ou registre. b) Les instructions de traitement : +, -, x, ET, OU, dcalages, etc. c) Les instructions de branchement ou rupture de squence : - branchement inconditionnel, - branchement conditionnel (en fonction des registres ou des drapeaux - flags). d) Les instructions de gestion de lU.C. : interruptions, modes STOP, WAIT, etc. (voir suite).

8.2) NOMBRES DOPRANDES


Les instructions peuvent ncessiter 0, 1 ou 2 oprandes. Par exemple la dcrmentation dun registre ne ncessite quun oprande ; une addition ncessite 2 oprandes. Le rsultat peut tre rang la place dun des oprandes ou non. On appelle rfrence la dsignation dun oprande ou du rsultat, que ce soit un numro de registre ou une adresse en mmoire. Le nombre de rfrences peut tre identique ou non au nombre doprandes selon que le rsultat est obligatoirement rang au mme emplacement quun des oprandes ou non. Exemple : pour une opration du type rsultat oprande1 opration oprande2 avec un 68HC11 le rsultat est au mme emplacement que loprande1 (un des accumulateurs) avec un 80C196, il est possible de ranger le rsultat dans un emplacement distinct de ceux des 2 oprandes. Les Ps/Cs peuvent tre 2 rfrences max (ex 68HC11) ou 3 rfrences max (ex 80C196).
P et C : une introduction P. Morenton 25/11/06

30

8.3) JEUX DINSTRUCTIONS REDUIT / ETENDU


La plupart des Ps et Cs disposent dun jeu dinstruction assez tendu (plusieurs dizaines). Une analyse statistique des programmes pour ces Ps et Cs montre quils nutilisent principalement quun nombre rduit dinstructions parmi toutes celles disponibles. Pour diminuer le temps dexcution des programmes, certains constructeurs ont dvelopp des Ps et Cs dune grande rapidit dexcution. Presque toutes les instructions peuvent sexcuter en un seul cycle machine. En contrepartie, ils ne disposent que dun jeu dinstruction rduit. Ceci est possible grce l'architecture Harvard (voir plus haut). Les instructions peu frquemment utilises avec les Ps et Cs jeu dinstruction tendu sont ici ralises avec plusieurs instructions. Globalement, le temps dexcution est cependant plus court. Les Ps et Cs peuvent donc se classer en : CISC (Complete Instruction Set Computer) : jeu dinstruction tendu RISC (Reduced Instruction Set Computer) : jeu dinstruction rduit et grande vitesse dexcution (grce une architecture Harvard)

8.4) FORMAT DES INSTRUCTIONS


Il est inutile l'utilisateur de connatre le format des instructions, car leurs codes sont produits automatiquement dans la phase de traduction (compilation ou assemblage). Ce qui suit est trs succinct et donn pour information. Une instruction peut tre code sur un ou plusieurs mots (en gnral des octets). Dans beaucoup de Ps, le code de linstruction se compose : du code opration COP ou code opratoire (Operation Code OP-), et dune quantit numrique Qn optionnelle.
n bits

COP

Qn (accs aux oprandes)

Fig. 31 : Codage dune instruction

Le COP indique le type dopration effectuer (par exemple une addition, un transfert, etc.) tandis que le nombre Qn permet daccder aux oprandes (sil y en a !) de linstruction Dans les microprocesseurs 8 bits, le COP est cod sur un octet tandis que le nombre doctets rservs Qn est variable. Dans les Cs darchitecture Harvard de type PIC (Microchip), le COP et Qn tiennent sur un mot de 12 14 bits selon les Cs

P et C : une introduction

P. Morenton

25/11/06

31

Exemples de codages dinstructions pour un P 6809 de Motorola a) instruction 1 octet (ex. CLRA), Qn nexiste pas
Octet 1 4 COP F

b) instruction 2 octets (ex. ORAA #$20)

c) instruction 3 octets (ex. SUBA $C570)

Octet 1 8 COP A

Octet 2 2 Qn 0

Octet 1 B COP 0

Octet 2 C 5 Qn

Octet 3 7 0

Mise 0 de A

OU logique entre A et loprande 20h. COP=8Ah reprsente lopration ORA, Qn reprsente directement loprande, soit 20h.

soustrait la donne (loprande) stocke ladresse C570h de laccumulateur. COP=B0h, Qn, sur 2 octets, reprsente ladresse de loprande.

Fig. 32 : Format des instructions dans les P 8 bits

Exemple de codage d'instruction pour un C PIC 16C5x de MicroChip Le nombre de bits rservs pour le code opratoire dpend du type d'instruction. Instructions sur des constantes
11 10 9 8 7 6 5 4 3 2 1 0

Exemple : ANDLW 20h (ET entre W et 20h = 0010 0000b)


11 10 9 8 1 1 1 0 7 6 5 4 0 3 0 2 0 1 0 0 0 0 0 1

COP

constante

8.5) MODES DADRESSAGE


On a vu dans les exemples prcdents que la quantit Qn peut, suivant le cas, aussi bien reprsenter loprande, que son adresse en mmoire, etc. En pratique, pour une mme instruction, la faon daccder aux oprandes dpend du mode dadressage (MA) utilis. Le mode dadressage est cod dans le COP. Ce codage dpend du P et nintresse pas lutilisateur. Le COP est automatiquement gnr partir du mnmonique lors de la phase dassemblage ou de compilation. Selon les instructions, il peut y avoir un ou plusieurs modes dadressage possibles. Une instruction de mise 0 dun registre spcifi correspond seulement au COP. Pour une instruction daddition, le premier oprande est dans un registre et le 2me oprande peut-tre plac plusieurs endroits (constante dans la mmoire programme, variable dans un registre interne, variable dans la mmoire des variables). Il y donc plusieurs modes dadressage possibles pour laddition. Les modes dadressages possibles dpendent des Ps et Cs. Nanmoins tous disposent de possibilits de base dcrites plus loin. Certains modes dadressage sont prvus pour un accs aux donnes organises de certaines faons. Ci-dessous, on montre que le mode dadressage index permet dutiliser des tableaux. Voir 8.5.2 / Adressage index et utilisation de tableau. Les emplois de tous les modes dadressage ne peuvent tre dcrits dans cette introduction.

P et C : une introduction

P. Morenton

25/11/06

32

8.5.1) CRITURE DES INSTRUCTIONS ET DES MODES DADRESSAGE LANGAGE D'ASSEMBLAGE En gnral une instruction complte scrit avec son mnmonique qui ne dpend pas du mode dadressage suivi de la ou des rfrences (emplacement du rsultat, oprande(s) ou emplacement(s) du ou des oprandes) ex : en langage d'assemblage 68HC11, ANDA #%0110 1111 signifie effectuer un ET logique entre contenu de A et 0110 1111. Le rsultat est rang dans A (2 rfrences et 2 oprandes : A, 0110 1111) ANDA $4000 signifie effectuer un ET logique entre contenu de A et le contenu de ladresse 4000h. Le rsultat est rang dans A. ex : en langage d'assemblage 80C196, ANDB 20h, 30h,#0110 1111b signifie effectuer un ET logique portant sur des mots de 8 bits (B : Byte) entre le contenu du registre dadresse 30h et 0110 1111. Le rsultat est rang dans le registre dadresse 20h (3 rfrences et 2 oprandes) Pour les C darchitecture Harvard de type PIC (Microchip), chacun des mnmoniques (peu nombreux) correspond un mode dadressage. ex : en langage d'assemblage PIC, ANDLW 0110 1111b signifie effectuer un ET logique entre le contenu du registre W et 0111 1111 ( litteral ) AND Litteral and W ANDWF 0011b,0 signifie effectuer un ET logique entre le contenu du registre W et le contenu du registre f dadresse 0011, le rsultat est rang dans le registre f de dpart (dernier 0) Les diffrents modes dadressage sont mentionns par les rgles dcritures propres chaque assembleur spcifique un P ou C.

8.5.2) QUELQUES EXEMPLES DE MODES DADRESSAGE Les modes dadressages possibles dpendent des Ps et Cs. Pour connatre les modes dadressage de chaque P ou C, il faut se rfrer sa documentation technique dtaille. Les 3 premiers modes dadressage de la liste ci-dessous se retrouvent dans tous les Ps. Les modes dadressage suivant sont quelques exemples parmi ceux disponibles sur les Ps/Cs des familles Intel ou Motorola. Certains constructeurs utilisent le terme adresse effective (EA Effective Address) pour dsigner ladresse vhicule sur le bus dadresse qui correspond lemplacement mmoire ou au registre qui contient loprande. Adressage inhrent ou implicite Le mnmonique et le code opratoire qui le traduit contient toute linformation pour linstruction excuter Exemples (68HC11) : CLRA, NOP, etc.

P et C : une introduction

P. Morenton

25/11/06

33

Adressage immdiat Loprande est une constante qui est donne sur la ligne de linstruction (aprs le mnmonique et la ou les autres rfrences ventuelles). En mmoire, on trouve donc le code opratoire suivi loprande (aprs le codage des ventuelles autres rfrences). Lorsquil y a plusieurs oprandes, le mode dadressage immdiat ne concerne quun oprande. La constante est dans Qn. Exemples (68HC11) : LDAA #$B0 Qn = B0h et le caractre # indique quil sagit du mode dadressage immdiat. Adressage relatif Ce mode dadressage est utilis pour les sauts et les branchements. Il nest parfois pas mentionn dans la documentation des Ps qui en disposent, car son emploi est transparent lutilisateur en langage d'assemblage. En effet il est employ avec des instructions du type SAUT etiquette , avec etiquette place en dbut de ligne de programme atteindre. Aprs assemblage, etiquette sera remplace par le dplacement ajouter ladresse de linstruction de saut pour atteindre ladresse de linstruction dsire. Le dplacement peut tre positif ou ngatif. Adressage index et utilisation de tableau Ce mode dadressage a de nombreuses variantes. Il permet, entre autres, daccder aux lments dun tableau. Un tableau est constitu de plusieurs lments avec un seul nom. Ce nom correspond ladresse de dbut du tableau. Ladresse effective de loprande est gale une base + un dplacement. Le registre dindex peut contenir le dplacement par rapport au dbut du tableau ncessaire pour atteindre un lment de ce tableau. La base est alors ladresse de dbut du tableau. Le registre dindex est un registre interne au P ou la CPU du C qui peut tre spcifique ou au contraire un registre gnral utilis pour cet emploi. Exemples : Intel 80C196 : LD AX, Table[BX] ; charger (LoaD) le registre AX avec loprande dont ladresse effective est gale ladresse de dbut du tableau Table + le contenu du registre BX (registre gnral qui contient le dplacement). Pour savoir comment est dfini le nom Table, voir le 13 et plus particulirement le 13.2. Motorola 68HC11 : ADDA Table,X ; ajouter au contenu de A loprande dadresse effective gale ladresse de dbut du tableau Table + le contenu du registre X (registre dindex spcifique) Pour savoir comment est dfini le nom Table, voir le 13 et plus particulirement le 13.2. Adressage tendu (Motorola) Ladresse effective de loprande suit le mnmonique. Si ladresse effective est sur 16 bits, dans la mmoire, ladresse effective est range dans les 2 octets qui suivent le code opratoire. Qn correspond donc ladresse effective. Exemple : LDAA $C000 Qn = C000h.

P et C : une introduction

P. Morenton

25/11/06

34

Adressage registre (Intel) Les oprandes sont dans des registres internes du P/C, le rsultat de lopration est lui aussi dans un registre. Exemple : ADD AX, BX, CX signifie additionner les contenus des registres BX et CX et placer le rsultat dans AX

9) DROULEMENT DUN PROGRAMME


Les diffrentes tapes rencontres lors du droulement dun programme sont : lancement aprs la mise sous tension ou une rinitialisation droulement normal interruption sur vnement extrieur modes de fonctionnement spciaux (test aprs fabrication, arrt, ). Ces modes ne sont pas traits dans cette introduction Lors du droulement dun programme il est ncessaire de mmoriser certains registres dans une zone de la RAM avec un fonctionnement particulier : la pile.

9.1) LA PILE ET LE DROULEMENT DUN PROGRAMME


Dans les phases dcrites 9.2 et suivants, le P va devoir sauvegarder automatiquement puis rcuprer certains registres. Lutilisateur peut lui aussi procder de faon identique une sauvegarde ou restitution automatique laide dinstructions spcifiques. La pile est une zone de RAM que lutilisateur rserve pour sauvegarder des donnes temporaires. La pile est toujours associe au registre pointeur de pile (interne au P) ou stack pointer SP qui pointe le premier emplacement libre de la pile. Ci-contre, reprsentation dune pile : Avec certains C (PIC par exemple), la pile est une zone mmoire particulire de taille fixe
Ad-5 Ad-4 Ad-3
Haut de la pile

Ad-2 Ad-1 Donne 1 Donne 0 SP Ad

Bas de la pile

RAM
Fig. 33 : exemple de pile

La sauvegarde dune donne sur la pile peut seffectuer automatiquement (voir 9.2 et suivants) ou laide dune instruction crite par le programmeur. La sauvegarde dune donne seffectue comme suit : le P place sur le bus dadresse le contenu de SP et la donne sauvegarder sur le bus de donnes. La donne est stocke (empile) sur le sommet de la pile par une criture, SP est automatiquement dcrment pour pointer le prochain emplacement libre.

P et C : une introduction

P. Morenton

25/11/06

35

Ad-5 Ad-4
Haut de la pile

Haut de la pile

Ad-5 Ad-4 PC2 PC1 Donne 2 Donne 1 Donne 0 Ad-3 Ad-2 Ad-1

SP

Ad-3 Ad-2 Ad-1 Donne 2 Donne 1 Donne 0

SP

Bas de la pile

Ad

Bas de la pile

Ad

a) tat de la pile aprs sauvegarde dun nouvelle donne (ex : registre)

b) tat de la pile aprs sauvegarde automatique du compteur programme PC (PC1 (8bits) + PC2 (8bits) = PC (16 bits):

Fig. 34 : tat de la pile aprs empilement

La rcupration dune donne sur la pile peut tre elle aussi automatique ou ralise avec une instruction programme par le programmeur.
Ad-5 Ad-4
Haut de la pile

Ad-3 Ad-2 Ad-1 Donne 2 Donne 1 Donne 0

SP

Bas de la pile

Ad

Fig. 35 : tat de la pile aprs rcupration automatique du PC

On voit que la dernire donne rcupre est ncessairement le dernire donne enregistre sur la pile do lappellation LIFO (Last In, First Out) pour ce type de mmoire. Cest lutilisateur qui fixe la zone de RAM affecte la pile en utilisant une instruction dinitialisation du pointeur de pile (chargement de la valeur du bas de la pile qui est ladresse la plus haute) laide dune instruction spcifique. Avec certains Cs (PIC par exemple), lutilisateur na pas accs au pointeur de pile. La gestion de la pile est toujours automatique. Exemple dutilisation On dispose dune RAM de 512 octets, on choisit de rserver les 256 octets infrieurs des donnes tandis que les 256 octets suprieurs sont rservs la pile. Remarque La pile progresse vers le haut au fur et mesure des empilages. Par consquent si plus de 256 octets, pour lexemple prcdent, sont empils successivement, les donnes enregistres dans la zone de RAM situe sous la pile peuvent tre crases : il y a dbordement de la pile (stack overflow).
0000h 256 octets de donnes 00FFh 0100h 256 octets de pile SP

Bas de la pile

01FFh

RAM
Fig. 36 : Exemple dinitialisation de la pile

P et C : une introduction

P. Morenton

25/11/06

36

9.2) DROULEMENT NORMAL


En gnral, on dcompose un programme complexe en plusieurs programmes plus simples et dusage gnral. Quelques-uns des avantages de la dcomposition en sous-programmes sont : mise au point facilite maintenance plus facile taille du programme plus courte si un sous programme est utilis plusieurs endroits Un programme est donc compos dun programme principal et de sous-programmes. 9.2.1) DROULEMENT SIMPLIFI LORS DE LAPPEL DUN SOUS PROGRAMME Aprs son implantation dans la mmoire programme dun systme P/C, le droulement simplifi dun programme & sous programme est montr sur la figure suivante : excution dune partie du programme principal instruction dappel du sous programme avec ladresse de dbut de ce sous-programme Saut au sous programme Excution du sous programme
1500h
1500h+N

adresses 1000h

MEMOIRE PROGRAMME

1200h
1200h+N

appel SP d'adresse 3000h

2 1400h
1200h+N

appel SP d'adresse 3000h 3

appel SP d'adresse 3000h

N dpend du C. Avec un PIC, N = 1.


3000h 1re instruction SP 3 2 retour au programme appelant 1

On voit que ladresse de retour au programme appelant est diffrente pour les 3 excutions du sous programme. Cette adresse est mmorise dans une zone mmoire particulire : la pile. Lorsquun sous programme appelle un autre sous programme, la pile contient 2 adresses de retour. La gestion de la pile est automatique. Avec la plupart des Ps/Cs, il ne faut pas oublier dinitialiser le pointeur de pile. Avec un PIC, il ny a pas de pointeur de pile. Avec un PIC 16F876/877, la pile ne peut contenir que 8 adresses de retour. Les ressources du P (registres, ) utilises lors de lexcution du programme principal et dun sous programme sont les mmes. Il est ncessaire de sauvegarder les registres modifis par le sous programmes dont les contenus sont utiliss dans la suite du programme principal. La pile est utilise pour sauvegarder les informations prcdentes.

P et C : une introduction

P. Morenton

25/11/06

37

Ladresse de retour (contenu du compteur programme) et les registres sauvegards constituent le contexte. 9.2.2) DROULEMENT DTAILL excution dune partie du programme principal instruction dappel du sous programme avec ladresse de dbut de ce sous-programme le P effectue sauvegarde dans la pile de ladresse de retour au programme principal (empilage). Cette opration prend plusieurs cycles. Elle est effectue de faon automatique et transparente lutilisateur. le P place sur le bus dadresse ladresse du dbut du sous programme et recherche le 1er code opratoire. Lexcution du sous programme commence. Les premires instructions peuvent permettre une sauvegarde de certains registres en RAM. excution du sous programme. Les dernires instructions peuvent permettre une rcupration des registres sauvegards en fin de sous programme, instruction de retour au programme principal le P rcupre dans la pile ladresse de retour au programme principal (dpilage). le P place sur le bus dadresse ladresse de la suite du programme principal et recherche le code opratoire de linstruction. Lexcution de la suite du programme principal a lieu. Le pointeur de pile doit imprativement avoir t initialis en tout dbut de programme principal. 9.2.3) CRITURE ET APPEL DE SOUS PROGRAMME DANS LE PROGRAMME SOURCE Ces oprations sont trs faciles. Avec lutilisation dtiquettes, il ny a mme pas besoin de connatre ladresse physique exacte de lemplacement dun sous programme. Voir le Structure dun programme source. Il ne faut pas oublier dinitialiser le pointeur de pile. Exemples en langage d'assemblage 68HC11 JSR NomProgramme* (Jump to SubRoutine) en langage d'assemblage 80C196 CALL NomProgramme

appel sous programme, plac dans le programme principal

retour au programme principal, RTS RET place en fin de sous pro(ReTurn from Subroutine) (RETurn) gramme * NomProgramme est traduit lors de l'assemblage par l'adresse de dbut du sous programme

9.3) INTERRUPTION
9.3.1) PRSENTATION Le P excute les instructions en squence. Souvent, il est ncessaire dinterrompre un programme sur rception dun signal externe imprvisible (par exemple un poussoir enfonc par un oprateur).

P et C : une introduction

P. Morenton

25/11/06

38

Un autre programme, dit gestionnaire dinterruption (interrupt handler) ou programme de traitement dinterruption (Interrupt Service Routine, ISR) ou plus simplement programme dinterruption, associ lappel est alors excut.
Programme en cours Excution de B Excution de A Excution de A
A : programme principal B : programme d'interruption

A t

Evnement extrieur (appel de B)

Fin de B

Fig. 37 : Principe dune interruption

Une fois que linterruption t servie (excute) le programme principal reprend son cours partir de lendroit o il a t interrompu. Remarque A peut tre interrompu nimporte quel instant par B (vnement imprvisible), A et B utilisent les mmes registres de lU.C., 2 possibilits selon les P / C : tous les registres sont sauvegards automatiquement avant le dbut du programme dinterruption puis restitus avant le retour au programme principal. Ceci nest possible quavec des P / C avec peu de registres internes (ex : 68HC11) seul le compteur programme est sauvegard puis restitu (ex : PIC). Le programmeur doit prendre soin de sauvegarder puis restituer les registres quil va modifier. Il est indispensable de mmoriser ladresse de linstruction excuter dans le programme principal lors du retour du programme dinterruption. Cette mmorisation seffectue dans la pile. Les interruptions sont utilises : Avec les units dchanges pour la gestion des changes. Ex : sur une liaison avec un priphrique lent (tel quune imprimante), laccus de rception de ce dernier lenvoi dune donne peut dclencher une interruption. Le traitement de celle-ci consiste envoyer une nouvelle donne. Avant que le priphrique accuse rception, le P a le temps de faire autre chose. Avec des interfaces dun P (internes dans le cas dun C) tels que temporisateur, (voir plus loin)

P et C : une introduction

P. Morenton

25/11/06

39

9.3.2) DROULEMENT SIMPLIFI DUNE PROCDURE DINTERRUPTION


EXECUTION DE A EVENEMENT Excution de l'instruction en cours Sauvegarde automatique du compteur programme (adresse de retour pour suite de A) Sauvegarde automatique des registres Appel du programme d'interruption INST 1 INST 2 Excution du programme d'interruption Instruction de retour au programme principal (RTI pour le 68HC11) Restitution automatique des registres Restitution automatique du compteur programme

EXECUTION DE A
Fig. 38 : Sauvegarde puis restitution du contexte de A

On note une certaine similitude entre les sous-programmes et les routines dinterruption mais pour les interruptions : lappel est dclench par un vnement externe, la sauvegarde des registres est indispensable (sur certain P ou C comme le 68HC11 cette sauvegarde ainsi que la restitution des registres est automatique). Les registres et le compteur programme sont sauvegards dans la pile. La procdure est transparente lutilisateur qui doit cependant sassurer du bon fonctionnement de la pile. 9.3.3) DROULEMENT DTAILL lorsquune demande dinterruption intervient, le P termine linstruction en cours le P inhibe les autres demandes dinterruption le P sauvegarde dans la pile le compteur programme et avec certains P/C tous les registres (empilage) le P place sur le bus dadresse ladresse du dbut du programme dinterruption. 2 faons de procder : le P charge dans le compteur programme le contenu dune zone mmoire programme (2 octets pour une adresse sur 16 bits) parfaitement dfinie qui est fonction de linterruption demande. Ce contenu correspond ladresse de dbut du programme dinterruption. Ces oprations prennent plusieurs cycles et sont transparentes lutilisateur. Ce mcanisme correspond la vectorisation des interruptions. A chaque interruption correspond un vecteur dinterruption. (mcanisme utilis par le 68HC11, le 80C196, etc.) le P place sur le bus dadresse une adresse unique pour toutes les sources dinterruptions (ex : sur un PIC, ladresse est 4). Lutilisateur doit crire dans son programme dinterruption des instructions pour rechercher la source de linterruption. aprs avoir plac sur son bus dadresse ladresse du programme dinterruption quil vient de charger, le P recherche le code opratoire de la 1re instruction. Le programme dinterruption sexcute ensuite.
P et C : une introduction P. Morenton 25/11/06

40

en fin de programme dinterruption, une instruction demande le retour au programme principal le P rcupre depuis la pile tous les registres (avec certains P/C uniquement) et le compteur programme (dpilage). le P autorise les autres demandes dinterruption le P place sur le bus dadresse la valeur rcupre et recherche le code de la prochaine instruction lexcution du programme en cours avant linterruption se poursuit 9.3.4) IDENTIFICATION DES SOURCES DINTERRUPTION Les sources dinterruption sont : les units dchanges et priphriques, connectes en externe au P (cas dun systme P) ou internes au C. Ceci permet, par exemple, de demander une interruption ds quune nouvelle information a t applique en entre dune unit dchange des vnements tels que front ou tat appliqus directement sur le P ou la CPU du C sans passer par une unit dchange Les connexions pour les demandes dinterruption sont ralises de la faon suivante : Reprsentation simplifie pour les interruptions (bus, mmoires, non reprsents) pour un C pour un systme P
unit d'change interne 1 unit d'change interne 2 ... unit d'change 1 unit d'change 2 ...

entres INT1 d'inter- INT2 INT3 ruption INT4

entres INT1 d'interINT2 ruption

CPU

C
Fig. 39 : liaisons de demandes dinterruption dans C

Systme P
Fig. 40 : liaisons de demandes dinterruption dans un systme P

Dans le systme P de lexemple, une demande dinterruption provoque par lunit 1 ou lunit 2 ou une autre unit active lentre dinterruption INT2. Un C peut reconnatre chaque source dinterruption. A chacune de ces sources, on peut attribuer un programme dinterruption diffrent. Lidentification dune source dinterruption permet de lui affecter une priorit. Un C peut disposer dun grand nombre de sources dinterruption identifiable (ex : 21 pour le 68HC11). La plupart des Ps et les CPUs de certains Cs disposent dassez peu dentres dinterruption (2 4), alors quil y a souvent plus de sources dinterruption. La CPU dun PIC ne dispose que de 2 entres dinterruption. Il nest pas possible didentifier directement chaque source dinterruption. Dans lexemple prcdent, lorsquune unit dchange demande une interruption, cest lentre INT2 qui est actiP et C : une introduction P. Morenton 25/11/06

41

ve. Le programme dinterruption associ devra recherche lunit qui a demand linterruption, en lisant successivement leurs registres internes dtat. Pour quun P puisse identifier rapidement une source dinterruption, il faut lui adjoindre un circuit spcialis, le contrleur dinterruption. 9.3.5) PRISE EN COMPTE DES INTERRUPTIONS Certaines interruptions peuvent tre masques, cest--dire quelles ne sont pas prises en compte. Pour les interruptions masquables, lautorisation ou linhibition peut se faire : globalement individuellement autorisation / inhibition interruption globale, pour toutes les sources dinterruption masquables individuelle contrle un bit dun registre de contrle dans un P ou la CPU dun C un bit ddi chaque interruption dans un registre de contrle dans un P ou la CPU dun C

Remarque : certains Cs (tel le PIC) ont 3 niveaux : autorisation globale, autorisation pour tous les priphriques, autorisation individuelle Les demandes d'interruptions peuvent tre mmorisables ou non. Si une demande intervient un court instant puis disparat et n'est pas mmorise, elle n'est pas prise en compte si les interruptions sont masques. Si elle est mmorise, elle sera prise en compte et servie ds que les interruptions seront autorises. 9.3.6 TRAITEMENT DES INTERRUPTIONS / IMBRICATION DES INTERRUPTIONS En plus de ce qui est indiqu en 9.3.2 et 9.3.3, lors du traitement d'une interruption, le P inhibe globalement toute demande d'interruption masquable, par positionnement dun bit dans un registre de contrle. Ceci permet d'viter qu'une nouvelle interruption intervienne de faon indsirable lors du traitement d'une interruption prcdente. En fin d'interruption, les interruptions sont de nouveau globalement autorises. Le programmeur a le choix de prvoir la possibilit d'interruptions imbriques, en validant globalement les interruptions l'aide d'une instruction dans le programme d'interruption. Le programme est dans ce cas beaucoup plus difficile concevoir. Attention au risque de dbordement de pile

P et C : une introduction

P. Morenton

25/11/06

42

9.3.7) PRIORIT DES INTERRUPTIONS La plupart des Ps/Cs permettent dtablir des priorits entre interruptions. Certains Cs nont pas de priorit entre les interruptions (ex : PIC). La priorit des interruptions intervient lorsque plusieurs demandes d'interruptions sont en attente de traitement. Ceci correspond plusieurs cas : le programme est en droulement normal et plusieurs demandes surviennent avant leur prise en compte (fin de l'instruction en cours). une interruption est en cours de traitement avec inhibition globale des nouvelles demandes d'interruptions et plusieurs demandes surviennent avant la fin du traitement. L'interruption en attente servie en 1re est la plus prioritaire. Dtermination de la priorit dune interruption Dans un C, lordre de priorit est fix par le constructeur. Quelques fois, il est possible lutilisateur de modifier un ordre de priorit par dfaut, en crivant un mot dans un registre de configuration. Dans un systme P, il nexiste une priorit quentre les quelques entres dinterruption disponibles. Dans le cas o il y a de nombreuses units dchange, il est possible de fixer un ordre de priorit en intercalant un circuit spcialis, un contrleur dinterruption, entre le P et les units dchange,

9.3.8) LES INTERRUPTIONS DANS LE PROGRAMME SOURCE Avec des interruptions vectorises (cas le plus frquent), le programmeur doit crire les programmes dinterruption, et remplir la zone mmoire qui contient les vecteurs dinterruption (adresses de dbut des sous programmes dinterruption). Ceci seffectue de faon trs simple au niveau de lcriture du programme source, avec lemploi dtiquette qui permet de ne pas connatre ladresse physique exacte de dbut dun programme dinterruption. Voir sur la structure du programme source. La zone mmoire des vecteurs dinterruption est donne dans la documentation technique des Ps ou Cs. Avec des interruptions non vectorises et une adresse unique pour toutes les sources dinterruption (ex PIC), le programmeur doit crire le programme dinterruption partir de ladresse mentionne dans la documentation. Le programme dinterruption doit commencer par rechercher la source de linterruption. 9.3.9 ACQUITTEMENT DUNE INTERRUPTION Lorsquune demande dinterruption survient un bit spcifique ( flag ) cette demande est positionn dans un registre dtat. Cest ce bit qui entrane le traitement de linterruption. En fin de traitement dune interruption, il faut replacer le bit dans son tat initial pour viter que le P/C ne reparte en interruption : cest lacquittement de linterruption.
P et C : une introduction P. Morenton 25/11/06

43

9.4) LANCEMENT DU PROGRAMME ET RINITIALISATION


Le lancement dun programme aprs la mise sous tension ou aprs une rinitialisation suite un dfaut est souvent appel procdure de RZ ou RESET. Selon les Ps ou Cs cette procdure sapparente ou non une interruption. La RZ est utilise pour : charger un certains nombre de registres internes des valeurs par dfaut. Parmi ces registres, on trouve des registres de configuration forcer le P ou C dmarrer lexcution du programme une certaine adresse (ladresse de dpart). La RZ peut tre commande : par une broche externe souvent note RESET (sur tous les P et C) par une instruction spcifique par une instruction illgale (mauvais code opratoire) par un chien de garde interne (voir suivant) La broche RESET est souvent bi-directionnelle : un tat actif appliqu de lextrieur effectue une RZ, si une RZ est commande en interne (ex : instruction illgale) cette broche est force son tat actif pour commander les priphriques externes qui sont connects. Cette possibilit est due la structure interne pour la broche : une entre cble sur une sortie drain ouvert commande par la RAZ interne. COMMANDE EXTERNE DE LA RZ La broche RESET est utilise en entre. La commande externe de RZ peut tre effectue : automatiquement la mise sous tension par un circuit externe de dtection de dfaut (ex : tension dalimentation insuffisante pour garantir un bon fonctionnement) par une action manuelle sur une touche ou un bouton-poussoir (le dernier recours lorsque plus rien ne fonctionne !) Pour un fonctionnement correct de la commande externe au moment de la mise sous tension, il faut souvent imposer un tat actif suffisamment longtemps aprs ltablissement de la tension dalimentation. La ralisation consiste souvent en un circuit RC connect sur la broche RESET. ADRESSE DE DPART DU PROGRAMME PRINCIPAL Ladresse de dpart peut tre vectorise ou non selon les P/C. Adresse non vectorise Aprs une RZ le P effectue un certain nombre doprations puis dpose sur le bus dadresse une adresse prdfinie et recherche le 1er code opratoire. Le programme sexcute. Par exemple le 80C196 dlivre ladresse 2080h aprs un RESET

P et C : une introduction

P. Morenton

25/11/06

44

Adresse vectorise

Aprs la RZ, le P effectue un certain nombre doprations puis charge le contenu dune zone mmoire dans le registre dadresse. Ce contenu correspond ladresse de dpart du programme principal ; il est sur 2 octets (dans 2 emplacements mmoire) pour un registre dadresse de 16 bits. Cette opration dure quelques cycles et est transparente au programmeur. Le contenu de la zone mmoire est ladresse de dpart ou vecteur du RESET Le P dpose ensuite le contenu du registre dadresse sur le bus dadresse et recherche le 1er code opratoire. Le programme sexcute. Exemple : le 68HC11 charge dans son registre dadresse le contenu des adresses mmoire FFFEh et FFFFh

Remarque : Certains P/C font la distinction entre les diffrentes commandes de RZ et disposent dun vecteur pour chaque RZ.

9.5) SURVEILLANCE DU DROULEMENT DU PROGRAMME : LE CHIEN DE GARDE


Le chien de garde (watch dog) permet de surveiller le bon droulement dun programme de la faon suivante : en fonctionnement normal, le programmeur a insr rgulirement des instructions dans son programme pour que des actions soient effectues intervalles de temps assez rguliers. Ces actions bloquent le dispositif de RZ lors dune erreur dans le droulement du programme ( plantage ), les actions nont plus lieu ou des intervalles de temps trop espacs. La RZ intervient alors. Le chien de garde peut tre interne ou externe. Chien de garde externe Un chien de garde externe est souvent constitu dun monostable redclenchable. Les actions du programme consistent en des fronts appliqus sur lentre dhorloge, via une unit dchange. La sortie du monostable est connecte lentre de RESET. Chien de garde interne Un chien de garde interne est souvent constitu dun compteur ou dun dcompteur dont les sorties voluent en permanence au rythme dune horloge interne. Les actions du programme consistent crire un (ou plusieurs) mots dans un registre de contrle pour rinitialiser le contenu du compteur. En labsence de rinitialisation, lorsque le contenu passe par une valeur prdtermine (ex 0), une RZ intervient. Les actions du programme doivent empcher au compteur datteindre la valeur prdtermine. Le chien de garde interne peut tre mis en service ou non par programmation dun bit dun registre interne. Le chien de garde tant command avec une horloge issue de loscillateur quartz, si cette horloge a un dysfonctionnement, le chien de garde ne fonctionne plus. Certains C ont en complment un circuit de surveillance de lhorloge.

P et C : une introduction

P. Morenton

25/11/06

45

10) STRUCTURE INTERNE / MODLE LOGICIEL DUN P OU CPU DUN C 10.1) STRUCTURE INTERNE
Les structures internes dtailles des P varient assez fortement dun constructeur lautre, notamment cause de la prsence ou non de registres spcialiss (accumulateur, ) et des diffrentes faons de grer la mmoire (modes dadressage). Les structures internes des Ps sont souvent trs complexes, aussi les constructeurs ne donnent dans leurs notices techniques que des structures trs simplifies. Celles-ci permettent davoir une vue densemble des registres disponibles mais ne sont pas faites pour une comprhension du fonctionnement interne (qui est inutile lutilisateur). Exemple de structure interne : 80186 dIntel

Fig. 41 : Structure interne simplifie du 80186 dIntel

A modifier Dans lunit dexcution (partie oprative mentionne prcdemment), on retrouve quelquesuns des lments mentionns en 6): lALU, le registre dtat. A est laccumulateur principal ; B, C et D peuvent avoir de multiples fonctions. SP est le pointeur de pile ; les registres BP, SI, DI sont lis au mode dadressage. Pour la partie dinterfaage avec le bus, le registre IS joue un peu le rle du compteur programme. Les registres CS, DS, ES, SS sont lis aux modes dadressage. Ladresse est ici dtermine en effectuant la somme de 2 registres avec le sommateur .

P et C : une introduction

P. Morenton

25/11/06

46

10.2) MODLE LOGICIEL


La structure interne, mme simplifie, nest que de peu dutilit pour lutilisateur. Certains constructeurs ne donnent dans leur notice technique que le modle logiciel ou modle du programmeur. Exemple de modle logiciel : CPU du 68HC11

Fig. 42 : modle logiciel CPU 68HC11

Les registres qui apparaissent ici ont tous t dcrits prcdemment. Le registre condition codes est un registre dtat associ aux accumulateurs A et B et un registre de contrle pour les interruptions.

11) LES PRINCIPALES INTERFACES DUN P 11.1) INTRODUCTION


Les circuits dinterface ont 2 utilits : la communication avec le monde extrieur, quelques fois via dautres circuits, et la communication entre systmes P ou C. Les circuits dinterface correspondent aux units dchange mentionnes au 4. On ne traitera ici que des interfaces les plus usuelles quon rencontre dans beaucoup de systmes P et C. Les interfaces sont composes de registres accessibles par le P. Cest travers ces registres que seffectuent les oprations dentres/sorties. Ces interfaces peuvent tre perues de deux faons diffrentes selon les constructeurs : les botiers dE/S sont traits comme des botiers mmoire de n adresses (1 par registre) (ex : P Motorola de la famille 6800, ... C de la famille HC11, ...). Les inconvnients consistent en une perte de place de lespace dadressage. les E/S correspondent des instructions spciales et des signaux permettant de diffrencier les transferts mmoires des E/S (ex : pour certains P Intel). Les avantages sont lutilisation dinstructions plus rapides car plus courtes pour les E/S. Les inconvnients sont
P et C : une introduction P. Morenton 25/11/06

47

une plus grande complexit matrielle et la mobilisation de broches du P pour les signaux dE/S spcifiques. Chaque interface est constitue, du point de vue de lutilisateur, de : un ou plusieurs registres de contrle (control register) permettant de dfinir son fonctionnement un registre dtat (status register) donnant des indications sur le droulement des oprations un ou plusieurs registres permettant le transfert des donnes, gnralement appels registres de donnes (data register) ou registres dentre / sortie (input / output register). Chaque registre a une adresse spcifique.

11.2) CONNEXION DUN BOTIER DINTERFACE


Dans un systme P, un botier dinterface se connecte de la mme faon quun botier mmoire, sauf en ce qui concerne quelques signaux spcifiques dans certains cas. Voir la figure du 5.1). Dans un C, les interfaces sont incluses. Toutefois si on veut accrotre leur nombre, il est possible de le faire avec certains C. Pour que ceci soit ralisable, le C doit pouvoir fonctionner en mode tendu (voir plus loin). Dans ce cas tous les bus sont disponibles, comme sur un P. On allie alors les avantages du P et du C

11.3) INTERFACES DE/S PARALLLE


Les changes avec lextrieur se font par mots de mme taille que le bus de donnes du P. Ce sont les interfaces les plus rpandues et les plus simples mettre en uvre. Dans un systme P, un botier dinterface // permet en gnral dassurer des changes avec plusieurs mots. A chaque mot correspond un port. Dans de nombreux cas, chaque port sont associes des broches de contrle qui seront dcrites par la suite pour la gestion des changes. Ces broches peuvent avoir plusieurs fonctions. Les changes peuvent seffectuer avec ou sans protocole de communication. Les changes peuvent seffectuer soit dans un sens soit dans lautre, aprs programmation du port (criture dun mot dans un registre de contrle). Quelques fois les changes peuvent tre bidirectionnels avec ncessairement des signaux pour un protocole de communication. Aprs programmation, lenvoi dune donne lextrieur se fait par criture dans le registre de sortie, la lecture dune donne de lextrieur seffectue par lecture du registre dentre. 11.3.1) CHANGES SANS PROTOCOLE DE COMMUNICATION Les interfaces de ce type sont les plus simples mettre en uvre. Les changes seffectuent soit dans un sens, soit dans lautre. Le P envoie des donnes vers lextrieur sans se soucier de savoir si elles sont correctement reues. De mme le P lit les donnes de lextrieur sans savoir si lorgane transmetteur les a correctement envoyes. Exemple : Le port E du 68HC11 est utilisable en port parallle dentre sans possibilit de protocole dchange.
P et C : une introduction P. Morenton 25/11/06

48

11.3.2) CHANGES AVEC PROTOCOLES DE COMMUNICATION Il existe plusieurs possibilits. Nous naborderons quun exemple. A chaque port sont associs des signaux pour la gestion des changes. Ce type dchange et les signaux ncessaires sont dits poigne de main (handshake). Exemple de Protocole pour des changes unidirectionnels
donne prte transmettre PORT D'UNE INTERFACE Priphrique

adresses donnes contrle demande d'interruption

DONNEE donne lue

C ou systme P
Fig. 43 : Liaisons avec poigne de main entre interface et priphrique

le P crit des donnes dans le registre de sortie du port activation de la broche donne prtre transmettre le priphrique lit la donne et active la broche donne lue . lactivation de la broche donne lue entrane : la modification dun bit dtat dun registre associ au port la transmission dune demande dinterruption (si elle a t autorise) la dsactivation de la broche donne prte transmettre le P ou la CPU du C peut prsenter une nouvelle donne, aprs avoir auparavant lu le registre contenant le bit dtat pour rinitialiser celui-ci et annuler la demande dinterruption. Le fonctionnement pour lautre sens de fonctionnement se dduit facilement de ce qui prcde. Pour les diffrents fonctionnements possibles, se rfrer la documentation de chaque interface ou C.

11.4) INTERFACES SRIES


11.4.1) GNRALITS Pour rduire le nombre de fils, on utilise des liaisons srie : les donnes sont envoyes bit par bit sur un fil. Dans ce cas les liaisons minimales sont : un fil pour le transfert des informations dans un sens, un fil pour le transfert dans lautre sens, un fil pour la masse. Certaines liaisons sries ncessitent plus de fils, comme nous le verrons par la suite. Le P dlivrant les donnes sous forme parallle (par mot de la taille du bus de donnes), il est ncessaire dutiliser un circuit dinterface parallle/srie, plus simplement appel interface srie. Le centre dun tel circuit est un registre dcalage.

P et C : une introduction

P. Morenton

25/11/06

49

mission de donnes
horloge Sortie srie Registre dcalage

Rception de donnes
horloge Entre srie Registre dcalage

Entre parallle venant du bus de donnes

Sortie parallle vers le bus de donnes

Fig. 44 : mission / rception de donnes srie

La sortie srie (metteur) ou lentre srie (rcepteur) seffectue la cadence dune horloge (1 bit par priode dhorloge). Lhorloge est souvent gnre de faon interne, partir de loscillateur quartz du P ou C. Il existe souvent plusieurs options de fonctionnement. Le choix retenu seffectue par criture dun mot dans un (ou plusieurs) registre(s) de contrle de linterface srie. Aprs programmation, lenvoi dun mot seffectue par une criture dans le registre de sortie ; la lecture dun mot reu seffectue par lecture du registre dentre. Pour effectuer ces oprations aux bonnes dates, on peut utiliser les interruptions gnres par une fin dmission ou de rception (voir 9.3) Il est indispensable que le front de lhorloge qui commande le dcalage en rception ait lieu lorsque le bit transmis est valide, cest--dire suffisamment longtemps aprs le changement dtat du bit prcdent et suffisamment longtemps avant le changement dtat du bit suivant. La communication entre rcepteur ncessite que les horloges soient : de mme frquence et synchrones ou de frquences quasi identiques et quasiment synchrones durant le temps utile de la communication Selon que lon adopte une solution ou lautre, on obtient 2 types de liaisons : Les liaisons synchrones : la transmission est faite au rythme dun signal dhorloge transmis avec les donnes. Les paquets de donnes (un paquet = un mot de la taille du bus de donnes) peuvent tre envoys les uns la suite des autres, sans temps mort, de manire continue. Les liaisons asynchrones : la transmission est faite de faon discontinue par paquet. Chaque paquet est de longueur constante et il est repr par un code de dbut et de fin. Durant la transmission dun paquet, le rcepteur gnre une horloge de frquence quasi identique celle de lmetteur, avec les fronts actifs pour le dcalage correctement placs par rapport aux donnes. En gnral, lmetteur et le rcepteur doivent avoir t programms pour fonctionner la mme vitesse de transmission. 11.4.2) INTERFACES SRIES ASYNCHRONES Elles sont trs utilises en informatique. Les ports srie des ordinateurs PC sont de ce type, la norme RS232. Beaucoup de C intgrent une interface de ce type, mais ne sont toutefois pas

P et C : une introduction

P. Morenton

25/11/06

50

compatibles sur les niveaux de tension. Il suffit dajouter un circuit externe pour assurer cette compatibilit. Comme lhorloge nest pas transmise, il faut que lhorloge de rception soit correctement cale par rapport lhorloge dmission. La figure ci-dessous montre une transmission avec une horloge de rception correctement cale par rapport lhorloge dmission et avec une horloge de rception incorrecte.
H mission donnes transmises H rception correcte H rception mauvaire 0 1 1 0 1 0 0 1 donnes lues t 0 1 1 0 1 0 0 1 t

t donnes lues

Fig. 45 : Transmission avec horloge rception correcte et incorrecte

Pour synchroniser lhorloge rception sur celle dmission, le mot transmettre est encadr dun bit de dbut et dun bit de fin. Le mcanisme de synchronisation est transparent lutilisateur. La norme RS232 permet plusieurs options et plusieurs vitesses de transmission. Un registre de contrle est donc associ linterface srie asynchrone pour la programmation de la configuration dsire. Les connexions de la norme RS232 comprennent en plus des liaisons pour les donnes des signaux de contrle des changes. Les interfaces srie ne grent gnralement pas ces signaux. Voir documentation de la norme RS232. 11.4.3) INTERFACES SRIE SYNCHRONES Elles sont utilises pour : la communication entre 2 Cs la communication entre 1 C et un circuit tel que horloge temps rel, mmoire, Les informations peuvent tre changes avec des dbits levs et trs peu de fils de liaisons. Les informations sont vhicules en continu, sans quil soit ncessaire de placer des bits de dpart et darrt, comme avec une liaison asynchrone. Les changes se font entre un matre et un ou plusieurs esclaves. Les interfaces srie synchrones sont prvues pour que les changes se fassent avec lhorloge dlivre par le circuit matre. A chaque priode dhorloge : une donne est envoye du matre vers lesclave une donne est retourne de
P et C : une introduction P. Morenton 25/11/06

donnes Matre (ex: C) H transmission donnes


Fig. 46 : liaison srie synchrone

Esclave (ex: horloge temps rel -heure, date-)

51

lesclave vers le matre Toutes les donnes changes nont pas toujours une signification (ex : lorsque le matre veut uniquement crire dans un registre de lesclave, ce qui est retourn na aucune importance). Un protocole trs strict est respecter. Il nexiste pas de normes pour les changes srie synchrones, les associations de circuits via une liaison srie synchrone ne sont souvent possibles quentre membres dune mme famille chez un mme constructeur. Une interface synchrone peut se programmer (vitesse de transmission, position des fronts de lhorloge par rapport aux donnes) en crivant dans son registre de contrle.

11.5) CONVERTISSEUR ANALOGIQUE NUMRIQUE (CAN)


11.5.1) CAN DANS UN SYSTME P Il y a 2 possibilits pour la connexion dun CAN : directement sur le bus, comme un autre botier. Le CAN est spcialement prvu pour cette utilisation et possde un registre de sortie 3 tats et des signaux pour le contrle de la conversion compatibles avec les signaux du bus de contrle du P. au travers dune interface parallle ou une interface srie. 11.5.2) CAN INTGR DUN C Les CAN intgrs sont approximations successives. Le lancement dune conversion seffectue simplement en crivant dans un registre de contrle. La conversion est prcde dune phase dchantillonnage blocage. Il est donc inutile de placer en externe un chantillonneur bloqueur. Voir la documentation des C. Un multiplexeur est souvent plac avant le CAN. La voie convertir est choisie par programmation. 11.5.3) CAN EXTERNE POUR UN C Cette solution nest retenir que pour quelques cas particuliers : augmentation de la rsolution par rapport au CAN interne, famille de C sans CAN (rare), Si le C travaille en mode circuit seul , la connexion dun CAN accs parallle sur un port occupe beaucoup de liaison (8 pour un CAN 8 bits, plus des signaux de contrle du fonctionnement). Pour diminuer le nombre de liaisons ncessaires, les CAN accs srie sont les plus utiliss. Ils ne ncessitent que 2 ou 3 liaisons et peuvent se connecter sur le port srie synchrone ou sur des sorties dun port parallle. Dans ce dernier cas, le signal dhorloge est cr par logiciel.

11.6) CONVERTISSEUR NUMRIQUE ANALOGIQUE (CNA)


11.6.1) CNA DANS UN SYSTME P Il y a 2 possibilits pour la connexion dun CNA : directement sur les bus, comme un autre botier. Le CNA est spcialement prvu pour cette utilisation et il a dans ce cas un registre de mmorisation interne. au travers une interface parallle ou une interface srie
P et C : une introduction P. Morenton 25/11/06

52

11.6.2) CNA DANS UN C Ils sont rarement intgrs dans un C. Certains C (ex : 80C196) intgrent un gnrateur de signaux rectangulaires moduls en largeur dimpulsion (MLI ou PWM, Pulse Width Modulation). Il est possible de raliser un convertisseur analogique numrique en plaant en sortie de ce convertisseur un filtre passe bas qui ne laisse passer que la valeur moyenne. Pour plus de dtail, voir documentation des C disposant de cette possibilit. 11.6.3) CNA EXTERNE POUR UN C Si le C travaille en mode circuit seul , la connexion dun CNA accs parallle sur un port occupe beaucoup de liaison (8 pour un CNA 8 bits, plus ventuellement des signaux de contrle du fonctionnement). Pour diminuer le nombre de liaisons ncessaires, les CNA accs srie se dveloppent de plus en plus. Ils ne ncessitent que 2 ou 3 liaisons et peuvent se connecter sur le port srie synchrone ou sur des sorties dun port parallle. Dans ce dernier cas, le signal dhorloge est cr par logiciel.

11.7) COMPTEUR-TEMPORISATEUR (TIMER)


Un compteur temporisateur permet de : dater des vnements extrieurs. Il permet donc de mesurer des intervalles de temps entre 2 vnements (fronts dun signal). Ceci ncessite un calcul ralis par le logiciel. produire des vnements extrieurs (impulsions, signaux priodiques, ) Un compteur temporisateur dispose de : une ou plusieurs entres spcifiques pour la datation dvnements externes une ou plusieurs sorties spcifiques pour la production de signaux Il existe plusieurs types de temporisateurs. Tous sont btis autour dun compteur ou dun dcompteur qui sincrmente au rythme dune horloge la plupart du temps issue de loscillateur quartz du P ou C. La frquence de cette horloge dpend du quartz et dun mot de contrle crit dans un registre de contrle. Selon les interfaces (externes pour un systme P ou internes dans un C), le compteur peut fonctionner : en permanence (mode free running ) uniquement aprs une validation (externe ou par criture dans un registre de contrle). Dans ce cas, il est aussi possible dinitialiser la valeur du compteur Lutilisation de compteur free running complique un peu le logiciel. Il nest pas possible dans cette introduction de dtailler cette partie sur les timers qui sont les interfaces dont la mise en uvre est la moins facile. Voici juste un exemple de la faon de procder pour effectuer une mesure dintervalle de temps. Exemple : On dsire effectuer une mesure dintervalle de temps entre un front montant et un front descendant sur un signal externe. Le timer utilise un compteur free running . En simplifiant, les oprations effectuer sont : programmation du timer (frquence de lhorloge du compteur, entre utiliser, front prendre en compte, )
P et C : une introduction P. Morenton 25/11/06

53

au front montant, copie automatique du contenu du compteur dans un registre spcifique par logiciel (procdure dinterruption par exemple), recopie du registre spcifique dans un emplacement mmoire. Le contenu du compteur C1 correspond la date t1. reprogrammation ventuelle du timer (attente dun nouveau front, ) au front descendant, copie automatique du contenu du compteur dans un registre spcifique. Le contenu correspond C2. par logiciel, calcul de t2-t1. Lintervalle de temps mesur vaut (C2-C1)T, avec T= priode de lhorloge du compteur. Pour cette procdure, il faut de plus sassurer que le contenu du compteur nest jamais pass par 0 (dbordement)

12) STRUCTURE MATRIELLE DUN SYSTME P/C


La structure assez dtaille ne peut tre introduite quaprs explication sur les bus dadresses et de donnes.

12.1) BUS DADRESSES ET BUS DE DONNES


Ces bus sont disponibles sur les P. Pour les C, ces bus peuvent : ne jamais tre disponibles (bus internes uniquement). Le C travaille uniquement en mode circuit seul (Single chip). (Il faut cependant lui rajouter quelques composants externes pour quil fonctionne) tre disponibles ou non. Dans le 1er cas, ils sont sortis sur des broches la place dinterfaces internes ; dans le 2me cas, on peut disposer normalement des interfaces. Lorsque les bus sont disponibles, on peut rajouter des circuits externes, tels des circuits mmoires pour tendre les capacits du C. Le C peut travailler en mode single chip ou en mode tendu (extended). Ces bus complets ncessitent beaucoup de connexions. Il est possible de diminuer le nombre de broches utiliser avec la technique du multiplexage temporel. 12.1.1) MODE CIRCUIT SEUL / MODE TENDU Selon les C, le choix seffectue laide dune ou plusieurs entres de slection de mode. Pour certains P, il est possible de rcuprer les ports dinterfaces parallles pris par les bus de donnes et dadresses en plaant un circuit externe spcifique. On dispose ainsi de lquivalent dun C complet avec tous ces ports + ses bus de donnes et dadresses. 12.1.2) MULTIPLEXAGE ADRESSES/DONNES Pour diminuer le nombre de broches utilises, on utilise les mme broches pour acheminer adresses et donnes, des dates diffrentes. Un (ou plusieurs) circuit(s) de mmorisation est (sont) ncessaire(s) pour quune date donne, on dispose de la totalit des bus.
P et C : une introduction P. Morenton 25/11/06

54

Selon les C une partie du bus de donnes ou sa totalit est multiplexe avec le bus dadresse Exemple : Le C 80C196 peut fonctionner, en mode tendu, dans les cas suivants

80C196

Bus de contrle

80C196

Bus de contrle

PORT 3 PORT 4

Bus d'adresses 16 bits Bus de donnes 16 bits multiplexs

PORT 4 Bus d'adresses de poids fort 8 bits

PORT 3

Bus d'adresses de poids faible 8bits Bus de donnes 8 bits multiplexs

Aprs dmultiplexage, les bus dadresses et de donnes ont 16 bits

Aprs dmultiplexage, le bus dadresses a 16 bits et le bus de donnes a 8 bits

Fig. 47 : 2 modes de fonctionnement tendu du 80C196

Les chronogrammes des bus et des signaux de contrle sont les suivants :
ALE (Adress Latch Enable) AD0-15 Adresse Donne

ALE (Adress Latch Enable) AD0-7 AD8-15 Poids faible de l'adresse Donne

Poids fort de l'adresse

Fig. 48 : bus adresses/donnes et sigaux de contrle du 80C196

Les informations prsentes dans la 1re partie du cycle (adresse complte ou bits de poids faible de ladresse) doivent tre mmorises sur le front descendant de ALE (Address Latch Enable). Ceci est facilement ralisable avec un (ou 2) registre(s) de type verrou D (74xx373). Dans la 2me partie du cycle : dans le cas du bus 8 bits la partie haute de ladresse est disponible en AD8-15 la partie basse est disponible en sortie du circuit de mmorisation externe la donne est disponible en AD0-7 dans le cas de bus 16 bits ladresse est disponible en sortie du circuit de mmorisation la donne est disponible en AD0-15

12.2) COMPOSANTS ANNEXES AU P OU C ET CONNEXIONS


Par rapport aux schmas fonctionnels du 5, il faut toujours rajouter : les alimentations des circuits, avec des condensateurs de dcouplage

P et C : une introduction

P. Morenton

25/11/06

55

le circuit dhorloge pour le squenceur du P ou C. Il est aussi utilis pour certaines interfaces le circuit dinitialisation la mise sous tension ou rnitialisation aprs dfaut (baisse de la tension dalimentation, ) les connexions des entres dinterruption Dans certains cas, il faut aussi rajouter : les tensions de rfrences pour le convertisseur A/N et N/A les connexions pour les modes de fonctionnement, Exemple : schma pour un C 68HC11 en mode tendu avec tous les composants ncessaires. Ici une mmoire EPROM de 8ko est utilise en externe.

Fig. 49 : 68HC11 en mode tendu avec mmoire externe

On distingue tous les composants et liaisons mentionns plus haut, avec notamment : le circuit MC34064 dinitialisation la mise sous tension et de rinitialisation en cas de baisse de la tension dalimentation les tensions de rfrence pour le CAN VRH et VRL ainsi que leur dcouplage les liaisons pour fixer le mode (ici mode tendu), avec MODA et MODB Certaines broches sont connectes des rsistances de tirage pour que leurs potentiels soient fixs. Ces broches restent utilisables. Certaines broches ont une double fonction choisie par programmation. Par exemple, PE/AN correspond soit un port // soit aux entres analogiques pour le CAN.
P et C : une introduction P. Morenton 25/11/06

56

Les adresses et les donnes sont sorties sur des bus externes. Les poids faibles des adresses sont multiplexs avec les donnes. Le circuit 74HC373 permet de mmoriser les poids faibles des adresses. Une mmoire programme de 8 koctets a t place en externe. Le dcodage dadresse est ralis par une porte Nand partir dA13 et A15. Une autre porte Nand est utilise pour laborer le signal /OE partir des signaux de contrle R//W et E. Les rsistances de tirage sur le bus de donnes ne sont pas indispensables.

13) STRUCTURE DU PROGRAMME SOURCE EN LANGAGE DASSEMBLAGE 13.1) GNRALITS


Un langage dassemblage est un langage dont chaque ligne correspond : une instruction du P/C une directive dassemblage (ordre donn au compilateur) un commentaire Le programme source peut se dcomposer en grandes sections qui sont parfois repres par des mots cls dans certaines syntaxes. Un programme source comprend : la partie programme proprement dite. Le programme se dcompose en : programme principal, sous-programmes et programmes dinterruptions. Cette partie est traduite par du code excutable lors de la compilation ou de lassemblage. la partie pour le placement de constantes en mmoire (ex : valeurs des vecteurs dinterruption). Cette partie nest pas traduite par du code excutable, mais elle permet de placer des valeurs en mmoire (par le programmateur, le simulateur ou lmulateur). une partie pour la dclaration de variables avec rservation de mmoire en RAM Une dclaration permet daffecter un nom symbolique un emplacement mmoire ; ce nom est ensuite utilis dans le reste du programme. une partie pour laffectation de noms symboliques des constantes. Ceci permet de rendre plus lisible un programme en employant ces noms symboliques. Un nom symbolique peut reprsenter une adresse dun registre, une constante, . Cette partie nest pas traduite par du code excutable. dautres parties qui ne peuvent tre prcises dans le cadre de cette introduction Les diffrentes sections dun programme source peuvent tre sur un seul fichier sur plusieurs fichiers. Cette solution permet une conception modulaire. Une partie dj crite peut tre rcupre dans un nouveau travail Lappel des diffrents fichiers peut se faire par des directives dans les fichiers eux-mmes ou lors de la phase qui suit la compilation ou lassemblage, ldition de lien. Les adresses de dpart du programme principal et des sous-programmes peuvent tre fixes dans le fichier qui contient ces programmes ou bien fixe lors de ldition de lien. Si les adresses ne sont pas fixes ds le dpart, on dit que les programmes sont relogeables.
P et C : une introduction P. Morenton 25/11/06

57

Pour plus de dtail voir document sur la compilation, lassemblage et ldition de liens.

13.2) EXEMPLE DE STRUCTURE DUN FICHIER SOURCE


Ce fichier exemple en langage dassemblage contient toutes les sections. Les directives dassemblage, qui ne sont pas traduites par du code excutable, sont soulignes. Ces directives ne correspondent aucune directive dun assembleur existant. Leurs noms ont t fixs pour quelles soient facilement comprhensibles. Il ny a pas dans cet exemple de mot-cl pour chacune des sections. Texte du programme source PORTA EGALE 1000h PORTB EGALE 1004h PORTE EGALE 100Ah ADRESSE_COURANTE F000h Commentaires quivalences symboliques. Lors de lassemblage, PORTA sera remplac par 1000h Fixe ladresse courante. Ce qui suit (ici le programme) sera rang en mmoire partir de cette adresse. le programme est constitu du programme principal et de sousprogrammes. ProgInter1 est ladresse de dbut du programme dinterruption pour une interface. Elle est place dans la mmoire programmes aux adresses FFD6 et FFD7. ProgInter2 est place aux adresses FFD8 et FFD9, lorsque le programme a besoin de manipuler Var1, il suffit dutiliser ce nom symbolique pour dsigner son emplacement mmoire. Var1 ncessite un octet en mmoire, Var2 en ncessite 2.

instructions du programme, 1 mnmonique par ligne

ADRESSE_COURANTE FFD6h (zone PROM) REMPLIR_AVEC DOUBLE_OCTET ProgInter1 REMPLIR_AVEC DOUBLE_OCTET ProgInter2

ADRESSE_COURANTE 0000h (zone RAM) Var1 RESERVER OCTET 1 Var2 RESERVER OCTET 2

Structure de la section programme Lemploi dtiquettes permet lutilisateur de saffranchir des adresses exactes des instructions pour les sauts, branchements conditionnels, appels de sous programmes. ADRESSE_COURANTE F000h 1re instruction du prog. principal 2me instruction .. Rep1 nme instruction SI RSULTAT=0, SAUT Rep1 APPEL SousProg1
P et C : une introduction P. Morenton

Adresse de dbut du programme

la nme instruction est repre par une tiquette (Rep1) qui correspond son adresse SI RSULTAT=0, SAUT est une instruction. Rep1 correspond ladresse de branchement. Lutilisateur na pas connatre ladresse exacte de la nme instruction. APPEL est linstruction dappel de SousProg1. Lutilisateur na pas connatre ladresse exacte de la 1re instruction
25/11/06

58

dernire instruction du prog. princ. de SousProg1 SousProg1 1re instruction 2me instruction dernire instruction du sous-prog. ProgInter1 1re instruction 2me instruction dernire instruction du dinter. SousProg1 est une tiquette qui correspond une adresse. Celle-ci est dtermine lors de la phase dassemblage.

ProgInter1 est une tiquette qui correspond une adresse. Celle-ci est dtermine lors de la phase dassemblage. ProgInter1 peut tre utilise pour placer le prog. vecteur dinterruption en mmoire.

14) RSUM GNRALITS


Un systme P ou un C permet de raliser un traitement automatique de linformation ou traitement de donnes. Un systme P est constitu dun P, qui ralise les traitements, et dautres circuits intgrs indispensables. Un C regroupe tous ces lments en un seul botier ; lquivalent du P est appel unit centrale de traitement (Central Process Unit, CPU). Un systme P ou un C est constitu dune unit de traitement qui ne comprend que des entres binaires (0/1). Pour le traitement dinformations analogiques, il faut des CAN et CNA. Le P (ou CPU dun C) excute une suite dinstructions qui constituent le programme rang dans une mmoire associe, des adresses dtermines. Chaque P possde un jeu dinstruction. Une fois le programme plac dans la mmoire associe, le P : recherche linstruction excuter une adresse de la mmoire dcode et excute linstruction calcule ladresse de la prochaine instruction

FLUX DE CONCEPTION
obtention du code placer en mmoire partir dun programme crit avec des mnmoniques puis assembl dun programme crit dans un langage de haut niveau (C, ) puis compil essais / mise au point : le P et sa mmoire programme associe ou le C est remplac par un mulateur qui permet une excution contrle du programme
P et C : une introduction P. Morenton 25/11/06

59

programmation de la mmoire programme

SYSTME MINIMUM
Un systme minimum est constitu de : une unit dchange : les interfaces dE/S. Elles sont vues comme un ensemble de registres accessibles. une unit centrale de traitement CPU une unit de stockage : les mmoires Les units sont interconnectes par des bus. Larchitecture la plus courante est de type Von Neuman. Dans ce cas, on dispose de : un bus de donnes sur lequel sont vhiculs : les codes des instructions les donnes (constantes, variables) des informations pour le calcul des adresses un bus dadresses sur lequel sont vhicules les adresses des mmoires et des diffrents registres des interfaces un bus de contrle qui comprend tous les signaux ncessaires pour la gestion des changes
Bus de contrle Dcodeur d'adresse

Bus d'adresse CS1 CS2 CS3

Mmoire programme EPROM

Mmoire donnes RAM

Interface parallle

OE

RD/WR

RD/WR

Bus de donne

LMENTS DE LA STRUCTURE INTERNE DUN P


Les traitements sont raliss avec lunit arithmtique et logique (Arithmetic Logic Unit, ALU). Les traitements sont : oprations arithmtiques (addition en base 2, soustraction, incrmentation, ) oprations logiques (ET, OU, OU exclusif, dcalages, rotations, ) Un registre associ lALU contient des bits dtats qui renseignent sur le rsultat de la dernire opration (=0, >0, <0, dpassement de capacit, ) Pour certains P, un ou 2 accumulateurs contiennent toujours un des oprandes et le rsultat de lopration. Un P contient un squenceur, command par une horloge (gnralement partir dun quartz), qui permet de gnrer toutes les commandes internes ncessaires au droulement.
P et C : une introduction P. Morenton 25/11/06

60

Les registres internes dun P permettent de mmorisation temporairement des donnes et ils sont aussi utiliss pour ladressage. Les principaux registres sont : accumulateur registre dadresse compteur ordinal registre instruction registre dindex (pour ladressage index) registre pointeur de pile

JEU DINSTRUCTIONS 2 types de P / C : CISC : (Complet Instruction Set Computer) : jeu dinstruction tendu RISC : (Reduced Instruction Set Computer) : jeu dinstruction rduit et grande vitesse dexcution (grce une architecture particulire Harvard) Les grandes catgories dinstructions sont : Instructions de transfert entre les registres internes et les registres ou emplacements mmoire externes Instructions de traitement (+, -, ET, OU, dcalages, etc.) Instructions de branchement et de rupture de squence : branchement inconditionnel ou conditionnel (en fonction des bits dtats) MODES DADRESSAGE Le mode dadressage concerne la faon dont est dsign loprande. Il se traduit par certaines rgles dcriture au niveau des mnmoniques et des oprandes. Ex : Avec la syntaxe assembleur Motorola pour P / C 8 bit les modes dadressages ne changent pas le mnmonique dune instruction. Seules changent les critures de loprande ou des informations pour dterminer son adresse. mode dadressage inhrent ou implicite immdiat commentaire exemple exemple criture en explication assembleur CLRA (CleaR A)

instruction sans oprande ou avec oprande connu avec mnmonique oprande immdiatement aprs le mnmonique (en mmoire programme aprs le code opratoire). loprande est dsign par son adresse complte

LDAA #$10

tendu

LoaD A = mettre dans A ; # est la marque de ladressage immdiat. Mettre 10 (en hexa) dans A LDAA $4000 Mettre dans A le contenu de ladresse 4000 (en hexa)
61

P et C : une introduction

P. Morenton

25/11/06

index

loprande est dsign par son adresse gale au contenu dun registre dindex + une valeur (ici directement spcifie)

LDAA 4,X

Mettre dans A le contenu de ladresse gale (X)+4

DROULEMENT DUN PROGRAMME


Diffrentes tapes rencontres lors du droulement dun programme lancement aprs la mise sous tension ou une rinitialisation droulement normal : programme principal + sous programmes interruption sur vnement extrieur Lors du droulement dun programme, il est ncessaire de mmoriser certains registres dans une zone de RAM avec un fonctionnement particulier : la pile

LA PILE La pile est une zone de RAM utilise pour sauvegarder des donnes temporaires. Elle est gre laide dun pointeur de pile contenu dans un registre interne au P (Stack Pointer SP). Celui-ci dsigne lemplacement libre de la pile pour une sauvegarde de donne. La sauvegarde dune donne dans la pile peut seffectuer automatiquement lors de certaines tapes du droulement dun programme ou laide dune instruction crite par le programmeur. Lors dun enregistrement, la donne est empile (place sur le haut de la pile) Lors dune restitution, la donne est dpile (retire du haut de la pile) Le pointeur de pile est automatiquement gr par le P. Lutilisateur doit uniquement spcifier le bas de la pile (adresse haute) avec une instruction particulire. Lutilisateur ne peut directement imposer une limite au haut de la pile, laide dune instruction particulire par exemple. DROULEMENT NORMAL Un programme est compos dun programme principal et de sous programmes. Le droulement du programme est le suivant : excution de la 1re partie du programme principal (PP), appel sous programme 1 (SP1) excution SP1, retour au PP excution 2me partie PP, appel SP2 excution SP2, retour au PP excution 3me partie PP Lappel dun sous programme se fait avec une instruction spcifique suivie de ladresse du sous programme. Le retour au programme principal se fait avec une instruction spcifique, place en fin de sous programme.

P et C : une introduction

P. Morenton

25/11/06

62

Lors de lappel dun sous programme, ladresse de retour au programme principal est mmorise dans la pile. Lors du retour dun sous programme, ladresse de retour est recharge dans le registre dadresse depuis la pile. Ces oprations sont automatiques et transparentes lutilisateur. Le pointeur de pile doit imprativement avoir t initialis en dbut de programme. INTERRUPTION Une interruption permet dinterrompre le droulement normal dun programme pour excuter un programme dinterruption. Une demande dinterruption est lie un vnement extrieur. Emploi : Units dchanges (interfaces), Ex : un vnement extrieur indique au P, via une interface, quune imprimante a bien reu le caractre transmis. Le programme dinterruption peut alors procder un nouvel envoi.

P et C : une introduction

P. Morenton

25/11/06

63

You might also like