CIRCUITOS ARITMÉTICOS Tema 5: CIRCUITOS ARITMÉTICOS Contenido: * Aritmética binaria. * Circuito semisumador. Sumador completo. * Operaciones con “n” bits. Sumador paralelo con arrastre serie. * Circuito sumador-restador. * Sumador BCD. * Unidad aritmético lógica (ALU). Bibliografía básica FC * * * * * M. Morris Mano y Charles R. Kime: Cap 5 V. P. Nelson et al: Cap 4.6/8 C.H. Roth: Caps 4, 18 J. Wakerly: Cap 5.10 C. Baena et al: Cap 6 Dpto. Tecnología Electrónica, U. Sevilla. Fundamentos de Computadores Circuitos Aritméticos 1 CIRCUITOS ARITMÉTICOS GENERALIDADES SOBRE ARITMÉTICA DIGITAL Los principales rasgos distintivos de la Aritmética digital frente a la Aritmética de papel y lápiz son: La base del sistema de numeración es B = 2 (binaria). Aunque no siempre, también la aritmética a utilizar es la binaria. La forma de representar números con signo normalmente no es con signo-magnitud, sino a través de los complementos (a 2 o a 1). El número de bits de los datos está acotado, lo que introduce errores de desbordamiento, de precisión y de cumplimiento de propiedades algebraicas (las operaciones se vuelven no-cerradas y pueden incumplirse las propiedades asociativas y distributiva). FC Los circuitos aritméticos son muy importantes ya que forman la base del procesado de datos. Así que se le requieren grandes prestaciones (alta velocidad). Dpto. Tecnología Electrónica, U. Sevilla. Fundamentos de Computadores Circuitos Aritméticos 2 CIRCUITOS ARITMÉTICOS ARITMÉTICA BINARIA: suma de magnitudes Semisumador En aritmética binaria la suma de dos bits, ai + bi, es: ai + bi = (Ci+1 Si)(2 siendo Ci+1 el acarreo y Si la suma. El circuito que suma dos bits es el Half Adder (HA) o semisumador ai bi 0 1 0 1 0 0 1 1 Ci+1 Si 0 0 0 1 0 1 1 0 Si ai bi FC HA Ci+1 Ci+1 = ai · bi Si = ai ⊕ bi Dpto. Tecnología Electrónica, U. Sevilla. Fundamentos de Computadores ai bi & ai bi =1 Ci+1 Si Circuitos Aritméticos 3 CIRCUITOS ARITMÉTICOS Sumador Completo Salvo en la columna LSB (Least Significative Bit), al sumar 2 datos binarios hay que sumar 3 bits: uno de cada sumando y el acarreado desde la columna anterior. Esta suma es: ai + bi + Ci = (Ci+1 Si)(2 El circuito correspondiente es el Full Adder (FA) o sumador completo ai bi Ci FC 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 Ci+1 Si 0 0 0 1 0 1 1 1 Dpto. Tecnología Electrónica, U. Sevilla. 0 1 1 0 1 0 0 1 ai bi Si FA Ci Ci+1 Ci+1 = ai · bi + ai · Ci + bi · Ci Si = ai ⊕ bi ⊕ Ci Fundamentos de Computadores Circuitos Aritméticos 4 CIRCUITOS ARITMÉTICOS REALIZACIONES DE SUMADOR COMPLETO ai bi Si HA Ci+1 Si HA Ci+1 Si Ci FC >1 ai bi =1 ai bi & ai Ci & bi Ci & =1 Ci Dpto. Tecnología Electrónica, U. Sevilla. Ci+1 Ci Si & Ci+1 Fundamentos de Computadores Ci Si Ci 0 1 2 310 0 Ci Ci 1 0 1 2 3 10 Ci+1 ai bi Circuitos Aritméticos 5 CIRCUITOS ARITMÉTICOS SUMA DE MAGNITUDES DE ‘n’ BITS Prácticamente siempre se suman 2 números (A + B), siendo muy raro sumar tres (A + B + C) o más. La suma de números naturales y en punto fijo es idéntica. En la columna menos significativa no hay acarreo (CLSB = 0); en los circuitos sumadores a ese acarreo se le denomina de entrada, Cin. FC Tras acabar los ‘n’ bits de los números se origina un acarreo de salida (Cout). Dpto. Tecnología Electrónica, U. Sevilla. Fundamentos de Computadores Circuitos Aritméticos 6 CIRCUITOS ARITMÉTICOS El acarreo de salida sirve como testigo de si ha habido desbordamiento en la suma: * Si Cout = 0, el resultado está bien: Sn-1 - S0 = A + B * Si Cout = 1, el resultado está mal: Sn-1 - S0 ≠ A + B. Cout Cn-1 . . . C2 C1 C0 = Cin Acarreos Ci An-1 . . . A2 A1 A0 A + B Bn-1 . . . B2 B1 B0 0 0 1 1 (0) 1 0 0 1 + 0 0 1 1 OK! Sn-1 . . . S2 S1 S0 Acarreos Ci A B 1 1 0 0 En caso de desbordamiento, el resultado correcto está en el número de n+1 bits: CoutSn-1 - S0 = A + B FC 1 0 1 1 (0) 1 0 0 1 A + 1 0 1 1 B A+B≠ Dpto. Tecnología Electrónica, U. Sevilla. A+B=10100 0 1 0 0 Fundamentos de Computadores Circuitos Aritméticos 7 CIRCUITOS ARITMÉTICOS SUMADORES DE 2 MAGNITUDES DE “n” BITS El de menor hardware es el SUMADOR SERIE t . . . 1, 0, 0, 1 . . . 0, 1, 1, (0) . . . 0 1 1 (0) Acarreos Ci ... 1 0 0 1 A + B ...0 0 1 1 . . . 0, 0, 1, 1 ai bi Ci FA ... 1 1 0 0 Ci+1 Si . . . 0, 1, 1 (EM: Elemento de Memoria) in EM out . . . 1, 1, 0, 0 FC ... pero es muy lento: n ciclos de reloj aproximadamente Dpto. Tecnología Electrónica, U. Sevilla. Fundamentos de Computadores Circuitos Aritméticos 8 CIRCUITOS ARITMÉTICOS SUMADOR PARALELO CON ACARREO SERIE Es el más intuitivo, tiene un coste razonablemente bajo y es mucho más rápido que el sumador serie B Cout an-1 bn-1 Cn-1 FA FC Cout = Cn Sn-1 Dpto. Tecnología Electrónica, U. Sevilla. .... A Cin S a2 b2 C2 a1 b1 C1 FA FA FA C3 S2 C2 S1 C1 S0 Fundamentos de Computadores a0 b0 C0 = Cin Circuitos Aritméticos 9 CIRCUITOS ARITMÉTICOS ... pero,aunque mucho más rápido que el sumador serie, también es lento debido a la propagación serie del acarreo an-1 bn-1 Cn-1 FA .... Cout = CnSn-1 a2 b2 C2 a1 b1 C1 FA FA FA C3 S2 C2 S1 C1 S0 a0 b0 C0 = Cin tsuma = tpropCn-1 + tSn-1 = (n-1) · tpropCi + tSi El tiempo que tarda en realizarse una suma crece linealmente con el número de bits. FC (El valor concreto depende de la realización del FA, ver “Realizaciones de Sumador Completo” en pág. 5) Dpto. Tecnología Electrónica, U. Sevilla. Fundamentos de Computadores Circuitos Aritméticos 10 CIRCUITOS ARITMÉTICOS SUMADOR PARALELO CON ACARREO ANTICIPADO El Sumador Paralelo con Acarreo Anticipado (Look Ahead Carry, LAC) es muy rápido porque evita la propagación del acarreo. No se basa en las ecuaciones directas para Ci+1 y Si, sino en dos funciones llamadas de generación (Gi) y de propagación de acarreo (Pi). Para cada bit ‘i’ (i = 0, 1, 2, ...): * Gi indica si en esa columna se genera un acarreo, por ser ai + bi = 1 + 1 (aibi = 11) * Pi indica si en esa columna se propaga el acarreo que le llegue; cuando ai + bi = 1 (aibi = 10 o 01), se cumple que Ci+1 = Ci FC Dpto. Tecnología Electrónica, U. Sevilla. Fundamentos de Computadores Circuitos Aritméticos 11 CIRCUITOS ARITMÉTICOS De esta forma, las ecuaciones del sumador son: Gi = ai ⋅ bi Pi = ai ⊕ bi Si = Pi ⊕ Ci Ci + 1 = Gi + Pi ⋅ Ci C1 = G0 + P0 ⋅ C0 C2 = G1 + P1 ⋅ C1 = G1 + P1 ⋅ G0 + P1 ⋅ P0 ⋅ C0 C3 = G2 + P2 ⋅ C2 = G2 + P2 ⋅ G1 + P2 ⋅ P1 ⋅ G0 + P2 ⋅ P1 ⋅ P0 ⋅ C0 C4 = G3 + P3 ⋅ C3 = G3 + P3 ⋅ G2 + P3 ⋅ P2 ⋅ G1 + P3 ⋅ P2 ⋅ P1 ⋅ G0 + P3 ⋅ P2 ⋅ P1 ⋅ P0 ⋅ C0 FC Así, todos los Ci+1 se obtienen simultáneamente en dos niveles de puertas. El tiempo de la suma se hace independiente del número de bits: tsuma = tpropCi + tSi = (max(tGi, tPi) + tCi) + tXOR = (tXOR + tAND +tOR) + tXOR Dpto. Tecnología Electrónica, U. Sevilla. Fundamentos de Computadores Circuitos Aritméticos 12 CIRCUITOS ARITMÉTICOS Si Pi Gi ai bi Ci ai bi ·· =1 · =1 Ci & Sumador paralelo de 4 bits con acarreo adelantado C0 a0 b0 S0 P0 G0 Pi C1 Si a1 b1 S1 P1 G1 C0 P0 >1 C1 >1 C2 G0 Gi C0 P1 P0 & P1 G0 & G1 C2 a2 b2 C3 a3 b3 FC & S2 P2 G2 S3 P3 C0 P2 P1 P0 & P2 P1 G0 & P2 G1 & >1 C3 G2 G3 & P3 >1 Cout G3 Dpto. Tecnología Electrónica, U. Sevilla. Fundamentos de Computadores Circuitos Aritméticos 13 CIRCUITOS ARITMÉTICOS GENERALIZACIÓN Problema del sumador anterior: las puertas que se necesitan crecen tanto en fan-in y en fan-out que se vuelven ineficientes. Por ello los sumadores con LAC se hacen para pocos bits, creciéndose a partir de ellos; p. ej., para 4 bits ... La idea del acarreo anticipado se generaliza desde el concepto de bit (Gi y Pi) al de generación y propagación por grupos de bits, p. ej. G(3-0) y P(3-0): G ( 3 – 0 ) = G3 + P3 ⋅ G2 + P3 ⋅ P2 ⋅ G1 + P3 ⋅ P2 ⋅ P1 ⋅ G0 P ( 3 – 0 ) = P3 ⋅ P2 ⋅ P1 ⋅ P0 FC C4 = G ( 3 – 0 ) + P ( 3 – 0 ) ⋅ C0 C4 se obtiene en dos niveles a partir de las nuevas G(3-0) y P(3-0) y el acarreo de entrada C0. Las nuevas funciones G(3-0) y P(3-0) se realizan en dos niveles en el sumador. Un circuito LAC, que es una generalización del anterior circuito en dos niveles a nivel de bit, proporciona los acarreos de salida de grupo. Los sumadores con acarreo anticipado se asocian con acarreo serie de uno al siguiente o usando un circuito LAC Dpto. Tecnología Electrónica, U. Sevilla. Fundamentos de Computadores Circuitos Aritméticos 14 CIRCUITOS ARITMÉTICOS Sumador de 16 bits con acarreo serie entre cada sumador de 4 bits b15-12 a15-12 b11-8 4 4 4 C16 sumador de 4 bits C12 con arrastre anticipado C16 a15-12 b11-8 4 4 4 sumador de 4 bits C12 con arrastre anticipado S15-12 P(15-12) FC a11-8 b7-4 4 sumador de 4 bits 4 C8 con arrastre anticipado S11-8 G(15-12) P(11-8) a7-4 4 C4 con arrastre anticipado a7-4 4 C8 S11-8 P(11-8) G(11-8) sumador de 4 bits P(7-4) 4 sumador de 4 bits b3-0 a3-0 4 4 4 sumador de 4 bits C4 sumador de 4 bits con arrastre anticipado con arrastre anticipado S7-4 S3-0 b3-0 a3-0 4 4 sumador de 4 bits P(7-4) G(7-4) C0=0 P(3-0) G(3-0) Sumador de 16 bits con LAC C0=0 con arrastre anticipado S3-0 S7-4 G(11-8) b7-4 con arrastre anticipado S15-12 P(15-12) G(15-12) b15-12 a11-8 G(7-4) P(3-0) G(3-0) Unidad de arrastre anticipado (LAC) Dpto. Tecnología Electrónica, U. Sevilla. Fundamentos de Computadores Circuitos Aritméticos 15 CIRCUITOS ARITMÉTICOS ARITMÉTICA BINARIA para suma de números con signo Con papel y lápiz se representan en signo-magnitud y operamos con ellos. +7 0 111 -5 1 101 En binario pueden representarse así, pero las operaciones no resultan eficientes. Los números con signo también se representan en notaciones basadas en complementos, que en binario dan operaciones eficientes. En ellas los números: positivos se representan por 0 M(2 negativos: Complemento a 1: el negativo es el complemento a 1 (NOT) del positivo +7 FC 0 111 -5 NOT (0 101) = 1 010 Complemento a 2: el negativo es el complemento a 2 del positivo +7 0 111 Dpto. Tecnología Electrónica, U. Sevilla. -5 Fundamentos de Computadores Ca2 (0 101) = 1 011 Circuitos Aritméticos 16 CIRCUITOS ARITMÉTICOS SUMA EN COMPLEMENTO A 2 La suma de dos números representados en complemento a 2 es MUY EFICIENTE ya que se realiza con un sumador de magnitudes, como si los números fueran sin signo, sin considerar el acarreo de salida. 1001 Cout 0 Cout 0101 A B Cin + S 1110 0 0 0 1001 0101 Cin 1110 Sin signo: A= 9 B= 5 FC S = 14 Dpto. Tecnología Electrónica, U. Sevilla. Fundamentos de Computadores C a 2: A = - (0111) = -7 B=5 S = - (0010) = - 2 Circuitos Aritméticos 17 CIRCUITOS ARITMÉTICOS RESTA La resta de magnitudes sigue un proceso análogo al de la suma: El semirestador resta de un bit minuendo (ai) menos otro bit sustraendo (bi), generando a la columna siguiente la petición de una unidad (Bwi+1 ) si ai =0 y bi =1 ai - bi = (Bwi+1 Ri)(2 ai 0 0 1 1 bi 0 1 0 1 Bwi+1 Ri 0 0 1 1 0 1 0 0 Bwi+1 = ai · bi Ri = ai ⊕ bi El restador completo resta, además, la petición generada a esa columna, Bwi: (ai - Bwi) - bi = (Bwi+1 Ri)(2 aunque en la práctica esto se hace añadiendo 1 (Bwi) al sustraendo (me llevo 1) (ai - Bwi) - bi = ai - (bi + Bwi) = (Bwi+1 Ri)(2 FC Ahora se obtienen las ecuaciones y circuitos similares a los del FA (ver “Sumador Completo” en pág. 4) Dpto. Tecnología Electrónica, U. Sevilla. Fundamentos de Computadores Circuitos Aritméticos 18 CIRCUITOS ARITMÉTICOS La resta de magnitudes de n bits es una extensión del caso de la suma. La resta de magnitudes de n bits no tiene problemas de desbordamiento pues el resultado siempre es menor que los datos. Pero si el minuendo es menor que el sustraendo, el resultado es un número negativo (no es una magnitud): la resta de magnitudes no es una operación cerrada y en ese caso se necesita una notación de números con signo. El Bwout actúa como testigo de la resta: Si Bwout = 0, el resultado es correcto FC Si Bwout = 1, el resultado correcto está formado por BwoutRn-1 . . . R0 interpretado como número con signo bajo la notación basada en complemento a 2. Dpto. Tecnología Electrónica, U. Sevilla. Fundamentos de Computadores 0 1 1 0(0) 1001 9-7=2 OK- 0 1 1 1 0010 Bw 1 0 0 0(0) 0111 - 1001 1110 Bw 7-9=-2 Ca2(1 1110) = - 2 Circuitos Aritméticos 19 CIRCUITOS ARITMÉTICOS La resta de números con signo se reduce a sumas (en todos los casos) En general, A - B = A + (-B) Sumador/Restador en C a 2: A, B A 0 (s) s/r FC Complementador C de n bits 1 (r) B -B S=A+B Dpto. Tecnología Electrónica, U. Sevilla. B Y Cout Sumador paralelo de n bits Cin s/r S Fundamentos de Computadores Circuitos Aritméticos 20 CIRCUITOS ARITMÉTICOS El circuito complementador es simplemente una colección de XOR: Bn-1 B C Y= 0 B 1 B Complementador C de n bits Bn-2 B0 =1 ... =1 C =1 Y Yn-1 Yn-2 Y0 Como A y B son números con signo, se añade un bit de salida V (oVerflow) para que el desbordamiento sea observable: V=0 S=A+B Vout = 1 S≠A+B donde FC V = (s/r) · (An-1 · Bn-1· Sn-1 + An-1 Bn-1 Sn-1) + (s/r)’ · (An-1 · Bn-1· Sn-1 + An-1 Bn-1 Sn-1) o, simplemente, V = Cout ⊕ Cn-1 Dpto. Tecnología Electrónica, U. Sevilla. Fundamentos de Computadores Circuitos Aritméticos 21 CIRCUITOS ARITMÉTICOS Así, el sumador/restador queda como: an-1 bn-1 Cn = Cout Cout V B s/r A FA FA Cn-2 ... Bit de Signo (en su caso) +/- Sn-1 S Cn-1 an-2 bn-2 =1 Sn-2 V = Cout ⊕ Cn-1 V Siendo A y B datos representables, se produce desbordamiento cuando el valor de A + B no cabe en S: FC 1) Si son magnitudes, vale la suma (s/r = 0) y se ve Cout 2) Si son números con signo en Ca2, vale la suma y la resta y se ve V 3) Si hay desbordamiento, el valor correcto está en los (n+1) bits: Cout Sn-1 . . . S0 Dpto. Tecnología Electrónica, U. Sevilla. Fundamentos de Computadores Circuitos Aritméticos 22 CIRCUITOS ARITMÉTICOS Sumador BCD OBJETIVO: Realizar la suma en aritmética decimal pero usando bits Ejemplo 1 Decimal 50 43 93 BCD 0101 0000 0100 0011 1001 0011 93 en código BCD Sumador de “p” dígitos Kp Kp-1 ... K1 0 Mp-1 ... M1 M0 Np-1 ... N1 N0 FC Σp-1 ... Σ1 Σ0 Dpto. Tecnología Electrónica, U. Sevilla. Sumar BCD Ejemplo 2 1 acarreo decimal 1 59 0101 1001 0011 0100 34 93 1001 0011 93 en código BCD Etapa “i” completa (~ FA) Mi + Ni + Ki = (Ki+1Σi) Mi Ni 3 2 1 0 Ki+1 3 2 1 0 Ki 3 2 1 0 Σi Fundamentos de Computadores Circuitos Aritméticos 23 CIRCUITOS ARITMÉTICOS Diseño etapa “i” completa BCD Ni3-0 Mi3-0 Suma decimal Mi + N i + K i 0 1 ... 8 9 10 11 ... 15 16 ... 19 suma binaria Cout S3 S2 S1 0 0 0 0 0 0 0 0 1 1 1 1 0 1 1 0 1 0 0 0 ... 0 0 0 0 ... 1 0 ... 0 0 0 suma BCD 4 S0 Kout Σ3 Σ2 Σ1 Σ0 0 1 0 0 0 0 0 0 ... 0 0 0 0 ... 1 1 ... 0 0 0 0 1 0 0 1 1 0 1 0 1 0 0 1 1 1 1 0 0 1 0 1 0 1 1 0 0 1 1 1 1 Cout 4 sum. binario de 4 bits Kin S3 0 0 0 0 0 1 0 1 0 1 1 0 0 1 S2 & S3-0 S1 & >1 4 0 0 sum. binario de 4 bits Kout Cin = 0 4 Σi3-0 FC Dpto. Tecnología Electrónica, U. Sevilla. Fundamentos de Computadores Circuitos Aritméticos 24 CIRCUITOS ARITMÉTICOS ALU (Arithmetic-Logic Unit): La Unidad Aritmético-Lógica Es el circuito donde se realiza el procesado de datos Procesado: operaciones aritméticas y lógicas. Normalmente como máximo se opera sobre dos datos Usualmente pueden realizar diversas operaciones. Para escogerlas se incluyen unas señales de selección Además de las salidas que muestran el resultado de la operación, se incluyen otras salidas (flags) de estado o de condición. Típicamente son Cout, V, Z (Z=1 si el resultado es 0) y S (signo) A = an-1 ...a0 B = bn-1 ...b0 n Señales de selección: Sk-1 ...S0 Cin n k m ALU salidas de estado n FC F = fn-1 ...f0 Dpto. Tecnología Electrónica, U. Sevilla. Fundamentos de Computadores Circuitos Aritméticos 25 CIRCUITOS ARITMÉTICOS Un ejemplo es: S2 S1 S0 Cin ALU [n] A Cout V Z S Cout: Acarreo de salida V: Overflow (desbordamiento); V = Cn ⊕ Cn-1 Z: Zero (Z=1 sii F=0); Z = NOR (Fo,F1, ...) S: Sign; S = Fn-1 F B S2 S1 S0 Función ALU Cin = 0 FC 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 F=A F = A+ B F=A-B-1 F=A-1 Cin = 1 Transfiere F=A+1 Suma F=A+B+1 Resta y decrementa F = A - B Decrementa F=A F = A ∪ B ≡ A ∨ B: OR Incrementa Suma con acarreo Resta Transfiere F = A ⊕ B: XOR F = A & B ≡ A ∩ B ≡ A ^ B: AND F = A: NOT Dpto. Tecnología Electrónica, U. Sevilla. Fundamentos de Computadores Circuitos Aritméticos 26 CIRCUITOS ARITMÉTICOS REALIZACIÓN DE ALU Se separan las partes Aritmética y Lógica. Cada una de ellas n-plica la etapa de un bit. Ai Ci Bi AUi LUi Ci+1 S1 S0 FLUi FAUi 1 0 S2 FC Fi Dpto. Tecnología Electrónica, U. Sevilla. Fundamentos de Computadores Circuitos Aritméticos 27 CIRCUITOS ARITMÉTICOS Diseño de la Unidad Lógica Son “n” etapas i=0, 1, 2, ..., n-1 S2 S1 S0 Función ALU 0 0 OR 1 0 1 XOR 1 0 AND 1 1 NOT (A) Ai Bi Ai Bi Ai Bi >1 Ai 1 =1 & 0 1 FLUi 2 31 0 S1 S0 FC Dpto. Tecnología Electrónica, U. Sevilla. Fundamentos de Computadores Circuitos Aritméticos 28 CIRCUITOS ARITMÉTICOS Diseño de la Unidad Aritmética 0 A Cout Sumador paralelo Cin = 0 Cout F=A A S1 0 0 1 1 S0 0 1 0 1 Función ALU Cin = 1 Cin = 0 F=A F = A+ B F=A-B-1 F=A-1 Cout F=A+1 F=A+B+1 F=A-B F=A Cout B Sumador paralelo Cin = 0 Cout Cin = 1 Sumador paralelo F = A+B+1 A A B Sumador paralelo Cin = 0 Cout Sumador paralelo Fundamentos de Computadores B Sumador paralelo Cin = 1 F = A+B+1 Todo 1s F = A-1 Dpto. Tecnología Electrónica, U. Sevilla. Cin = 1 B A F = A+B A FC Sumador paralelo F = A+1 F = A+B Cout 0 A A Cin = 0 Cout Todo 1s Sumador paralelo Cin = 1 F=A Circuitos Aritméticos 29 CIRCUITOS ARITMÉTICOS Realización de U.A. con: 1) Sumador paralelo y 2) FA S1 S0 Entradas al Sumador paralelo INA = INB = 0 0 0 (F: False) 0 1 1 0 B 1 1 1...1 (T: True) A B B F-B-B-T FC Cout Sumador paralelo 0 1 Bi S0 Ci + 1 Cin FA Ci Fi F Dpto. Tecnología Electrónica, U. Sevilla. S0 Ai S1 A S1 Fundamentos de Computadores Circuitos Aritméticos 30 CIRCUITOS ARITMÉTICOS Interpretación del valor de Cout S1S0Cin F Cout 000 A 0 , siempre 001 A+1 1 sii A = 11 ... 1 (MA = 2n-1) 010 A+B 1 sii MA + MB > 2n 011 A+B+1 1 sii MA + MB > 2n - 1 100 A-B-1 1 sii MA > MB 101 A-B 1 sii MA > MB 110 A-1 1 sii MA ≠ 0 111 A 1 siempre MA representa el valor del dato A tomado como magnitud (lo mismo para MB respecto a B) FC Dpto. Tecnología Electrónica, U. Sevilla. Fundamentos de Computadores Circuitos Aritméticos 31 CIRCUITOS ARITMÉTICOS Un ejemplo de ALU comercial: tipo CI 74382 S0 S1 S2 5 6 7 Cout 13 OVR 3 1 19 17 74382 15 Cin A0 A1 A2 A3 B0 B1 B2 B3 4 2 18 16 2 1 0 FC 14 A3:0 8 9 11 12 B3:0 74382 F0 F1 F2 F3 V S S S 2 1 0 0 0 0 F = 0000 F = 0000 0 0 1 F=B-A-1 F=B-A 0 1 0 F=A-B-1 F=A-B 0 1 1 F=A+B F=A+B+1 1 0 0 F = A ⊕ B [XOR] 1 0 1 F=A∨B 1 1 0 F = A ∧ B [AND] 1 1 1 F = 1111 Cin = 0 Cin = 1 [OR] Cin F3:0 Cout Dpto. Tecnología Electrónica, U. Sevilla. Fundamentos de Computadores Circuitos Aritméticos 32 CIRCUITOS ARITMÉTICOS Aplicación de 74382 como Sumador de magnitudes de 8 bits: S = P + Q P7:0 Q7:0 P3:0 S2S1S0 = 0 1 1 F = A + B + Cin 0 1 1 C0 = 0 2 1 0 Q3:0 A3:0 B3:0 74382 V Cin F3:0 Cout S3:0 Q7:4 P7:4 0 1 1 2 1 0 A3:0 B3:0 74382 V Cin F3:0 Cout V Cout S7:4 S7:0 • Ejercicio 1: Interpretar qué ocurre si P = $34 y Q = $BC • Ejercicio 2: Interpretar qué ocurre si P = $69 y Q = $BC • Ejercicio 3: Indique cómo hay que sumar P y Q si ambos con números con signo en Ca2 FC • Ejercicio 4: Interpretar los casos 1 y 2 si P y Q son números con signo en Ca2 • Ejercicio 5: Basado en lo anterior, indique cómo usar el circuito de la figura Dpto. Tecnología Electrónica, U. Sevilla. Fundamentos de Computadores Circuitos Aritméticos 33 CIRCUITOS ARITMÉTICOS Aplicaciones de la ALU diseñada Comparador de magnitudes, M y N ☺ Método: Comparamos restando ambos datos. Problema: La ALU diseñada no resta magnitudes sino que, al restar A - B, lo que hace es MA + 2n - MB. Por tanto, hacer M - N el resultado será: cero si son iguales; si M > N, dará Cout = 1; y si M < N, dará Cout = 0 S2S1S0 = 010 y Cin = 1 0 1 0 1 M FC N S2 S1 S0 Cin A B Dpto. Tecnología Electrónica, U. Sevilla. Cout V Z S ALU [n] F=A-B Cout Z F Fundamentos de Computadores Z Cout M N 1 - = 0 1 > 0 0 < Circuitos Aritméticos 34 CIRCUITOS ARITMÉTICOS Aplicaciones de la ALU diseñada Comparador de números con signo, M y N ☺ Método: Comparamos restando ambos datos. Como la ALU diseñada resta números con signo en Ca2, si no hay overflow, la resta dará 0 si M = N, dará positivo si M > N y dará negativo si M < N. Problema si hay overflow. En este caso y si M ≠ N, ocurre al revés. S2S1S0 = 010 y Cin = 1 0 1 0 1 M N S2 S1 S0 Cin A Cout V Z S ALU [n] F=A-B B En función del resultado Z V S M N V Z S 1 0 F 0 1 FC Dpto. Tecnología Electrónica, U. Sevilla. En función de los datos M N ZVS - = 0 > > 000 011 1 < = 1-- 0 < 1 > < 001 010 Fundamentos de Computadores Circuitos Aritméticos 35 CIRCUITOS ARITMÉTICOS Aplicaciones de la ALU diseñada Conocer el valor de un bit, p. ej. D3 ☺ Método: “Aislar” el bit deseado operando con una constante. P. ej.: Operamos AND el dato D y la constante 0...01000; el resultado será 0...0D3000 S2S1S0 = 110 y Cin = φ ^B 1 1 0 0 D K = 0...01000 S2 S1 S0 Cin A Cout V Z S ALU [n] F=A B F Z Z D3 1 0 0 1 D3 = Z FC Dpto. Tecnología Electrónica, U. Sevilla. Fundamentos de Computadores Circuitos Aritméticos 36