Está en la página 1de 22

Tema 3 FUNCIONES ARITMETICAS Y LOGICAS

3.1. INTRODUCCION

Hasta ahora hemos visto como se pod minimizar funciones booleanas, y como se an pod implementar a partir de puertas discretas. En los temas siguientes se estudiarn an a algunas de las funciones ms utilizadas, las cuales se implementan, tal y como hemos a dicho en el primer tema, en chips comerciales. Como estas funciones son ms complejas a se necesitan integrar ms transistores en el chip. Por lo tanto, estas nuevas funciones a pertenecen a la escala MSI. Las nuevas funciones que vamos a ver se pueden dividir en tres bloques:

funciones aritmtico-lgicas, entre las que destacan la suma y resta aunque tambin e o e tenemos la multiplicacin, la divisin y otras similares. Por convenio tambin se o o e incluyen las operaciones lgicas aplicadas a varios bits. o funciones de ruta de datos, como por ejemplo los multiplexos, demultiplexos. Sirven para modicar y controlar el ujo de la informacin dentro de un circuito. o conversores de cdigo, como los codicadores y decodicadores. o

En este tema estudiaremos las funciones aritmtico-lgicas y dejaremos para el sie o guiente los otros dos tipos. 37

38

TEMA 3. FUNCIONES ARITMETICAS Y LOGICAS

ENTRADAS A B 0 0 1 1 0 1 0 1

SALIDAS Cout S 0 0 0 1 0 1 1 0

A B

HA

Cout S

Figura 3.1: Tabla de verdad y s mbolo de un semisumador (HA).

C
B A

B A

1
1

0 1
1

0 1
1

Figura 3.2: Minimizacin de las funciones suma y acarreo de un semisumador. o

3.2.
3.2.1.

SUMADORES
Semisumador

La suma de dos d gitos binarios (PLUS) es similar a la suma de dos nmeros decimales, u pero teniendo en cuenta que la salida tambin es un nmero binario. Esto es importante e u cuando sumo, por ejemplo, 1 y 1, ya que para codicar el resultado (2 en decimal) necesito dos bits (10). En este caso, el bit menos signicativo lo llamaremos suma, mientras que el bit ms signicativo lo llamaremos acarreo (carry en ingls). En total, existen 4 a e posibilidades de sumar dos nmeros binarios de 1 bit: u

PLUS

0 0 0

0 1 1

1 0 1

1 1 10

El circuito que implementa esta funcin se denomina semi-sumador (HA o halfo adder). Por lo tanto, un HA es el circuito que realiza la suma de dos bits. Como es obvio, precisa dos entradas (que vamos a llamar A y B) y dos salidas: la suma propiamente dicha (S o ) y el acarreo C. En la gura 3.1 se puede ver la tabla de verdad de las funciones de salida y el s mbolo del HA. De los diagramas de Karnaugh (gura 3.2)

3.2. SUMADORES

39

Figura 3.3: Distintas implementaciones de un semisumador (HA). obtenemos sus expresiones m nimas: C = AB S = AB + AB A B La funcin de acarreo C es 1 unicamente cuando las dos entradas son 1. Adems de o a la expresin en suma de productos, existen otras formas de expresar la funcin suma, o o aunque todas ellas se pueden deducir de la anterior aplicando las Leyes de De Morgan y la propiedad ditributiva vistas en el tema dedicado al Algebra de Boole. La expresin ms sencilla es la EXOR de las entradas: la suma es 1 cuando en las o a entradas tenemos un nmero impar de 1s, y es 0 en caso contrario.En la gura 3.3 se u pueden ver algunas implementaciones de un HA.

3.2.2.

Sumador completo

Si adems de sumar dos d a gitos, tambin queremos sumar un acarreo de entrada, e entonces el HA es insuciente. Para sumar 3 d gitos de 1 bit necesitamos lo que se conoce como sumador completo (full-adder o FA). Si a los bits de entrada les llamamos A y B, y al acarreo de entrada lo denominamos Cin , entonces la tabla de verdad de las salidas del FA (el bit de la suma, S, y el acarreo de salida, Cout ) la tenemos en la gura 3.4. La minimizacin de las funciones de salida del sumador completo se puede ver en la o gura 3.5. El resultado de la minimizacin son las expresiones: o Cout = AB + ACin + BCin = AB + (A + B)Cin S = ABC in + AB C in + A BCin + ABCin = A B Cin

40

TEMA 3. FUNCIONES ARITMETICAS Y LOGICAS

ENTRADAS Cin A B 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1

SALIDAS Cout S 0 0 0 1 0 1 1 1 0 1 1 0 1 0 0 1

A B Cin

FA

Cout S

Figura 3.4: Tabla de verdad y s mbolo de un sumador completo (FA).


Cout AB Cin

S
AB Cin

00 01 11 10
1 1 1 1

00 01 11 10
1 1 1 1

0 1

0 1

