Unité Centrale

Accueil
du Site

Choix des autres rubriques par Menu ou Parcours Séquentiel
 
Première page ici
  
Suite :

 


Plan d'étude du fonctionnement d'une carte-UC type

L'couvrira deux aspects très différents mais complémentaires :

  • Aspect matériel :

    Cet aspect intéresse ceux qui veulent comprendre ou réaliser des cartes spécifiques gérées par microprocesseur.


    Un module de commande pour automatisme programmé est physiquement constitué par une carte imprimée
    supportant et interconnectant :
    • un microprocesseur (Unité Centrale de Traitement - calcul -)
    • des mémoires,
    • des ports d'entrée (saisie d'informations externes)
    • des ports de sortie (envoi d'informations à l'environnement)
    • des circuits intégrés de logique (combinaisons de signaux binaires entre C.I. de la carte).


    L'étude qui va suivre décrit d'une manière générale :

    • Comment interconnecter les composants cités
    • Les mécanismes des échanges de données entre l'UC et lces divers composants.


  • Remarquons qu'il existe sur le marché des microcontrôleurs
    qui intègrent la plupart des ports de communication cités.

    Mais leur mise en oeuvre exige des outillages dont seuls disposent des industriels spécialisés.
  • Aspect logiciel :

    Comment écrire un programme, l'enregistrer en mémoire , le mettre au point, le dépanner (
    debug ).
    Cet aspect intéresse à la fois les concepteurs de cartes et les programmeurs "purs".
    Les premiers ont besoin de connaître les effets sur le matériel de chacune des instructions du programme, donc de connaître ces instructions et le déroulement pas à pas du programme.
    Ceux qui se destinent exclusivement à la programmation de systèmes automatisés ne peuvent pas ignorer les effets physiques des instructions.

Prérequis

Pour pouvoir suivre les schémas et les explications concernant les montages matériels,
une connaissance précise de la logique combinatoire est nécessaire.

ETATS LOGIQUES - HAUT - BAS - HAUTE IMPEDANCE (3 Etats)
PORTES LOGIQUES OU, ET,OU EXCLUSIF, etc
BASCULES CLASSIQUES, LECTURE D'UNE TABLE D'ETATS LOGIQUES.
LECTURE D'UN CHRONOGRAMME.

Pour bien comprendre le fonctionnement d'une unité centrale
il est indispensable de connaître en premier celui d'une mémoire électronique.
C'est pourquoi j'ai pris le soin d'expliquer en détail ce point important à la page :
Centre de ce site.
S'y reporter d'abord !

Progression conseillée

Vous trouverez dans ce site des pages d'informations sur le sujets suivants.

Schéma général de l'environnement matériel classique autour d'un processeur.
Relations avec son environnement. Ports.
Fonctionnement d'une mémoire
Divers types de mémoires
Cycle d'instructions (cette même page)
Unité Arithmétique et logique ALU
Cycles de lecture & écriture en mémoire externe
Cycles d'entrées-sorties ( IN-OUT )

Si vous débutez l'étude de ces systèmes, je vous conseille de les examiner dans l'ordre ci-dessus.

Schéma de principe d'une UC

Il s'agit ici du processeur lui-même, ne comprenant pas de ports de communication avec l'extérieur.

Voici un schéma de principe très simplifié d'une unité centrale classique.
Ce schéma sera complété au fur et à mesure que notre étude avancera.


Schéma interne de principe


Schéma externe - brochage;
Le "Bus de Contrôle" regroupe les signaux :
CLK, RST, RD, WR, HLD,HLDA, INT
Ils seront étudiés progressivement.

