L2 Etude de Cas
L2 Etude de Cas
L2 Etude de Cas
Informatique Industrielle
Master 1 S2
Matière : Systèmes Embarqués et Systèmes Temps Réel SE-
STR
Par : ATOUI Hamza
Plan du cours –partie 1-
• MICROCHIP TECHNOLOGY.
• Les µP et µC de MICROCHIP.
• La série 16Fxxx.
• Le µP MID-RANGE de la série 16Fxxx.
– Architecture interne.
– Fréquence d’horloge, cycle machine et pipeline de MID-
RANGE.
– Modes d’adressage.
– Organisation de l’espace DATA/IO.
MICROCHIP TECHNOLOGY
• MICROCHIP TECHNOLOGY, ou tout
simplement MICROCHIP, est un fabricant de
semi-conducteurs fondé en 1989, à partir
d'une division de General Instrument.
• MICROCHIP produit les microcontrôleurs PIC,
des composants radiofréquences, des
composants de gestion des batteries, des
interfaces, des composants analogiques, etc.
• Source : Wikipédia
Les µP et µC de MICROCHIP
CPU
PIC16F876A 28-pins
PIC16F84A 18-pins
La série 16Fxxx
• Les différences entre ces µC sont :
– Le nombre de pattes, donc nombre des ports I/O.
– Le nombre de pattes analogiques/Numériques.
– La taille des espaces DATA, CODE et EEPROM.
– Le nombre de périphériques (ADC, UART,
TIMERS…).
• Mais, tous sont équipés par le MID-RANGE
comme microprocesseur (CPU).
Architecture interne
Architecture interne
DATA/IO DAU CODE
STACK ZONE
(8 LEVELS)
MUX RP1 RP0 IR(6:0)
9
9 PCH PCL
9
IRP FSR 5 PC 13
WREG STATUS
IR(7:0)
IR 14
MID-RANGE µP
Architecture interne
• EXECUTION UNIT (EXU) : est composée de registre WREG,
l’ALU et le registre STATUS.
• DATA ADDRESSING UNIT (DAU) : est composée de registre FSR
plus 3 bits RP0, RP1 et IRP.
• CODE ADDRESSING UNIT (CAU) : est constituée d’une pile de
8 niveaux (STACK ZONE), le registre compteur ordinal (PC), et
le registre PCLATH.
• COMMAND & CONTROL UNIT (CCU): est formée de registre
d’instruction (IR), de registre d’interruption (INTCON) et
l’unité la plus compliquée dans notre µP (DCU), cette dernière
génère les différents signaux pour exécuter une instruction.
Fréquence d’horloge, cycle machine et
pipeline de MID-RANGE
• La fréquence de l’horloge d’entrée du MID-RANGE est
divisée par 4 pour générer 4 phases sont
(Q1,Q2,Q3,Q4), donc le cycle machine est 4 fois plus
long que la période d’horloge.
Fréquence d’horloge, cycle machine et
pipeline de MID-RANGE
• D’après la figure précédente le MID-RANGE utilise un
pipeline à 2 étages (FETCH/EXECUTION recherche de
l’instruction suivante/exécution de l’instruction en cours).
• Dans l’étage FETCH : le MID-RANGE incrémente le PC à la fin
de Q4.
• Dans l’étage EXECUTION : le MID-RANGE fait 4 phases:
– Q1 : pour décoder d’instruction.
– Q2 : pour lire les opérandes (case mémoire ou constante) s’il
existe.
– Q3 : pour réaliser l’opération demander dans l’instruction.
– Q4 : pour ranger le résultat vers la destination (case mémoire ou
WREG).
Modes d’adressage
• Le MID-RANGE utilise 3 modes d’adressage sont :
ADDRESSING MODES
8 8
MUX
ALU IR
3 7 0
Exemple :
WREG STATUS MOVLW 0x50 ; transfert
ADDLW 0x17 ; addition
8
DATA/IO SPACE ADDRESSING MODE
• Ce mode en général fait la manipulation de l’espace DATA/IO avec
le WREG (transfert, opération A/L)
• Ce mode comprend le mode direct et le mode indirect par le
registre FSR.
• Le format de l’instruction pour ces modes est:
• Vous remarquez que l’adresse d’une case mémoire est sur 7 bits, et notre unité
d’adressage DATA/IO du MID-RANGE sortir 9 bits, donc comment faire pour les 2
derniers bits??? (notre instruction présente une limite d’accès de 128 octets seulement )
• Et aussi, on a le même format d’instruction pour les deux modes, donc comment
différencier entre ces deux modes???
DATA/IO SPACE ADDRESSING MODE
• Dans ce mode l’unité d’exécution devienne comme suit:
7
8
0
=
BANK 0 BANK 1 BANK 2 BANK 3
RP RP
1 0 IR(6:0) Address Address Address Address
9 0 0 128 256 384
Direct address
MUX
To To To To
9 127 255 383 511
RP1,0 = 00 RP1,0 = 01 RP1,0 = 10 RP1,0 = 11
1 IRP = 0 IRP = 0 IRP = 1 IRP = 1
IRP FSR
9
Indirect address DATA IN DATA/IO space
8 512 byte
8 IR(7:0)
WREG
8 MUX
ALU
Bit IR(7) « d » STATUS
DATA OUT
8 0 1 8
DATA/IO SPACE ADDRESSING MODE
• D’après la figure précédente :
– Dans le mode d’adressage direct, on peut considérer le
DATA/IO SPACE comme une barrette de RAM à 4 circuits
intégrés, dont chaque circuit a une taille de 128 octets.
– Dans le mode d’adressage indirect, on peut considérer le
DATA/IO SPACE comme une barrette de RAM à 2 circuits
intégrés, dont chaque circuit a une taille de 256 octets.
– Le mécanisme de pointage vers le DATA/IO SPACE est :
IF IR(6:0) = « 0000000 » THEN
MEM ADDRESS [IRP:FSR]; -INDIRECT-
ELSE
MEM ADDRESS [RP1:RP0:IR(6:0)]; -DIRECT-
END IF
Exemple
MOVLW K
LITERAL WREG FILE
MOVWF FILE
Organisation de l’espace DATA/IO
IRP 0 0 1 1
RP1,0 00 01 10 11
0x000 INDF 0x080 INDF 0x100 INDF 0x180 INDF
Encore une
autre limite!!!
Le MID-RANGE est un
CPU RISC a 35
instructions.
X
1/X
1/0
X
X/0
1/0
1/0
X/ X
Astuces
• Pour forcer un bit ou plusieurs à 1, on fait un
OR avec un 1.
• Pour Masquer un bit ou plusieurs à 0, on fait
un AND avec un 0.
• Pour inverser un bit ou plusieurs, on fait un
XOR avec un 1.
Astuces
• Exemple: Forcer les bits [b0, b1] à 1, masquer
les bits [b2, b4, b6] à 0, et inverser les bits [b3,
b5, b7] de registre WREG.
7 6 5 4 3 2 1 0
WREG X X X X X X X X Before
WREG X\ 0 X\ 0 X\ 0 1 1 After
Organisation de la zone CODE,STACK
La plus par des µC sont entourés par plusieurs périphériques capables de générer des
demandes d’interruption, et le MID-RANGE capable de gérer une seule demande, donc
comment faire pour gérer plusieurs demandes d’interruption???
Solution
• La solution proposée par MICROCHIP est
d’attribuer pour chaque demande d’interruption
un bit « autorisateur » et un autre bit « flag ».
• Le bit autorisateur: on utilise pour
activer/désactiver la demande d’interruption
par ce périphérique.
• Le bit flag: on utilise pour indiquer est-ce que on
a une demande d’interruption ou non? Comme
indique la figure suivante:
Solution
• Après le saut vers le ISR d’adresse 0x0004, on fait le test de
chaque flag ; si la cas, on exécute le ISR correspondant.
• Le premier flag à testé présente la demande de la plus haute
priorité.
• Le dernier flag à testé présente la demande de la plus faible
priorité.
• On appelle cette méthode de gestion par le nom SOFTWARE
POLLING.
Exemple de gestion d’une interruption par le
SIMULATOR du MIDRANGE
• Le code suivant ne fait rien (boucler infiniment
dans la même adresse [il plante]), mais à
chaque demande d’interruption le ISR
incrémente la case mémoire d’offset 0x0C par
rapport à la BANK0.
Exemple de gestion d’une interruption par le
SIMULATOR du MIDRANGE
BEGIN ISR
X0 X X+1
Programme principal
Demande d’interruption
Exemple de gestion d’une interruption par le
SIMULATOR du MIDRANGE
ISR
MAIN
Gestion avancée des interruptions
Save contexte
Load contexte
Gestion avancée des interruptions
• SAVE CONTEXTE : on fait le sauvegarde de
WREG et le STATUS dans la RAM.
• LOAD CONTEXTE : on fait le chargement de
WREG et le STATUS à partir de la RAM.
• le but de SAVE/LOAD CONTEXTE est de ne pas
perturber le bon fonctionnement du
programme interrompu.
Gestion avancée des interruptions
• SAVE CONTEXTE:
MOVWF W_REG
SWAPF W_REG,F
MOVF STATUS,W
MOVWF STATUS_REG
• LOAD CONTEXTE:
MOVF STATUS_REG,W
MOVWF STATUS
SWAPF W_REG,W
Détail de la gestion d’une interruption
BEGIN ISR
SAVE CONTEXTE
YES
FLAG = 1 TRAITEMENT
FLAG 0
NO
LOAD CONTEXTE
END ISR