Figura 3.5: Diagramas de Karnaugh de las salidas de un sumador completo. S es la funcin EXOR de las 3 entradas, es decir, su valor ser 1 cuando en las entradas o a haya un nmero impar de unos. Cout ser 1 cuando en las entradas haya dos o tres unos. u a Por ser implementaciones de la suma, estas funciones son totalmente simtricas con e respecto a sus entradas: intercambiando los valores de dos o ms entradas, el resultado a no var Esto se puede comprobar intercambiando dos entradas (por ejemplo A y Cin ) y a. aplicando las propiedades del lgebra de Boole hasta llegar a las expresiones anteriores, a o unas equivalentes. Construccin de un Sumador Completo con Semisumadores o Las funciones del sumador completo se pueden implementar directamente utilizando las expresiones m nimas de S y Cout . Sin embargo, tambin se pueden implementar e utilizando como mdulo bsico el semisumador y puertas lgicas adicionales. o a o Sabemos que el bit de suma del FA es la EXOR de las tres entradas. El HA slo puede o hacer EXOR de 2 entradas, por lo tanto necesito, como m nimo, 2 HA conectados en serie, tal que la salida S1 sea tambin entrada al segundo HA. De esa forma S2 ser igual a la e a suma del FA (ver gura 3.6). S2 = S1 Cin = A B Cin

3.2. SUMADORES

41

Figura 3.6: Implementacin de un FA a partir de HA. o Queda calcular el acarreo de salida del FA. Para ello observamos que el acarreo del primer HA es: C1 = AB. El acarreo del segundo HA es C2 = Cin S1 = Cin (A B). Si hacemos la OR de ambos obtendremos la siguiente expresin: o Cout = C1 + C2 = AB + (A B)Cin Se puede demostrar que esta expresin es equivalente a la expresin m o o nima que obtuvimos con el diagrama de Karnaugh. Para ello debemos utilizar las leyes y propiedades del lgebra de Boole. a

3.2.3.

Sumadores de palabras

Ya sabemos sumar tres nmeros binarios de 1 bit, pero nos interesa poder sumar u cantidades mayores, es decir, palabras o nmeros de varios bits que puedan codicar u nmeros mayores. Para ello existen dos opciones. La primera opcin consiste en aplicar el u o mismo mtodo que hemos estado usando, a saber, denir la tabla de verdad de la funcin e o u operacin que nos interesa implementar y minimizarla. Obviamente, este mtodo resulta o e poco prctico en el caso de tener nmeros de varios bits. Por poner un ejemplo, la tabla de a u verdad de un sumador de palabras de 4 bits posee 8 entradas, es decir, 256 combinaciones. El segundo mtodo consiste en hacer un diseo modular, es decir, disear un circuito e n n bsico que iremos repitiendo las veces que necesitemos. Este mtodo slo es aplicable en a e o funciones que posean un cierto grado de regularidad. Si nos jamos, la suma aritmtica de e palabras de n bits cumple dicha condicin. Sumemos dos nmeros en binario a la manera o u tradicional:

42 Acarreos Primer sumando Segundo sumando Suma

TEMA 3. FUNCIONES ARITMETICAS Y LOGICAS 1011101110 1011100110 1001101111 10101010101

742 623 1365

Como podemos observar, para calcular el bit i-simo del resultado slo necesitamos e o conocer los bits i-simos de las entradas y el acarreo resultado de calcular el bit anterior e (i 1). Por lo tanto, el mdulo bsico es un sumador de 3 bits: un sumador completo. o a Para sumar palabras de n bits ser preciso utilizar n FA. Nos queda por resolver cmo y a o cundo calcular el acarreo de cada bit. Para ello existen varias alternativas o soluciones, a pero aqu slo veremos las ms usadas. o a Sumador de Acarreo Enlazado
A3 B 3 A2 B 2 A1 B 1 A0 B 0

C out

FA

FA

FA

FA

C in

S3

S2

S1

S0

Figura 3.7: Sumador de acarreo enlazado. En el sumador de acarreo enlazado, el acarreo del sumador completo i se conecta al acarreo de entrada del sumador completo i + 1. De esta forma, a pesar de que todos los FA trabajan en paralelo, el resultado nal (correcto), no se obtendr hasta que todas las a salidas sean estables, es decir, hasta que un acarreo generado en el primer bit (el bit 1) se propague hasta el bit ms signicativo (el bit n). Resulta evidente que la velocidad del a sumador de acarreo enlazado es baja, pues cada etapa o FA ha de esperar al cmputo de los o acarreos por parte de todos los sumadores situados a su derecha (bits menos signicativos), es decir, el retardo ser el tiempo de retardo de n FA. a En la gura 3.7 se muestra un sumador de acarreo enlazado construido con 4 sumadores completos de un bit. El primer acarreo C0 es un acarreo de entrada al circuito y podemos denotarlo por Cin . Los 3 acarreos siguientes C1 , C2 y C3 son acarreos generados y usados exclusivamente por el circuito, y, por ultimo, el acarreo C4 es un acarreo de salida y podemos denotarlo por Cout . Las expresiones de cada seal son: n Si = Ai Bi Ci , i = 0, ..., 3 Ci+1 = Ai Bi + (Ai Bi )Ci , i = 0, ..., 3

con C0 = Cin

y C4 = Cout

3.2. SUMADORES

43

A7

A4

B7

B4

A3

A0

B3

B0

C out

SUMADOR PARALELO DE 4 BITS

C4

SUMADOR PARALELO DE 4 BITS

C in

S7

S4

S3

S0

Figura 3.8: Suma de palabras de 8 bits con sumadores paralelos de 4 bits. El resultado nal necesita un total de cinco bits para codicar el resultado, es decir, Cout S3 S2 S1 S0 . Existe la posibilidad de conectar ms sumadores de palabras en cascada a para ampliar el tamao de las palabras a sumar. Para ello se debe conectar el acarreo de n salida Cout de cada circuito al acarreo de entrada Cin del circuito situado a su izquierda, tal y como se ve en la gura 3.8.

