TD Intr Micropross

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 3

Adr.

en Hexa A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0


TD – CH1 : INTRODUCTION AUX MICROPROCESSEURS Adr. basse
RAM1 Adr. haute
Exercice 1 :
1. Donner les avantages de l’architecture Harvard
ROM1 Adr. basse
Adr. haute
2. Qu’appelle-t-on l’emplacement, où le microprocesseur cherche à exécuter la première b. Donner les équations logiques des lignes CS1 et CS 4 en fonction des lignes d’adresses
instruction après la mise sous tension (POR : Power On Reset) ? A15, A14 et A13.
3. De quoi est composé un système à microprocesseur ? c. Compéter alors le schéma de décodage d’adresse en utilisant des opérateurs logiques.
4. Le registre d’état du microcontrôleur PIC16F877 comporte les indicateurs suivants : 4. On veut étendre la capacité mémoire de cette carte en ajoutant deux mémoires RAM2 et ROM2
- C (Carry) : inducteur de dépassement de capacité ; ce bit est inversé en cas d’un identiques aux précédentes.
emprunt. a. Donner l’adresse de base des nouvelles mémoires, si l’on veut que deux mémoires de
- DC (Decimal Carry) : indicateur de dépassement sur 4 bits. même type soient adjacentes.
- Z (Zero) : indique que le résultat est nul. b. Donner les équations logiques des lignes de sélection CS 2 et CS 3 (correspondant
respectivement aux mémoires RAM2 et ROM2) en fonction des lignes d’adresses A15,
Déterminer l’état de ces indicateurs dans les cas suivants : A14 et A13.
38H + 2FH ; 9FH + 61H ; 1BH – 20H c. Donner le schéma de décodage d’adresses de toutes les mémoires en utilisant le circuit
intégrées 74138.
Exercice 2 :
On donne le schéma de connexion de deux mémoires avec un microprocesseur de 16 bits A Y0 G 2 A G 2 B G1 C B A Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7
1 X X X X X 1 1 1 1 1 1 1 1
d’adresses et 8 bits de données. B Y1
X 1 X X X X 1 1 1 1 1 1 1 1
C Y2
X X 0 X X X 1 1 1 1 1 1 1 1
Y3 0 0 1 0 0 0 0 1 1 1 1 1 1 1
A0 D0
74138 Y4 0 0 1 0 0 1 1 0 1 1 1 1 1 1
A1 U2 D1
D0 A0 A2 D2 0 0 1 0 1 0 1 1 0 1 1 1 1 1
G1 Y5
D1 U1 A1 A3 D3 0 0 1 0 1 1 1 1 1 0 1 1 1 1
VCC D2 A2 A4 D4 G2A Y6 0 0 1 1 0 0 1 1 1 1 0 1 1 1
D3 A3 A5 D5
D4 A4 A6 D6 G2B Y7 0 0 1 1 0 1 1 1 1 1 1 0 1 1
R1 D5 A5 A7 D7 0 0 1 1 1 0 1 1 1 1 1 1 0 1
D6 A6 A8 RAM1 0 0 1 1 1 1 1 1 1 1 1 1 1 0
C1 10K D7 A7 A9

RESET
A8
A9
A10
A11 WR
5. On suppose que le programme utilisateur commence au début de la mémoire programme
100nF µP A10 A12 (ROM), et que le vecteur RESET est situé à l’adresse FFFEH.
C2 A11 RD
A12 CS1 Donner le contenu des cases mémoires d’adresses FFFEH et FFFFH (ce microprocesseur a une
A13
architecture litle-endian, c.-à-d. que l’octet le plus faible est placé à l’adresse basse et l’octet le
Oscillateur
2

18pF A14
Y1 A15
C3 12Mhz A0 D0 plus fort est placé à l’adresse haute).
1

WR A1 U3 D1
A2 D2
18pF RD A3 D3 Exercice 3 :
GND A4 D4
A5 D5 On donne ci-après, le schéma électronique d’une carte à base d’un microprocesseur générique à
A6 D6
A7 ROM1 D7 architecture Harvard.
A8
PARTIE A
A9
A10
A11
A12 RD
1. Quel est le rôle du circuit composé de R1 et C1 ?
CS4
2. Donner la capacité de la mémoire de données. Déterminer l’adresse la plus basse et l’adresse
la plus haute.
3. Donner l’adresse de la mémoire de programme en kbits et kmots (1mot = 16 bits).
1. Quelle est l’architecture de ce microprocesseur ? 4. Donner les adresses de bases de deux circuits d’interface U4 et U5.
2. Donner la capacité de chaque mémoire en kbits et en koctets.
PARTIE B
3. On veut adresser la mémoire RAM1 à partir de l’adresse 0000H et la ROM1 à partir de l’adresse
E000H. On donne dans le tableau suivant quelques instructions et le code machine correspondants:
a. Compléter le tableau suivant, en indiquant dans la troisième colonne l’adresse la plus
Code mnémonique Description Code machine
basse et l’adresse la plus haute de chaque mémoire en hexadécimal.
movlw k W  k : charger la valeur k dans W 0000 1110 kkkk kkkk
movfw A W  (A) : le contenu de la case mémoire d’adresse 0110 1111 AAAA AAAA
A est chargé dans le registre W

