Eléments de Base d'un Microcontrôleur

Eléments de Base d'un Microcontrôleur


Unité Arithmétique et Logique

Le rôle d’un processeur est soit de faire des calculs, soit de faire des transferts de données avec la mémoire ou les périphériques.

Les calculs sont réalisés au sein de l’Unité Arithmétique et Logique ( UAL ou ALU ) , afin de traiter des opérations :

  • Arithmétiques : addition / soustraction / multiplication / division
  • Logiques : and / or / nand / nor / xor / …

L’UAL regroupe donc des composants réalisant ces opérations en permanence.

La sélection de l’opération souhaitée se fait avec un multiplexeur, pour aiguiller le résultat du bon opérateur.

ual.svg

Les bits d’état NZVC indique comment s’est passé l’opération :

  • N : résultat Négatif
  • Z : résultat égal à Zéro
  • C : Débordement non signé ( retenue ) : Carry
  • V : Débordement signé : oVerflow

l’analyse de ces bits d’état permet de réaliser des tests pour comparer des valeurs dans le cas des instructions de branchement.


La porte 3 états

Problématique

Dans un système à processeur, l’échange de données avec la mémoire se fait via des bus ( fils en parallèle ).

Le processeur comme la mémoire doivent pouvoir écrire ou lire sur ce bus.

Un même fil serait donc susceptible d’être forcé par 2 états contradictoires, d’où un conflit.

conflit.svg

Lorsqu’un élément connecté à un fil force la valeur logique de ce fil, les autres éléments doivent être transparents ( déconnectés ), on appelle cela l’état haute impédance.

haute_impedance.svg

Une porte 3 états permet de réaliser la connexion à un bus :

porte_3e.svg


Mémoire

Architecture et Fonctionnement

Nous considérons une mémoire de type RAM constituée de bascules RS afin de mémoriser une donnée.
La mémoire se compose de 4 mots de 4 bits.
Le bus d’adresse permet de sélectionner le mot que l’on souhaite lire ou modifier.
Dans l’exemple ci-dessous, le bus d’adresse a la valeur 1, le décodeur 2 vers 4 permet d’activer la ligne y1 y_{1} .

  • Si les signaux CS = 1 et R/Wˉ=1 R/\bar{W} = 1 , le registre buffer de lecture est chargé avec le mot de 4 bits pointé par y1 y_{1} , et le bus de données est forcé avec cette valeur.
  • Si les signaux CS = 1 et R/Wˉ=0 R/\bar{W} = 0 , le registre buffer d’écriture est chargé avec le mot de 4 bits présent sur le bus de Données, et les bascules pointées par y1 y_{1} enregistrent cette valeur .

read.svg

write.svg

Association de plusieurs composants mémoire

Afin de disposer d’une mémoire plus étendue, on peut associer plusieurs composants mémoire.
Le signal CS ( Chip Select ) permet d’activer l’utilisation d’une mémoire.
Si je considère 4 fils d’adresse A3A2A1A0 A_3 A_2 A_1 A_0 , je peux utiliser A3A2 A_3 A_2 (poids forts) afin de sélectionner et activer une mémoire parmi 4.
Les fils A1A0 A_1 A_0 (poids faibles) me servent alors à choisir une case dans la mémoire sélectionnée.

association.svg

Caractéristiques d’une mémoire

Une mémoire est volatile si elle perd l’information mémorisée lorsque l’alimentation électrique est coupée.

Mémoires à semiconducteurs (accès direct) - Temps d’accès < 100ns

  • Mémoire Morte : non volatile - ex : EEPROM/Flash

  • Mémoire RAM / Mémoire Vive : volatile

    • SRAM ( Static RAM ) : à base de bascules. Temps d’accès 6 à 15 ns
    • DRAM ( Dynamic RAM ) : à base de transistor et condensateur (plus compact). Temps d’accès # 70ns

Mémoires de Masse - Non volatile - ex : Disque Dur / CD / DVD

Capacité ( taille ) d’une mémoire

Lors d’un accès mémoire, je peux lire ou modifier un mot mémoire.

Si ma mémoire contient 1024 cases mémoires ( sélectionnables via le bus d’adresse ), et que chaque case ou mot est de taille 8 bits :

Capacité = 1024 x 8 = 8192 bits = 1024 octets = 1ko
( 1ko=210octets 1ko = 2^{10} octets )