Sumador de Acarreo Adelantado El problema del sumador de acarreos enlazados es su baja velocidad, debida a la forma de propagacin del acarreo utilizada. Esta dicultad se puede resolver mediante la tcnica o e de adelantar el acarreo (carry look-ahead), que analizaremos a continuacin. Antes de o nada, denimos las variables intermedias Gi = Ai Bi Pi = Ai Bi Gi se denomina acarreo generado ya que corresponde a la producin de acarreo en un o semisumador de dos bits (Ai y Bi ) y la seal Pi se denomina acarreo propagado, pues va n asociado a la propagacin del acarreo desde Ci a Ci+1 . Por lo tanto, podemos expresar o Si = Pi Ci Ci+1 = Gi + Pi Ci Si calculamos iterativamente el valor del acarreo Ci en funcin del acarreo Ci1 , poo demos obtener la expresin de todos y cada uno de los acarreos de forma que dependan, o unicamente, de los valores de las entradas A, B y Cin , o lo que es lo mismo P , G y Cin . C0 = Cin C1 = G0 + P0 C0 = G0 + P0 Cin C2 = G1 + P1 C1 = G1 + P1 (G0 + P0 Cin ) = G1 + P1 G0 + P1 P0 Cin

44
A 3 B3 A 2 B2

TEMA 3. FUNCIONES ARITMETICAS Y LOGICAS


A1 B1 A 0 B0 C0

G3 P3

G2 P2

G1 P1

G0 P0 C1

S0 S1

C2 S2

C3 S3

C4

C4

Figura 3.9: Sumador de acarreo adelantado. C3 = = C4 = = G2 + P2 C2 = G2 + P2 (G1 + P1 G0 + P1 P0 Cin ) = G2 + P2 G1 + P2 P1 G0 + P2 P1 P0 Cin G3 + P3 C3 = G3 + P3 (G2 + P2 G1 + P2 P1 G0 + P2 P1 P0 Cin ) = G3 + P3 G2 + P3 P2 G1 + P3 P2 P1 G0 + P3 P2 P1 P0 Cin

Un sumador de acarreo adelantado realiza la suma en tres etapas (gura 3.9). Primero, a partir de las entradas Ai y Bi calcula los Pi y Gi . Despus, aplica las ecuaciones e anteriores para calcular todos los acarreos. La implementacin de dichas ecuaciones se o puede realizar con dos niveles de puertas (uno AND y otro OR). El tercer paso consiste en obtener el resultado, es decir, la palabra C4 S3 S2 S1 S0 (5 bits). Como se puede comprobar fcilmente en la gura 3.9, el mximo retardo de una seal es de slo 4 niveles a a n o de puertas, independientemente del nmero de bits que estemos sumando. Por lo tanto, u un sumador de acarreo adelantado es ms rpido que un sumador de acarreo enlazado. a a

3.3. RESTADORES

45

Cuadro 3.1: Tabla del semirestador. ENTRADAS SALIDAS A B C S 0 0 0 0 0 1 1 1 1 0 0 1 1 1 0 0 El principal inconveniente de este esquema es que necesita ms puertas lgicas, o sea, a o ms hardware. Se encuentran disponibles comercialmente tanto sumadores completos a de acarreo adelantado como circuitos que unicamente generan los acarreos a partir de los Pi y Gi . Se puede pensar en utilizar este esquema para cualquier nmero de bits. Sin embargo, u existe un l mite en el nmero de puertas a las que se puede conectar un salida (fan-out) u y existe tambin un l e mite en el nmero de entradas de una puerta (fan-in). Como u se puede ver en la implementacin de las ecuaciones del acarreo (gura 3.9), tanto P0 o como C0 llevan su seal a n puertas, mientras que algunas puertas AND reciben n + 1 n entradas. Para evitar este problema se suele utilizar una estrategia mixta: se utiliza el acarreo adelantado dentro de los chips (los cuales suelen sumar palabras de unos 4 bits), y la tcnica del acarreo enlazado entre los chips (gura 3.8). e

3.3.

RESTADORES

La sustracin, que vamos a denotar por MINUS, se puede implementar de muchas o formas. Se pueden denir las tablas de verdad para cada uno de los bits de salida y minimizar las funciones con los mapas de Karnaugh. Tambin se puede seguir los mismos e pasos que en la suma, ya que la resta tambin es regular. Es decir, se puede denir un e semirestador (half sustractor o HS) capaz de restar dos d gitos de 1 bit. Las tablas de verdad de las salidas se pueden ver en la tabla 3.1 y cuyas expresiones minimizadas son:

S = AB C = AB Despus se puede denir el restador completo (full sustractor o FS) como la resta e de dos d gitos menos un acarreo de entrada (borrow o prstamo). Al igual que la suma, e se pueden encontrar las expresiones m nimas con los diagramas de Karnaugh, o se puede implementar un FS utilizando 2 HS. S2 = S1 Cin = A B Cin

46

TEMA 3. FUNCIONES ARITMETICAS Y LOGICAS Cout = C1 + C2 = AB + A BCin