1 2
movwf A (A)  W : le contenu du registre W est chargé de la 0101 0000 AAAA AAAA
case mémoire d’adresse A Corrigé
andfw A W  W and (A), si W = 0 alors le flag Z  1 0001 0100 AAAA AAAA
goto A Saut à l’adresse A (PC  A) 1110 0AAA AAAA AAAA Exercice 1 :
JZ déplacement si Z = 1, saut à l’adresse PC=PC+déplacement 1111 0100 AAAA AAAA 1. Les avantages de l’architecture Harvard :
JnZ déplacement si Z = 0, saut à l’adresse PC=PC+déplacement, 1111 1000 AAAA AAAA - Accès simultané aux mémoires programme et données : donc exécution plus rapide des
On connecte à la broche 0 de circuit U5 un interrupteur S1 et huit diodes LEDs à la sorties du circuit instructions.
U4. - Limite le problème de modification accidentelle des programmes
1. Traduire l’algorithme suivant en assembleur - Bien adaptée pour une mise en œuvre sur FPGA
Repeter toujours
De même cette architecture présente inconvénients tels que :
si S1 est fermé alors
Toutes les LEDs allumées
- Plus difficile à mettre en œuvre
sinon
Toutes les LEDs éteintes - Augmentation de nombre des broches du circuit
Finsi 2. Cet emplacement est appelé « le vecteur RESET ».
Fin Repeter
3. Un système à microprocesseur comprend : un microprocesseur, des mémoires RAM et ROM et
des périphériques.
2. Donner la codification en binaire des instructions, si on suppose que ce code commence à 4.
l’adresse 0200H. 38H : 00111000 9FH : 10011111 1BH : 00011011
+ 2FH : 00101111 + 61H : 01100001 – 20H : 00100000
VCC
= 67H : 01100111 = 100H : 100000000 = FBH : 11111011
R1 C = 0 , DC = 1 , Z = 0 C = 1, DC = 1, Z = 1 C = 0, DC = 1, Z = 0
Exercice 2 :
10K
U1 U3
RESET D0 D0
1. Architecture Van Neuman : puisque les mémoires ont le même bus d’adresses et ont le même
. . . .

. . . .

C1
100nF
Dp0
RAM
bus de données.
D7 D7
2. Les deux mémoires ont la même capacité, car elles ont le même nombre de lignes d’adresses.
. . . . . .

µP
C = 213 = 8192Octets = 8koctets = 64kbits
A0 A0 OE RD
GND
. . . .

. . . .

WR WR 3. RAM1 et ROM1
Dp15 A7 A6 a. Détermination des adresses
CS
RD
A7 5 6 Adr. en Hexa A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0
Adr. basse 0000H 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
RAM1
WR

RDp Ap0 . . . . . . Ap10 U4


Adr. haute 1FFFH 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1
.. . . .

Adr. basse E000H 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0


D0 Latch Q0 R2 D1
ROM1 Adr. haute FFFFH 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
. . . . . .

. . . . . .

330
. . . . . .

Di Qi
b. Vous remarquez bien que la RAM1 est sélectionnée pour la combinaison
H
x8
(A15,A14,A13)=(0,0,0). Donc CS1  A15  A14  A13 d’où CS1  A15  A14  A13 =
.. . . .

RDp Ap0 . . . . . . Ap10 D7 Q7 R9 D8

CS1  A15  A14  A13


WR 1 330
U2 16 2
Dp0 A0 15
GND
De même la ROM1 est sélectionnée pour (A15,A14,A13)=(1,1,1) donc
. . . . . .

ROM
U5 VCC
CS 4  A15. A14. A13 d’où CS 4  A15. A14. A13
.. . . .

Buffer
D0 E0 S1
c. Schéma de décodage
. . . . . .

. . . . . .

x8
Dp15 Di Ei R10 A13 1
1k A14 2 9 CS1
A15 8
.. . . .

D7 E7
RD 1 1
2 9 GND
A0 5 6 8
16 2 CS4
15

3 4
4. Ajout des mémoires
a. Adresses de base des nouvelles mémoires A13 A Y0 CS1

A14 B Y1 CS2

L’adresse de la dernière case de la RAM1 est 1FFFH, la 0000H A15 C Y2

RAM2 est placée juste après, donc son adresse de base est RAM1
Y3

1FFFH+1 = 2000H. 1FFFH


VCC 74138 Y4

La capacité de la mémoire est égale à 8k =8192 = 2000H G1 Y5

2000H. RAM2 G2A Y6 CS3

L’adresse la plus haute de la RAM1 = adresse de base + 3FFFH


G2B Y7 CS4

la capacité de la mémoire -1=2000H + 2000H -1= GND

3FFFH. 64ko

