Je dois concevoir une ALU avec deux entrées A et B 8 bits et contrôler les entrées x, y et z qui prennent en charge les opérations suivantes:
x y z | operation
0 0 0 | S = A-B
0 0 1 | S = A+B
0 1 0 | S = A*8
0 1 1 | S = A/8
1 0 0 | S = A NAND B (bitwise)
1 0 1 | S = A XOR B (bitwise)
1 1 0 | s = reverse the bits of A
1 1 1 | S = NOT A (bitwise)
Ceci est censé être fait avec un additionneur 8 bits et un extenseur arithmétique et logique. En lisant mon manuel, je vois que le but d'un extenseur AL est de modifier les bits d'entrée afin qu'un additionneur, plutôt que beaucoup de composants supplémentaires, puisse être utilisé pour tout faire (ou du moins c'est ce que je comprends de lui ). Par exemple, l'extension AL pourrait mettre les bits en complément à deux afin que l'additionneur fasse une soustraction. De même, pour les opérations logiques au niveau du bit, les bits peuvent être modifiés de manière appropriée et l'une des entrées d'additionneur peut simplement être nulle afin que le résultat passe correctement.
Mais que faire exactement de la multiplication? Mon livre est très vague, donc je ne suis pas sûr qu'un extenseur AL m'oblige à faire quelque chose d'intelligent pour que l'additionneur fasse le travail (ajoutez juste 8 fois dans mon cas? ... ha ha), ou si je peut simplement jeter un multiplicateur là-dedans. Je vais devoir lire sur la division, mais je parie que c'est similaire à la multiplication.
Eh bien, de toute façon, le résultat final est toujours, qu'est-ce qu'un extenseur AL "autorisé" à / peut avoir en lui? Son seul but est-il de modifier l'entrée afin qu'elle puisse être envoyée à un additionneur?
* EDIT: Eh bien, c'est une multiplication / division par 8, donc cela peut être facilement effectué avec un décalage vers la gauche ou vers la droite par 3. Aurais-je encore une extension AL réelle / appropriée si j'y ajoutais des sélecteurs? (Peut-être que j'y pense trop en tant que débutant complet ...)