Esta forma de actuar slo es vlida con nmeros positivos. Otra opcin, ms eciente, o a u o a consiste en calcular la resta a partir de la suma. Para ello, slo se necesita calcular el o opuesto del sustraendo. Esta operacin depende del tipo de representacin elegida para o o codicar los nmeros negativos. u

3.3.1.

Representacin de n meros negativos o u

Hasta ahora, hemos empleado una representacin (la posicional) que slo nos permite o o codicar nmeros positivos. Con la suma no existen problemas ya que la suma de dos u nmeros positivos siempre nos da positivo. Sin embargo, en el caso de la resta las cosas u cambian ya que la resta de dos nmeros nos puede dar un nmero negativo. Entonces se u u nos plantea el dilema de cmo podemos representar un nmero negativo. Se puede usar o u cualquier codicacin arbitararia, pero para realizar las operaciones aritmticas se suelen o e utilizar tres: Signo-Magnitud, Complemento a 1 y Complemente a 2. Todas ellas utilizan un nmero jo de bits (que debe ser prejado de antemano) y que llamaremos formato. u En los tres formatos, el bit ms signicativo (el que est ms a la izquierda) indica el a a a signo y los restantes bits representan la magnitud del nmero. Por convencin, si el bit u o de signo es 0 el nmero ser positivo y si el bit de signo es 1 el nmero ser negativo. Los u a u a tres formatos dieren en la forma de codicar la magnitud del nmero. u Formato Signo-Magnitud (S-M) Es el ms sencillo. El formato consiste en dos campos distintos: el signo (el bit ms a a signicativo) y la magnitud (de ah su nombre). La magnitud del nmero, que siempre es u positiva, se codica utilizando la representacin posicional (la vista hasta ahora). Con esta o representacin, el clculo del opuesto de un nmero es extremadamente sencillo: basta con o a u negar el bit ms signicativo, el signo. a La suma y la resta son ms complejas ya que implican conocer el signo de ambos a nmeros para realizar bien una suma verdadera, bien una resta verdadera con sumadores u y restadores paralelos de n bits, respectivamente. Si queremos restar (sumar) haremos tal resta (suma) si ambos operandos son del mismo signo, y haremos una suma (resta) si poseen signos opuesto. Debido a que en Signo-Magnitud es necesario implementar un restador binario, esta representacin no es la ms utilizada. o a Complemento a 1 (C1) Los nmeros positivos se representan colocando a la izquierda de la magnitud como u signo un 0. Los nmeros negativos se obtienen a partir de los positivos negando todos los u bits, incluido el de signo. El proceso de negar todos los bits de un nmero se denomina u obtencin del Complemento a 1 (C1) del mismo. o

3.3. RESTADORES

47

A3

A0

B3

B0

A3

A0

B3

B0

SUMADOR DE 4 BITS

SUMADOR DE 4 BITS

S3

S0

S3

S0

Figura 3.10: Suma y resta de dos nmeros en Complemento a 1. u


A3 A3 A0 B3 B0 A0 B3 B0

SUMADOR DE 4 BITS

SUMADOR DE 4 BITS

S3

S0

S3

S0

Figura 3.11: Suma y resta de dos nmeros en Complemento a 2. u Para sumar dos nmeros en C1 se suman todos sus bits, incluido el de signo. Si existe u un acarreo de salida entonces se le suma al resultado. El proceso se puede ver en la gura 3.10. Para restar dos nmeros necesitamos calcular el opuesto del sustraendo, es decir, u calcular el Complemento a 1 del sustraendo (gura 3.10) y realizar una suma. Con esta representacin slo necesitamos un sumador paralelo de n bits. o o

Complemento a 2 (C2) Los nmeros positivos se representan igual que en Complemento a 1 y que en signou magnitud. Los nmeros negativos se obtienen a partir de los positivos negando todos los u bits y sumando 1. El proceso de negar todos los bits de un nmero y sumar 1 se denomina u obtencin del Complemento a 2 del nmero (C2). o u La suma en C2 es la ms sencilla de todas: se suman todos los bits del formato y se a desprecia o no se tiene en cuenta el acarreo nal de salida (gura 3.11). Para calcular el opuesto de un nmero necesitamos negar todos los bits del mismo y sumar 1 al nal (es u decir, calcular el C2). La resta ser igual que en C1 (ver gura 3.11), pero con el acarreo a de entrada igual a 1 y despreciando el acarreo de salida.

48

TEMA 3. FUNCIONES ARITMETICAS Y LOGICAS

Cuadro 3.2: Valores de las palabras con formato de 4 bits para cada representacin. o
0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 Binario puro 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Signo-Magnitud +0 +1 +2 +3 +4 +5 +6 +7 -0 -1 -2 -3 -4 -5 -6 -7 Complemento a 1 +0 +1 +2 +3 +4 +5 +6 +7 -7 -6 -5 -4 -3 -2 -1 -0 Complemento a 2 +0 +1 +2 +3 +4 +5 +6 +7 -8 -7 -6 -5 -4 -3 -2 -1

