Electrónica Básica Aritmética Binaria Electrónica Digital José Ramón Sendra Sendra Dpto. de Ingeniería Electrónica y Automática ULPGC ARITMÉTICA BINARIA Operaciones en el sistema Binario Natural Suma Binaria Resta Binaria Unidad Aritmética Lógica (ALU) Operaciones en BCD Natural Suma en BCD Resta en BCD ARITMÉTICA BINARIA Operaciones en el sistema Binario Natural Suma Binaria Sumador sin acarreo o Half Adder (HA) Sumador con acarreo o Full Adder (FA) Sumador paralelo con acarreo serie Sumador paralelo con acarreo paralelo Sumador serie Resta Binaria Representación de los números negativos Operaciones en Complemento a 1 Operaciones en Complemento a 2 Desbordamientos (Overflow) Circuito complementador 74487 Comparadores binarios en magnitud Unidad Aritmética Lógica (ALU) SUMA BINARIA Sumador sin acarreo o Half Adder Ai Bi Suma Ac. 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1 Ai 0 Bi 0 0 1 1 Ai 0 Bi 0 0 1 1 0 0 1 Suma = Ai Bi + Ai Bi 1 0 1 Ac. = Ai Bi = Ai + Bi Ai Suma Bi A B Acarreo S HA Co SUMA BINARIA Sumador con acarreo o Full Adder A 0 0 0 0 1 1 1 1 B Ci 0 0 0 1 1 0 1 1 0 0 0 1 1 0 1 1 S 0 1 1 0 1 0 0 1 Co 0 0 0 1 0 1 1 1 AB Ci 00 01 11 10 S 0 0 1 0 1 1 1 0 1 0 AB Ci 00 01 11 10 Co 0 0 0 1 0 1 0 1 1 1 S = Ci xor A xor B Co = B Ci + A Ci + A B = CiA + CiB + A B SUMA BINARIA Sumador con acarreo o Full Adder Implantación estándar: 6 puertas A B S Ci A B A Ci B Ci A B Ci CO S FA Co SUMA BINARIA Sumador con acarreo o Full Adder Implantación alternativa: 5 puertas A S HA B Co A+B AB S HA Co A + B + Ci S Ci (A + B) Ci + A B + Ci (A + B) = A B + B Ci+ A Ci Co SUMA BINARIA Sumador paralelo con acarreo serie A2 B2 A1 B1 + A0 B0 + + Cout S2 C2 S1 C1 S0 Cin SUMA BINARIA Sumador paralelo con acarreo paralelo (es más rápido) Necesitamos predecir el acarreo para cada término de la suma A2 B2 Cout + A1 B1 + S2 A0 B0 + S1 S0 Cin SUMA BINARIA Sumador paralelo con acarreo paralelo Se trata de predecir el acarreo para cada término de la suma C0 = Cin C1 = A0 B0 + C0 (A0+B0) = G0 + C0 P0 C2 = A1 B1 + C1 (A1+B1) = G1 + [G0 + C0 P0] P1 = G1 + G0 P1 + C0 P0 P1 C3 = ... = G2 + G1 P2 + G0 P1 P2 + C0 P0 P1 P2 Las variables son las entradas al sumador y el acarreo de la primera etapa SUMA BINARIA Sumador paralelo con acarreo paralelo A2 B2 G2 G2 G1 P2 G0P1 P2 P2 C0P0 P1P2 A0 B0 A1 B1 G1 G0 P1 G1 G0 P1 A2 B2 El circuito es más complejo pero es más rápido P0 C0 P0 P1 G0 C0 P0 A1 B1 A0 B0 Cout + + + S2 S1 S0 C0=Cin SUMA BINARIA Sumador serie A + B Ci S Co CLK Célula de memoria SUMA BINARIA Sumadores comerciales 7480 → sumador completo de 1 bit 7482 → sumador completo de 2 bit 7483 → sumador completo de 4 bit 74182 → generador de acarreo previo RESTA BINARIA En principio se pueden diseñar circuitos restadores de la misma forma a como lo hicimos con los sumadores Sin embargo lo que se suele hacer es usar los mismos circuitos sumadores para hacer las restas Para ello tenemos que ver primero como se representan los números binarios negativos RESTA BINARIA Representación de números negativos Representación de números positivos es similar en la mayoría de los sistemas Mayores diferencias surgen en la representación de los valores negativos Dos esquemas fundamentales: Complemento a uno Complemento a dos Especificaciones iniciales: Trabajaremos con palabras de cuatro bits Podemos representar 16 valores distintos Aproximadamente la mitad serán positivos y la mitad negativos RESTA BINARIA Complemento a uno DEF: Si N es un número positivo, N es su negativo de tal forma que: n Ca1 (N) = N = (2 - 1) - N Ej: Ca1 (7) 2 4 1 = 10000 = - 00001 1111 7 = - 0111 1000 = -7 TRUCO: Cambiamos cada bit por su complementario Ej: Ca1 (7) 0111 -> 1000 RESTA BINARIA Complemento a uno -0 -1 -2 1111 1110 +0 0000 0001 1101 +1 0010 +2 + -3 1100 0011 +3 0 100 = + 4 -4 1011 0100 +4 1 011 = - 4 -5 1010 0101 1001 -6 0110 1000 -7 0111 +5 +6 +7 Hay dos representaciones del cero (malo) - RESTA BINARIA Complemento a dos DEF: Si N es un número positivo: n Ca2 (N) = 2 - N = Ca1 (N) + 1 Ej: Ca2 (7) Ej: Ca2 (7) 2 = 10000 4 2 = 10000 -7 = - 0111 -(-7) = -1001 4 1001 = repr. de -7 0111 = repr. de 7 RESTA BINARIA Complemento a dos TRUCO1: Complementamos cada bit y al resultado le sumamos 1, es decir, le sumamos 1 al Ca1 del número 0111 -> 1000 + 1 -> 1001 (representación de -7) 1001 -> 0110 + 1 -> 0111 (representación de 7) TRUCO2: Ir de izquierda a derecha, respetar el primer 1 que nos encontremos y complementar el resto de bits 0111 -> 1001 (representación de -7) 1001 -> 0111 (representación de 7) RESTA BINARIA Complemento a dos -1 -2 -3 1111 1110 +0 0000 0001 1101 +1 0010 +2 + -4 1100 0011 +3 0 100 = + 4 -5 1011 0100 +4 1 100 = - 4 -6 1010 0101 1001 -7 0110 1000 -8 0111 +5 +6 +7 Hay una única representación para el cero (bueno) Hay un número negativo más Es menos intuitivo el obtener el negativo de un número - RESTA BINARIA Suma y resta de números en complemento a uno 4 00100 -4 11011 +3 00011 + (-3) 11100 7 00111 -7 110111 1 Se suma el bit de acarreo 11000 4 00100 -4 11011 -3 11100 +3 00011 1 100000 -1 11110 1 00001 Ca1 del resultado RESTA BINARIA Suma y resta de números en complemento a dos 4 00100 -4 11100 +3 00011 + (-3) 11101 7 00111 -7 111001 Se desprecia el bit de acarreo 4 00100 -4 11100 -3 11101 +3 00011 1 100001 -1 11111 Ca2 del resultado La simplicidad de las operaciones aritméticas en la notación de complemento a dos hace que esta notación sea la más utilizada en sistemas digitales RESTA BINARIA Sumador/Restador en complemento a dos B3 B2 B1 B0 A3 A2 A1 A0 Co COMPL. SUMADOR S3 S2 S1 S0 Ci M 0 = SUMA 1 = RESTA RESTA BINARIA Sumador/Restador en complemento a uno B3 B2 B1 B0 A3 A2 A1 A0 Co COMPL. SUMADOR S3 S2 S1 S0 M Ci 0 = SUMA 1 = RESTA RESTA BINARIA Circuito complementador COMPL. RESTA BINARIA Ejemplo de circuito complementador: 74487 B0 B1 B2 B3 L M B0 B1 B2 B3 → L=0, M=0 → B0 B1 B2 B3 B0 B1 B2 B3 → L=0, M=1 → B0 B1 B2 B3 B0 B1 B2 B3 → L=1, M=0 → 1 1 1 1 B0 B1 B2 B3 → L=1, M=1 → 0 0 0 0 Y0 Y1 Y2 Y3 DESBORDAMIENTO (OVERFLOW) Si estamos trabajando con n bits (1 bit de signo y n-1 bits de magnitud) los resultados de las operaciones no deben superar el siguiente rango: -2n-1 ≤ resultado < 2n-1 -1 Por ejemplo, si trabajamos con n = 4 bits -24-1 ≤ resultado < 24-1 -1 -8 ≤ resultado < 7 Si nos saliese un número mayor que 7 o menor que -8 es que se ha producido un desbordamiento y el resultado no será correcto. DESBORDAMIENTO (OVERFLOW) Condición de desbordamiento Sumar dos números positivos y obtener uno negativo o viceversa -1 -2 1101 -4 -5 1111 1110 -3 -1 +0 0001 0010 1100 0100 1010 0101 1001 -7 1000 -8 0110 0111 +3 +4 +5 +6 +7 5 + 3 = -8 ??? 1101 -4 -5 1111 1110 -3 +2 0011 1011 -6 -2 +1 0000 +0 +1 0000 0001 0010 1100 1011 1010 -6 0011 +3 0100 +4 0101 1001 -7 +2 1000 -8 -7 - 2 = +7 ??? 0110 0111 +7 +6 +5 COMPARADORES BINARIOS DE MAGNITUD COMPARADORES BINARIOS DE MAGNITUD COMPARADOR 7485 UNIDAD ARITMÉTICO-LÓGICA (ALU) ALU 74181 SUMA EN BCD Representación de números en formato BCD Los dígitos decimales del 0 al 9 se representan como 0000 a 1001 en binario Suma: 5 = 0101 5 = 0101 3 = 0011 8 = 1000 1000 = 8 1101 = 13 Los problemas surgen cuando el resultado es mayor que nueve Solución: sumar 6 (0110) si el resultado es mayor que 9 5 = 0101 9 = 1001 8 = 1000 7 = 0111 1101 = 13 en binario 6 = 0110 1 0011 = 1 3 en BCD 1 0000 = 16 en binario 6 = 0110 1 0110 = 1 6 en BCD SUMA EN BCD Bloque sumador BCD A3 A2 A1 A0 Co B3 B2 B1 B0 SUMADOR BCD S3 S2 S1 S0 Ci RESTA EN BCD Igual que con la resta binaria, la resta en BCD se hará sumando una cantidad negativa a otra positiva Para ello tenemos que ver primero como se representan los números BCD negativos RESTA EN BCD Complemento a diez DEF: Si N es un número positivo, N es su negativo de tal forma que: n Ca10 (N) = N = 10 - N Ej: Ca10 (3291) = 104-3291 = 10000-3291 = 6709 = 0110 0111 0000 1001 Complemento a nueve DEF: Si N es un número positivo, N es su negativo de tal forma que: n Ca9 (N) = N = 10 - 1-N Ej: Ca9 (3291) = 104-1-3291 = 6708 = 0110 0111 0000 1000 RESTA EN BCD Resta de números en complemento a diez Ej: 5239 - 3291 = 5239 - Ca10 (3291) Se desprecia el bit de acarreo 1 0 1 0101 0010 0011 1001 1 0110 0111 0000 1001 10 1011 1001 0100 10010 positivo 110 110 10001 11000 0001 1001 0100 1000 = 1948 OK RESTA EN BCD Resta de números en complemento a diez Ej: 3291 - 5239 = 3291 - Ca10 (5239) 1 0 0011 1 0010 1001 0001 1 0100 0111 0110 0001 1 1000 1010 1111 0010 110 110 10000 10101 1 negativo 1000 0000 0101 Ca10 del resultado 0010 = -1948 OK RESTA EN BCD Resta de números en complemento a nueve Ej: 5239 - 3291 = 5239 - Ca9 (3291) No se desprecia el bit de acarreo positivo 1 0 1 0101 0010 0011 1001 1 0110 0111 0000 1000 10 1011 1001 0100 10001 10 110 110 10001 10111 0001 1001 0100 0111 +1 0 0001 1001 0100 1000 = 1948 OK RESTA EN BCD Resta de números en complemento a nueve Ej: 3291 - 5239 = 3291 - Ca9 (5239) 1 0 0011 1 0010 1001 0001 1 0100 0111 0110 0000 1 1000 1010 1111 0001 110 110 10000 10101 1 1000 negativo 0000 0101 Ca9 del resultado 0001 = -1948 OK RESTA EN BCD Resta BCD de 2 dígitos en complemento a nueve B3 B2 B1 B0 B7 B6 B5 B4 A7 A6 A5 A4 Co C9 SUMADOR S7 S6 S5 S4 A3 A2 A1 A0 Ci Co C9 SUMADOR S3 S2 S1 S0 Ci RESTA BCD Circuito complementador a nueve C9