[introduction]: retour à la page d'introduction du cours
Trimestre visé: Hiver - 2002
Note importante: les examens se passent "à livres ouverts"
Répondre directement sur le questionnaire
durée: 8h30 à 10h20
Toute documentation permise
Question 1 (5 points)
Expliquez brièvement à quoi sert une "barrière de statuts" (seules les 5 premières lignes de votre
réponse seront corrigées).
[Barrière de status: cela permet d'empêcher qu'une interruption de priorité inférieure vienne
interrompre le travail de l' interruption en cours]
Question 2 (5 points)
Expliquez brièvement les particularités de l'adressage du "SFR" dans le 8031 (seules les 5 pre
mières lignes de votre réponse seront corrigées).
[Le SFR est à la fois adressable par bit (adresses 80h à FFh) et par bytes (adresses 80h à FFh).
Les principaux registres de configuration du 8031 ont une adresse se terminant par 0 ou 8 ce qui
permet une plage d'adresse continue de 80h à FFh. L'adressage du SFR se fait en mode direct
uniquement.]
Question 3 (10 points)
Dans la documentation de l'ALU 2903, on trouve deux pins qui ont les affectations suivantes "G
et SIGN" et aussi "P et OVR". Expliquez brièvement cette double affectation (seules les 10 pre
mières lignes de votre réponse seront corrigées)
[Cette double affectation sert lorsqu'on cascade plusieurs unités d'ALU. SIGN et OVR servent
pour la tranche la plus significative (MSS), G et P servent pour l'anticipation de retenue et sont
produites par les tranches de pooids moindres (intermédiaire ISS et basse LSS). En effet, lors de
l'anticipation de retenue - carry look ahead -, le carry de la dernière tranche MSS est produit à
partir des lignes G et P des autres tranches. La tranche MSS produit à son tour les lignes SIGN et
OVR pour l'ensemble du mot.]
Question 4 (30 points)
On veut programmer le "Timer 0" d'un 8031 en mode de rechargement automatique (auto-reload)
sur 8 bits. La valeur de rechargement est 5610. On veut aussi que l'interruption associée à ce timer
soit activée (basse priorité). On emploit l'oscillateur du 8031 pour l'incrementation du timer.
On vous demande de fournir le contenu de tous les registres nécessaires pour accomplir cette
tâche. Fournissez les explications appropriées.
TMOD: xxxx 0010
TCON: xxx1 xxxx
TL0: 1111 1111 ou 0011 1000 (i.e. 56)
TH0: 0011 1000 (i.e. 56) valeur de rechargement
IP: xxxx xx0x
IE: 1xxx xx1x
Question 5 (40 points)
Écrivez le microcode nécessaire à l'exécution de la macro-instruction "JCREL", c'est-à-dire,
jump (sauter) de façon relative si le carry de l'ALU est à un. Si le carry est nul, on poursuit l'exé
cution à la prochaine macro-instruction sans effectuer de saut. C'est une instruction sur deux
octets, le premier octet contient l'opcode (7#, # -> sans objet), le second octet contient l'offset
pour le saut relatif (c'est-à-dire saut par rapport à la valeur courante du PC: valeur du nouveau PC
= valeur courante du PC + offset). Vous n'avez pas besoin de vérifier si l'addition (valeur courante
du PC + offset) cause un débordement.
Servez-vous du simulateur que vous avez employé pour réaliser les exercices, assumez-le sans
bug. Optimiser votre microcode. Placez l'origine du microcode pour JCREL à 60H.
On vous demande de fournir: 1 un organigramme pour JCREL, 2 le microcode de JCREL
(source commentée).
[Ca peut s'écrire en 6 micro instructions.]
Répondre directement sur le questionnaire
durée: 8h30 à 10h20
Toute documentation permise
L'examen est sur 100 points
Question 1 (40 points)
Vous devez concevoir un canal de communication bidirectionnel série à basse fréquence. Le sys
tème emploie 2 micro-contrôleurs 8031 (un à chaque extrémité). On veut:
10 bits de transmission: start bit (0), 8 bits de données, 1 stop bit (1)
réception et transmission
validation en réception
baud rate de 5 Hz, fréquence du cristal du 8031: 11.059 Mhz
Déterminez le contenu de tous les registres de configuration (e.g. SCON, etc.) - 20 points
Justifiez le contenu des registres avec des commentaires appropriés. Si du code assembleur spé
cial est nécessaire, incluez-le. - 20 points
Solution:
10 bits donc mode 1
réception et transmission donc on active RE (reception enable)
validation donc SM2 à 1
il faut aussi activer les interruptions série et timer
SCON: 0111 xxxx
PCON: 0xxx xxxx (baud rate très lent)
Baud rate = 5 hz = 2^SMOD * Freq. Osc / 32 *12* ?
donc ? = 5760 décimal
Il faut Timer 1 en mode 16 bits (> 255) et un reload en logiciel
Valeur de rechargement: 65536 - 59776 = 5760, donc le timer 1 chargé avec 59776 = Hex E980
TH1: Hex E9
TL1: Hex 80
TMOD: 0001xxxx
TCON: x1xx xxxx
IE: 1xx1 1xxx
IP: xxx0 0xxx
Routine d'assembleur en réponse à l'interruption du Timer 1 (localisée à l'adresse Hex 001B):
MOV TL1, 80H ; TL1 <- 80
MOV TH1, E9H; TH1 <- E9
RETI ; retour de l'interruption
L'interruption est effacée automatiquement en sautant à la routine de service
Question 2 (20 points)
On a un système microprogrammé simple qui emploie un RALU Am2901, donc 1 seule unité de
4 bits. On veut réaliser une opération de décalage à droite sur 8 bits. Il y a donc 2 registres de 4
bits qui sont impliqués (adresse du registre C = 14 et adresse du registre D = 15. On vous
demande d'écrire les micro-mots de contrôle du Am2901, iéeé (seulement ceux-là):
I8 I7 I6 I5 I4 I3 I2 I1 I0 Cin AAAA BBBB
Notez qu'à la fin des opérations, on veut que D' (le registre D décalé) soit disponible à la sortie Y
du Am2901
Exemple:
Au départ: [D] = 0101 et [C] = 1101
A la fin: [D] = 1010 et [C] = 1110 et Y = 1010
bits de contrôle 12 points
Connexion 3 points
commentaires 5 points
Solution
1ère micro-instruction (C->F->Q)
I8 I7 I6 I5 I4 I3 I2 I1 I0 Cin AAAA BBBB
000 000 100 0 AAAA=14 et BBBB = 15
OREG R+S 0A
2ième micro-instruction (D/2->D, C/2->Q)
I8 I7 I6 I5 I4 I3 I2 I1 I0 Cin AAAA BBBB
100 000 011 0 AAAA=14 et BBBB=15
RAMQD R+S 0B
3ième micro-instruction (C/2-> C et D' en sortie)
I8 I7 I6 I5 I4 I3 I2 I1 I0 Cin AAAA BBBB
010 000 010 0 AAAA=15 et BBBB=14
RAM A et F->B R+S 0Q
et connexions:
RAM3 - RAM0 et Q3-Q0
Question 3 (40 points)
Écrivez le microcode pour implanter la macro-instruction BOUCLE: on charge un registre avec
un compteur et l'adresse de retour sur la pile. A la fin du code, on decrémente et teste le compteur.
S'il est nul, on ré-exécute le code sinon on poursuit les opérations.
Organigramme et code commenté à fournir.
Format BOUCLE (sur 1 octet): 8 registre
Exemple $85 (registre 5 employé).
[Ca peut s'écrire en 8 micro instructions.]
Répondre directement sur le questionnaire
durée: 8h30 à 10h20
Toute documentation permise
Question 1 (10 points)
Donnez 4 caractéristiques liées à la fabrication des circuits intégrés de type "full costom" (10
lignes max).
Exigences:
Répondre directement sur le questionnaire
durée: 8h30 à 10h20
Toute documentation permise
Question 1 (5 points)
Comment peut-on se servir d'un circuit intégré de mémoire comme machine d'états (5 lignes
max).
On peut se servir d'un circuit intégré de mémoire comme machine d'états en la connectant à un
compteur qui incrémente l'adresse à chaque coup d'horloge. On place les veleurs des états
désirés dans les cases de la mémoire. En parcourant la mémoire, on passera à travers tous les
états.
Question 2 (5 points)
Vous devez réaliser en quelques milliers d'exemplaires un circuit numérique d'une complexité de
200 portes environ, quelle approche choississez-vous?
On choisit les PALs car:
Exigences:
Soit les nombres 73 et 233. On emploit le résidu modulo 7.
R(73) = 3 et R(233) = 2 et donc somme des résidus = 2 + 3 = 5
Somme: 73+233 = 306 et résidu de la somme R(306) = 5
Cet exemple illustre que:
La somme des résidus = résidu de la somme, préservation des résidus lors de cette opération
arithmétique.
Cette page a été mise à jour, le 22 novembre 2001