UNIVERSIDAD AUTONOMA METROPOLITANA CAMPUS: IZTAPALAPA DIVISION: CBI Practica #3 Construcción una ALU. (Sumador restador de 3 bits con acarreo y banderas indicadoras de estado.) Profesor: Joel Ricardo Jiménez Cruz Alumnos: Ortiz Sagrero Cecilio Wenceslao. Sánchez García Ángel Fabricio. 2 RESUMEN ................................................................................................. 3 INTRODUCCIÓN ....................................................................................... 4 DESARROLLO TEORICO ........................................................................ 5 EQUIPO y MATERIAL ............................................................................... 11 DESARROLLO EXPERIMENTAL ............................................................. 11 RESULTADOS .......................................................................................... 25 COMENTARIOS Y/O DISCUSIÓN ........................................................... 31 EL TRABAJO FUTURO ........................................................................... 31 CONCLUSIONES .................................................................................... 32 REFERENCIAS ...................................................................................... 32 2 3 RESUMEN: El objetivo de la practica es construir una sencilla pero útil unidad aritmético lógica que realice operaciones de suma y resta binaria con complemento a dos, de dos números de 4 bits los cuales estarán dentro del intervalo decimal [-8,7] esto por que se tomara como el bit mas significativo el colocado mas a la izquierda, el cual además de representar el numero nos indicara el signo “-“ si es 1 ó o representara “+” si es cero, para ello daremos un pequeño repaso por los circuitos combinacionales, los circuitos secuenciales, las operaciones aritméticas binarias, además de describir la forma en la cual se pueden implementar mediante circuitos lógicos. Definiremos los conceptos de ALU, medio sumador y restador, así como el de sumador y restador completo. Si es posible haremos notar como la construcción de una unidad aritmético lógica que realice operaciones de suma y resta en un solo circuito suele ser complicada, sin embargo teóricamente constituye un modelo mas sencillo que construir dos circuitos los cuales, realicen dichas operaciones por separado. Se describirán los componentes utilizados en la construcción de la ALU. Un típico símbolo esquemático para una ALU: A y B son operandos; R es la salida; F es la entrada de la unidad de control; D es un estado de la salida 3 4 INTRODUCCIÓN: El ALU es concepto atribuido a John Von Neumann, quien aseveró al diseñar su arquitectura para una computadora, que está tendría que realizar operaciones matemáticas básicas razón por la cual la computadora debía contener órganos especializados en dichas operaciones. La Unidad Aritmético Lógica, es un circuito digital que calcula operaciones aritméticas (como adición, substracción, etc.) y operaciones lógicas (como OR, NOT, XOR, etc.), entre dos números. La operación a realizar por la ALU se decide mediante señales de control enviadas por la unidad de control. Los elementos que componen la ALU son los siguientes: Circuito Operacional: Formado por los circuitos necesarios para la realización de las operaciones con los datos procedentes del registro de entrada. También acepta como entrada órdenes para seleccionar el tipo de operación que debe realizar. Registros de Entradas: Contiene los datos u operandos que intervienen en una instrucción antes de que se realice la operación por parte del circuito operacional. También se emplea como almacenamiento de resultados intermedios o finales de las operaciones. Registro de Estados: Engloba un conjunto de biestables en los que se deja constancia de condiciones que se dieron en la última operación realizada y que habrán de ser tenidas en cuenta en operaciones posteriores (indicadores de signo, de cero, de desbordamiento, etc.). Registro Acumulador: Contiene los datos que se están tratando en cada momento. Almacena los resultados de las operaciones realizadas por el circuito operacional. Esta conectado con los registros de entrada para retroalimentación en el caso de operaciones encadenadas. También tiene conexión directa con los dispositivos de salida para el envió de resultados. La mayoría de las acciones de la computadora son realizadas por la ALU. La ALU toma datos de los registros del procesador. Estos datos son procesados y los resultados de esta operación se almacenan en los registros de salida de la ALU. Otros mecanismos mueven datos entre estos registros y la memoria 3 . Una unidad de control controla a la ALU, al ajustar los circuitos que le dicen a la ALU qué operaciones realizar. Muchos tipos de circuitos electrónicos necesitan realizar algún tipo de operación aritmética, así que incluso el circuito dentro de un reloj digital tendrá 4 5 una ALU minúscula que se mantiene sumando 1 al tiempo actual, y se mantiene comprobando si debe activar el pitido del temporizador, etc. Por mucho, los más complejos circuitos electrónicos son los que están construidos dentro de los chips de microprocesadores modernos como la familia de los Pentium. Por lo tanto, estos procesadores tienen dentro de ellos un ALU muy complejo y poderoso. De hecho, un microprocesador moderno pueden tener múltiples núcleos, cada núcleo con múltiples unidades de ejecución, cada una de ellas con múltiples ALU. Muchos otros circuitos pueden contener en el interior ALU: GPU como los que están en las tarjetas gráficas NVidia y ATI, FPU como el viejo coprocesador numérico 80387, y procesadores digitales de señales como los que se encuentran en tarjetas de sonido Sound Blaster, lectoras de CD y las TV de alta definición. Todos éstos tienen adentro varias ALU poderosas y complejas. Los circuito lógicos para los sistemas digitales pueden ser combinacionales o secuenciales. Un circuito combinacional consiste en compuertas lógicas cuyas salidas se determinan directamente en cualquier momento de la combinación presente de entradas sin tener en consideración las entradas anteriores. Estos circuitos realizan una operación de procesamiento de información específica completamente lógica por medio de un conjunto de funciones de Boole. Por otra parte los circuitos secuenciales usan elementos de memoria, además de compuertas lógicas. Sus salidas son en función de sus entradas y del estado de los elementos de la memoria, donde el estado de los elementos de la memoria es a su vez una función de las entradas previas. Como consecuencia, las salidas de un circuito secuencial dependen no solamente de las entradas presentes, sino también de las pasadas, y el comportamiento del circuito debe especificarse por una secuencia de tiempos en las entradas y estados internos. Es por ello que se emplearan circuitos secuenciales en la construcción de la unidad aritmético lógica. DESARROLLO TEORICO. SUMA BINARIA: Recordemos que en un número binario como 11010101, el (1) situado más a la izquierda es el bit más significativo y el digito de la extrema derecha (1) es el bit menos significativo. 5 6 Recordemos también los valores posiciónales de los números binarios. Equivale a: 2n 2n-1 2n-2 2n 2n-1 2n-2 … … 25 24 23 22 21 32 16 8 4 2 20 1 Como ocurre con los números en base 10 no hay dificultad para realizar la operación en ningún caso excepto en el cual se tiene 1+1, que en base diez sería 2 y que en base dos se escribe 10 (uno cero). Por lo tanto, en binario 1+1=0 y llevamos 1 a la posición mas significativa siguiente. Esto último lo llamamos acarreo. 0 + 0 0 1 + 0 1 0 + 1 1 1 + 1 1 0 ACARREO Sumadores. Las compuertas digitales hacen una variedad de tareas de procesamiento de información. Entre las funciones básicas encontradas están las diferentes operaciones aritméticas. Un circuito combinacional que realiza la suma de dos bits se le llama sumador medio ó medio sumador. Aquel circuito que puede realizar la suma de 3 bits considerando el acarreo se le considera un sumador completo. De la explicación anterior se observa que un sumador medio necesita dos entradas y produce dos salidas, donde las entradas son proporcionadas por los bits de los sumandos, mientras las salidas son producidas por la suma y el bit de acarreo. A 0 0 1 1 B 0 1 0 1 C 0 0 0 1 S 0 1 1 0 Tabla de verdad sumador medio. El bit de acarreo es cero a menos que ambas entradas sean 1. La salida S representa el bit menos significativo de la suma. Las funciones de Boole simplificadas se pueden obtener de la tabla anterior. S=A’B + AB’ C= AB 6 7 Y cuyo diagrama lógico es: U2A 1 U1A 3 74HC08D_2V U3B 74HC32N_2V 2 74HC08D_2V U4C 4 74HC08D_2V Donde 4 representa el acarreo y 3 es la suma. Sumador completo Un sumador completo es un circuito combinacional que forma la suma aritmética de tres bits de entrada. Este consiste en tres entradas y dos salidas. Dos de las variable de entrada denotadas por x y y representan los dos bits significativos que se agregan, la tercera entrada z representa el bit de acarreo de la posición menos significativa. Se necesitan 2 salidas designadas S para la suma y C para el acarreo. X 0 0 0 0 1 1 1 1 Y 0 0 1 1 0 0 1 1 Z 0 1 0 1 0 1 0 1 C 0 0 0 1 0 1 1 1 S 0 1 1 0 1 0 0 1 Tenemos que sus funciones están dadas por: S=X’Y’Z + X’YZ’ + XY’Z’ + XYZ C=XY + XZ + YZ 7 8 Y tienen el siguiente diagrama. U1 U7 AND3 1 AND2 U2 6 2 U5 U8 U6 7 AND3 5 9 AND2 U3 OR4 3 AND3 4 U4 OR3 8 U9 AND2 AND3 Donde 5 representa la suma, y 9 es el acarreo. RESTADORES: La resta de dos números binarios puede lograrse tomando el complemento del sustraendo para agregarlo al minuendo. Mediante este método, la operación de sustracción se convierte en una operación de suma que necesita sumadores completos para su ejecución en una maquina. Restador medio Un restador medio es un circuito combinacional que resta dos bits y produce su diferencia. Restador completo Es un circuito combinacional que realiza una resta entre dos bits, tomando en consideración que se ha prestado un 1 de un estado menos significativo. Una vez repasada el aritmética binaria, y obviamente determinado el camino sencillo de utilizar un solo circuito, al hacer énfasis en ver la resta como una suma complementada, damos paso nuevamente al tema central de la practica la ALU. 8 9 Una unidad aritmética lógica es una función multioperación digital de lógica combinacional. Esta puede realizar un conjunto de operaciones aritméticas básicas y un conjunto de operaciones lógicas. El ALU tiene un número de líneas de selección para elegir una operación particular de la unidad. Las líneas de selección se decodifican dentro de la ALU de manera que las k variables de selección pueden especificar hasta 2k operaciones diferentes. A1 A2 A3 A4 B1 B2 B3 B4 s2 s1 Cout Unidad aritmética Lógica (ALU) s0 ci n F4 F3 F2 F1 En la figura se muestra el diagrama de bloque de una ALU de 4 bits. Las 4 entradas de datos A se combinan con las cuatro entradas de B para generar una operación en las salidas F. La linea de selección de modo s2 distingue entre las operaciones aritméticas, y lógicas. Las dos entradas de selección s1 y s0 especifican la operación aritmética o lógica que se va a generar. Con tres variables de selección es posible especificar cuatro operaciones lógicas (con s2 en un estado) y cuatro operaciones lógicas (con s2 en el otro estado). Los acarreos de entrada (ci) y salida (cout) tienen significado solamente durante la operación aritmética. El arrastre de entrada en la posición menos significativa de un ALU se usa muy a menudo como una cuenta variable de selección que puede doblar el número de operaciones aritméticas. De esta manera, es posible generar cuatro operaciones mas, para un total de ocho operaciones aritméticas. Un diseño de un ALU típico se llevara a cabo en tres etapas. Primero será emprendido el diseño de la selección aritmética. Segundo debe considerarse el diseño de la sección lógica. Finalmente, deberá modificarse la sección aritmética de manera que puedan realizarse ambas operaciones aritméticas y lógicas. 9 10 El componente básico de la sección aritmética de una ALU es un sumador en paralelo. Un sumador en paralelo se construye con un número de circuitos sumadores completos conectados en cascada. De tal forma que controlando la entrada de datos al sumador en paralelo, es posible obtener diferentes tipos de operaciones aritméticas. La siguiente figura muestra las operaciones aritméticas obtenidas cuando un grupo de entradas a un sumador en paralelo se controlan externamente. La suma aritmética se puede implementar con un número binario en A, otro número en la entrada B y el acarreo de entrada Cin en un valor lógico 0. El resto de las funciones se enuncian en la columna descripción. Selección de Función Salida N Función Descripción 0 N 0 F A Transferir A 0 1 0 A+1 Incrementar A 0 1 0 B A+B Suma ó agregar B a A 0 1 1 B 1 0 0 B’ 1 0 1 B’ 1 1 0 Todos unos A-1 Decrementar A 1 1 1 Todos unos A Trasferir A S1 S0 Cin 0 0 0 A+B+1 Suma con acarreo ó agregar B a A más 1 A+B’ Agregar el complemento de 1 de BaA A+B’+1 Agregar el complemento de 2 de BaA Tabla de la Función F en un Circuito Aritmético Pasemos a la construcción de la ALU. 10 11 Equipo y/o Material: Componentes 1 2 2 1 1 1 2 4 16 Sumador (74LS283) FLIP-FLOP (74LS175) COMPUERTAS AND (74LS08) COMPUERTAS NOR (74LS02) COMPUERTAS OR (74LS32) COMPUERTAS XOR (74LS86) DIP SWITCH (4 Y 8 SALIDAS) PUSH BUTTONS (opcionales) LEDS (4 para cada número, 4 para la operación y4 banderas) Varios : Trozos de cable de red telefónica para realizar las conexiones en el Protoboard, pinzas, leds. Hojas de datos de los diversos componentes (descargados de Internet para mayor detalle consultar en las referencias de este documento) Desarrollo Experimental: Del diagrama original elaborado en clase el cambio principal que se realizo fue la forma de introducir los datos, ya que en un principio el flip flop por el cual se introducirían los datos sería el de la parte superior del diagrama, sin embargo, por cuestiones de lógica se prefirió fuera el flip flop inferior el encargado de la función de introducción de los datos y la retroalimentación seria para el flip flop superior. Además cabe mencionar que por cuestiones de espacio en el primer diagrama, solo se coloca un dispositivo nombrado como VC01, el cual es detallado en el segundo diagrama. También he de mencionar que los leds mostrados en el diagrama 1 , solo representan las banderas (overflow, acarreo, signo y el cero). Los otros leds solo hay que ubicarlos correctamente en las respectivas salidas de los flip flops para los números y a la salida del sumador para el resultado de la operación. 11 14 A continuación se muestran algunas imágenes del proceso de elaboración del circuito. Para la colocación del circuito se utilizaron inicialmente dos protoboards, aunque finalmente se utilizaron 3 de ellas, las cuales fueron debidamente puenteadas. En este caso se muestra un gran avance del circuito pues por cuestiones del tamaño de este archivo se tuvieron que eliminar algunas fotografias . 14 15 En la imagen se puede observar las primeras salidas idénticas cuando se realiza la transferencia de datos, al ver tres leds rojos encendidos y de igual forma tres leds amarillos encendidos 15 16 Aquí se muestra la parte del circuito con los switches y el primer flip flop junto con los push buttoms para el clock y el reset del del flip flop 16 17 Después de varios leds fundidos se decidió colocar unas resistencias para aumentar el ciclo de vida de los leds. 17 18 Aquí se muestra una etapa intermedia de la construcción del circuito donde se muestran ambos flip flop con sus respectivos botones para resetearlos y para simular el pulso de reloj, además de la colocación de resistencias y los leds para la introducción de los datos. Se observan dos dip switches, los cuales nos permitiran introducir los datos correspondientes y poder tener cuaquiera de las combinaciones para las lineas de selección del circuito. 18 19 En esta imagen mostramos la compuerta nor y el inversor necesarios para las banderas del sumador. Ademas de se tuvo que anexar una tercera protoboard, haciendo de este un circuito de gran tamaño. 19 20 Aquí mostramos los leds correspondientes a las banderas indicadoras de overflow, acarreo, signo y cero. 20 21 En esta imagen se puede observar la parte superior del circuito, el dp switch que controla las lineas de selección, asi como parte del circuito denominado VC01. 21 22 Aquí observamos ya una prueba del circuito al introducirle el dato 1111 donde se nos muestra las banderas de acarreo y de signo encendidas. 22 23 . En esta imagen se observa un segundo experimento en el cual se encienden las banderas de signo y overflow 23 24 Aquí se muestra la imagen final del circuito. 24 Resultados Se logró después de mucho tiempo concluir exitosamente esta practica, claro después de corregir el diagrama inicial, comentar dudas con el ayudante de la materia, así mismo investigando en Internet y en diferentes libros, los cuales en su mayoría tratan el tema de diferentes formas, logramos encontrar la manera de hacer funcionar la ALU. Hay que poner énfasis en la situación de acostumbrarse a leer el binario y tomar en cuenta que el primer digito representa el signo y el número, ya que esto nos llevo tiempo en corroborar resultados y aun más en explicarlos. Considerar al 1111 binario como el -1 decimal, o por ejemplo entender que 0101+1011= 1100 cuyo significado es -4 decimal y no lo que normalmente estamos acostumbrados a ver lo cual sería un 12. El considerar las banderas y lo que significa cada una de ellas, (ver los diagramas anteriores) cuando debe encenderse el acarreo final, el signo, el cero, y el overflow (desbordamiento), también tuvieron su dificultad en cuanto a su comprensión practica y teórica al momento de la conexión de la ALU. Además de mencionar los casos en los cuales podemos hacer diferentes operaciones con nuestra ALU. Aquí mostraremos unos ejemplos sencillos. 1.- suma de 2 números positivos cuyo resultado esta dentro del rango aceptado. 2.- suma de 2 números positivos cuyo resultado esta fuera del rango aceptado. 3.- suma de 2 números uno positivo y otro negativo y cuyo resultado esta dentro del rango. 4.- suma de 2 números uno positivo y otro negativo y cuyo resultado esta fuera del rango. 5.- transferencia (utilizada para almacenar el segundo número en el segundo flip-flop 6.- incremento a 1 (incrementa en uno al número introducido) 7.- decremento en uno (decremento en uno al número introducido) 8.- suma el complemento con incremento en uno (esto es para restar sumando es decir se envía el complemento del numero y se le incrementa en uno, lo que conocemos como complemento a 2). A continuación mostraremos unas imágenes del funcionamiento del circuito con ejemplos específicos. El caso muestra realizado a petición del profesor para la aceptación de la práctica la suma de 4 – 4. Como se observa en la imagen se introduce el numero 4 en el primer flip flop (los leds rojos, tienien la disposición 23222120), y los leds verdes representan la salida del sumador, aquí estamos en la operación de transferencia. 27 La forma de manejar el circuito para realizar la operación indicada, es la siguiente, se introduce el primer 4, el cual es transferido ala segundo flip flop y posteriormente se introduce el -4, para enseguida realizar la suma de los numeros mediante el complemento a 2. Como se muestra en la imagen el resultado es 0, ningun led amarillo prendido, y la bandera indicadora del del cero encendida. 27 28 En las siguientes imagenes se muestra un ejemplo de overflow, en el cual la operación es la suma de 7+1, recordamos que nuestro rango va de [-8, 7] , la primer imagen se muesta la introducción de el 7 en el prmier flip flop y como este es el resultado de la suma, en la segunda imagen se realiza la transferencia al segundo flip flop , y por ultimo se realiza la suma, en la tercer imagen se muetra como la bandera indicdora de overflow se enciende pues nuestro rano de valores es [-8.7]. 28 29 29 30 30 Comentarios y/o discusión: La mayoría de las ideas utilizadas fueron tomadas de las notas de clase, y aunque se consultaron muchas paginas de Internet y varios libros, todos abordan el tema de diferentes formas, la mayoría utilizando otros circuitos y/o solo compuertas además de usar 2 sumadores, entre otras diferencias, la mayor aproximación encontrada fue en libro del autor Morris M. Mano. El cual da una excelente introducción teórica, quedando un poco lejos de la parte práctica, la cual recalcamos fue tomado de las notas de clase, y corregida con ayuda del profesor, el ayudante, y en varias ocasiones mediante el ensayo y error por nosotros mismos. Como se explico en la parte de teoría el sumador y el restador completo se pueden lograr mediante la utilización de compuertas lógicas, sin embargo esto no se adecuo a nuestro objeto de interés, pues resultaba mas complicado establecer un circuito para cada operación, así mismo el uso de las banderas (indicadores durante la operaciones, resulto mas fácil usando el sumador (7083) y el circuito identificado como VC01. (Véase los diagramas correspondientes), nos orillo a ejecutar lo visto en clase, con un poco mas de ingenio de lo usual. Lo importante en los resultados de las operaciones fueron las banderas, mediante ellas se puede detectar cuando un resultado esta fuera de nuestro rango de valores aceptado, además de considerar el acarreo final, y tomar en cuenta el signo (signo y valor del bit mas significativo), además de considerar el caso del cero total. Por si fuera poco el dotar de líneas de selección a nuestra ALU nos permite hacerla mas completa y poder realizar varias operaciones (transferencia, incremento, decremento, complemento, complemento + 1 entre otras) además de la clásica suma. El trabajo futuro: El trabajo futuro para nuestro punto de vista seria formar una ALU mas completa, dotarla de operaciones lógicas además de las aritméticas ya realizadas, establecer una unidad de control que nos permitiera mejorar el funcionamiento de nuestra ALU, así como el establecimiento de los registros de entrada y de estados de forma mas eficiente. 32 Conclusiones: Como parte de nuestra formación como licenciados en computación es interesante conocer, aunque sea en forma básica la construcción y operación de la famosa unidad aritmético lógica que es base de las computadoras. Ya que nos permite aterrizar conceptos los cuales solo manejamos de forma teórica. El implementar la alu con este tipo de circuitos es en verdad complicado, mas aun cuando según la literatura consultada este podria manejarse mediante compurtas logicas es decir de una manera mas sencilla en cuanto al conocimiento, sin embargo lo haria mas complicado en cuanto al numero de conexiones. Eso sin mencionar el costo economico que podria incrementarse un poco por el numero de circuitos integrados a utilizar. El “aterrizar” los conocimientos teoricos en esta practica resulta interesante y emocionante y desde nuestro punto de vista puede ser una parte inicial de un circuito mas grande (una ALU completa parte). El cual nos mpermita posteriormente una mejor comprensión del mundo oculto de las computadoras. REFERENCIAS CONSULTADAS. Bibliografías: Texto 1: Mano, M. Morris Lógica Digital y Diseño de computadoras. México, ed. Prentice-Hall, 1982. 636 pp. Internet http://es.wikipedia.org/wiki/Portada http://www.asifunciona.com/electrotecnia/ http://www.unicrom.com/ http://www.forosdeelectronica.com Datasheets: http://www.datasheetcatalog.net/es/ 32