Como hemos podido ver, una misma palabra o conjunto de bits puede tener signicados diferentes segn el tipo de representacin utilizada. Como ejemplo, la tabla 3.2 da el u o valor de cada palabra de un formato de 4 bits para cada una de las representaciones explicadas. Como puede observarse, los formatos Signo-Magnitud y Complemento a 1 dan dos representaciones para el 0: +0 y -0 (representacin dual del cero), lo cual no ocurre o con el Complemento a 2. En C2, por el contrario, el rango que utiliza para codicar nmeros enteros es asimtrico. En general, si tenemos n bits el rango de nmeros que u e u n1 n1 podemos codicar es [2 + 1, +2 1] en Signo-Magnitud y Complemento a 1, y [2n1 , +2n1 1] en Complemento a 2. As por ejemplo, con 4 bits en Complemento a 2 se codican los nmeros del -8 al +7 , u (16 nmeros, incluido el 0). Todos ellos poseen su opuesto excepto el -8, cuyo Complemento u a 2 sigue siendo -8. Con los mismos 4 bits en Signo-Magnitud y en Complemento a 1 slo o se codican los nmeros entre el -7 y el +7, slo 15 nmeros (recordemos que el cero posee u o u una representacin dual en ambas representaciones). o Overow o desbordamiento La suma de dos nmeros con formato (nmero jo de bits) puede producir como u u resultado un nmero que no es posible representar en el formato de partida. En este u caso se dir que exite desbordamiento (overow) y el resultado de la suma (o resta) a ser incorrecto. Por ejemplo, en un formato de 4 bits en C2, la operacin (-7) plus (-6)= a o (-13), producir overow, pues -13 no es representable en dicho formato. a El overow slo puede producirse cuando los dos sumandos son o bien ambos posio tivos o bien ambos negativos, pues obviamente cuando un sumando es positivo y el otro

3.3. RESTADORES

49

Cuadro 3.3: Tabla de verdad de una puerta EXOR.


S/R

0 0 1 1

Bi 0 1 0 1

EXOR 0 1 1 0

Figura 3.12: Sumador/Restador de dos nmeros en Complemento a 2. u negativo, el resultado siempre ser menor que uno de los operandos y podr representarse a a con el formato de partida. En el caso de la representacin Signo-Magnitud el desbordao miento se detecta cuando en la suma de magnitudes existe acarreo de salida. En el caso del C1 y C2, el overow se detecta comprobando el signo del resultado: si ste es e correcto, es decir, coincide con el signo de ambos operandos, se puede asegurar que no hay desbordadamiento. En el caso de la suma el resultado es incorrecto (existe desbordamiento) cuando An1 = Bn1 = Sn1 , es decir, (An1 = Bn1 = 0 y Sn1 = 1) o (An1 = Bn1 = 1 y Sn1 = 0). Por lo tanto, overf low = An1 B n1 Sn1 + An1 Bn1 S n1

3.3.2.

Circuito Sumador/Restador en Complemento a 2

Usando las propiedades de la funcin EXOR (tabla 3.3) podemos construir un circuito o para sumar o restar nmeros en C2 (gura 3.12). Introducimos una seal denominada u n S/R, tal que si esta seal es 0 se realizar una suma (S) y si es 1 se realizar una resta n a a (R). Si S/R = 0 los bits de B se propagan tal cul (Bi = 0 Bi = Bi ), pero si S/R = 1 a entonces se propagan Bi = 1 Bi = B i . Pero en C2 para negar un nmero adems de u a

50

TEMA 3. FUNCIONES ARITMETICAS Y LOGICAS

negar todos sus bits (C1), necesitamos sumarle 1. Para ello aplicamos tambin la seal e n S/R al Cin del sumador, de tal forma que si se realiza una suma Cin = 0 (no afecta), mientras que en la resta Cin = 1. Cout no formar parte del resultado y no se usa para a nada. Como el formato es jo y el mismo para las entradas y la salida, existir desbordaa miento cuando: overf low = An1 B n1 Sn1 S/R + An1 Bn1 S n1 S/R + An1 B n1 S n1 S/R + An1 Bn1 Sn1 S/R = An1 (Bn1 S/R)Sn1 + An1 (Bn1 S/R)S n1 = An1 B n1 Sn1 + An1 Bn1 S n1

3.4.
3.4.1.

COMPARADORES
Comparador binario

La comparacin entre nmeros es la operacin que determina si uno de ellos es mayor, o u o menor o igual que el otro. Un comparador de magnitud es un circuito combinacional que compara dos nmeros positivos A y B y proporciona tres salidas (A < B), (A = B) y u (A > B). Como son mutuamente excluyentes, conociendo dos de estas funciones es posible determinar la tercera, con lo que realmente slo necesitamos implementar 2. Por ejemplo, o para obtener la funcin (A < B) a partir de las otras dos: o (A > B) 0 0 1 1 (A = B) (A < B) 0 1 1 0 0 0 1

Donde en la ultima combinacin de entradas se ha puesto una indiferencia pues no o podr darse en la prctica. Existen dos posibilidades para expresar (A < B). Si la indifea a rencia se toma como 0, entonces (A < B) = (A>B) + (A=B) y si la indiferencia se toma como 1, entonces (A < B) = (A>B) (A=B). Las expresiones de (A = B) y (A > B) en funcin de las otras dos se obtienen del mismo modo. En general, o (A>B) = (A=B) + (A<B) o (A>B) = (A=B) (A<B)

(A=B) = (A>B) + (A<B)

(A=B) = (A>B) (A<B)

3.4. COMPARADORES

51

(A>B)
B 1B 0 A 1A 0

(A<B)
B 1B 0 A 1A 0

(A=B)
B 1B 0 A 1A 0

00 01 11 10

00 01 11 10
1 1 1 1 1

00 01 11 10
1 1 1 1

