Story Transcript
13. Circuitos aritméticos Oliverio J. Santana Jaria Sistemas Digitales Ingeniería Técnica en Informática de Sistemas Curso 2006 – 2007
Introducción
La realización de operaciones aritméticas y lógicas
es una de las principales razones de ser de los computadores actuales Existe un conjunto de circuitos bien conocidos que se utilizan con frecuencia para la realización de este tipo de operaciones Los objetivos de este tema son:
Introducir los circuitos básicos más frecuentemente usados para realizar operaciones aritméticas y lógicas
Describir el diseño de una unidad artimético-lógica sencilla capaz de realizar operaciones de ambos tipos
Circuitos aritméticos
2
1
Estructura del tema
Introducción Circuitos sumadores
Sumador con acarreo en cascada
Sumador con acarreo anticipado
Sumador/Restador
Unidad lógica Unidad aritmético-lógica Resumen y bibliografía Circuitos aritméticos
3
Circuitos sumadores
Los sumadores son circuitos importantes para cualquier
sistema digital en el que se procesen datos numéricos
Las reglas básicas de la suma binaria indican que: 0+0= 0 0+1= 1 1+0= 1 1 + 1 = 10
Al estar sumando números con un tamaño fijo de un
bit, no es posible tener un resultado con dos bits Por tanto, la salida de un sumador no es sólo el valor de la suma, ya que también es posible que exista acarreo Circuitos aritméticos
4
2
El semisumador
Se denomina semisumador a un circuito que admite dos
bits como entrada y genera como salida:
Un bit que representa la suma de los dos bits de entrada
Otro bit que representa el acarreo generado por la suma
La tabla de verdad de este circuito puede deducirse a
partir de las reglas de la suma binaria A 0 0 1 1
B 0 1 0 1
Co 0 0 0 1
S 0 1 1 0
A,B Co S
sumandos acarreo de salida suma
Circuitos aritméticos
5
El semisumador
A partir de esta tabla de verdad se puede observar que
la suma puede implementarse con una operación XOR y el acarreo de salida con una operación AND Co = A·B S=A+B
semisumador
Circuitos aritméticos
6
3
El sumador completo
La principal diferencia entre un sumador completo y
un semisumador es que el sumador completo admite un valor que represente un acarreo de entrada Ci 0 0 0 0 1 1 1 1
A 0 0 1 1 0 0 1 1
B 0 1 0 1 0 1 0 1
Co 0 0 0 1 0 1 1 1
S 0 1 1 0 1 0 0 1
A,B Ci Co S
sumandos acarreo de entrada acarreo de salida suma
Circuitos aritméticos
7
El sumador completo
Dado que podemos expresar la suma de dos bits con la
operación XOR, podemos expresar la suma de dos bits y un acarreo de la siguiente forma: S = A + B + Ci
El acarreo de salida será 1 en dos circunstancias:
Cuando las dos entradas A y B sean 1
Cuando la suma de las dos entradas sea 1 y el acarreo de entrada también sea 1
Ci 0 AB
1 00 01 1 11 1 1 10
1
Co = AB +ACi +BCi = AB + Ci(A+B) = AB + Ci(A + B)
Circuitos aritméticos
8
4
El sumador completo
De esta manera se puede implementar el circuito
sumador completo usando dos puertas XOR, dos puertas AND y una puerta OR S = A + B + Ci Co = AB + Ci(A + B)
sumador
Circuitos aritméticos
9
El sumador completo
También es posible implementar el sumador completo
utilizando dos circuitos semisumadores
El primer semisumador suma los dos bits
El segundo suma el resultado con el acarreo de entrada
Habrá acarreo de salida si cualquiera de los dos semisumadores genera un acarreo
semisumador semisumador
Circuitos aritméticos
10
5
Estructura del tema
Introducción Circuitos sumadores
Sumador con acarreo en cascada
Sumador con acarreo anticipado
Sumador/Restador
Unidad lógica Unidad aritmético-lógica Resumen y bibliografía Circuitos aritméticos
11
Sumadores con acarreo en cascada
El circuito sumador completo permite sumar dos
números de un bit con un acarreo de entrada y generar un acarreo de salida
Como regla general, un sumador binario de cualquier
número de bits puede realizarse conectando en cascada varios sumadores completos de un bit
El proceso puede extenderse usando cualquier sumador
como elemento básico: por ejemplo puede hacerse un sumador de 4 bits con dos sumadores de 2 bits
Circuitos aritméticos
12
6
Sumadores con acarreo en cascada
El primero de los acarreos de entrada debe estar
siempre a cero, ya que representa el acarreo inicial en la suma de los bits menos significativos sumador
sumador 2 sumador
Circuitos aritméticos
13
Sumadores con acarreo en cascada
El principal problema de esta conexión en serie de
sumadores es que el retardo del circuito depende de la propagación del acarreo a lo largo de todo el sumador sumador sumador 2 sumador 4 sumador
sumador
sumador 2
sumador
Circuitos aritméticos
14
7
Estructura del tema
Introducción Circuitos sumadores
Sumador con acarreo en cascada
Sumador con acarreo anticipado
Sumador/Restador
Unidad lógica Unidad aritmético-lógica Resumen y bibliografía Circuitos aritméticos
15
Sumadores con acarreo anticipado
La cadena de acarreos es el camino crítico en el retardo
de un sumador en cascada pero, afortunadamente, la mayoría de las expresiones necesarias pueden ser precalculadas, reduciendo el retardo Para poder anticipar el valor del acarreo hay que dividir la función que lo expresa en otras dos funciones Ci+1 = AB + Ci(A + B) Pi propagación de acarreo Gi generación de acarreo
Ci+1 = Gi + Ci·Pi Circuitos aritméticos
16
8
Sumadores con acarreo anticipado
Si suponemos un sumador de 4 bits podemos calcular
cada uno de los acarreos intermedios
C1 = G0 + C0·P0 C2 = G1 + C1·P1 = G1 + G0·P1 + C0·P1·P0 C3 = G2 + C2·P2 = G2 + G1·P2 + G0·P2·P1 + C0·P2·P1·P0 C4 = G3 + C3·P3 = G3 + G2·P3 + G1·P3·P2 + G0·P3·P2·P1 + C0·P3·P2·P1·P0
Los acarreos pueden calcularse en función de los
valores de entrada y el acarreo inicial C0, por lo que la propagación de acarreo no es estrictamente necesaria
Circuitos aritméticos
17
Sumadores con acarreo anticipado
Se ha limitado el cálculo del acarreo anticipado a
sumadores de 4 bits porque un número mayor de bits complicaría el circuito Para obtener sumadores con más bits será necesario conectar estos sumadores de 4 bits Para permitir la propagación de los valores es necesario reescribir la última ecuación: C4 = G3 + G2·P3 + G1·P3·P2 + G0·P3·P2·P1 + C0·P3·P2·P1·P0 P4 = P3·P2·P1·P0 C4 = G4 + C0·P4 G4 = G3 + G2·P3 + G1·P3·P2 + G0·P3·P2·P1 Circuitos aritméticos
18
9
Sumadores con acarreo anticipado
El circuito propagador de acarreo
quedaría de esta manera:
propagador
Circuitos aritméticos
19
Sumadores con acarreo anticipado
Usando el circuito propagador de acarreo, la estructura
de un sumador de 4 bits es como sigue:
sumador 4
propagador
Circuitos aritméticos
20
10
Sumadores con acarreo anticipado
Para obtener un sumador de, por ejemplo, 16 bits
podríamos conectar en cascada cuatro de estos sumadores En este caso, las salidas P4 y G4 quedarían sin usar
sumador 4
sumador 4
sumador 4
sumador 4
Circuitos aritméticos
21
Sumadores con acarreo anticipado
Es posible utilizar un circuito propagador de acarreo
global para evitar que la generación del resultado se vea retardada por la propagación del acarreo En este caso, la salida C4 quedaría sin usar
propagador
sumador 4
Circuitos aritméticos
sumador 4
sumador 4
sumador 4
22
11
Estructura del tema
Introducción Circuitos sumadores
Sumador con acarreo en cascada
Sumador con acarreo anticipado
Sumador/Restador
Unidad lógica Unidad aritmético-lógica Resumen y bibliografía Circuitos aritméticos
23
Sumadores / Restadores
La resta binaria se realiza sumando al minuendo el
complemento a 2 del sustraendo
Debido a esto, no es necesario tener un circuito restador
separado, ya que se puede modificar el sumador para que también realice la operación de resta
El complemento a 2 se obtiene complementando cada
bit del número binario y luego sumando 1 al resultado
La suma del 1 final se realiza poniendo a 1 el acarreo
de entrada del sumador en lugar de a 0
Circuitos aritméticos
24
12
Sumadores / Restadores
Un circuito sumador/restador tendrá una señal de
selección SEL que funcionará de la siguiente manera:
SEL = 0
suma
SEL = 1
resta
Esta señal puede usarse como acarreo de entrada, ya
que debe ser 0 para la suma y 1 para la resta
Además, aplicando la operación XOR entre un bit de
entrada y SEL se complementa el bit
SEL = 0
el
bit se deja como está
SEL = 1
el
bit se complementa
SEL 0 0 1 1
bit 0 1 0 1
XOR 0 1 1 0
Circuitos aritméticos
25
Sumadores / Restadores
Un circuito sumador/restador puede hacerse a partir
de un circuito sumador (por ejemplo, con acarreo en cascada) si se añade la señal de entrada SEL y unas puertas XOR para complementar el sustraendo
sumador 4
Circuitos aritméticos
26
13
Estructura del tema
Introducción Circuitos sumadores
Sumador con acarreo en cascada
Sumador con acarreo anticipado
Sumador/Restador
Unidad lógica Unidad aritmético-lógica Resumen y bibliografía Circuitos aritméticos
27
Unidad lógica
Dados dos operandos de entrada, una unidad lógica
permite realizar una operación lógica entre los dos La implementación de una unidad lógica no es compleja, ya que tan sólo es necesario que realice las 16 operaciones lógicas posibles para dos variables Para esto es necesario utilizar cuatro variables de selección que permitan elegir entre estas funciones AB
f0 f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 f13 f14 f15
00 01 10 11
0 0 0 0
Circuitos aritméticos
1 0 0 0
0 1 0 0
1 1 0 0
0 0 1 0
1 0 1 0
0 1 1 0
1 1 1 0
0 0 0 1
1 0 0 1
0 1 0 1
1 1 0 1
0 0 1 1
1 0 1 1
0 1 1 1
1 1 1 1
S0 S1 S2 S3 28
14
Unidad lógica
El valor binario de las cuatro variables de selección
para una función lógica dada coincide con el número decimal correspondiente a la función
Cada variable de selección equivale a uno de los bits del número identificativo de la función
Cada variable se corresponde con una de las cuatro posibles combinaciones de entrada
Esto da lugar a una expresión booleana sencilla que
representa el comportamiento de la unidad lógica
F = S0·A·B + S1·A·B + S2·A·B + S3·A·B Circuitos aritméticos
29
Unidad lógica
Dada esta expresión, el circuito de una unidad lógica de
un bit queda de la siguiente manera:
F = S0·A·B + S1·A·B + S2·A·B + S3·A·B
UL
Circuitos aritméticos
30
15
Unidad lógica
Para implementar una unidad lógica de más de un bit
bastará con reutilizar varios de los bloques de un bit de esta forma:
UL
UL
Circuitos aritméticos
UL
UL
31
Estructura del tema
Introducción Circuitos sumadores
Sumador con acarreo en cascada
Sumador con acarreo anticipado
Sumador/Restador
Unidad lógica Unidad aritmético-lógica Resumen y bibliografía Circuitos aritméticos
32
16
Unidad aritmético-lógica
Una unidad aritmético lógica (ALU – arithmetic-logic unit)
realiza las operaciones aritméticas y lógicas básicas de un procesador entre dos operandos
Las operaciones aritméticas incluyen, por ejemplo, sumar, restar, incrementar y decrementar
Las operaciones lógicas incluyen, por ejemplo, la AND, la OR, la identidad y el complemento
Todas estas operaciones pueden realizarse utilizando
un sumador si se modifican adecuadamente los valores de entrada
Circuitos aritméticos
33
Unidad aritmético-lógica
El ampliador aritmético (AE – arithmetic extender) es un
circuito utilizado para modificar las entradas de una ALU y permitir el cálculo de operaciones aritméticas
El ampliador lógico (LE – logic extender) es un circuito
utilizado para modificar las entradas de una ALU y permitir el cálculo de operaciones lógicas
La implementación de una ALU consistirá en un
circuito sumador que tendrá conectado uno de estos ampliadores a cada una de sus entradas
Circuitos aritméticos
34
17
Unidad aritmético-lógica
Dado que la ALU puede realizar tanto operaciones
aritméticas como operaciones lógicas, es necesaria una señal de entrada para controlar el modo de operación
M=0
cálculo de operaciones
M=1
cálculo de operaciones aritméticas
lógicas
También es necesario añadir variables de selección
para distinguir entre los distintos tipos de operaciones aritméticas y lógicas
Por ejemplo, si tenemos cuatro operaciones de cada
tipo harán falta dos variables de selección: S0 y S1
Circuitos aritméticos
35
Ampliador aritmético
El funcionamiento del ampliador aritmético puede
resumirse con una tabla que incluye
Las variables de selección de modo: M, S0, S1 El nombre y la descripción de la función Las modificaciones necesarias sobre los operandos El valor del acarreo de entrada
M
S1
S0
Función
1
0
0
decremento
1
0
1
1
1
0
1
1
1
incremento
Circuitos aritméticos
Operando X Operando Y
Ci
A–1
A
todo unos
0
suma
A+B
A
B
0
resta
A+B+1
A
B
1
A+1
A
todo ceros
1 36
18
Ampliador aritmético
Con este diseño, la entrada del sumador correspondiente
al primer operando no necesita ninguna modificación
Por lo tanto, el ampliador aritmético tan solo debe
aplicarse a los bits del segundo operando según la siguiente tabla de verdad M S S B 1
La salida del ampliador aritmético
debe ser 0 para las operaciones lógicas, por lo que sólo tendremos en cuenta el caso M = 1
1 1 1 1 1 1 1 1
0 0 0 0 1 1 1 1
0
0 0 1 1 0 0 1 1
0 1 0 1 0 1 0 1
Y 1 1 0 1 1 0 0 0
Circuitos aritméticos
37
Ampliador aritmético
Dado que la variable M siempre vale 1, solo hay que
tener en cuenta las otras tres variables para simplificar
M=1
B 0 S1S0
1
00 1 1 01 1 11 10 1
Y = M·S0·B + M·S1·B
Circuitos aritméticos
AE
38
19
Ampliador lógico
El funcionamiento del ampliador lógico puede
resumirse con una tabla que incluya
Las variables de selección de modo: M, S0, S1 El nombre y la descripción de la función Las modificaciones necesarias sobre los operandos El valor del acarreo de entrada
M
S1
S0
Función
Operando X Operando Y
0
0
0
complemento
0
0
1
AND
0
1
0
identidad
0
1
1
OR
A A AND B
Ci
A
0
0
A AND B
0
0
A
0
0
A OR B
0
0
A A OR B
Circuitos aritméticos
39
Ampliador lógico
El ampliador lógico necesita conocer el valor de B, el
cual nunca llegará al sumador en operaciones lógicas Por este motivo, cuando M = 0, el ampliador aritmético siempre transforma su operando en un cero
Sin embargo, sí que será necesario tener en cuenta el caso M = 1 en el diseño del ampliador lógico
M S1 S0
X
0 0 0 0
A A·B A A+B
0 0 1 1
0 1 0 1
1 – – Circuitos aritméticos
A 40
20
Ampliador lógico
A partir de la tabla de verdad podemos simplificar la
función del ampliador lógico utilizando un mapa de Karnaugh de cinco variables
S1S0
AB
00
M=0 00 01 11 10 1 1 1
01 11
S1S0
1
10
AB
M=1 00 01 11 10
00
1
1
01
1
1
1
1
11
1
1
1
1
10
1
1
X = M·S1·S0·A + M·S1·S0·B + S0·A·B + S1·A + M·A Circuitos aritméticos
41
Ampliador lógico
Una vez obtenida la expresión minimizada podemos
diseñar el circuito ampliador lógico
X = M·S1·S0·A + M·S1·S0·B + S0·A·B + S1·A + M·A
LE
Circuitos aritméticos
42
21
Diseño de la ALU
El diseño de la ALU puede hacerse bit a bit, utilizando
sumadores completos de un bit con un AE conectado a una entrada y un LE conectado a la otra entrada El acarreo de entrada será 1 sólo para las operaciones aritméticas (M = 1) de resta e incremento (S1 = 1) El acarreo de salida del bit más significativo representa un desbordamiento en el caso de aritmética entera En el caso de aritmética en complemento a dos, la señal de desbordamiento será un XOR de los acarreos de salida de los dos bits más significativos Circuitos aritméticos
43
Diseño de la ALU
Este diagrama muestra una ALU de 4 bits, que sería
fácilmente extensible a un mayor número de bits
LE
LE
LE
LE
AE
AE
AE
AE
+
Circuitos aritméticos
+
+
+
44
22
Estructura del tema
Introducción Circuitos sumadores
Sumador con acarreo en cascada Sumador con acarreo anticipado Sumador/Restador
Unidad lógica Unidad aritmético-lógica Resumen y bibliografía Circuitos aritméticos
45
Resumen
Las operaciones aritméticas y lógicas son frecuentes en
los programas informáticos, por lo que los circuitos que las realizan están entre los más importantes Gracias a la representación en complemento a 2, la mayoría de estas operaciones puede realizarse utilizando un circuito sumador, lo que simplifica los diseños en gran medida La realización de estas operaciones puede centralizarse en un único circuito, la unidad aritmético-lógica, que constituye uno de los principales centros de cálculo de los computadores modernos Circuitos aritméticos
46
23
Bibliografía Fundamentos de Sistemas Digitales (7ª edición) Capítulo 6 Thomas L. Floyd Prentice Hall, 2000
Principios de Diseño Digital Capítulo 5 Daniel D. Gajski Prentice Hall, 1997
Circuitos aritméticos
47
24