3.13.1 Circuitos aritmético Circuitos...
Transcript of 3.13.1 Circuitos aritmético Circuitos...
3.13.1 Circuitos aritméticoCircuitos aritmético--lógicoslógicosgg
Fundamentos de los ComputadoresGrado en Ingeniería Informática
IntroducciónIntroducción
La realización de operaciones aritméticas y lógicas es una de las i i l d d l t d t lprincipales razones de ser de los computadores actuales
Existe un conjunto de circuitos bien conocido que se utiliza con Existe un conjunto de circuitos bien conocido que se utiliza 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 aritmético-lógica sencilla capaz de
li i d b irealizar operaciones de ambos tipos
Circuitos aritméticos 2
Estructura del temaEstructura del tema
Introducción
Circuitos sumadores Sumador/Restador Sumador/Restador
Unidad lógicag
Unidad aritmético-lógica
Resumen y bibliografía
Circuitos aritméticos 3
Circuitos sumadoresCircuitos sumadores
Los sumadores son circuitos importantes para cualquier sistema di it l l d t é idigital en el que se procesen datos numéricos
Las reglas básicas de la suma binaria indican que: Las reglas básicas de la suma binaria indican que:
0 + 0 = 00 1 10 + 1 = 11 + 0 = 11 + 1 10
Al estar sumando números con un tamaño fijo de un bit, no es
1 + 1 = 10
j ,posible tener un resultado con dos bits
La salida de un sumador incluye el valor de la suma y el posible La salida de un sumador incluye el valor de la suma y el posible acarreo
Circuitos aritméticos 4
El semisumadorEl semisumador
Se denomina semisumador a un circuito que admite dos bits t d lidcomo entrada y genera como salida:
Un bit que representa la suma de los dos bits de entradaOt bit t l d l Otro bit que representa el acarreo generado por la suma
La tabla de verdad de este circuito puede deducirse a partir de las La tabla de verdad de este circuito puede deducirse a partir de las reglas de la suma binaria
A B Co SA B Co S0 0 0 0
A,B sumandosCo acarreo de salidaS suma
0 1 0 11 0 0 1
S suma
Co = A·B1 1 1 0 S = A + B
Circuitos aritméticos 5
El semisumadorEl semisumador
A partir de esta tabla de verdad se puede observar que la suma d i l t ió XOR l dpuede implementarse con una operación XOR y el acarreo de
salida con una operación AND
Co = A·BS = A + BS = A + B
semisumador
Circuitos aritméticos 6
El sumador completoEl sumador completo
La principal diferencia entre un sumador completo y un i d l d l t d it lsemisumador es que el sumador completo admite un valor que
represente un acarreo de entradaCi A B Co S0 0 0 0 0
A,B sumandosCi acarreo de entradaCo acarreo de salida
0 0 1 0 10 1 0 0 1
Co acarreo de salidaS suma
0 1 0 0 10 1 1 1 01 0 0 0 11 0 0 0 11 0 1 1 01 1 0 1 01 1 1 1 1
Circuitos aritméticos 7
El sumador completoEl sumador completo
Dado que podemos expresar la suma de dos bits con la operación XOR d l d d bit d lXOR, 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 casos:
S = A + B + Ci
Cuando A y B sean 1 Cuando A+B sea 1 y el acarreo de entrada también sea 1
000 1AB
Ci
011110
1111 ABCo = +ACi +BCi = AB + Ci(A+B) = AB + Ci(A + B)10 1
Circuitos aritméticos 8
El sumador completoEl sumador completo
De esta manera se puede implementar el circuito sumador l t d d t XOR d t ANDcompleto 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 completoEl sumador completo
También es posible implementar el sumador completo utilizando d i it i ddos circuitos semisumadores El primer semisumador suma los dos bits
El d l lt d l d t d El segundo suma el resultado con el acarreo de entrada Habrá acarreo de salida si cualquiera de los dos semisumadores genera un
acarreoacarreo
semisumadorsemisumador
Circuitos aritméticos 10
Sumadores con acarreo en cascadaSumadores con acarreo en cascada
El circuito sumador completo permite sumar dos números de un bit d t d d lidbit 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 p j p pbits con dos sumadores de 2 bits
Circuitos aritméticos 11
Sumadores con acarreo en cascadaSumadores con acarreo en cascada
El primero de los acarreos de entrada debe estar siempre a cero, t l i i i l l d l bitya que representa el acarreo inicial en la suma de los bits menos
significativos
sumador
sumador sumador 2
Circuitos aritméticos 12
Sumadores con acarreo en cascadaSumadores con acarreo en cascada
El principal problema de esta conexión en serie de sumadores es l t d d l i it d d d l ió d lque el retardo del circuito depende de la propagación del acarreo
a lo largo de todo el sumador
sumador
sumador 2
sumadorsumador 4
sumador sumador 2
sumador
Circuitos aritméticos 13
Sumadores con acarreo anticipadoSumadores con acarreo anticipado
La cadena de acarreos es el camino crítico en el retardo de un d d f t d t l í d lsumador en cascada pero, afortunadamente, la mayoría de las
expresiones necesarias pueden ser precalculadas, reduciendo el retardoretardo
Para poder anticipar el valor del acarreo hay que dividir la f ió l t d f ifunción que lo expresa en otras dos funciones
Ci+1 = AB + Ci(A + B)
Pi propagación de acarreoGi generación de acarreo
p p g
Ci+1 = Gi + Ci·PiCircuitos aritméticos 14
Ci+1 Gi + Ci Pi
Sumadores con acarreo anticipadoSumadores con acarreo anticipado
Si suponemos un sumador de 4 bits podemos calcular cada uno d l i t dide los acarreos intermedios
Los acarreos pueden calcularse en función de los valores de d l i i i l l l i dentrada y el acarreo inicial C0, por lo que la propagación de
acarreo no es estrictamente necesaria
C1 = G0 + C0·P0
C2 = G1 + C1·P1 = G1 + G0·P1 + C0·P1·P0
C3 = G2 + C2·P2
C4 = G3 + C3·P3
= G2 + G1·P2 + G0·P2·P1 + C0·P2·P1·P0
= G3 + G2·P3 + G1·P3·P2 + G0·P3·P2·P1 + C0·P3·P2·P1·P0C4 = G3 + C3·P3 = G3 + G2·P3 + G1·P3·P2 + G0·P3·P2·P1 + C0·P3·P2·P1·P0
Circuitos aritméticos 15
Sumadores con acarreo anticipadoSumadores con acarreo anticipado
Se ha limitado el cálculo del acarreo anticipado a sumadores de 4 bit ú d bit li í l i itbits porque un número mayor de bits complicaría el circuito
Para obtener sumadores con más bits será necesario conectar d d biestos 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·P0C4 G4 + C0 P4
G4 = G3 + G2·P3 + G1·P3·P2 + G0·P3·P2·P1C4 = G4 + C0·P4
Circuitos aritméticos 16
Sumadores con acarreo anticipadoSumadores con acarreo anticipado
El circuito propagador de acarreo quedaría d tde esta manera:
propagadorpropagador
Circuitos aritméticos 17
Sumadores con acarreo anticipadoSumadores con acarreo anticipado
Usando el circuito propagador de acarreo, la estructura de un d d 4 bit isumador de 4 bits es como sigue:
sumador 4
propagadorp p g
Circuitos aritméticos 18
Sumadores con acarreo anticipadoSumadores con acarreo anticipado
Para obtener un sumador de, por ejemplo, 16 bits podríamos t d t d t dconectar en cascada cuatro de estos sumadores
En este caso, las salidas P4 y G4 quedarían sin usar
sumador 4sumador 4sumador 4sumador 4
Circuitos aritméticos 19
Sumadores con acarreo anticipadoSumadores con acarreo anticipado
Es posible utilizar un circuito propagador de acarreo global para it l ió d l lt d t d d levitar que la generación del resultado se vea retardada por la
propagación del acarreol lid d i En este caso, la salida C4 quedaría sin usar
propagador
sumador 4sumador 4sumador 4sumador 4
Circuitos aritméticos 20
Estructura del temaEstructura del tema
Introducción
Circuitos sumadores Sumador/Restador Sumador/Restador
Unidad lógicag
Unidad aritmético-lógica
Resumen y bibliografía
Circuitos aritméticos 21
Sumadores / RestadoresSumadores / Restadores
La resta binaria se realiza sumando al minuendo el complemento 2 d l t da 2 del sustraendo
Debido a esto no es necesario tener un circuito restador 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 restatambién realice la operación de resta
El complemento a 2 se obtiene complementando cada bit del 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 22
Sumadores / RestadoresSumadores / Restadores
Un circuito sumador/restador tendrá una señal de selección SEL f i á d l i i tque funcionará de la siguiente manera:
SEL = 0 sumaSEL 1 t SEL = 1 resta
Esta señal puede usarse como acarreo de entrada ya que debe ser 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 bit XOR SEL = 0 el bit se deja como está SEL = 1 el bit se complementa
SEL bit XOR0 0 00 1 11 0 11 1 0
Circuitos aritméticos 23
Sumadores / RestadoresSumadores / Restadores
Un circuito sumador/restador puede hacerse a partir de un i it d ( j l d ) icircuito sumador (por ejemplo, con acarreo en cascada) si se
añade la señal de entrada SEL y unas puertas XOR para complementar el sustraendocomplementar el sustraendo
sumador 4
Circuitos aritméticos 24
Estructura del temaEstructura del tema
Introducción
Circuitos sumadores Sumador/Restador Sumador/Restador
Unidad lógicag
Unidad aritmético-lógica
Resumen y bibliografía
Circuitos aritméticos 25
Unidad lógicaUnidad lógica
Dados dos operandos de entrada, una unidad lógica permite li ió ló i t l drealizar una operación lógica entre los dos
La implementación de una unidad lógica no es compleja, ya que l i li l i l itan 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
S0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
A B f0 f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 f13 f14 f15
S0
S1
S2
0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 10 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 11 0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 S2
S3
1 0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 11 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
Circuitos aritméticos
26
Unidad lógicaUnidad lógica
El valor binario de las cuatro variables de selección para una f ió ló i d d i id l ú d i lfunción lógica dada coincide con el número decimal correspondiente a la función
C d i bl d l ió i l d l bit d l ú 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 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 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 27
Unidad lógicaUnidad lógica
Dada esta expresión, el circuito de una unidad lógica de un bit d d l i i tqueda de la siguiente manera:
F = S0·A·B + S1·A·B + S2·A·B + S3·A·BF S0 A B + S1 A B + S2 A B + S3 A B
ULUL
Circuitos aritméticos 28
Unidad lógicaUnidad lógica
Para implementar una unidad lógica de más de un bit bastará con tili i d l bl d bit d t freutilizar varios de los bloques de un bit de esta forma:
ULULULUL
Circuitos aritméticos 29
Estructura del temaEstructura del tema
Introducción
Circuitos sumadores Sumador/Restador Sumador/Restador
Unidad lógicag
Unidad aritmético-lógica
Resumen y bibliografía
Circuitos aritméticos 30
Unidad aritméticoUnidad aritmético--lógicalógica
Una unidad aritmético lógica (ALU – arithmetic-logic unit) li l i it éti ló i bá i drealiza las operaciones aritméticas y lógicas básicas de un
procesador entre dos operandosL i it éti i l j l t Las operaciones aritméticas incluyen, por ejemplo, sumar, restar, incrementar y decrementar
Las operaciones lógicas incluyen por ejemplo la AND la OR la 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 31
Unidad aritméticoUnidad aritmético--lógicalógica
El ampliador aritmético (AE – arithmetic extender) es un circuito tili d difi l t d d ALU iti lutilizado 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 depara 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 32
Unidad aritméticoUnidad aritmético--lógicalógica
Dado que la ALU puede realizar tanto operaciones aritméticas i ló i i ñ l d t dcomo operaciones lógicas, es necesaria una señal de entrada para
controlar el modo de operaciónM 0 ál l d i ló i M = 0 cálculo de operaciones lógicas
M = 1 cálculo de operaciones aritméticas
También es necesario añadir variables de selección para distinguir entre los distintos tipos de operaciones aritméticas ydistinguir 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 33
Ampliador aritméticoAmpliador aritmético
El funcionamiento del ampliador aritmético puede resumirse con t bl i luna tabla que incluye
Las variables de selección de modo: M, S0, S1
El b l d i ió d l f ió El nombre y la descripción de la función Las modificaciones necesarias sobre los operandos El alor del acarreo de entrada El valor del acarreo de entrada
M S1 S0 Función Operando X Operando Y Ci1 0 0 decremento A – 1 A todo unos 01 0 1 suma A + B A B 01 1 0 resta A + B + 1 A B 11 1 1 incremento A + 1 A todo ceros 1
Circuitos aritméticos 34
Ampliador aritméticoAmpliador aritmético
Con este diseño, la entrada del sumador di t l i dcorrespondiente al primer operando no
necesita ninguna modificaciónM S S B Y
Por lo tanto, el ampliador aritmético tan solo debe aplicarse a los bits del
1 0 0 0 11 0 0 1 1
M S1 S0 B Y
solo debe aplicarse a los bits del segundo operando según la siguiente tabla de verdad
1 0 0 1 11 0 1 0 01 0 1 1 1tabla de verdad
La salida del ampliador aritmético debe
1 0 1 1 11 1 0 0 11 1 0 1 0
La salida del ampliador aritmético debe ser 0 para las operaciones lógicas, por lo que sólo tendremos
1 1 1 0 01 1 1 1 0
que sólo tendremos en cuenta el caso M = 1
Circuitos aritméticos 35
Ampliador aritméticoAmpliador aritmético
Dado que la variable M siempre vale 1, solo hay que tener en t l t t i bl i lificuenta las otras tres variables para simplificar
0 1BM = 1
0001
0 1S1S0
111
AE1110 1 M·S0·BY = + M·S1·B
AE
Circuitos aritméticos 36
Ampliador lógicoAmpliador lógico
El funcionamiento del ampliador lógico puede resumirse con una t bl i ltabla que incluya Las variables de selección de modo: M, S0, S1
El b l d i ió d l f ió El nombre y la descripción de la función Las modificaciones necesarias sobre los operandos El alor del acarreo de entrada El valor del acarreo de entrada
M S1 S0 Función Operando X Operando Y Ci0 0 0 complemento A A 0 00 0 1 AND A AND B A AND B 0 00 1 0 identidad A A 0 00 1 1 OR A OR B A OR B 0 0
Circuitos aritméticos 37
Ampliador lógicoAmpliador lógico
El ampliador lógico necesita conocer el valor de B, el cual nunca ll á l d i ló illegará al sumador en operaciones lógicas Por este motivo, cuando M = 0, el ampliador aritmético siempre
transforma su operando en un cerotransforma 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ógicop g
M S1 S0 X
0 0 0 A
M S1 S0 X
0 0 1 A·B0 1 0 A0 1 1 A+B1 A
Circuitos aritméticos 38
1 – – A
Ampliador lógicoAmpliador lógico
A partir de la tabla de verdad podemos simplificar la función del li d ló i tili d d K h d iampliador lógico utilizando un mapa de Karnaugh de cinco
variables
S1S0AB
00 01 11 10M = 0
00 01 11 10M = 1
S1S0AB
1 0
00
01
00 01 11 1011
1
00
01
00 01 11 101 0
11
11
01
11
1
111
01
11 11
11
10 11 10 11
X = + M·S1·S0·B + S0·A·B + S1·A + M·AM·S1·S0·A
Circuitos aritméticos 39
Ampliador lógicoAmpliador lógico
Una vez obtenida la expresión minimizada podemos diseñar el i it li d ló icircuito ampliador lógico
M·S1·S0·A X = + M·S1·S0·B + S0·A·B + S1·A + M·A1 0 1 0 0 1
LELE
Circuitos aritméticos 40
Diseño de la ALUDiseño de la ALU
El diseño de la ALU puede hacerse bit a bit, utilizando d l t d bit AE t dsumadores 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)(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
E l d i é i l d l ñ l d 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 bit á i ifi tibits más significativos
Circuitos aritméticos 41
Diseño de la ALUDiseño de la ALU
Este diagrama muestra una ALU de 4 bits, que sería fácilmente t ibl ú d bitextensible a un mayor número de bits
LELELELE
AE AE AE AE+ + + +
Circuitos aritméticos 42
Estructura del temaEstructura del tema
Introducción
Circuitos sumadores Sumador/Restador Sumador/Restador
Unidad lógicag
Unidad aritmético-lógica
Resumen y bibliografía
Circuitos aritméticos 43
ResumenResumen
Las operaciones aritméticas y lógicas son frecuentes en los i f áti l l i it l liprogramas 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 circuitoestas 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 44
BibliografíaBibliografíaPrincipios de Diseño Digital
Capítulo 5Capítulo 5Daniel D. GajskiPrentice Hall, 1997,
Fundamentos de Sistemas Digitales (7ª edición)Capítulo 6Thomas L FloydThomas L. FloydPrentice Hall, 2000
Circuitos aritméticos 45