00 01 11 10
1 1 1 1 1 1

00 01 11 10

00 01 11

10

Figura 3.13: Diagramas de Karnaugh de las salidas de un comparador de 2 bits. Cuadro 3.4: Tablas de verdad de un comparador de 1 bit. Ai 0 0 1 1 Bi 0 1 0 1 (Ai >Bi ) 0 0 1 0 (Ai =Bi ) 1 0 0 1 (Ai <Bi ) 0 1 0 0

(A<B) = (A>B) + (A=B)

(A<B) = (A>B) (A=B)

Para implementar las funciones (A > B), (A = B) y (A < B) existen dos posibilidades. La primera de ellas es partir de los Diagramas de Karnough. As por ejemplo, si A y B son , nmeros de dos bits A = A1 A0 y B = B1 B0 , entonces las funciones tendrn las siguientes u a expresiones m nimas (ver gura 3.13):

(A>B) = A1 B1 + A0 B1 B0 + A1 A0 B0 (A=B) = A1 A0 B1 B0 + A1 A0 B1 B0 + A1 A0 B1 B0 + A1 A0 B1 B0 (A<B) = A1 B1 + A1 A0 B0 + A0 B1 B0 Sin embargo, si utilizamos este mtodo, el diseo se complica si el nmero de bits e n u de las palabras a comparar es grande. La segunda posibilidad es encontrar una forma simple de disear comparadores de cualquier nmero de bits a partir de un circuito que n u compare un slo bit, es decir, usar una estrategia modular. Si el bit ms signicativo o a de A es mayor (menor) que el bit ms signicativo de B, entonces A es mayor (menor) a que B. Si An1 =Bn1 entonces seguimos comparando el siguiente bit ms signicativo y a as sucesivamente. Por ultimo, dos nmeros son iguales si todos sus bits son iguales, es u decir, Ai = Bi , i = 0, ..., n 1.

52

TEMA 3. FUNCIONES ARITMETICAS Y LOGICAS


A3 A2 A1 A0 B3 B2 B1 B0

(A>B) (A=B) (A<B)

Figura 3.14: Comparador binario de 4 bits. El primer paso consiste pues en disear un circuito comparador de un bit, es decir, n las funciones (Ai >Bi ), (Ai =Bi ) y (Ai <Bi ). Las tablas de verdad de cada una de ellas se pueden ver en la tabla 3.4, de donde deducimos que sus expresiones m nimas son: (Ai>Bi ) = Ai Bi (Ai=Bi ) = Ai Bi (Ai<Bi ) = Ai Bi A partir de este bloque, se pueden implementar comparadores de n bits. El caso n=2 es trivial y se puede comprobar fcilmente que los resultados coinciden plenamente con a los obtenidos al minimizar las funciones completas utilizando los mapas de Karnaugh. Vamos a construir ahora un comparador de 4 bits (gura 3.14). Sean A = A3 A2 A1 A0 y B = B3 B2 B1 B0 los nmeros a comparar. Denimos xi = (Ai =Bi ) = Ai Bi , i = 0, ..., 3 u (funcin de igualdad de los bits i). o A y B sern iguales si se verica que los cuatro bits son iguales, o lo que es lo mismo, a si (A3 = B3 ) y (A2 = B2 ) y (A1 = B1 ) y (A0 = B0 ). En el algebra de Boole esto es equivalente a la funcin: o (A=B) = (A3=B3 )(A2=B2 )(A1=B1 )(A0=B0 ) = x3 x2 x1 x0 A ser mayor que B en si: A3 > B3 o (A3 = B3 y A2 > B2 ) o (A3 = B3 y A2 = B2 y a A1 > B1 ) o (A3 = B3 y A2 = B2 y A1 = B1 y A0 > B0 ). Entonces:

(A>B) = (A3>B3 ) + (A3=B3 )(A2>B2 ) + (A3=B3 )(A2=B2 )(A1>B1 ) +(A3=B3 )(A2=B2 )(A1=B1 )(A0>B0 ) = A3 B3 + x3 A2 B2 + x3 x2 A1 B1 + x3 x2 x1 A0 B0 Del mismo modo, A ser menor que B si: A3 < B3 o (A3 = B3 y A2 < B2 ) o (A3 = B3 a y A2 = B2 y A1 < B1 ) o (A3 = B3 y A2 = B2 y A1 = B1 y A0 < B0 ). Entonces:

3.4. COMPARADORES

53

A6 - A4

A 15 - A 12

(A>B) (A=B)

(A>B)
B 15 - B 12

(A<B) (A>B) (A=B)

(A=B)
B6 - B4

(A<B)

A 11 - A 8

B 11 - B 8

(A<B) (A>B) (A=B)

(A>B) (A=B) (A<B)

A7 - A 4 A3 - A0

(A>B) (A=B) (A<B)

B 7 -B 4

(A<B) (A>B) (A=B)

A3 - A 0

B3 - B0 B3- B 0

(A<B)

Figura 3.15: Ejemplos de comparacin sobre palabras de ms de 4 bits. o a

(A<B) = (A3<B3 ) + (A3=B3 )(A2<B2 ) + (A3=B3 )(A2=B2 )(A1<B1 ) +(A3=B3 )(A2=B2 )(A1=B1 )(A0<B0 ) = A3 B3 + x3 A2 B2 + x3 x2 A1 B1 + x3 x2 x1 A0 B0

