0% ont trouvé ce document utile (0 vote)
37 vues16 pages

La Mémoire de Programme - v2

Le document décrit l'architecture du microcontrôleur PIC16F84, en se concentrant sur la mémoire programme, la structure des instructions et le fonctionnement du compteur ordinal. Il explique comment les instructions sont exécutées, y compris l'accès à la mémoire, le décodage des instructions et l'exécution par l'unité arithmétique et logique. Enfin, il aborde le calcul du temps d'exécution des instructions en fonction de la fréquence de l'oscillateur.

Transféré par

gharbi.yahia
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
37 vues16 pages

La Mémoire de Programme - v2

Le document décrit l'architecture du microcontrôleur PIC16F84, en se concentrant sur la mémoire programme, la structure des instructions et le fonctionnement du compteur ordinal. Il explique comment les instructions sont exécutées, y compris l'accès à la mémoire, le décodage des instructions et l'exécution par l'unité arithmétique et logique. Enfin, il aborde le calcul du temps d'exécution des instructions en fonction de la fréquence de l'oscillateur.

Transféré par

gharbi.yahia
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Exécution d'une instruction dans l'architecture du PIC16F84

Restructuration sur la mémoire


de programme PIC 16F84A

1
Architecture interne du PIC16F84

2
La mémoire programme:
• Elle contient le programme à exécuter
• L'adresse 0000h
contient le
• Taille = 1K mots (1024 emplacements)
vecteur du reset.

• Taille d’un mot = 14 bits (PIC16F84: Mid-


Range)
• L'adresse 0004h
• Un mot = instruction du programme de réservée à
l’application à laquelle le microcontrôleur est l'unique vecteur
dédié. d'interruption.
(à traiter ultérieurement)

• Type= FLASH (non volatile, effaçable et


reprogrammable).

• La technologie utilisée permet plus de 1000 9


cyclesd’effacement et de programmation.
Adresses d’une case mémoire programme
• Largeur du bus @instruction : 13 bits
• Dans le PIC16F84:
La mémoire programme FLASH implanté physiquement est de 1K = 210 = 1024 Instructions au
max

1ere adresse 0x0000 0 0 0 0 0 0 0 0 0 0 0 0 0


0x 0 0 0 0

dernière adresse 0x03FF 0 0 0 1 1 1 1 1 1 1 1 1 1

0x 0 3 F F
Adresse de début Adresse de fin
0x0000 0x03FF
0000h 03FFh 10
La composition d’une instruction
Une instruction est codée sur 14 bits et comporte:
• L’OPCODE: spécifie le type d’instruction
• Une ou deux opérandes selon l’opération

Exemple :

RA3 = 1

1585
0 1 0 1 0 1 1 0 0 0 0 1 0 1

Instruction (=1) Position du bit Adresse du registre

11
Compteur ordinal ou Program Counter PC

Le compteur ordinal ou Program Counter PC


* Rôle: contient toujours l’adressede la prochaine
instruction à exécuter.
* Taille = 13 bits ,
=>donc il permet d’adresser 213 mots= 8K mots
=> 213 * 14bits= 23 * 210 * 14bits = 8K * 14 bits
Or seulement 1K mots est implémentable avec PIC
16F84

13
Les registres PCL et PCLATCH
• Un processeur, quel qu’il soit est un composant
qui exécute SEQUENTIELLEMENT une série
d’INSTRUCTIONS organisées selon un ensemble SFR
appelé PROGRAMME.

• Il existe donc dans le processeur un


SEQUENCEUR, c’est à dire un compteur qui
permet de pointer sur la PROCHAINE instruction à
exécuter. Il s’appelle Program Counter (PC).
GPR

• Dans les PIC, les registres ne font que 8 bits, on


ne peut donc stocker qu’une adresse maximale
de 255. Il faudra donc 2 registres (PCL et
PCLATCH) pour accéder aux 1024 adresses de la
mémoire programme
7 28
Les registres PCL et PCLATCH
• Nous trouvons tout d’abord un registre qui contient l’adresse basse du PC, c’est à dire les 8 bits de poids faibles. Ce
registre est accessible en lecture et en écriture. Il est appelé PCL (PC Low).

• Il existe un autre registre de 5 bits qui participe au fonctionnement du séquenceur. Il s’appelle PCLATH (PC LATch
counter High). Il est accessible en lecture et en écriture par l’utilisateur.

• Le PC complet étant codé sur 13 bits, il faudra donc compléter PCL avec 5 bits supplémentaires.

Program Counter : PC (13 bits)

Bit 7 Bit 6 Bit 5 Bit 4


