Vous êtes sur la page 1sur 7

Nom :

Prénom

Examen final
Architecture des circuits microprogrammés
Jeudi 23 janvier 2020
Durée : 2 heures
Calculatrice et documents non autorisés

Questions de cours :

1. Donnez le schéma général d’un bloc mémoire avec ces différentes entrées/sorties et décrivez
leurs fonctions.

2. Quelle est la différence entre un mot binaire et un octet? Combien y a-t-il d'octets dans un 1ko?

3. Que signifie l’acronyme « ALU » ?


Donnez son schéma général en faisant apparaître ses entrées/sorties. Décrivez son rôle dans le
processeur et donnez deux exemples de blocs logiques généralement présents dans l’ALU ?
4. Quel est le rôle du décodeur d'instruction dans un processeur? Sur quel bloc logique agit-il
principalement?

5. Donnez la définition du jeu d’instruction d’un processeur.


Quelles sont les trois principaux types de jeux d’instruction processeur et leurs
caractéristiques ?
6. Donnez le schéma général d’un processeur d’architecture « Harvard » et d’un processeur
d’architecture « Von Neumann » en décrivant succinctement les différents blocs les composant.
Quels sont les principaux avantages et inconvénients de ces deux architectures ?
Quelle est la structure majoritairement utilisée pour un processeur de PC et celle
majoritairement utilisée pour un microcontrôleur? Justifiez.
Nom :
Prénom

Exercice 1:

1. L’architecture simplifiée du microcontrôleur DSPIC33EP512 est donnée en ANNEXE 1.


Identifiez sur le schéma la partie "Processeur" et la partie "périphériques".
Identifiez les périphériques utilisés en séance de TPs et décrivez leurs fonctions.

2. Le « port map » du DSPIC33EP512 est donné en ANNEXE 2.


Que signifie l'acronyme du bloc "SFR" ? Quelles est sa capacité en mots de 16 bits?
Justifiez.
Quelle est la capacité de stockage RAM (hors registres spécifiques) dans ce
microcontrôleur? Justifiez la réponse.

Exercice 2 :
On désire réaliser l'opération suivante avec le microcontrôleur DSPIC33EP512:
𝑋 = 𝑁1 − 𝑁2 + 𝑁3
Les nombres N1, N2 et N3 sont respectivement enregistrés aux adresses mémoire 0x3000, 0x3002
et 0x3004.On désire enregistrer le résultat à l'adresse mémoire 0x4000. Les nombres N1, N2 et N3
ne doivent pas être supprimés ou écrasés durant l'opération.
1. Décrivez les étapes nécessaires (en terme d'instructions) pour réaliser ce calcul. Vous
pouvez par exemple réaliser une description en pseudocode ou à l'aide un diagramme
séquentiel.

2. Sans écrire le détail du code assembleur, quelles instructions (parmi celles données en
ANNEXE 3) seront utilisées pour chacun des cycles décris précédemment ?

3. Quelles est le temps nécessaire, en nombre de cycles instruction, pour réaliser ce calcul?
Quel est ce même temps en seconde si le processeur fonctionnement à 50MIPS?
Nom :
Prénom

Exercice 3:
On désire réaliser un générateur de signal de type horloge (signal binaire de rapport cyclique 50%)
sur la broche RB0 du microcontrôleur DSPIC33EP512MU810. Pour cela nous disposons comme
base du programme suivant:

1. En vous aidant du programme ci-dessus, et sans donner le détail pour chaque ligne, décrivez les
principales parties composant un programme en langage C pour microcontrôleur.

Quel est le rôle de la boucle for?

2. Le code de la fonction "init_tmr3_interrupt ()" est donné en ANNEXE 4. Quelle sont le(s)
paramètre(s) qu'il faut modifier si l'on désire modifier le temps de comptage du TIMER? Sachant
que le microcontrôleur fonctionne à 50MIPS quel est actuellement le temps de comptage (en s)
de ce TIMER

3. Complétez le programme afin de réaliser un signal d'horloge simple sur RB0. Justifiez le choix de
placement de votre code. Quelle est la fréquence de ce signal?
Nom :
Prénom

ANNEXE 1 Architecture simplifiée du microcontrôleur DSPIC33EP512


Nom :
Prénom

ANNEXE 2 Port Map du microcontrôleur DSPIC33EP512


Nom :
Prénom

ANNEXE 3 Extrait du jeu d’instruction du microcontrôleur DSPIC33EP512


Nom :
Prénom

ANNEXE 4 code de la fonction "init_tmr3_interrupt ()"

void init_tmr3_interrupt (void)


{
T3CONbits.TON = 0; // Stop any 16-bit Timer3 operation
T2CONbits.TON = 0; // Stop any 16/32-bit Timer2 operation
T2CONbits.T32 = 1; // Enable 32-bit Timer mode
T2CONbits.TCS = 0; // Select internal instruction cycle clock
T2CONbits.TGATE = 0; // Disable Gated Timer mode
T2CONbits.TCKPS = 0b00; // Select 1:1 Prescaler
TMR3 = 0x0000; // Clear 32-bit Timer (lsw)
TMR2 = 0x0000; // Clear 32-bit Timer (msw)
PR3 = 0x0032; // Load 32-bit period value (lsw)
PR2 = 0; // Load 32-bit period value (msw)
IPC2bits.T3IP = 0x01; // Set Timer3 Interrupt Priority Level
IFS0bits.T3IF = 0; // Clear Timer3 Interrupt Flag
IEC0bits.T3IE = 1; // Enable Timer3 interrupt
T2CONbits.TON = 1; // Start 32-bit Timer */
}

Vous aimerez peut-être aussi