3.4.2.

Comparacin de un mayor n mero de bits o u

Para comparar palabras de un mayor nmero de bits, podemos utilizar el comparador u para palabras de 4 bits que acabamos de disear. En la gura 3.15 se muestran dos n ejemplos. La idea es comparar los nmeros en bloques de 4 bits: si la comparacin de los u o 4 bits ms signicativos nos indica que un nmero es mayor o menor que otro entonces a u no nos hace falta seguir comparando; si, por el contrario, los 4 bits ms signicativos son a iguales entonces necesitamos seguir comparando el o los siguientes bloques de 4 bits.

3.4.3.

Comparacin de n meros con Signo o u

Para disear el comparador de dos nmeros con signo debemos tener en cuenta en n u que formato est representado. En cualquier caso, dos nmeros son iguales si todos sus a u bits son iguales, excepto en Signo-Magnitud y en Complemento a 1 en los cuales el cero posee dos representaciones. Si no tenemos en cuenta esa peculiaridad, entonces la funcin o (A = B) es la misma para todas las representaciones.

54

TEMA 3. FUNCIONES ARITMETICAS Y LOGICAS


B3 A2 A1 A0 A3 B2 B1 B0

(A>B) (A=B) (A<B)

Figura 3.16: Comparador de nmeros en Complemento a 1 y Complemento a 2. u

Para calcular cuando un nmero en Complemento a 1 o en Complemento a 2 es u mayor o menor que otro, podemos utilizar un comparador binario. Para ello debemos de intercambiar los bits ms signiticativos tal y como se muestra en la gura 3.16 para 4 a bits. Supongamos que queremos comparar un nmero A negativo (A3 = 1) con otro B u positivo (B3 = 0). El comparador compara los nmeros suponiendo que estn en formato u a binario puro. Al intercambiar los bits de signo, estamos haciendo que el bit ms signia cativo de B sea 1, mientras que el ms signicativo de A es 0. Por lo tanto, B es mayor a que A. El caso de A positivo y B negativo es exactamente igual. Supongamos que ambos nmeros son positivos. En ese caso estamos intercambiando u dos ceros y comparamos los nmeros tal y como estaban. El comparador nos dir cual u a de los dos es mayor (menor) o si son iguales (recordemos que los nmeros positivos se u codican igual que en binario puro). El unico caso que nos falta es cuando los dos nmeros son negativos. Al igual que u antes, no tiene sentido intercambiar los signos puesto que ambos son 1. El comparador har la comparacin suponiendo que los nmeros estn codicados en binario puro. El a o u a resultado ser correcto porque tanto en Complemento a 1 como en Complemento a 2, el a orden (de mayor a menor) de los nmeros negativos se mantiene si se considera que los u nmeros estn codicados en binario puro. u a Por ejemplo, -5 es mayor que -7 pero menor que -3. En Complemento a 1 con 4 bits, -5 es 1010, -7 es 1000 y -3 es 1100. Como podemos comprobar, en binario puro 1010 es mayor que 1000 pero menor que 1100, y eso es precisamente lo que nos dir el comparador a binario. Por otra parte, en Complemento a 2 -5 es 1011, -7 es 1001 y -3 es 1101. Tambin e se puede ver que en binario puro, 1011 es mayor que 1001 y menor que 1101. Un comparador de nmeros en Signo-Magnitud no se puede implementar utilizando u unicamente un comparador binario, sino que se necesitan puertas lgicas u otros elementos o adicionales, tal y como se ver ms adelante. a a

3.5. UNIDAD ARITMETICO-LOGICA (ALU)

55

A3 - A 0

ALU
F3 -F0 B3 - B 0

4 BITS 74181
C n+4

Cn

S3 -S0

Figura 3.17: Unidad Aritmtico-Lgica (ALU) de 4 bits. e o

3.5.

UNIDAD ARITMETICO-LOGICA (ALU)

Las unidades aritmtico-lgicas (ALU) constituyen dispositivos utiles y verstiles que e o a implementan diferentes operaciones lgicas y aritmticas, generalmente en un slo circuito o e o integrado. Funcionalmente, una unidad del tipo 74181 acepta como datos dos palabras de cuatro bits A = A3 A2 A1 A0 y B = B3 B2 B1 B0 , produciendo como resultado otra palabra de 4 bits F = F3 F2 F1 F0 (ver gura 3.17). Adems de estas l a neas posee un acarreo de entrada C n y un acarreo de salida C n+4 , activos a nivel bajo. La operacin que se realiza sobre estos datos est determinada por las entradas de o a seleccin S = S3 S2 S1 S0 y la entrada de modo M . Cuando M = L las operaciones son o aritmticas (suma, resta, etc.), mientras que cuando M = H las operaciones son lgicas e o (AND, OR, etc.). Los acarreos de entrada y de salida slo tienen sentido cuando se trata o de operaciones aritmticas. La tabla 3.5 ilustra las distintas operaciones que se realizan e en trminos del valor de las entradas S y M . e La interpretacin de la operacin realizada depende del tipo de lgica que se utilice: o o o positiva o negativa. En el caso de lgica positiva se hacen corresponder los niveles de o tensin H y L con los valores lgicos H=1 y L=0. Se utiliza la tabla de la izquierda. o o o Sea por ejemplo S = HLLH, M = L, A = LHHL, B = LLHH y C n = L. La operacin a realizar est determinada por M (L: operacin aritmtica) y S (HLLH: A plus B o A a o e plus B plus 1, sin acarreo y con acarreo, respectivamente). Al ser C n = L (existe acarreo de entrada) entonces la operacin que se realiza es F = A plus Bplus 1. Como la lgica o o es positiva A = 0110 (6) y B = 0011 (3), entonces F = 1010 = HLHL (10) y no existe acarreo de salida, C n+4 = H. En el caso de lgica negativa se considera H=0 y L=1 y se utiliza la tabla de la derecha. o Sean por ejemplo S = HLLH, M = H, A = LHLH, B = LLHL y C n = L. La operacin a o realizar es lgica (M = H) y su expresin concreta es F = A B. Al ser lgica negativa o o o A = 1010 y B = 1101, entonces F = 0111, es decir F = HLLL. En esta ocasin como la o

