CIRCUITOS ARITMÉTICOS - Departamento de Tecnología Electrónica

Anuncio
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
Descargar