OP LOGICAS.pdf

24
13. 13. Circuitos aritm Circuitos aritmé ticos ticos Sistemas Digitales Ingeniería Técnica en Informática de Sistemas Curso 2006 – 2007 Circuitos aritméticos 2 Introducci Introducción

Transcript of OP LOGICAS.pdf

Page 1: OP LOGICAS.pdf

1

13.13. Circuitos aritmCircuitos aritmééticosticosOliverio J. Santana JariaSistemas Digitales

Ingeniería Técnica en Informática de SistemasCurso 2006 – 2007

Circuitos aritméticos 2

IntroducciIntroduccióónn� 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

Page 2: OP LOGICAS.pdf

2

Circuitos aritméticos 3

Estructura del temaEstructura 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 4

Circuitos sumadoresCircuitos 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:� 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 acarreo0 + 0 = 00 + 1 = 11 + 0 = 11 + 1 = 10

Page 3: OP LOGICAS.pdf

3

Circuitos aritméticos 5

El El semisumadorsemisumador� 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 binariaA B Co S0 0 0 00 1 0 11 0 0 11 1 1 0

A,B � sumandosCo � acarreo de salidaS � suma

Circuitos aritméticos 6

El El semisumadorsemisumador� 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 ANDCo = A·B

S = A + B

semisumador

Page 4: OP LOGICAS.pdf

4

Circuitos aritméticos 7

El sumador completoEl 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 entradaCi A B Co S0 0 0 0 00 0 1 0 10 1 0 0 10 1 1 1 01 0 0 0 11 0 1 1 01 1 0 1 01 1 1 1 1

A,B � sumandosCi � acarreo de entradaCo � acarreo de salidaS � suma

Circuitos aritméticos 8

El sumador completoEl 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:� 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 1S = A + B + Ci

0001

11

10

0 1ABCi

111

1 ABCo = +ACi +BCi = AB + Ci(A+B) = AB + Ci(A + B)

Page 5: OP LOGICAS.pdf

5

Circuitos aritméticos 9

El sumador completoEl sumador completo� De esta manera se puede implementar el circuito sumador completo usando dos puertas XOR, dos puertas AND y una puerta ORS = A + B + Ci

Co = AB + Ci(A + B)

sumador

Circuitos aritméticos 10

El sumador completoEl 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 acarreosemisumador

semisumador

Page 6: OP LOGICAS.pdf

6

Circuitos aritméticos 11

Estructura del temaEstructura 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 12

Sumadores con acarreo en cascadaSumadores 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

Page 7: OP LOGICAS.pdf

7

Circuitos aritméticos 13

Sumadores con acarreo en cascadaSumadores 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 significativossumador

sumador

sumador 2

Circuitos aritméticos 14

Sumadores con acarreo en cascadaSumadores 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 sumadorsumador

sumador

sumador

sumador

sumador 2

sumador 2

sumador 4

Page 8: OP LOGICAS.pdf

8

Circuitos aritméticos 15

Estructura del temaEstructura 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 16

Sumadores con acarreo anticipadoSumadores 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 funcionesCi+1 = AB + Ci(A + B)

Gi � generación de acarreoPi � propagación de acarreo

Ci+1 = Gi + Ci·Pi

Page 9: OP LOGICAS.pdf

9

Circuitos aritméticos 17

Sumadores con acarreo anticipadoSumadores con acarreo anticipado� Si suponemos un sumador de 4 bits podemos calcular cada uno de los acarreos intermediosC1 = G0 + C0·P0

C2 = G1 + C1·P1

C3 = G2 + C2·P2

C4 = G3 + C3·P3

= G1 + G0·P1 + C0·P1·P0

= G2 + G1·P2 + G0·P2·P1 + C0·P2·P1·P0

= 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 18

Sumadores con acarreo anticipadoSumadores 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

G4 = G3 + G2·P3 + G1·P3·P2 + G0·P3·P2·P1C4 = G4 + C0·P4

Page 10: OP LOGICAS.pdf

10

Circuitos aritméticos 19

Sumadores con acarreo anticipadoSumadores con acarreo anticipado� El circuito propagador de acarreo quedaría de esta manera:propagador

Circuitos aritméticos 20

Sumadores con acarreo anticipadoSumadores con acarreo anticipado� Usando el circuito propagador de acarreo, la estructura de un sumador de 4 bits es como sigue:propagador

sumador 4

Page 11: OP LOGICAS.pdf

11

Circuitos aritméticos 21

Sumadores con acarreo anticipadoSumadores 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 usarsumador 4sumador 4sumador 4sumador 4

Circuitos aritméticos 22

Sumadores con acarreo anticipadoSumadores 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 usarsumador 4sumador 4sumador 4sumador 4

propagador

Page 12: OP LOGICAS.pdf