56

TEMA 3. FUNCIONES ARITMETICAS Y LOGICAS

Cuadro 3.5: Operacin de la ALU 74181 en lgica positiva (TABLE I) y negativa (TABLE o o II).
A3 - A 0 A7 - A 4

ALU
F3 -F 0 B3 - B 0

ALU
F7 -F 0 B7 - B 4 C n+4

4 BITS 74181

4 BITS 74181
C n+8

Cn

S3 -S 0

Figura 3.18: ALU para operandos de 8 bits. operacin que se realiza es lgica, los acarreos de entrada y salida son irrelevantes. o o Ampliacin de la longitud de los datos o A pesar de que las ALUs tienen un nmero muy limitado de bits en cuanto a la u longitud de las palabras sobre las que opera, es posible conectarlas en cascada para realizar operaciones aritmtico-lgicas con palabras de un nmero de d e o u gitos considerablemente superior. Ello se consigue conectando el acarreo de salida C n+4 de un chip con el acarreo de entrada C n del siguiente que maneja los bits ms signicativos y puenteando todas las a entradas M y S de cada uno de los chips, tal y como se ve en la gura 3.18.

3.5. UNIDAD ARITMETICO-LOGICA (ALU)

57

EJERCICIOS
3.1. Disear un sumador/restador de 2 nmeros de 4 bits en Complemento a 1. n u 3.2. Disear un circuito que acepte como entrada un nmero positivo de 4 bits y que n u genere como salida el producto de dicho nmero por 5, teniendo en cuenta que u realizar el producto de un nmero binario por 2i equivale a aadir a ese nmero i u n u ceros a su derecha. Idem pero multiplicando por 6. 3.3. Realizar un circuito que realice la suma de dos cifras codicadas en BCD. El formato BCD hace corresponder cada cifra decimal con un conjunto de 4 bits que codican su valor en binario puro. Con 4 bits se pueden representar los nmeros del 0 al 15, u pero en BCD slo utilizamos las combinaciones que codican desde el 0 hasta el o 9 (por tanto, estamos desperdiciando 6/16 de la capacidad de almacenamiento en favor de una fcil y rpida conversin de binario a decimal y viceversa). a a o 3.4. Realizar un circuito que sume dos nmeros en BCD de dos cifras cada uno. u 3.5. El cdigo AIKEN es un cdigo BCD (slo almacena desde el 0 hasta el 9) ponderado o o o con los pesos 2, 4, 2 y 1, esto es, el nmero A = A3 A2 A1 A0 en AIKEN representa u el decimal: (A3 2) plus (A2 4) plus (A1 2) plus (A0 1). Construir un sistema que realice la suma de 2 nmeros A y B codicados en AIKEN y que proporcione u el resultado (la suma) en BCD natural (esto es, con pesos 8, 4, 2 y 1). 3.6. Disear e implementar un multiplicador que multiplique 2 nmeros, uno de 3 bits n u y otro de 2 bits, utilizando i) sumadores completos (FA). ii) unidades aritmtico-lgicas (ALU). e o En ambos casos, minimizar el hardware. 3.7. Disear un comparador de 2 nmeros de 4 bits en formato Signo-Magnitud utilin u zando un comparador binario puro y puertas lgicas adicionales. o 3.8. Disear un circuito que realice el siguiente clculo: n a R = B + C + int(B 0,25) teniendo en cuenta que: B es un nmero binario puro de 3 bits. u R y C son nmeros en complemento a dos de 4 bits. u int(x) representa la parte entera de x. Adems del resultado, el circuito tendr tambin como salida una l a a e nea de overow.

58

TEMA 3. FUNCIONES ARITMETICAS Y LOGICAS

3.9. Disear un circuito que reciba como entrada un nmero de 6 bits en formato Signon u Magnitud y proporcione como salida dicho nmero transformado de acuerdo a las u reglas siguientes: Si el nmero es cero, dejarlo como est. u a Si el nmero es positivo, restarle tres. u Si el nmero es negativo, sumarle tres. u 3.10. Disear un circuito que tenga como entradas tres nmeros (A, B y C) de 4 bits n u en complemento a dos y una l nea de CONTROL, y que proporcione una salida S de 4 bits tambin en complemento a dos y una l e nea de overow, de manera que implemente el algoritmo siguiente:

if (A < B) if (A > C) S = A plus 3 else S = A minus 5 else if (A < B) if (A > C) S = A minus 5 else S = A plus 3 else if (A = B) if (CON T ROL = 0) S = B plus C plus 1 else S=C