Una Unidad Aritmética Lógica es un circuito digital que realiza operaciones aritméticas (suma, resta, multiplicación, división) y operaciones lógicas (AND, OR, NOT) así como muchos otros tipos de operaciones.
Para que la ALU funcione de una manera eficaz sugerimos agregar un decodificador con el cual se seleccionaran las operaciones que desea realizar el usuario en la ALU. Los datos ingresados se procesan de tal manera que pueda obtener el resultado de la operación asignada, incluyendo carry´s.
Uno de los primeros programas de prueba que podemos realizar es la configuración de una ALU en la tarjeta, para lo cual necesitaremos asignar variables, nosotros recomendamos las siguientes: para los datos de entrada X1, X2, Y1, y Y2, además de un arreglo de 3bits que serán la selección de operación; para los datos de salida un arreglo de cuatro bits (ya que habrá operaciones que utilizarán todos).
En un "case" se recibirá la variable de selección, para el not solo se negará la entrada, para las demás operaciones lógicas se utlizará el bit número de uno de la variable X y Y.
Para la suma se utiliza tal cual el código como se explica en este blog en la publicación de "Implementar un sumador...", la multiplicación la realizamos siguiendo el siguiente esquema a base de and´s y sumas.
La operación AND de X1 con Y1 se pone tal cual como una salida cero, después se suma el AND de X2 con Y2 junto con el AND de X2 con Y1, si existe un carry se agrega a la siguiente suma y de esta manera se va realizando la multiplicación, básicamente son AND´s y Sumas.
Para agregar los corrimientos de bits ya sea a la izquierda o a la derecha, solamente es una sustitución de valores.
No hay comentarios:
Publicar un comentario