Sur le schéma
Signification
Bus des données
Ensemble de conducteurs permettant d'échanger des données de n bits
(généralement 8, 16, 32 bits suivant les capacités des UC)
avec les dispositifs externes tels que des mémoires ou des interfaces à des périphériques d'entrée ou de sortie tels que des imprimantes, capteurs ou actionneurs TOR (Tout ou Rien) ou analogiques, etc
Bus des adresses
Ensemble de conducteurs permettant à l'UC de fixer l'adresse qu'elle veut atteindre (pour une lecture ou une écriture) dans une mémoire externe,
ou désignant un dispositif d'interface à un capteur ou actionneur externe..
Bus de contrôle
Ensemble de conducteurs permettant au processeur de contrôler les dispositifs externes tels que des mémoires ou des interfaces à des capteurs ou des actionneurs afin de les valider au bon moment en synchronisme avec l'UC.
Tampons de bus
Registres temporaires permettant de mémoriser les données des bus en entrée ou en sortie tant que l'UC élabore l'information suivante à entrer/sortir.
ALU
Unité Arithmétique et Logique.
Permet d'effectuer les divers calculs arithmétiques ou logiques sur les données.
Sera étudiée à part à la page :
Unité de contrôle
Logique combinatoire, séquentielle & microprogrammée qui gère tout le fonctionnement interne et externe de l'UC.
Reg. état
Registre d'état : composé de bits "indicateurs d'état" décrivant les états particuliers dans lesquels peut se trouver l'UC au cours de son fonctionnement et qu'il est indispensable de connaître.
Entre autre, les résultats spéciaux de certaines opérations : dépassement de registres etc..
PC
Compteur de programme dont il sera question bientôt:
Reg. adressage
Un certain nombre de registres internes permettant d'élaborer de plusieurs manières différentes les adresses à envoyer sur le bus idoine .
Le chapitre consacré aux différents modes d'adressage sera étudié à la page "Transferts de données" en
Vous aurez une idée précise de la manière dont les divers circuits sont reliés à l'aide de bus,
en consultant la page de ce site destinée à donner quelques exemples de schémas réels d'interconnexion.
Elle est en :
Nous allons maintenant examiner tout cela en détail...

Exécution du programme

Bien entendu, l'UC n'a pas l'initiative des opérations qu'elle doit effectuer...
Elle les lit dans un programme constitué d'une suite de codes binaires
enregistrés en mémoire.

Instructions

Chaque opération est codée par une suite de valeurs binaires
(un octet, deux, trois, voire même quatre ou plus suivant le type d'UC).
Le premier octet représente généralement le type d'opération qu'elle doit effectuer (exemple "additionner")
Les octets suivants indiquent sur quels registres elle doit trouver les opérandes
.
Cette suite de valeurs binaires s'appelle une instruction.


Un programme est une suite d'instructions.

Mémoire Programme
Généralement, une UC ne dispose pas d'assez d'octets de mémoire
pour contenir la totalité des instructions d'un programme.
Quoique certains microcontrôleurs si !

Généralement, donc, le programme est contenu dans des mémoires externes
auxquelles l'UC est matériellement reliée par des ensembles de conducteurs appelés BUS.
Le programme consiste donc en une suite d'instructions,
Chaque instruction étant constituée elle même par une suite de codes.

C'est le programmeur (l'humain) qui détermine et écrit préalablement ces codes en séquence dans la mémoire.
L'UC a seulement l'initiative de les lire et de les exécuter dans l'ordre où elles ont été écrites.

Parvenus à ce point, deux questions se posent :

  • Comment se déroule physiquement une recherche d'instruction par l'UC ?
    Quels matériels, quels mécanismes met-elle en jeu ? Parcours des données ? Quels ressources mobilise-t-elle ?
    Comment, instruction après instruction, le programme se déroule-t-il matériellement ?
    Ce sont des questions que se pose le spécialiste du matériel : concepteur de cartes, technicien dépanneur.

  • Comment créer un programe ?
    Quels codes quel langage utiliser ?
    Ce sont les questions que se pose le programmeur, celui qui écrit le logiciel.
    .

On peut envisager d'ignorer totalement l'aspect matériel et ne parler que de logiciel.
Ce n'est pas l'objectif de ce cours destiné à ceux qui visent l'aspect automatismes industriels de l'informatique
et qui doivent comprendre en détail la conjugaison matériel-logiciel.

Les traiter exhastivement l'une après l'autre serait insatisfaisant
car elles sont constamment liées l'une à l'autre à quelque niveau que ce soit.

Je vais donc traiter les deux questions conjointement, en faisant avancer d'abord un peu l'aspect matériel,
puis en présentant l'aspect logiciel associé.
Puis j'avancerai un peu plus sur la connaissance des matériels
et j'ajouterai l'aspect logiciel associé aux nouvelles connaissances acquises en matériel... et ainsi de suite.


