430 likes | 1.03k Views
Subsistemas aritméticos y lógicos. Tema 8. ¿Qué sabrás al final del capítulo?. Diseño de Sumadores Binarios Semisumadores Sumador completo Sumador con acarreo serie Sumador con acarreo anticipado Sumador / Restador Sumador BCD Diseño de Multiplicadores aritméticos
E N D
¿Qué sabrás al final del capítulo? • Diseño de Sumadores Binarios • Semisumadores • Sumador completo • Sumador con acarreo serie • Sumador con acarreo anticipado • Sumador / Restador • Sumador BCD • Diseño de Multiplicadores aritméticos • Funcionamiento de los módulos lógicos • Comparadores • Generadores y detectores de paridad • Conversores de códigos • Diseño de una unidad aritmético-lógica elemental
A B C S 0 0 0 0 0 1 0 1 1 0 0 1 1 1 1 0 Semisumador (Half Adder) • La operación de suma aritmética tiene como resultado suma y acarreo • No podemos propagar acarreos con semisumadores S = A B Propagación (Pi) C = A · B Generación (Gi)
Ai Bi Ci Ci+1 Si 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 1 1 1 0 1 0 0 0 1 1 0 1 1 0 1 1 0 1 0 1 1 1 1 1 Sumador Completo (Full Adder) • Funcionamiento similar al semisumador añadiendo el acarreo de entrada Si = Ai Bi Ci = Pi Ci Ci+1 = (Ai + Bi) Ci + (Ai Bi) =(Ai Bi) Ci + (Ai Bi) = Pi Ci + Gi
Sumador completo • Podemos diseñarlo a partir de dos semisumadores
semisumador semisumador Sumador Completo • ¿Cuál será el camino crítico?
Sumador Completo tpo. retardo por puerta = 5 ns La salida Si llega 10 ns de retardo respecto a las entradas A y B y sólo 5 ns respecto a la entrada C La salida Ci+1 llega 15 ns de retardo respecto a las entradas A y B y sólo 10 ns respecto a la entrada C camino crítico semisumador semisumador
An-1 Bn-1 A2 B2 A1 B1 A0 B0 Cn FA FA FA C2 C1 C0 FA C3 Cn-1 … Sn Sn-1 S2 S1 S0 Sumador paralelo con acarreo serie
Sumador paralelo con acarreo serie • Cada sumador completo realiza una suma • Genera un acarreo que se le transmite al sumador siguiente • Los tiempos se van acumulando • Si ts es el tiempo para realizar una suma y tc el tiempo para realizar un acarreo, resulta: • Dato en S0 C1 S1 C2 ……… Sn-1 Sn = Cn Tiempo ts tc ts + tc 2 tc ……… ts + (n-1) tc n tc
Sumador con acarreo anticipado • Los acarreos se evalúan anticipadamente con lógica de 2 niveles de puertas • Las sumas se realizan posteriormente en paralelo • En primer lugar se obtienen los términos de generación y propagación Pi = Ai Bi Todos los términos se calculan en paralelo desde el primer momento Gi = Ai Bi
Sumador con acarreo anticipado • Cálculo del acarreo • desarrollando la fórmula iterativa Ci+1 = Pi Ci + Gi todos los acarreos dependen de propagaciones, generaciones y acarreo inicial • cualquier función booleana puede expresarse con lógica de 2 niveles de puertas • Cálculo de las sumas C1 = P0 C0 + G0 C2 = P1 C1 + G1 = P1 (P0 C0 + G0) + G1 = P1P0C0 + P1G0 + G1 C3 = P2 C2 + G2 = P2P1P0C0 + P2P1G0 + P2G1 + G2 C4 = P3 C3 + G3 = P3P21P0C0+P3P2P1G0+P3P2G1+P3G2+G3 Si = Pi Ci
Sumador con acarreo anticipado 1.- Propagación y Generación t 3.- Sumas t 2t 2.- Acarreos
Sumador / Restador • El uso del complemento a 2 permite realizar sumas y restas con un sumador y un poco de lógica adicional A3 A2 A1 A0 B3 B2 B1 B0 S/R S/R = 0 suma S/R = 1 resta sumador S4 S3 S2 S1 S0 Complementador a 2
Código BCD • El código BCD es un código de 4 bits que representa los 10 dígitos decimales como si fueran binarios naturales • Cada dígito decimal se sustituye por sus cuatro bits • El código BCD, al igual que el binario, es un código ponderado de pesos 8 4 2 1 • Puede haber otros códigos BCD con otra relación de ponderación o, incluso, no ponderados
Otros códigos BCD autocomplementarios Decimal Código BCD Código BCD exceso3 Código BCD Aiken 0 0000 0011 0000 1 0001 0100 0001 2 0010 0101 0010 3 0011 0110 0011 4 0100 0111 0100 5 0101 1000 1011 6 0110 1001 1100 7 0111 1010 1101 8 1000 1011 1110 9 1001 1100 1111 Ponderado 8 4 2 1 No Ponderado Ponderado 2 4 2 1
Sumador BCD • Suma números codificados en BCD, y genera otro BCD • Si el resultado es > 10 es necesario corregir restando 10 A3 A2 A1 A0 B3 B2 B1 B0 sumador corrección Z4 Z3 Z2 Z1 Z0 corregir? corregir = 0 “0000” 0 corregir = 1 “0110” últimos 4 bits de +6 = últimos 4 bits de -10 sumador S4 S3 S2 S1 S0
Multiplicadores • La multiplicación aritmética coincide con el producto lógico FA FA FA FA FA FA
Comparadores • Comparador de 1 bit A0>B0 A0=B0 A0<B0 • Comparador de 2 bits A1>B1 ó (A1=B1 y A0>B0) A1=B1 y A0=B0 A1<B1 ó (A1=B1 y A0<B0)
Comparador de 4 bits D An<Bn
Comparadores • Comparan dos números en binario, activando únicamente la salida que corresponda
Comparador • 7485(comparador de 4 bits)
Comparador • Diseño de un comparador de 8 bits a partir de dos 7485
Generador de paridad • Paridad par: Número par de unos, incluyendo P • Paridad impar: Número impar de unos, incluyendo I Para 3 variables Para 3 variables Para 4 variables Para 4 variables
Conversores de código • Pueden haber conversores para cualquier pareja de códigos • Se pueden construir con un codificador y un decodificador • Ejemplo:
21 1 0 0 0 0 1 F E D C B A 74184 X5 X4 X3 X2 X1 X0 0 0 1 0 1 1 Conversores de código • 74184. Conversor de un número en BCD de 6 bits (hasta 39) a binario
4 A ALU 5 F 4 B S3 S2 S1 S0 Diseño de una ALU elemental • Trataremos de diseñar una unidad aritmético-lógica sencilla • Características: • Datos de entrada: A y B de 4 bits • 4 líneas de selección (hasta 16 operaciones diferentes) • Operaciones lógicas y aritméticas
Diseño de una ALU elemental • Operaciones:
Diseño de una ALU elemental • Diagrama de bloques de la ALU
A and 0 B A or 1 B MUX 4x1 F A 2 not A 3 xor B S2 S1 Diseño de una ALU elemental • Parte lógica, para cada bit 4 4 4 4 4 4 4 4 4 4 4 1 0 4
Diseño de una ALU elemental • Parte aritmética: A+B+S0=A+D+S0 A+1111c2+S0=A+D+S0 A+S0=A+D+S0 A+B’+S0=A+D+S0
b3 a3 b2 a2 b1 a1 b0 a0 S2 S1 BLOQUE B d0 d3 d2 d1 Sumador completo 4bits S0 f0 f4 f3 f2 f1
0 1 1 1 0 0 0 1 Bloque B S1bi S2 S1 bi di 0 0 0 0 0 0 1 1 0 1 0 1 0 1 1 1 1 0 0 0 1 0 1 0 1 1 0 1 1 1 1 0 S2 00 01 11 10 0 1 Para i desde 0 hasta 3
b3 b2 b1 b0 S2 S1 BLOQUE B d0 d3 d2 d1 Bloque B
Hemos aprendido…. • Diseño de Sumadores Binarios • Semisumadores • Sumador completo • Sumador con acarreo serie • Sumador con acarreo anticipado • Sumador/Restador • Sumador BCD • Diseñar Multiplicadores aritméticos • Funcionamiento de los módulos lógicos • Comparadores • Generadores y detectores de paridad • Conversores de códigos • Diseñar una Unidad Aritmético-Lógica elemental