12

Circuitos aritméticos 23

Estructura del temaEstructura 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 24

Sumadores / RestadoresSumadores / 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

Page 13: OP LOGICAS.pdf

13

Circuitos aritméticos 25

Sumadores / RestadoresSumadores / 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 bit XOR0 0 00 1 11 0 11 1 0

Circuitos aritméticos 26

Sumadores / RestadoresSumadores / 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 sustraendosumador 4

Page 14: OP LOGICAS.pdf

14

Circuitos aritméticos 27

Estructura del temaEstructura 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 28

Unidad lUnidad lóógicagica� 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 funcionesS0

S1

S2

S3

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 11 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1

A B f0 f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 f13 f14 f15

Page 15: OP LOGICAS.pdf

15

Circuitos aritméticos 29

Unidad lUnidad lóógicagica� 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ógicaF = S0·A·B + S1·A·B + S2·A·B + S3·A·B

Circuitos aritméticos 30

Unidad lUnidad lóógicagica� 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

Page 16: OP LOGICAS.pdf

16

Circuitos aritméticos 31

Unidad lUnidad lóógicagica� 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:ULULULUL

Circuitos aritméticos 32

Estructura del temaEstructura 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

Page 17: OP LOGICAS.pdf

17

Circuitos aritméticos 33

Unidad aritmUnidad aritmééticotico--llóógicagica� 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 34

Unidad aritmUnidad aritmééticotico--llóógicagica� 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

Page 18: OP LOGICAS.pdf

18

Circuitos aritméticos 35

Unidad aritmUnidad aritmééticotico--llóógicagica� 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 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 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 36

Ampliador aritmAmpliador aritmééticotico� 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 entrada1todo cerosAincremento A + 11 1 1

1BAresta A + B + 11 1 0

0BAsuma A + B1 0 1

0todo unosAdecremento A – 11 0 0

CiOperando YOperando XFunciónM S1 S0

Page 19: OP LOGICAS.pdf

19

Circuitos aritméticos 37

Ampliador aritmAmpliador aritmééticotico� 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� 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 0 0 0 11 0 0 1 11 0 1 0 01 0 1 1 11 1 0 0 11 1 0 1 01 1 1 0 01 1 1 1 0

M S1 S0 B Y

Circuitos aritméticos 38

Ampliador aritmAmpliador aritmééticotico� Dado que la variable M siempre vale 1, solo hay que tener en cuenta las otras tres variables para simplificar0001

11

10

0 1S1S0

B

11

1 M·S0·BY = + M·S1·B

M = 1

1

AE

Page 20: OP LOGICAS.pdf

20

Circuitos aritméticos 39

Ampliador lAmpliador lóógicogico� 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 entrada00A OR BOR A OR B0 1 1

00Aidentidad A0 1 0

00A AND BAND A AND B0 0 1

00Acomplemento A0 0 0

CiOperando YOperando XFunciónM S1 S0

Circuitos aritméticos 40

Ampliador lAmpliador lóógicogico� 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ógico0 0 0 A

0 0 1 A·B

0 1 0 A

0 1 1 A+B

1 – – A

M S1 S0 X

Page 21: OP LOGICAS.pdf

21

Circuitos aritméticos 41

Ampliador lAmpliador lóógicogico� A partir de la tabla de verdad podemos simplificar la función del ampliador lógico utilizando un mapa de Karnaugh de cinco variablesX = + M·S1·S0·B + S0·A·B + S1·A + M·A

S1S0

AB

00

01

11

10

00 01 11 10M = 0

11

1

11

111

00

01

11

10

00 01 11 10M = 1

S1S0

AB

11

11

11

11

M·S1·S0·A

Circuitos aritméticos 42

Ampliador lAmpliador lóógicogico� Una vez obtenida la expresión minimizada podemos diseñar el circuito ampliador lógicoM·S1·S0·AX = + M·S1·S0·B + S0·A·B + S1·A

LE

+ M·A

Page 22: OP LOGICAS.pdf

22

Circuitos aritméticos 43

DiseDiseñño de la ALUo 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 44

DiseDiseñño de la ALUo de la ALU� Este diagrama muestra una ALU de 4 bits, que sería fácilmente extensible a un mayor número de bitsLELELELE

AE AE AE AE

+ + + +

Page 23: OP LOGICAS.pdf

23

Circuitos aritméticos 45

Estructura del temaEstructura 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 46

ResumenResumen� 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

Page 24: OP LOGICAS.pdf

24

Circuitos aritméticos 47

BibliografBibliografííaaFundamentos de Sistemas Digitales (7ª edición)Capítulo 6Thomas L. FloydPrentice Hall, 2000Principios de Diseño DigitalCapítulo 5Daniel D. GajskiPrentice Hall, 1997