Necesito diseñar una ALU con dos entradas de 8 bits A y B y las entradas de control x, y yz que admiten 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 de AL es alterar los bits de entrada para que se pueda usar un sumador, en lugar de muchos componentes adicionales, para hacer todo (o al menos eso es lo que entiendo de ello). ). Por ejemplo, el extensor AL podría poner los bits en el complemento de dos para que el sumador haga una resta. Del mismo modo, para las operaciones lógicas a nivel de bits, los bits podrían modificarse adecuadamente y una de las entradas del sumador podría ser cero para que el resultado se obtenga correctamente.
Pero, ¿qué hago exactamente con la multiplicación? Mi libro es muy vago, por lo que no estoy seguro de que un extensor de AL requiera que haga algo inteligente para hacer que el sumador haga el trabajo (solo agregue 8 veces en mi caso? ... ja ja), o si Solo puedes lanzar un multiplicador ahí. Tendré que leer sobre división, pero apuesto a que es similar a la multiplicación.
Bueno, de todos modos, la línea de fondo sigue siendo, ¿qué se "permite" que pueda tener un extensor de AL en él? ¿Su único propósito es modificar la entrada para que pueda ser alimentada 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 si agrego algunos desplazadores allí? (Quizás estoy pensando demasiado en esto como un principiante completo ...)