Fundamentos de Computadores Tema 5 Circuitos Aritméticos
Fundamentos de Computadores
Tema 5
Circuitos Aritméticos
OBJETIVOS
• Conceptuales:
Suma y resta binaria
Implementaciones hardware/software
Circuito sumador y semi-sumador básico
Sumadores/restadores de n bits
Acarreo y desbordamiento
Unidad aritmético-lógica
OBJETIVOS
• Procedimentales:
Diseño de etapas aritméticas básicas
Diseño de sumadores de n bits.
Asociación de sumadores.
Diseño de sumadores/restadores en complemento a 2
Diseño de unidades aritmético-lógicas
OBJETIVOS
• Actitudinales:
Importancia del diseño modular y reutilización de diseños.
Complemento a 2 como base para la implementación
hardware de circuito aritméticos
Abstracción al nivel RT
Bibliografía
Básica:[GARC92] Capítulos 3, 7 y 8[NELS96] Capítulos 1 y 4[WAKE94] Capítulos 2 y 5[ALMO94] Capítulos 1, 2 y 3
Complementaria:[FLOYD00] Capítulo 2[HAMA90]
CONTENIDOS
INTRODUCCIÓN
CIRCUITOS SUMADORES BÁSICOS
SUMADOR PARALELO DE N BITS
SUMADOR RESTADOR
UNIDAD ARITMÉTICO LÓGICA (ALU)
INTRODUCCIÓN
Los sistemas digitales poseen una gran potencia de cálculo ya quepermiten ejecutar con gran velocidad operaciones aritméticas ylógicas
Una operación aritmética en un computador puede ser realizadade dos formas:
hardware: existe un circuito en el procesador querealiza esa operación(gran velocidad y alto coste)
software: existe un algoritmo que descompone esaoperación en otras más elementales queson realizadas mediante hardware
INTRODUCCIÓN
Hardware aritmético en los procesadores:
Todos los procesadores poseen al menos un sumador-resta-dor, los procesadores diseñados para el cálculo numérico(coprocesadores matemáticos) poseen multiplicadores eincluso circuitos para la división.
Software aritmético en los procesadores:
Los procesadores más simples poseen instrucciones para lasuma y la resta, a medida que aumenta la complejidad seincluyen instrucciones de multiplicación y división, en los máscomplejos se tienen operaciones más abstractas comoexponenciales, logaritmos, etc
INTRODUCCIÓN
Las principales diferencias entre la forma de operar manual y la deun computador digital son:
La base del sistema de numeración es B = 2 (binaria).Aunque no siempre, también la aritmética a utilizar es labinaria.
La forma de representar números con signo normalmenteno es con signo-magnitud, sino a través de los complemen-tos (a 2 o a 1).
El número de bits de los datos está acotado, lo que intro-duce errores de desbordamiento, de precisión y de cum-plimiento de propiedades algebraicas (las operaciones sevuelven no-cerradas y pueden incumplirse las propiedadesasociativas y distributiva).
CIRCUITOS SUMADORES BÁSICOS
Ejemplo de suma de dos números binarios:
En general:
1 0 0 1
0 0 1 1
1 1 0 0
A
B
Suma
0 1 1 Acarreo
a3 a2 a1 a0
b3 b2 b1 b0
S3 S2 S1 S0
A
B
Suma
c3 c2 c1 Acarreo
CIRCUITOS SUMADORES BÁSICOS
Semisumador o Half Adder:Se trata del circuito que suma dos bits. Obtiene como salidael bit de suma y el acarreo.
HAai
bi
Si
Ci+1
ai bi Ci+1 Si
0 0 0 0 1 0
0 1 1 1
0 10 11 0
CIRCUITOS SUMADORES BÁSICOS
Semisumador o Half Adder:Una posible implementación mediante puertas lógicas
Ci+1 = ai · bi
Si = ai ⊕ bi
=1Si
aibi
&Ci+1
aibi
CIRCUITOS SUMADORES BÁSICOS
Sumador completo o Full Adder:Permite realizar la suma de tres bits simultáneamente.Obtiene como salida el bit de suma y el acarreo.
FA
aibi
Si
Ci+1Ci
ai bi Ci Ci+1 Si
0 0 0 0 0 0 0 1
0 1 00 1 11 0 01 0 11 1 01 1 1
0 10 11 00 11 01 01 1
CIRCUITOS SUMADORES BÁSICOS
Full Adder: Una implementación mediante puertas lógicas:
Ci+1 = ai · bi + ai · Ci + bi · Ci
Si = ai ⊕ bi ⊕ Ci
=1aibi Ci
=1Si
&aibi
aiCi
Ci+1
Cibi
&
&
&
CIRCUITOS SUMADORES BÁSICOS
Full Adder: Una implementación mediante semisumadores
HAai
bi
Si
Ci+1HA
Ci
Si
Ci+1
>1Ci+1
Si
SUMADOR PARALELO DE n BITS
Un sumador paralelo de n bits, es un dispositivo lógico combi-nacional de 2n+1 entradas y n+1 salidas que realiza la suma dedos números binarios de n bits.
A B
S
an-1an-2 a0 bn-1bn-2 b0
Sn-1Sn-2 S0
CinCout
Cout cn-1 . . . c2 c1 c0 = Cin an-1 . . . a2 a1 a0bn-1 . . . b2 b1 b0
Sn-1 . . . S2 S1 S0
+
SUMADOR PARALELO DE n BITSSumador paralelo con acarreo serie
Es el más intuitivo y tiene un coste razonablemente bajo.
También es conocido como sumador de rizado o ripple adder. Se trata de un circuito modular.
FA
a1b1
S1C2
C1
S0C1
FA
an-1bn-1
Sn-1Cout = Cn
Cn-1
. . . . FA
a2b2
S2C3
C2
FA
a0b0C0 = Cin
SUMADOR PARALELO DE n BITSSumador paralelo con acarreo serie
Es lento debido a la propagación serie del acarreo
El tiempo que tarda en realizarse una suma crece linealmentecon el número de bits.
FA
a1b1
S1C2
C1
S0C1
FA
an-1bn-1
Sn-1Cout = Cn
Cn-1
. . . . FA
a2b2
S2C3
C2
FA
a0b0C0 = Cin
El problema del desbordamiento en la suma de magnitudes
Con n bits el rango representable es [0,2n-1]
Si A+B>2n-1, el resultado no es representable hay desbordamiento (overflow)
Cout señala la existencia de desbordamiento
En caso de desbordamiento, el resultado correcto está en elnúmero de n+1 bits CoutSn-1 - S0 = A + B
0 0 1 1 (0)1 0 0 10 0 1 1
1 1 0 0
+
CiAB
OK!
1 0 1 1 (0)1 0 0 11 0 1 1
0 1 0 0
+AB A + B = 1 0 1 0 0
A + B ≠
La suma-resta de números con signo
Calcular la diferencia A-B es equivalente a calcular A + (-B) la resta aritmética se reduce a una suma implica trabajar con números con signo
A, B
s/r
B ( −B)
S = A + B
0 (s) 1 (r)
La suma-resta de números en compl. a 2
Utilizaremos la notación complemento a 2 para representar losnúmeros positivos y negativos
1001 = -70101 = +51110 = -2
1100 = -40100 = +40000 = 01
0011 = +30100 = +40111 = +7
1100 = -41111 = -11011 = -51
0101 = +50100 = +41001 = -7
1001 = -71010 = -60011 = +31
desbordamiento
SUMADOR RESTADOR
A, B
s/r
B -B
S = A + B
0 (s) 1 (r)
Sumador paralelo
A
Y
B
Complementador de n bits
Cin s/r
C
S
Cout
En general,A - B = A + (-B)
de n bits
SUMADOR RESTADOR
El complementador es simplemente una colección de XOR:
Y
B
Complementador de n bits
CC Y0 B1 B
= 1
Bn-1
Yn-1
= 1
Bn-2
Yn-2
= 1
B0
Y0
. . .
C
El problema del desbordamiento en la suma-resta de números con signo
Se pone de manifiesto porque la magnitud ocupa un bit más yel bit de signo no es correcto
En caso de desbordamiento, el resultado correcto está en elnúmero de n+1 bits CoutSn-1 - S0 = A + B
La detección del desbordamiento se lleva a cabo mediante unaseñal adicional: el bit de overflow (V)
El problema del desbordamiento
En la suma, el desbordamiento se produce cuando: al sumar dos números positivos se obtiene un negativo al sumar dos números negativos se obtiene un positivo
V = Cout ⊕ Cn-1
0 an-2 a0. . .
0 bn-2 b0. . .
1 0
1 Sn-2 S0. . .
Cn-1Cn
1 an-2 a0. . .
1 bn-2 b0. . .
0 1
0 Sn-2 S0. . .
Cn-1Cn
SUMADOR RESTADOR
El sumador restador quedaría:
A B
+/-
s/rCout
S
V
V = Cout ⊕ Cn-1
FA
an-2 bn-2
Sn-2
Cn-2Cn-1FA
an-1 bn-1
Sn-1
Cn = Cout.
=1
V
Bit de Signo (en su caso)
ALU: La Unidad Aritmético-Lógica
(Arithmetic-Logic Unit)
Es el circuito donde se realiza el procesado de datos
Procesado: operaciones aritméticas y lógicas. Normalmente 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 laoperación, se incluyen otras salidas (flags) de estado ode condición. Típicamente son Cout, V, Z (Z=1 si el resultado es 0) y S(signo)
ALU: La Unidad Aritmético-Lógica
A = an-1 ...a0 B = bn-1 ...b0
F = fn-1 ...f0
señales de
n n
n
kALU
m salidas
Cin
Sk-1 ...S0de estado
selección
ALU: La Unidad Aritmético-Lógica
Un ejemplo es:
S2S1S0 Función ALUCin = 0 Cin = 1
0 0 0 F = A Transfiere F = A + 1 Incrementa0 0 1 F = A+ B Suma F = A + B + 1 Suma con acarreo0 1 0 F = A - B - 1 Resta y decrementa F = A - B Resta0 1 1 F = A - 1 Decrementa F = A; Transfiere1 0 0 F = A ∪ B ≡ A v B: OR
F = A ⊕ B: XORF = A & B ≡ A ∩ B ≡ A ^ B: AND
F = A: NOT
1 0 11 1 01 1 1
ALU: La Unidad Aritmético-Lógica
Realización de la ALU: Se separan las partes Aritmética y Lógica. Cada una de ellas n-plica la etapa de un bit.
LUi AUi
ai bi Ci
S1S0
Ci+1
1 0
fi
S2
fAUifLUi
ALU: La Unidad Aritmético-Lógica
-> ALU de n bits como cascada de n módulos de 1 bit:
ALU0
a0 b0
CinC1
f0
ALUi
ai bi
Ci+1
fi
ALUn-1
an-1 bn-1
Cout
fn-1
CiCn-1. . . . . .
S2S1S0
Diseño de la Unidad Lógica
Diseño con multiplexor
También se puede realizar un diseño en dos niveles
0123
&
fLUi
aibi
>1aibi
=1aibi
1ai
S1S0
1 0
Función S1S0 fLUi
F = A ∩ B: AND 00 ai . bi
F = A ∪ B: OR 01 ai + bi
F = A: NOT 10 ai
F = A ⊕ B: XOR 11 ai ⊕ bi
Diseño de la Unidad AritméticaEl bloque aritmético consta básicamente de un sum. paraleloPara obtener las diferentes operaciones se ha de modificar losdatos de entrada al sumador
S2S1S0 Función ALUCin = 0 Cin = 1
0 0 0 F = A Transfiere F = A + 1 Incrementa0 0 1 F = A+ B Suma F = A + B + 1 Suma con acarreo0 1 0 F = A - B - 1 Resta y decrementa F = A - B Resta0 1 1 F = A - 1 Decrementa F = A; Transfiere
Sumador
Ai
Bi
Fi = Ai + Yi
CiCi+1
S1S0Generador YYi
Diseño de la Unidad Aritmética
Sumador paralelo
A B
F = A + B
Cin = 0Cout Sumador paralelo
A B
F = A + B + 1
Cin = 1Cout
Suma Suma con acarreo
Sumador paralelo
A 0
F = A
Cin = 0Cout Sumador paralelo
A 0
F = A + 1
Cin = 1Cout
Transfiere A Incrementa A
Diseño de la Unidad Aritmética
Sumador paralelo
A B
F = A + B + 1
Cin = 1Cout
Sumador paralelo
A 11 ... 1
F = A - 1
Cin = 0Cout Sumador paralelo
A 11 ... 1
F = A
Cin = 1Cout
(f) Resta
(g) Decrementa A (h) Transfiere A
Sumador paralelo
A B
F = A + B
Cin = 0Cout
(e) Resta y decrementa
Diseño de la Unidad Aritmética
S1S0 Yi0 0 00 1 Bi1 0 Bi1 1 1
bi
Yi
S1S00 00 11 11 0
>1&bi
S0
&Yi
biS1
Sumador
Ai
Bi
Fi = Ai + Yi
CiCi+1
S1S0Generador YYi
0 1
0 0
0 11 11 0