Cycle d'instruction

Précisons d'abord la nature d'une instruction

Nous avons déjà dit plus haut que l'unité centrale va "chercher" dans une mémoire externe (ou interne pour certains processeurs) les instructions lui indiquant les opérations qu'elle doit effectuer.

Une instruction se présente sous forme d'un certain nombre de codes binaires en mémoire.

Exemple d'instruction : C4 A7 CF (Sur 3 octets - écrite en hexadécimal).

Fonction : Additionner le contenu du registre d''adresse CFA7hexa de la mémoire (externe à l'UC)
au contenu du registre A (Nommé "Accumulateur") (interne au processeur)

Code opératoire de cette instruction (code machine) :

  • écrit en hexadécimal : C4 hexa
    (Dans certains langages comme le langage C : l'acriture hexadécimale est : 0xC4
    )

  • En binaire : 1100 0100bin

  • En code du langage "Asssembleur" (Permettant d'écrire le programme au plus près des possibilités de l'UC).
    ADDA

Instruction complète : C4 A7 CF
(écrite sur trois octets : le code opératoire suivi de l'adresse du registre concerné de la mémoire)

Vous reconnaissez l'adresse CF A7
(adresse de 16 bits) dont les deux octets on été inversés.
L'octet A7 le moins signifiant de l'adress CFA7 s'éxcrit en premier dans le langage assembleur.

Que fait faire cette instruction à l'UC ?
Accumulateur . Contenu de l'adresse

Code opératoire binaire (code-machine)
écrit ici en hexadécimal.

C4
Code opératoire écrit en langage "Assembleur"
ADDA
Instruction complète (en code-machine) :
C4 A7 CF
Instruction (en langage assembleur) :
ADDA 0xCFA7
  • C4 représente le code binaire qui fait reconnaître l'instruction par l'UC.
    Ce code, est dit "code-machine".
    L'opération qu'exécutera l'UC suite à la lecture des C4 A7 CF est la suivante :
    "Additionner le nombre BINAIRE contenu dans la mémoire à l'adresse CFA7hexa au nombre binaire contenu dans le registre interne nommé A (Accumulateur) de l'UC puis copier le résultat dans ce même registre interne A;

    Pourquoi l'écrit-on en hexadécimal ici ?
    Réponse : vous voyez-vous en train de manipuler des codes écrits en binaire ? C416 = 110001002 ?


  • L'instruction complète est : C4 A7 CF elle comporte 3 octets inscrits séquentiellement en mémoire.
    Le code opératoire est toujours placé en premier.
    L'adresse en mémoire de l'opérande externe
    peut être écrite A7 CF ( LSB d'abord ) dans certains processeurs,
    ou CF A7 (MSB d'abord dans d'autres : voyez la notice !

    Ceci suppose que le processeur travaille avec des adresses sur 16 bits, ce qui est fréquent mais pas universel.
  • Le code mémonique ( "mémonique" signifie "facile à retenir" ) ADDA
    (Ce code ADDA est ici une pure invention pour fixer les indées).

    Chaque processeur du commerce s'accompagne d'une notice dans laquelle toutes les instructions sont décrites en détail et, pour chacune, la notice indique le cone machine correspondant.

    Les codes mnémoniques des instructions sont également indiqués.
    Ils permettent aux programmeurs d'écrire plus facilement les programmes en langage dit "assembleur"

    Ces codes mnémoniques ne sont pas inscrits en mémoire,
    le processeur ne les comprendrait pas.

    Le fichier écrit en code assembleur est converti en la suite correspondante de codes machine formant le programme par des programmes informatiques de traduction nommés "Assembleur".

Etapes du cycle d'instruction

Chaque instruction complète (Ex : C4 A7 CF ) est exécutée en plusieurs étapes par le processeur.
Ces étapes se suivent d'après un cycle immuable d'opérations qu'il faut connaître.

Le mot "cycle" indique que le processus de recherche d'instruction par l'UC est cylique et répétitif.
La description qui va suivre vaut donc pour tous types d'instructions.

Compteur de programme

Toute UC possède et met à jour constamment un compteur de programme
C'est un registre interne généralement nommé PC ( Programm Counter
c.f. fig. ci-dessus).
qui contient à tout instant une adresse : l'adresse du code suivant à lire dans la mémoire programme.
Généralement les UC manipulent des adresses à 16 bits, mais ce n'est pas universel.
Dans les certains schémas de principe je ne leur accorde que 8 bits pour simplifier !
Je suis certain que cela ne vous arrêtera pas...

Pour chaque instruction, l'UC lit en mémoire les codes un par un en séquence
à partir de l'adresse en mémoire contenue dans PC.
Elle incrémente
à chaque fois PC de manière à ce qu'après chaque lecture d'un octet de code,
PC contienne l'adresse du code suivant en mémoire.
En fin de lecture d'instruction, PC contient donc l'adresse du premier code de la prochaine instruction à exécuter.

Lecture séquentielle des codes en mémoire ( fetch cycle )

1 - Point de départ
Une fois terminée l'exécution de l'instruction précédente, l'UC incrémente son PC qui pointe maintenant sur le premier code de l'instruction à effectuer (ADDA = C4 dans l'exemple précédent).

Il faut à ce stade que vous ayez bien compris le fonctionnement d'une mémoire.
Je vous rappelle qu'il est entièrement expliqué à la page de ce site.
A partir de maintenant, je considère que vous l'avez bien retenu.

2 -Phase d'acquisition du premier code

L'UC va lire maintenant ce code C4, ce qui signifie qu'il va le copier dans un registre interne que l'on appelle le registre d'instruction IR. Pour ce faire (suivre sur le schéma ci-dessous) :

  1. L'UC impose l'adresse contenue dans le registre PC, en basse impédance, sur le bus des adresses.
  2. L'UC valide les broches
    /CE1=L & /CE2=L (
    ) de la mémoire avec / WE = H et /OE = H
    Le mémoire est "présélectionnée" mais encore inactive, voir table ci-dessous.
  3. L'UC abaisse le signal de sélection
    / OE = L. La mémoire est active en mode "lecture".
    La mémoire impose sur le bus des adresses la valeur de l'octet ( C4 )
    pointé par l'adresse du PC .
  4. L'UC attend un temps très court pour permettre à la mémoire et aux bus de stabiliser les données.
  5. L'UC copie la valeur ( C4 ) affichée sur le bus des données dans le registre interne IR ( instruction register)
  6. L'UC remet /OE = H dévalidant ainsi la mémoire qui remet en haute impédance ses sorties sur le bus des données.
  7. L'UC dévalide les broches
    /CE1=H
    & /CE2=H de la mémoire,
    ce qui la déconnecte électriquement totalement.
  8. L'UC incrémente PC.

Fin de cycle de recherche de code

3 -Phases suivantes d'acquisition de la totalité de l'instruction

En effet, l'UC n'a lu que le premier octet de l'instruction.
D
'après la valeur ( C4 ) du code opératoire, l'UC "sait" de combien d'octets se compose l'instruction (toutes les instructions n'ont pas 3 octets ) par conséquent, elle recommencera (encore deux fois ici) le cycle de lecture de code.
A la fin du cycle d'instruction, elle aura mis la suite C4 A7 CF dans son registre d'instructions.
Ce sera la fin du cycle de recherche d'instruction ( fetch cycle).

4 - Phase terminale ( execute cycle )

Alors commencera l'exécution de cette instruction.
Je rappelle que la finalité de cette instruction imaginaire mais très plausible était
d'additionner à un registre interne à l'UC nommé "A" le contenu de la mémoire à l'adresse CFA7.
On imagine que l'unité centrale sera amenée maintenant à lire le contenu pointé par l'adresse en mémoire CFA7.
Ce qui n'est pas très différent de ce que nous venons de voir....
Puis d'exécuter l'addition en interne entre le registre A et le contenu lu dans la mémoire..
Ces deux phases sortent du propos que je m'étais fixé dans cette page.
Mais vous ne perdez rien pour attendre....

Chronogramme de lecture en mémoire



La sélection est un signal permettant de valider le circuit constituant la mémoire visée.

Comme nous le verrons, il est très utile lorsque l'UC doit gérer plusieurs boîtiers de mémoire sur la même carte.
Il est généralement le résultat d'une combinaison logique de signaux contrôlés par l'UC.
Ce signal "prépare" en quelque sorte telle mémoire à émettre ou recevoir des données à travers le bus.

L'échantillonnage est un signal provenant le plus souvent directement de l'UC.
Une fois préparée à fonctionner, la mémoire est invitée à le faire à un moment très précis.

J'ai souvent comparé sélection et échantillonnage à l'art du commandement militaire ou sportif :
ordre préparatoire - ordre d'exécution.
1° à vos marques, prêts ! - 2° partez !

Schéma type de connexion physique UC - Mémoire


Ce schéma, encore très incomplet, montre uniquement les connexions UC - Mémoire.
Seules les lignes A0...A12 du bus des adresses sont utilisées.

CE2 est constamment validée par sa mise au niveau haut (Vcc).
Pour que la mémoire soit validée il faut à la fois /CE1=0 et CE2=1.
/CE1 n'est validée que lorsque le signal IO/Mem/ est à l'état bas, indiquant, pour ce processeur,
une opération d'accès à la mémoire.
/CE1est dans ce cas le signal de sélection vu dans le chronogramme ci-dessus.
/RD et /WR sont les signaux d'échantillonnage.
/OE n'est validée qu'au moment de la lecture par l'UC (/ RD = 0)..

On remarquera que la mémoire est du type RAM, volatile.
Si cette mémoire contient le programme, il sera perdu dès que l'on coupera le courant.
Ce qui invalide fonctionnellement le schéma précédent.
Cela nous amène à envisager de monter deux mémoires.
L'une volatile pour les données variables;
L'autre non volatile (type ROM, EPROM, EEPOM, FLASH) pour contenir le programme.
C'est ce qui va nous amener à étudier le principe du décodage sélectif d'adresses..


Décodage sélectif d'adresses

Dans le schéma ci-dessous, deux mémoires coexistent.
Une EPROM (mémoire non volatile effaçable aux UV et reprogrammable)
Elle est destinée à contenir le programme.
Par ailleurs, le processeur ne peut pas écrire des données dans une EPROM.
Un système d'écriture à part est nécessaire pour y enregistrer le programme.
Une RAM (mémoire volatile) est donc indispensable pour contenir des données passagères
qui, elles, ne survivront pas à la coupure de l'alimentation. .

Je traite ce sujet sur une autre page de ce site :


Multiplexage Données - Adresses

Le nombre de broches hadicape la fabrication des boîtiers et des cartes mères.
C'est pourquoi l'on a pensé à attribuer pysiquement plusieurs fonctions à une seule broche.
C'est le cas, dans le microprocesseur 8088, et dans bien d'autres,
des huit broches nommées AD0, AD1, ... AD7.(Adress Data).
Sur la broche ADx ( x de 0 à 7) sont présentes tantôt la donnée Dx, tantôt l'adresse Ax.

Une broche nommée ALE du processeur indique, un très court instant,
en début de chaque cycle d'accès aux mémoires soit en lecture soit en écriture,
que les Adresses A0...A7 sont présentes sur les broches AD0...AD7.

Passé ce court instant, AD0...AD7 véhiculent les données D0...D7...

Le terme "multiplexage" signifie d'une manière générale
toute technique visant à véhiculer sur une même voie des signaux différents et indépendants.
C'est bien le cas ici pour les signaux d'adresses et des données 0 à 7.

Dans le schéma ci-dessous vous trouverez une réalisation de multiplexage adresses-données
grâce au circuit 373 que l'on appelle, fonctionnellement, un verrou (
Latch)
J'étudie en détail ce montage autour du 373, sur une autre page de mon site, en :
Je rappelle que le décodage sélectif d'adresses mettant en jeu le décodeur 138 est étudié en

Rubriques connexes

Précédent -Suivant
Sommaire
Mémoires
Types de mémoires
Mémoires magnétiques
Unité centrale
ALU
Sélection d'adresses
Multiplexage
Contrôle de flux
Transferts de données
Architectures matérielles
Sommaire

du Site

 

Choix par Menu ou Parcours Séquentiel
 
Avant :
  
Suite :
PAGE
D'ACCUEIL

DU SITE