Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Tema 13
Tema 13
Circuitos aritmticos
Oliverio J. Santana Jaria
Sistemas Digitales Ingeniera Tcnica en Informtica de Sistemas Curso 2006 2007
Introduccin
La realizacin de operaciones aritmticas y lgicas 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 realizacin de este tipo de operaciones Los objetivos de este tema son:
Introducir los circuitos bsicos ms frecuentemente usados para realizar operaciones aritmticas y lgicas Describir el diseo de una unidad artimtico-lgica sencilla capaz de realizar operaciones de ambos tipos
Circuitos aritmticos 2
Circuitos sumadores
Los sumadores son circuitos importantes para cualquier sistema digital en el que se procesen datos numricos Las reglas bsicas de la suma binaria indican que:
0+0= 0 0+1= 1 1+0= 1 1 + 1 = 10
Al estar sumando nmeros con un tamao fijo de un bit, no es posible tener un resultado con dos bits Por tanto, la salida de un sumador no es slo el valor de la suma, ya que tambin es posible que exista acarreo
Circuitos aritmticos 4
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
Circuitos aritmticos
B 0 1 0 1
Co 0 0 0 1
S 0 1 1 0
A,B Co S
El semisumador
A partir de esta tabla de verdad se puede observar que la suma puede implementarse con una operacin XOR y el acarreo de salida con una operacin AND
Co = AB S=A+B
semisumador
Circuitos aritmticos
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
Circuitos aritmticos
El sumador completo
Dado que podemos expresar la suma de dos bits con la operacin XOR, podemos expresar la suma de dos bits y un acarreo de la siguiente forma: 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 tambin sea 1
Ci 0 AB
S = A + B + Ci
1 00 01 1 11 1 1 10 1
Circuitos aritmticos
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 aritmticos
El sumador completo
semisumador semisumador
Circuitos aritmticos
10
El circuito sumador completo permite sumar dos nmeros de un bit con un acarreo de entrada y generar un acarreo de salida Como regla general, un sumador binario de cualquier nmero de bits puede realizarse conectando en cascada varios sumadores completos de un bit El proceso puede extenderse usando cualquier sumador como elemento bsico: por ejemplo puede hacerse un sumador de 4 bits con dos sumadores de 2 bits
Circuitos aritmticos 12
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 aritmticos
13
El principal problema de esta conexin en serie de sumadores es que el retardo del circuito depende de la propagacin del acarreo a lo largo de todo el sumador
sumador sumador 2 sumador 4 sumador
sumador
sumador 2
sumador
Circuitos aritmticos
14
La cadena de acarreos es el camino crtico en el retardo de un sumador en cascada pero, afortunadamente, la mayora de las expresiones necesarias pueden ser precalculadas, reduciendo el retardo Para poder anticipar el valor del acarreo hay que dividir la funcin que lo expresa en otras dos funciones
Ci+1 = AB + Ci(A + B)
Gi Pi propagacin de acarreo generacin de acarreo
Ci+1 = Gi + CiPi
Circuitos aritmticos 16
Si suponemos un sumador de 4 bits podemos calcular cada uno de los acarreos intermedios
C1 = G0 + C0P0 C2 = G1 + C1P1 = G1 + G0P1 + C0P1P0 C3 = G2 + C2P2 = G2 + G1P2 + G0P2P1 + C0P2P1P0 C4 = G3 + C3P3 = G3 + G2P3 + G1P3P2 + G0P3P2P1 + C0P3P2P1P0
Los acarreos pueden calcularse en funcin de los valores de entrada y el acarreo inicial C0, por lo que la propagacin de acarreo no es estrictamente necesaria
Circuitos aritmticos 17
Se ha limitado el clculo del acarreo anticipado a sumadores de 4 bits porque un nmero mayor de bits complicara el circuito Para obtener sumadores con ms bits ser necesario conectar estos sumadores de 4 bits Para permitir la propagacin de los valores es necesario reescribir la ltima ecuacin:
C4 = G3 + G2P3 + G1P3P2 + G0P3P2P1 + C0P3P2P1P0 P4 = P3P2P1P0 C4 = G4 + C0P4 G4 = G3 + G2P3 + G1P3P2 + G0P3P2P1
Circuitos aritmticos 18
Circuitos aritmticos
19
sumador 4
propagador
Circuitos aritmticos
20
10
Para obtener un sumador de, por ejemplo, 16 bits podramos conectar en cascada cuatro de estos sumadores En este caso, las salidas P4 y G4 quedaran sin usar
sumador 4
sumador 4
sumador 4
sumador 4
Circuitos aritmticos
21
Es posible utilizar un circuito propagador de acarreo global para evitar que la generacin del resultado se vea retardada por la propagacin del acarreo En este caso, la salida C4 quedara sin usar
propagador
sumador 4
sumador 4
sumador 4
sumador 4
Circuitos aritmticos
22
11
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 tambin realice la operacin de resta El complemento a 2 se obtiene complementando cada bit del nmero 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 aritmticos 24
12
Sumadores / Restadores
Un circuito sumador/restador tendr una seal de seleccin SEL que funcionar de la siguiente manera:
SEL = 0 SEL = 1 suma resta
Esta seal puede usarse como acarreo de entrada, ya que debe ser 0 para la suma y 1 para la resta Adems, aplicando la operacin XOR entre un bit de SEL bit XOR entrada y SEL se complementa el bit 0 0 0
SEL = 0 SEL = 1
Circuitos aritmticos
0 1 1
1 0 1
1 1 0
25
Sumadores / Restadores
Un circuito sumador/restador puede hacerse a partir de un circuito sumador (por ejemplo, con acarreo en cascada) si se aade la seal de entrada SEL y unas puertas XOR para complementar el sustraendo
sumador 4
Circuitos aritmticos
26
13
Unidad lgica
Dados dos operandos de entrada, una unidad lgica permite realizar una operacin lgica entre los dos La implementacin de una unidad lgica no es compleja, ya que tan slo es necesario que realice las 16 operaciones lgicas posibles para dos variables Para esto es necesario utilizar cuatro variables de seleccin 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
Circuitos aritmticos
0 0 0 0
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 lgica
El valor binario de las cuatro variables de seleccin para una funcin lgica dada coincide con el nmero decimal correspondiente a la funcin
Cada variable de seleccin equivale a uno de los bits del nmero identificativo de la funcin Cada variable se corresponde con una de las cuatro posibles combinaciones de entrada
Esto da lugar a una expresin booleana sencilla que representa el comportamiento de la unidad lgica
F = S0AB + S1AB + S2AB + S3AB
Circuitos aritmticos 29
Unidad lgica
Dada esta expresin, el circuito de una unidad lgica de un bit queda de la siguiente manera:
F = S0AB + S1AB + S2AB + S3AB
UL
Circuitos aritmticos
30
15
Unidad lgica
Para implementar una unidad lgica de ms de un bit bastar con reutilizar varios de los bloques de un bit de esta forma:
UL
UL
UL
UL
Circuitos aritmticos
31
16
Unidad aritmtico-lgica
Una unidad aritmtico lgica (ALU arithmetic-logic unit) realiza las operaciones aritmticas y lgicas bsicas de un procesador entre dos operandos
Las operaciones aritmticas incluyen, por ejemplo, sumar, restar, incrementar y decrementar Las operaciones lgicas 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 aritmticos 33
Unidad aritmtico-lgica
El ampliador aritmtico (AE arithmetic extender) es un circuito utilizado para modificar las entradas de una ALU y permitir el clculo de operaciones aritmticas El ampliador lgico (LE logic extender) es un circuito utilizado para modificar las entradas de una ALU y permitir el clculo de operaciones lgicas La implementacin de una ALU consistir en un circuito sumador que tendr conectado uno de estos ampliadores a cada una de sus entradas
Circuitos aritmticos 34
17
Unidad aritmtico-lgica
Dado que la ALU puede realizar tanto operaciones aritmticas como operaciones lgicas, es necesaria una seal de entrada para controlar el modo de operacin
M=0 M=1 clculo de operaciones lgicas clculo de operaciones aritmticas
Tambin es necesario aadir variables de seleccin para distinguir entre los distintos tipos de operaciones aritmticas y lgicas Por ejemplo, si tenemos cuatro operaciones de cada tipo harn falta dos variables de seleccin: S0 y S1
Circuitos aritmticos 35
Ampliador aritmtico
El funcionamiento del ampliador aritmtico puede resumirse con una tabla que incluye
Las variables de seleccin de modo: M, S0, S1 El nombre y la descripcin de la funcin Las modificaciones necesarias sobre los operandos El valor del acarreo de entrada
M 1 1 1 1 S1 0 0 1 1 S0 0 1 0 1 Funcin decremento suma resta incremento A1 A+B A+B+1 A+1 Operando X Operando Y A A A A todo unos B B todo ceros Ci 0 0 1 1
36
Circuitos aritmticos
18
Ampliador aritmtico
Con este diseo, la entrada del sumador correspondiente al primer operando no necesita ninguna modificacin Por lo tanto, el ampliador aritmtico tan solo debe aplicarse a los bits del segundo operando segn la siguiente tabla de verdad M S S B
1 0
La salida del ampliador aritmtico debe ser 0 para las operaciones lgicas, por lo que slo tendremos en cuenta el caso M = 1
Circuitos aritmticos
1 1 1 1 1 1 1 1
0 0 0 0 1 1 1 1
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
37
Ampliador aritmtico
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
00 1 1 01 1 11 10 1
Y = MS0B + MS1B
AE
Circuitos aritmticos
38
19
Ampliador lgico
El funcionamiento del ampliador lgico puede resumirse con una tabla que incluya
Las variables de seleccin de modo: M, S0, S1 El nombre y la descripcin de la funcin Las modificaciones necesarias sobre los operandos El valor del acarreo de entrada
S0 0 1 0 1 Funcin complemento AND identidad OR A A AND B A A OR B
M 0 0 0 0
S1 0 0 1 1
Ci 0 0 0 0
39
Circuitos aritmticos
Ampliador lgico
El ampliador lgico necesita conocer el valor de B, el cual nunca llegar al sumador en operaciones lgicas
Por este motivo, cuando M = 0, el ampliador aritmtico siempre transforma su operando en un cero Sin embargo, s que ser necesario tener en cuenta el caso M = 1 en el diseo del ampliador lgico M S1 S0 X
0 0 0 0
Circuitos aritmticos
0 0 1 1
0 1 0 1
A AB A A+B A
40
20
Ampliador lgico
A partir de la tabla de verdad podemos simplificar la funcin del ampliador lgico utilizando un mapa de Karnaugh de cinco variables
S1S0 AB 00 01 11 10 1 M=0 00 01 11 10 1 1 1 1 1 1 1 S1S0 AB M=1 00 01 11 10 1 1 1 1 1 1 1 1 00 01 11 10
Ampliador lgico
Una vez obtenida la expresin minimizada podemos disear el circuito ampliador lgico
X = MS1S0A + MS1S0B + S0AB + S1A + MA
LE
Circuitos aritmticos
42
21
Diseo de la ALU
El diseo 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 slo para las operaciones aritmticas (M = 1) de resta e incremento (S1 = 1) El acarreo de salida del bit ms significativo representa un desbordamiento en el caso de aritmtica entera En el caso de aritmtica en complemento a dos, la seal de desbordamiento ser un XOR de los acarreos de salida de los dos bits ms significativos
Circuitos aritmticos 43
Diseo de la ALU
Este diagrama muestra una ALU de 4 bits, que sera fcilmente extensible a un mayor nmero de bits
LE
LE
LE
LE
AE
AE
AE
AE
Circuitos aritmticos
44
22
Resumen
Las operaciones aritmticas y lgicas son frecuentes en los programas informticos, por lo que los circuitos que las realizan estn entre los ms importantes Gracias a la representacin en complemento a 2, la mayora de estas operaciones puede realizarse utilizando un circuito sumador, lo que simplifica los diseos en gran medida La realizacin de estas operaciones puede centralizarse en un nico circuito, la unidad aritmtico-lgica, que constituye uno de los principales centros de clculo de los computadores modernos
Circuitos aritmticos 46
23
Bibliografa
Fundamentos de Sistemas Digitales (7 edicin)
Captulo 6 Thomas L. Floyd Prentice Hall, 2000
Circuitos aritmticos
47
24