Necesito diseñar una ALU con dos entradas de 8 bits A y B y entradas de control x, y y z que admitan las siguientes operaciones:
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)
Se supone que esto se debe hacer con un sumador de 8 bits y un extensor de lógica aritmética. Al leer mi libro de texto, veo que el propósito de un extensor AL es alterar los bits de entrada para que un sumador, en lugar de muchos componentes adicionales, pueda usarse para hacer todo (o al menos eso es lo que entiendo de él). ) Por ejemplo, el extensor AL podría poner los bits en el complemento de dos para que el sumador reste. Del mismo modo, para las operaciones lógicas bit a bit, los bits podrían alterarse adecuadamente y una de las entradas del sumador podría ser cero para que el resultado se obtenga correctamente.
Pero, ¿qué hago exactamente con respecto a la multiplicación? Mi libro es muy vago, así que no estoy seguro de si un extensor AL requeriría que haga algo inteligente para que el sumador haga el trabajo (¿solo agrego 8 veces en mi caso? ... ja, ja), o si simplemente puede lanzar un multiplicador allí. Tendré que leer sobre la división, pero apuesto a que es similar a la multiplicación.
Bueno, de todos modos, la conclusión sigue siendo, ¿qué es un "extensor" AL "permitido" ser / poder tener en él? ¿Es su único propósito alterar la entrada para que se pueda alimentar a un sumador?
* EDITAR: Bueno, es multiplicación / división por 8, por lo que esto se puede realizar fácilmente con el desplazamiento hacia la izquierda o hacia la derecha por 3. ¿Seguiría teniendo un extensor de AL real / apropiado si añadiera algunos cambios allí? (Tal vez estoy pensando demasiado en esto como un completo principiante ...)