Répétitions de Structure des ordinateurs (2CING) |
Vous pouvez télécharger ici [PDF] l'énoncé de la première séance d'exercices ainsi que le corrigé correspondant pour les questions 4 à 7[PDF]. Voici en outre les corrigés pour ls autres questions: question 1[PDF], question 2[PDF], question 3[PDF], question 8[PDF], question 9[PDF].
Comme la question 8 semble très difficile à comprendre, voici une transcription de ce qui a été dit au répétitions. Les bascules "D" du montage ne changent d'état QUE lors du flanc montant de l'horloge. Imaginons que les quatre sorties soient à "0". Remarquez d'abord que la sortie de IC12a ne peut être à "0" QUE dans UN SEUL CAS: il faut que ses quatres entrées soient à "1" ce qui sera le cas uniquement si Q0 et Q1 sont à "0" et Q2 et Q3 à "1" (1100 en binaire qui correspond à 12 en décimal). Ici, puisque les 4 sorties sont à 0, IC12a produit un 1 et donc IC7a, IC5b, IC5c et IC5d laissent passer l'autre signal connecté à leur seconde entrée. Vous pouvez donc les oublier dans un premier temps. Lors du flanc montant de l'horloge, Q0 passe à 1 puisqu'un 1 est appliqué à l'entrée D de la bascule (/Q vaut toujours le contraire de Q).
On veut que Q1 ne change d'état QUE quand Q0 vaut 1, pour obtenir un comptage (0000, 0001, 0010, 0011, 0100, 0101,...). Si Q0 vaut 1, on applique, grâce à IC3b, /Q1 de la seconde bascule à son entrée D: elle change donc bien d'état dans ce cas. Si Q0 vaut 0, par contre, on recopie simplement Q1 dans lui même grâce à IC3a.
Pour Q2 et Q3, c'est pareil: Q2 change d'état si et seulement si Q1 ET Q0 sont à 1, sinon il reste inchangé et Q3 ne change d'état QUE si Q0, Q1 et Q2 sont à 1, sinon, il ne change pas. Le mot binaire formé par Q3, Q2, Q1 et Q0 prend donc les valeurs décimales 0, 1, 2,... Cela s'arrête à 12. En effet, comme dit plus haut, si la combinaison binaire de Q0..3 vaut 12 (1100 en binaire), IC12a passe à 0 et bloque IC7a, IC5b, IC5c et IC5d qui produisent toutes un 0. Lors du flanc d'horloge suivant, Q0..3 sont alors toutes remises à 0 puisque toutes les entrées D des bascules sont à 0.
Vous pouvez télécharger chipinfo ici. C'est un tutoriel qui vous permet d'essayer dynamiquement une ALU 74181, une bascule D et une bascule JK. Ce programme tourne sous DOS (ou dans une boîte DOS sous Windows (PAS XP) ou encore sous DOSEMU ou autre sous LINUX). Bien qu'en mode texte et d'aspect antique, il est très convivial (souris, boîtes de dialogue, menus,...). Sa taille (inférieure à 13Ko!) est telle que vous n'avez aucune excuse pour ne pas l'essayer! Si ce programme vous intéresse, faites le savoir: j'ajouterai des circuits (MUX, DEMUX, etc). Ce programme a été réalisé entièrement en assembleur x86.
Voici une copie d'écran pour vous montrer à quoi vous attendre:
Pour réaliser les travaux, un assembleur et un simulateur beta sont à votre disposition sur vos postes de travail habituels. Si vous voulez travailler chez vous, vous pouvez télécharger ici les archives complètes de l'assembleur et du simulateur pour UNIX utilisant la machine maybe ou utiliser ce lien vers un site du MIT ou vous trouverez un assembleur et un simulateur pour WINDOWS.
Infos pour UNIX maybe: L'assembleur se trouve dans le répertoire maybe/asm (aller dans ce répertoire, faire "make clean" puis "make": l'assembleur "asm" est créé), le simulateur dans le répertoire maybe/maysim et les deux fichiers à inclure dans le programme en assembleur (betainst et convbetainstr) se trouvent dans maybe/beta. Recompilez l'assembleur pour votre machine (selon instructions ci-dessus) et le simulateur (faire "rm *.o" pour enlever les fichiers objets présents dans l'archive puis faire "make -f maysimux.mak": maintenant, le simulateur est prêt).
Des exemples de programmes beta se trouvent dans le répertoire maybe/beta (essayez par exemple betafib.asm). Pour essayer ce programme, faire: "xbetasim -rd../beta/betafib.asm.hex". L'option "-rd" permet de charger la DRAM avec le code exécutable. Le script "xbetasim" est en fait un appel au simulateur "maysim" avec le chargement dans maysim de l'émulateur BETA (en effet, maysim est un simulateur pour la machine MAYBE, que vous ne connaissez pas).
En fait, la SRAM de la machine MAYBE est utilisée pour stocker les registres de la BETA. Les 32 registres de la machine BETA se trouvent aux adresses 0x20 à 0x9f. Vous constaterez que R0 et R30 ont bien été modifiés par l'exécution du programme d'exemple "test.asm", qui se trouve dans le répertoire "beta" et que je vous conseille vivement d'essayer dans le simulateur. A titre d'exercice, retrouvez le registre PC de la BETA dans la mémoire statique de la MAYBE.
Pour rappel, on ouvre une nouvelle fenêtre avec "Ctrl-o" puis "s" ou "d" pour SRAM ou DRAM. Pour toute aide supplémentaire, appuyez sur F1 dans le simulateur.
N'oubliez pas que si vous incluez un fichier (par exemple le fichier contenant la définition des instructions BETA: "betainstr"), il doit être accessible, sinon, l'assembleur ne le trouvera pas! Donc, par exemple, si vous voulez assembler "test.asm", vous devrez le faire dans le répertoire "beta", où se trouve "betainstr": dans "beta", faire "../asm/asm test.asm".
Voici une récapitulation des commandes à exécuter pour utiliser l'assembleur et le simulateur:
ms815:~> unzip maybe.zip
Archive: maybe.zip
creating: maybe/asm/
inflating: maybe/asm/asm.c
inflating: maybe/asm/asm
...
extracting: maybe/maysim/xbetasim
inflating: maybe/maysim/xbetafibsim
inflating: maybe/maysim/xbetafibusersim
inflating: maybe/maysim/xbetadebug
ms815:~> cd maybe/asm
ms815:~/maybe/asm> make clean
rm -f *~
rm -f *.o
ms815:~/maybe/asm> make
gcc -c -o ev.o ev.c
gcc asm.c ev.o -o asm
ms815:~/maybe/asm> cd ../maysim/
ms815:~/maybe/maysim> rm *.o
ms815:~/maybe/maysim> make -f maysimux.mak
gcc -g -ansi -c maysim.c -o maysim.o
In file included from maysim.c:19:
maywin.h:16: warning: `struct WinStr' declared inside parameter list
maywin.h:16: warning: its scope is only this definition or declaration, which is probably not what you want.
...
maywin.h:17: warning: `struct WinStr' declared inside parameter list
gcc -g maysim.o machine.o display.o maywin.o memwin.o mayfile.o \
hard.o regs.o uart.o sram.o dram.o ctlrom.o microrom.o -o maysim \
-lcurses -ltermcap
ms815:~/maybe/maysim>
A ce stade, tout est prêt pour les expérimentations décrites plus haut.
Bon travail!
Infos pour WINDOWS bsim: l'assembleur s'appelle uasm.exe et le simulateur bsim.exe.
Vous pouvez télécharger les informations concernant la machine beta : les instructions[PDF] et un petit résumé[PDF] succint.
Nous vous conseillons d'utiliser ces programmes chez vous (ils sont compilables sur toutes les plateformes courantes) mais vous aurez accès aux machines de Montéfiore.
Hugues Smeets