Bit 12 Bit 3
Bit 11 Bit 2
Bit 10 Bit
Bit 91 Bit
Bit 80 Bit77
Bit Bit66
Bit Bit55
Bit Bit44
Bit Bit33
Bit Bit22
Bit Bit11
Bit Bit00
Bit

PCLATCH PCL
8
Cœur du processeur
Le coeur du processeur du PIC16F84 se compose de :

• Une unité arithmétique et logique(UAL): Chargée d’ éxécuter les


opérations arithmétiques
(addition, soustraction, division,…) et logiques ( ET, Non, AND,…. ).

• Une Unité de contrôle: qui émet les signaux nécessaires aux différentes
entités (bus adresse, bus de données, UAL..) pour assurer l’exécution des
opérations.

• Un registre : le PIC16F84 a une Architecture à accumulateur:


Toutes les opérations arithmétiques et logiques sont effectuées
en utilisant un seul registre spécial appelé : Registre de travail, W:
Working register

9
Exécution d'une instruction dans l'architecture du PIC16F84
4. Exécution de l'opération par l'UAL :
2. Accès à la mémoire programme (Flash)
• Le compteur de programme (PC) contient l'adresse de l'instruction en
cours d'exécution.
• L'UAL effectue l'opération spécifiée par l'instruction en utilisant
• L'unité de contrôle envoie cette adresse sur le bus d'adresse, les données transférées depuis le bus de données.
spécifiant ainsi la position mémoire de l'instruction.
• La mémoire programme (Flash) est activée avec cette adresse, ce qui • Par exemple, si l'instruction est une addition, l'UAL additionne les
provoque la lecture de l'instruction depuis la mémoire. opérandes. Si c'est une opération logique, elle effectue
3. Transfert des données via le bus de données l'opération logique appropriée.
• L'unité de contrôle (Control Unit) du PIC16F84 décode l'instruction en
cours d'exécution.
• L'opcode de l'instruction est extrait de l'instruction pour déterminer 5. Stockage du résultat dans les registres
l'opération à effectuer. appropriés :
• L'instruction lue depuis la mémoire est généralement une instruction • Le résultat de l'opération est généralement stocké dans un
qui demande des opérandes.
registre du PIC16F84, tel que le registre WREG (registre de travail).
• Les adresses des opérandes peuvent être incluses dans l'instruction.
• Il peut également être stocké dans d'autres registres spéciaux ou
• Les adresses des opérandes sont utilisées pour accéder à la mémoire registres de fichiers, selon les besoins du programme
ou aux registres de données.
• Les données (opérandes) sont lues depuis la mémoire ou les registres
et sont transférées via le bus de données vers l'UAL pour execution

10
La Pile du PIC16F84

Lors de l’exécution de l’instruction qui


permet de faire appel à une fonction,
l’adresse de l’instruction suivante est
sauvegardée sur le sommet d’une pile
(exactement comme une pile d’assiettes).
Lorsque la fonction est terminée, l’adresse
sauvegardée est retirée de la pile et placée
dans le PC.

 Le programme poursuit alors depuis


l’endroit d’où il était parti.

Cette pile a une taille limitée à 8


emplacements

13
Exécution d'une instruction dans l'architecture du PIC16F84

12
Analyse des Cycles d'Instructions

13
Cycle d’Horloge – Cycle d’instruction
• "le cycle d’instruction " est le temps nécessaire à l’exécution d’une instruction.
• Quelque soit l'oscillateur utilisé, l'horloge système dite aussi horloge instruction est obtenue en divisant la
fréquence de l’oscillateur par 4.
On suppose que :
 Fréquence du µc = 4MHZ  Cycle Horloge = 1/F = 0.25µs , Cycle Instruction = 4/F = 1µs
 Le nombre de cycles d'horloge nécessaires pour chaque instruction en C dépendra de la manière dont elle est
mise en œuvre en assembleur pour le PIC16F84. Voici un tableau approximatif du nombre de cycles d'horloge
pour certaines instructions courantes en C, ainsi que leur équivalent en assembleur pour le PIC16F84 :

14
Comment calculer le temps d’exécution d’un code?

1. Calculer la durée d’un cycle d’instruction CI (CI = 4/Fréquence)

2. Calculer le nombre de cycles d’instruction NB dans le code.

3. Calculer le Temps d’exécution : T = CI * NB

15
Exemple1
Calculer le temps d’exécution du code suivant pour F = 8MHZ

1. CI = 4/8*106 = 0.5*10-6 s = 0.5 µs

2. NB = 1+1+1+2 = 5

3. T = 5 *0.5 = 2,5µs

16

Vous aimerez peut-être aussi