La mémoire ROM2 est place avant la ROM1. Donc son 5. Le programme commence au début de la mémoire de programme, c’est-à-dire à l’adresse
adresse de base = adresse de base da la ROM1 – sa C000H
C000H, il faut donc charger cette valeur dans le vecteur RESET.
capacité = E000H – 2000H = C000H. ROM2 On charge donc à l’adresse FFFEH la valeur 00H et à l’adresse FFFFH la valeur C0H.
Pour l’adresse la plus haute = C000H+2000-1=DFFFH DFFFH

Exercice 3 :
E000H

ROM1
FFFFH
PARTIE A
Espace mémoire (Mappind)

b. Equations de sélection des nouvelles mémoires : 1. Ce circuit a pour rôle de générer une impulsion négative à la mise sous tension. Cette impulsion
Pour la RAM2, si on compare les adresses basse et haute : permet d’initialiser le microprocesseur.
2000H = 0010000000000000 et 3FFFH = 0011111111111111. On remarque les 2. La mémoire de données a 7 lignes d’adresse (A0 à A6) d’où C= 27 = 128octets. Cette mémoire
bits qui ne changent pas sont (A15,A14,A13) = (0,0,1) on déduit facilement que est sélectionnée lorsque la ligne d’adresse A7 = 1. D’où l’adresse la plus basse = 80H et
l’adresse la plus haute = FFH.
CS 2  A15  A14  A13 d’où CS 2  A15  A14  A13 3. La mémoire programme comporte 11 lignes d’adresses (Ap0 à Ap10), et chaque case à une
De même pour la ROM2. En comparant les adresses de début et de fin, on remarque largeur de 16 bits (Dp0 à Dp15). D’où Cp = 211=2kmots = 32kbits
que les bits qui ne changent pas sont (A15,A14,A13) = (1,1,0), on déduit alors que 4. Le circuit U4 est sélectionné quand A7 = 0 et A0 = 0 donc son adresse de base = 00H.
CS 3  A15  A14  A13 d’où CS 3  A15  A14  A13 De même le circuit U5 est sélectionné quand A7 = 0 et A0 = 1 donc son adresse de base =
c. Schéma de décodage d’adresse : On donne dans ce tableau les combinaisons de 01H.
sélection des mémoires qu’on a déterminé dans 3.b) et 4.b) PARTIE B
A15 A14 A13 CS1 CS 2 CS 3 CS 4
0 0 0 0 1 1 1 Code assembleur adresse Code machine
0 0 1 1 0 1 1 Boucle : movlw 01H ; Masque 0200H 0000 1110 0000 0001
1 1 0 1 1 0 1 andfw 01H ; 01H : adresse de U5 0201H 0001 0100 0000 0001
1 1 1 1 1 1 0 JZ Led_off ; sauter à Led_off 0202H 1111 0100 0000 0011
Choisissons à partir du tableau de fonctionnement du circuit 74138, les quatre movlw FFH ; LEDs allumées 0203H 0000 1110 1111 1111
combinaisons du tableau précèdent, c-à-d pour (C,B,A)=(0,0,0) et (0,0,1) et (1,1,0) et movwf 00H ; 00H :adresse de U4 0204H 0101 0000 0000 0000
(1,1,1). goto Boucle ; revenir au début 0205H 1110 0010 0000 0000
Led_off : movlw 00H ; LEDs éteintes 0206H 0000 1110 0000 0000
G 2 A G 2 B G1 C B A Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7
movwf 00H ; 00H :adresse de U4 0207H 0101 0000 0000 0000
1 X X X X X 1 1 1 1 1 1 1 1 goto Boucle ; revenir au début 0208H 1110 0010 0000 0000
X 1 X X X X 1 1 1 1 1 1 1 1 JZ Led_off : c-à-d. on doit sauter à l’adresse 206H = PC + déplacement. A ce moment PC contient
X X 0 X X X 1 1 1 1 1 1 1 1
0 0 1 0 0 0 0 1 1 1 1 1 1 1
la valeur 0203H (0202H +1 : incrémentation de PC lors de décodage). D’où déplacement =
0 0 1 0 0 1 1 0 1 1 1 1 1 1 206H-203H=03H.
0 0 1 0 1 0 1 1 0 1 1 1 1 1
0 0 1 0 1 1 1 1 1 0 1 1 1 1
0 0 1 1 0 0 1 1 1 1 0 1 1 1
0 0 1 1 0 1 1 1 1 1 1 0 1 1
0 0 1 1 1 0 1 1 1 1 1 1 0 1
0 0 1 1 1 1 1 1 1 1 1 1 1 0

En comparant le deux tableaux, il suffit de connecter A15, A14, et A13 aux entrées C, B et A, et les
Ali hmidene
sorties Y 0 , Y 1 , Y 6 et Y 7 aux lignes de sélection CS1 , CS 2 , CS 3 et CS 4 . Il ne faut pas oublier de
connecter les entrées de validation G1 à VCC et G 2 A , G 2 B à la masse. Année : 2014

5 6

Vous aimerez peut-être aussi