"le processeur" -main "n a"

publicité
Université du Québec
enAbitibi-Témiscamingue
SOLUTIONNAIRE DE
L’EXAMEN FINAL
COURS:
MICROPROCESSEURS I
SIGLE:
INF-3215
SESSION:
ÉTÉ 2000 - EXAMEN FINAL
CENTRE:
Val d’Or
1)
1,5
2)
2
3)
2
4)
1
5)
2,5
6)
3
7)
1
8)
1,3
9)
1
10)
2,7
11)
2
12)
1
Total:
DÉPARTEMENT DES SCIENCES APPLIQUÉES
SOLUTIONNAIRE DE L’EXAMEN FI NAL
1) Dans le projet, on veut utiliser la re-vectorisation version 2 (1,5 points):
....
timer_vect:
jump (i4);
....
rti; rti; rti;
{ 0x28: timer
}
afin d’appeler deux fonctions différentes timer_isr1 et timer_isr2 qui effectuent
respectivement le pre mier et le deuxième décompte. Compléter alors les in struc tions :
{------------------ décompte du premier temps -------------}
timer_isr1:
{ Effectuer le décompte 1 }
....
if eq jump quit_isr1; {si le compte est tombé à zéro}
....
rti;
quit_isr1:
....
{ faire sonner le bip }
....
Call load_counters2;
{ charger le temps 2 }
i4 = ^timer_isr2;
l4 = 0;
rti;
{------------------ décompte du second temps --------------}
timer_isr2:
{ Effectuer le décompte 2 }
....
if eq jump quit_isr2; {si le compte est tombé à zéro}
....
rti;
quit_isr2:
....
{ faire sonner le bip }
....
call load_counters2;
{ charger le temps 2 }
i4 = ^timer_isr1;
l4 = 0;
rti;
Page 1
SOLUTIONNAIRE DE L’EXAMEN FI NAL
2)
Sachant que le processeur sur la carte ANS fonctionne à 66,00MHz.
Complétez les lignes de code suivantes pour effectuer une bou cle d’attente de 1 seconde
(2 points):
wait_one_second:
0x0321
cntr = 10 000;
0x0322
do loop2 un til CE;
0x0323
cntr = 3 333;
0x0324
do loop1 un til CE;
0x0325 loop1:
nop;
0x0326 loop2:
nop;
{ boucle interne de 100 us }
rts;
3)
Sachant qu’à la question 2), le label “wait_one_second” est à l’adresse
0x0321, et que chaque instrucion est codée en un seul mot, déterminez le contenu du
haut des piles PC_STACK, LOOP_STACK, et COUNT_STACK, juste après la
deuxième instruction “do ______ ______ _______; {boucle interne de 100us }”(2
points):
....
Haut du PC_STACK =
0x0325
(14 bits de large)
Haut du LOOP_STACK =
0x0325E
(14 + 4 bits de large)
Haut du COUNT_STACK =
0x2710
(14 bits de large)
Note: le loop_stack contient des adresses sur 14 bits + le code de ter mi na tion qui
est E dans le cas du “un til ce”.
4) Après la série d’instructions ci-dessous:
....
rti;
timer_vect:
jump timer_isr1;
rti;
....
here_isr2:
rti; rti; rti;
{ 0x24: Rx_SPORT1 ou IRQ0 }
rti; rti; rti;
rti; rti; rti;
{ 0x28: timer
{ 0x2c: power down
Page 2
}
}
SOLUTIONNAIRE DE L’EXAMEN FI NAL
jump timer_isr2;
....
change_vect:
i5=^here_isr2;
ax0=pm(i5,m5);
i5=^timer_vect;
pm(i5,m5)=ax0;
Et sachant que le ax0 n’est qu’un registre de 16 bits, déterminer la portion de
l’instruction qui a été transférée à l’adresse “timer_vect”(1 point):
Il s’agit de la modification des bits 23-8 de l’instruction “jump
timer_isr1”
þ
Il s’agit de la modification des bits 15-0 de l’instruction “jump
timer_isr1”
r
Note: Les bits 7-0 sont quand même transférés via le registre interne PX.
5) Donnez un exemple de câblage null-mo dem de PC(DTE)-PC(DTE)(2,5 points):
(1 point)
6) La com mu ni ca tion sérielle RS-232 en tre le casque ANS et l’ordinateur PC se
fait à 115K (baud),8 (bits/caractère),1 (stop bit) , S (parité space). Donnez la durée (Ts)
pour chaque bit, et dessinez le diagramme de transmission du caractère ASCII
“X”=0x58 (3 points):
Ts =
1/115 000 = 8,7 microsecondes
Page 3
SOLUTIONNAIRE DE L’EXAMEN FI NAL
Diagramme de trans mis sion du caractère ASCII “X”:
mark
space
0
0
0
1
1
0
1
0
S
7) À quoi sert l’instruction “ena timer” (1 point) ?
À autoriser l’interruption de type TIMER (bit dans IMASK)
r
À autoriser le décompte de TCOUNT (bit dans MSTAT)
þ
À autoriser la vectorisation TIMER dans la table des interruptions.
r
8) La no tion d’interruption matérielle a été implantée dans les
microprocesseurs pour (cocher les as ser tions vraisemblables) (1,3 points):
Prendre en compte des évènements importants et imprévus
r
Prendre en compte des évènements prévus mais non cédulés
þ
Traiter sommairement l’évènement et retourner rapidement le
contrôle.
þ
Pouvoir faire une boucle qui peut dépasser l’arrivée de l’évènement
suivant.
r
Appeler une autre rou tine d’interruption.
r
Provoquer un autre type d’interruption.
þ
9) À quoi sert l’instruction “ena m_mode” (1 point) ?
À désactiver le mode de multiplication en virgule flottante du MAC
r
À désactiver le mode vir gule fixe du MAC
þ
À désactiver le mode entier du MAC
r
Page 4
SOLUTIONNAIRE DE L’EXAMEN FI NAL
10) Parmi les instructions suivantes du ADSP2181, trouvez les instructions
illégales qui seront refusées par le compilateur assembleur (2,7 points) :
Intruction légale
Instruction illégale
mr = sr0 * my0 (??);
r
þ
mr1 = 16;
þ
r
mr1 = mr+ay0*1 (??);
r
þ
ar = sr1-ay0;
þ
r
af = ay0-ax1;
r
þ
mr=0;
þ
r
sr=0;
r
þ
sr1=2;
þ
r
si=5;
þ
r
sr=lshift ar by 4 (lo);
þ
r
mr=mr+mx0*my0 (??);
r
þ
sr = rshift si (hi);
þ
r
if ce jump(i2);
r
þ
if ge mr = mr (rnd);
þ
r
none=pass sr0;
þ
r
ar =ax0 -16;
þ
r
ar = mr0 xor ay0;
þ
r
ar = sr0 and 32;
þ
r
11) Sachant que la communication sérielle en mode multicanaux entre le
ADSP2181 et le codec AD1847 se fait à SCLK=11,2896 Mhz lorsque le codec est
configuré pour échantillonner à 44,1 Khz, Déterminer les temps pris pour transférer
16 mots et 32 mots de 16 bits et comparez-les avec la période des interruptions
“sport0_rx_isr”. Déterminer alors si on doit mettre le codec en mode 16 canaux ou 32
canaux (2 points) .
Temps mis pour transmettre 16 mots de 16 bits =
Page 5
22,68 microsec.
SOLUTIONNAIRE DE L’EXAMEN FI NAL
Temps mis pour transmettre 32 mots de 16 bits =
45,35 microsec.
On peut mettre le AD1847 en mode 16 mots par paquet
þ
On peut lais ser le AD1847 en mode 32 mots par pa quet
þ
12) Aimeriez vous avoir un cours de MICROPROCESSEURS_2, où vous
pourriez programmer divers mouvements pour un robot à six pattes (créer un petit
système multitâches sur un DSP) (Bonus 1 point) ?
non
þ
oui
þ
Alors tant pis/tant mieux, profitez quand même des vacances bien méritées!
!!!!! FUN DE L’EXAMOON !!!!!
Page 6
Téléchargement