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