mux&demux

14
LÓGICA DIGITAL Y MICROPROGRAMABLE TEMA 3: CIRCUITOS INTEGRADOS COMBINACIONALES. 1.- INTRODUCCIÓN. 2.- MULTIPLEXORES Y DEMULTIPLEXORES. 2.1.- Multiplexores. 2.2.- Demultiplexores. 2.3.- Implementación de funciones lógicas con multiplexores. 2.4.- Multiplexores y demultiplexores analógicos. 3.- CODIFICADORES Y DECODIFICADORES. 3.1.- Codificadores. 3.2.- Decodificadores. 3.3.- Codificador BCD a 7 segmentos. 3.4.- Implementación de funciones lógicas con decodificadores. 4.- COMPARADORES DE MAGNITUD. 5.- SUMA BINARIA. 6.- RESTA BINARIA. 7.- SUMA EN BCD NATURAL. 8.- UNIDAD ARITMÉTICO – LÓGICA. 9.- BIBLIOGRAFÍA. - Circuitos combinacionales MSI y LSI: Decodificadores. Codificadores. Multiplexores. Comparadores. - Circuitos aritméticos: Suma binaria. El sumador total como bloque funcional. Resta binaria, utilización del convenio de complemento a dos. Unidad Aritmético-Lógica. Suma en los códigos BCD. Multiplicación binaria. - Interconexionado para aumentar la capacidad.

Upload: felipe-martinez

Post on 02-Aug-2015

16 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: MUX&DEMUX

LÓGICA DIGITAL Y MICROPROGRAMABLE

TEMA 3: CIRCUITOS INTEGRADOS COMBINACIONALES. 1.- INTRODUCCIÓN. 2.- MULTIPLEXORES Y DEMULTIPLEXORES. 2.1.- Multiplexores. 2.2.- Demultiplexores. 2.3.- Implementación de funciones lógicas con multiplexores. 2.4.- Multiplexores y demultiplexores analógicos.

3.- CODIFICADORES Y DECODIFICADORES. 3.1.- Codificadores. 3.2.- Decodificadores. 3.3.- Codificador BCD a 7 segmentos. 3.4.- Implementación de funciones lógicas con decodificadores.

4.- COMPARADORES DE MAGNITUD.

5.- SUMA BINARIA.

6.- RESTA BINARIA. 7.- SUMA EN BCD NATURAL. 8.- UNIDAD ARITMÉTICO – LÓGICA. 9.- BIBLIOGRAFÍA. - Circuitos combinacionales MSI y LSI: Decodificadores. Codificadores. Multiplexores. Comparadores. - Circuitos aritméticos: Suma binaria. El sumador total como bloque funcional. Resta binaria, utilización del convenio de complemento a dos. Unidad Aritmético-Lógica. Suma en los códigos BCD. Multiplicación binaria. - Interconexionado para aumentar la capacidad.

Page 2: MUX&DEMUX

Curso 2009-10 Lógica Digital y Microprogramable

David Sornosa Cervera 2

1.- INTRODUCCIÓN.

En este tema se pretenden estudiar los circuitos integrados combinacionales más comunes, a parte de las puertas lógicas que ya se han estudiado en los temas anteriores.

Circuitos combinacionales significa que su salida o salidas dependen

exclusivamente del valor actual de sus entradas. Estos circuitos integrados se dice que son MSI (Medium Scale Integration) o LSI

(Large Scale Integration) según el número de transistores que contiene el circuito integrado (de 101 a 1000 para MSI y de 1001 a 10000 para LSI).

Los primeros circuitos que estudiaremos serán los multiplexores / demultiplexores

y los codificadores / decodificadores. Veremos qué funciones realizan y cuáles son sus características principales. A continuación veremos los circuitos comparadores.

Por último estudiaremos como realizar operaciones aritméticas con puertas lógicas,

que como sabemos trabajan con el álgebra de Bool, y qué integrados nos permiten realizar estas operaciones. Aunque hoy en día nos permiten realizar cualquier operación nos centraremos en las dos más básicas: suma y resta, ya que a partir de sumas se multiplica y a partir de sumas y multiplicaciones se implementa cualquier otra operación mediante el desarrollo en serie de Taylor.

2.- MULTIPLEXORES Y DEMULTIPLEXORES. 2.1.- Multiplexores.

Un multiplexor es un circuito selector de datos. Es decir, su función es seleccionar, de un conjunto de datos de entrada, cual se envía a la salida. Si esta función se realizase de forma manual, en lugar de multiplexor se necesitaría simplemente un conmutador. En cambio, para realizar la selección del dato que se envía a la salida, se utilizan unas entradas de selección.

S1 S0 Y 0 0 I0

0 1 I1

1 0 I2

1 1 I3

Figura 1-a. Conmutador manual

Figura 1-b. Multiplexor de 4 entradas

Figura 1-c. Tabla de verdad.

En la figura 1-b, las entradas de datos son I0, I1, I2 e I3; mediante el código binario

introducido en las entradas de selección S1 y S0 se envía el dato correspondiente a la salida Y, y el dato negado aparece en la salida Y . Algunos ejemplos de multiplexores en la familia TTL son:

- 74151: Multiplexor de 8 a 1. - 74153: Multiplexor doble de 4 a 1.

MUX de4

entradas

I0I1I2I3 Y

Y

S1 S0

I0

I1

I2I3

Y

Entradas dedatos

Salida

Page 3: MUX&DEMUX

Curso 2009-10 Lógica Digital y Microprogramable

David Sornosa Cervera 3

2.2.- Demultiplexores.

Un demultiplexor, es un circuito que realiza la función contraria al multiplexor, es

decir, envía un dato a su entrada a una de sus salidas, por lo tanto es un circuito distribuidor de datos. Al igual un multiplexor, tiene unas entradas se selección.

S1 S0 O3 O2 O1 O0

0 0 0 0 0 I 0 1 0 0 I 0 1 0 0 I 0 0 1 1 I 0 0 0

Figura 2-a. Conmutador manual

Figura 2-b. Demultiplexor de 4 salidas

Figura 2-c. Tabla de verdad.

En la familia TTL, la mayoría de los demultiplexores son también decodificadores,

como por ejemplo el 74154, que tiene 16 salidas. 2.3.- Implementación de funciones lógicas con multiplexores.

Además de su uso en la selección de datos, un multiplexor se puede utilizar para

implementar directamente una función lógica a partir de su tabla de verdad, sin que sea necesario simplificar, ni obtener su forma canónica.

Consiste en hacer coincidir la tabla de verdad de un multiplexor (figura 1-c) con la

tabla de verdad de la función. Para ello, las variables de entrada a la función se introducen en las entradas de selección, y se hacen coincidir las entradas de datos del multiplexor (I0 ... In) con la función, es decir, se colocan ‘1’ y ‘0’ en las entradas de datos correspondientes para que la salida del multiplexor coincida con la función.

Veamos un ejemplo de función de 3 entradas (a, b, c):

a b c f MUX 0 0 0 1 I0

0 0 1 1 I1

0 1 0 0 I2

0 1 1 0 I3 1 0 0 1 I4

1 0 1 0 I5

1 1 0 1 I6

1 1 1 0 I7

Figura 3. Multiplexor para implementar una función lógica.

DEMUXde 4

salidas

O0

O1

O2

O3

S1S0

I

O0

O1

O2

O3

I

Entrada Salidas dedatos

74151

I0

I1

I2

I3

Y

Y

S1 S0

I4

I5

I6

I7

E

S2

a b c

‘1’

f

f

Page 4: MUX&DEMUX

Curso 2009-10 Lógica Digital y Microprogramable

David Sornosa Cervera 4

Se ha empleado el multiplexor 74151, porque es de 8 entradas de datos (igual que el número de combinaciones de la función lógica a implementar). La señal de entrada al multiplexor E, quiere decir enable1, es decir permitir (la entrada) en inglés, por lo que el multiplexor no da la salida correcta si esta señal digital no está activada. Se observa en la figura, que la entrada E está precedida del símbolo de la negación, por lo que es una señal activada por ‘0’ lógico, motivo por el cual está conectada a la masa del sistema.

Al comparar la tabla de verdad con la salida del multiplexor, se observa que I0, I1, I4

e I6 deben ser iguales a ‘0’, por lo que se unen a la masa del sistema digital, mientras que I2, I3, I5 e I7 deben ser ‘1’, por lo que se conectan a un punto de este valor digital. De esta forma, la salida del multiplexor es la función f, teniendo disponible además la función f negada, por si fuera necesaria. 2.4.- Multiplexores y demultiplexores analógicos.

Es interesante conocer que también hay multiplexores y demultiplexores analógicos, esto quiere decir que tienen las mismas líneas de selección que los digitales, pero la información que seleccionan si son multiplexores o que distribuyen si son demultiplexores es analógica, en lugar de digital. Por ejemplo está el 4067, fabricado en tecnología CMOS pero con compatibilidad con la familia TTL. Este integrado tiene entradas digitales para seleccionar el canal a multiplexar o demultiplexar, además de la típica entrada de habilitación, mientras que la información que manejan los canales es analógica.

3.- CODIFICADORES Y DECODIFICADORES. 3.1.- Codificadores.

Un codificador es un circuito que codifica desde un sistema de numeración o código al sistema binario. En general, un codificador tiene N salidas y 2N entradas, de forma que sólo una de sus entradas debe estar activada, y la salida se activa la combinación binaria correspondiente al número representado por la entrada activa. Por si acaso se activa más de una señal de entrada a la vez, los codificadores suelen incorporar algún tipo de prioridad, para que se pueda saber que entrada considerar, en caso de coincidencia. Veamos dos ejemplos:

Figura 4-a Figura 4-b

1 Algunos fabricantes a esta entrada la llaman Strobe

O0

O1

O2

Codificador 8a 3 (octal a

binario)

0

1

2

3

4

5

6

7

Entradas Salidas Codificadordecimal a

BDC

0

1

2

3

4

5

6

7

O0

O1

O2

O38

9

Entradas Salidas

Page 5: MUX&DEMUX

Curso 2009-10 Lógica Digital y Microprogramable

David Sornosa Cervera 5

El circuito de la figura 4-a, es un codificador 8 a 3, o lo que es lo mismo, un codificador de octal (sistema numérico de base 8) a binario. Según que entrada (0 .. 7) se active, es decir se ponga a ‘1’, activa la combinación correspondiente en las salidas (O2, O1 y O0).

El circuito de la figura 4-b, es un codificador de decimal a binario, o a BCD, que en

este caso es lo mismo por ser la entrada máxima 9. La presencia de inversores, tanto a la entrada como a la salida, es muy común en este tipo de circuitos; a la entrada quiere decir que la entrada se activa con ‘0’, y la salida está invertida respecto al binario normal (o al BCD normal). Por ejemplo, si todas las entradas están a ‘1’ excepto la entrada 3, que está a ‘0’, la combinación en la salida es: ‘1100’. Si invertimos bit a bit este número nos queda: ‘0011’, que es el número 3 en binario.

3.2.- Decodificadores.

Un decodificador tiene la función contraria de un codificador, por lo tanto en

general tienen N entradas y 2N salidas, de forma que según la combinación binaria que se introduce en las entradas, se activa la salida correspondiente. En principio, estos decodificadores sólo deben tener una salida activa. Veamos dos ejemplos:

Figura 5-a Figura 5-b

El decodificador de la figura 5-a es de binario a octal, es decir en función del

número binario introducido por las entradas (I1, I2, I3) activa una única salida, la que corresponda al número binario.

La figura 5-b muestra un decodificador de BDC a decimal. Su funcionamiento es

como el de la figura anterior, pero al estar negadas las salidas, la salida activada está a ‘0’, y el resto a ‘1’. Por ejemplo, si se introduce el número ‘0101’ se pone la salida número 5 a ‘0’, y el resto se ponen a ‘1’. Como sólo tiene 10 salidas, las combinaciones binarias superiores a 9 no producen efecto en la salida.

3.3.- Decodificadores BCD a 7 segmentos.

Un caso especial de decodificadores son los decodificadores de BCD a 7

segmentos. Un display o visualizador de 7 segmentos no es más que un conjunto de 7 diodos LED, unidos o bien por el ánodo (ánodo común), o bien por el cátodo (cátodo común), y que tienen un extremo libre de cada diodo para poder encenderse o apagarse.

Decodifica-dor BCD a

decimal

(7442)

I0

I1

I2

I3

0

1

2

3

4

5

6

7

8

9

Entradas Salidas

I0

I1

I2

Decodifica-dor

0

1

2

3

4

5

6

7

Entradas Salidas

Page 6: MUX&DEMUX

Curso 2009-10 Lógica Digital y Microprogramable

David Sornosa Cervera 6

Según se iluminan unos segmentos u otros, se pueden formar números y algunas pocas letras. Las entradas de este decodificador sirven para introducir en código BCD el número que se desea representar, y es el decodificador el encargado de activar las salidas correspondientes para que se vea la cifra decimal.

La figura 6-a muestra la disposición de los diodos LED en un visualizador de 7

segmentos, la figura 6-b muestra sus conexiones en cátodo común, y la figura 6-c, implementa el conjunto decodificador más visualizador (en este caso de ánodo común), donde el dígito a representar se introduce por las entradas I0 a I4 en código BCD.

En TTL existen dos decodificadores de BCD a 7 segmentos: el 7447 y el 7448.

Figura 6-a Figura 6-b Figura 6-c El 7447 es el que se ha empleado en la figura 6-c, y sirve para displays de 7

segmentos de ánodo común. En estos displays, se conecta el terminal común a la tensión de alimentación (+ 5 V por ser TTL) de forma que para encender uno de los leds se debe de conectar éste a masa, que coincide con el ‘0’ lógico en TTL. Es por esto que las salidas del decodificador 7447 se muestran como negadas, ya que para mostrar por ejemplo un 8 en el display (es decir, todos los leds encendidos), se deben poner a ‘0’ todas las salidas a – g del decodificador.

El 7448 es el integrado que sirve para decodificar las salidas de un display 7

segmentos de cátodo común. En estos displays, el se conecta el terminal común a la masa del sistema (‘0’ lógico) y para encender un led hay que darle la tensión de alimentación (‘1’ lógico).

Tanto el 7447 como el 7448 tienen otras entradas que pueden resultar interesantes

en algunos casos. Todas estas entradas son activas a nivel bajo (‘0’ lógico). La entrada LT (lamp test) sirve para encender todos los leds a la vez. La entrada RBI (ripple blanking input) sirve para apagar todos los leds cuando la entrada BCD sea 0. Si la entrada RBI se usa conjuntamente con la salida RBO (ripple blanking output) se pueden conectar varios decodificadores en serie y que se apaguen automáticamente los 0 a la izquierda. Pero la salida RBO comparte pin en el circuito integrado con la entrada BI (blanking input), de forma que se llama BI/RBO (blanking input / ripple blanking output). Cuando se utiliza como entrada, sirve para apagar todos los leds independientemente del valor BCD de sus entradas.

a

b

cd

e

fg

b

c

d

e

f

g

a

7 segmentos(cátodo común)

b

c

d

e

f

g

aI0

I1

I2

a

b

c

d

e

f

g

Decodifica-dor BCD a

7segmentos

(7447)

I3

VCC

Page 7: MUX&DEMUX

Curso 2009-10 Lógica Digital y Microprogramable

David Sornosa Cervera 7

3.4.- Implementación de funciones lógicas con decodificadores. De la misma forma que es posible realizar funciones lógicas con multiplexores,

también lo es con decodificadores binarios. En efecto, si el decodificador usa lógica positiva en sus salidas, basta con usar las entradas binarias del decodificador como las entradas de la función, y tomar la salida de la función de una puerta OR que una las salidas que producen un ‘1’ en la tabla de verdad.

Veamos un ejemplo de función de 3 entradas (a, b, c): nº a b c f 0 0 0 0 1 1 0 0 1 1 2 0 1 0 0 3 0 1 1 0 4 1 0 0 0 5 1 0 1 1 6 1 1 0 1 7 1 1 1 0

Como se observa en la figura 7-a, se han unido en una puerta OR todas las salidas

correspondientes a las combinaciones binarias que producen un ‘1’ a la salida. Sin embargo, es bastante frecuente que los decodificadores trabajen con lógica inversa a sus salidas, esto es, que la salida correspondiente a la combinación de sus entradas se active a ‘0’ y el resto se mantengan desactivadas a ‘1’. En ese caso, las salidas correspondientes se deben unir por medio de una puerta NAND (ver figura 7-b).

Figura 7-a Figura 7-b

4.- COMPARADORES DE MAGNITUD. Son circuitos combinaciones en los cuales se introducen dos números binarios,

llamados A y B, de un determinado número de bits, y como resultado indican si A es mayor que B, si A es menor que B o si son iguales, activando una de las tres salidas que poseen.

La figura 8 muestra el circuito integrado 7485, que se encuentra disponible en las

familias TTL y CMOS.

Page 8: MUX&DEMUX

Curso 2009-10 Lógica Digital y Microprogramable

David Sornosa Cervera 8

El 7485 es un comparador de números de 4 bits. Tiene como entradas los 8 bits correspondientes a los dos números (llamados A y B), más 3 entradas: A>B, A=B y A<B que se utilizan para ampliar el número de bits. Posee también tres salidas para indicar si A>B, A=B ó A<B, activas todas por nivel alto.

Figura 8. Para conseguir ampliar números de más de 4 bits, se van conectando en cascada los

comparadores de 4 bits, de forma que el primer comparador empiece por los 4 bits de menor peso, y sus salidas se conectan a las entradas A>B, A=B y A<B del siguiente. Esta forma de conexión se continúa hasta acabar con el número total de bits, quedando el último comparador con los bits de mayor peso. La figura 9 muestra cómo comparar números de 8 bits con dos comparadores de 4 bits.

Figura 9. Obsérvese la conexión de las entradas A>B, A=B y A<B del primer comparador

(menor peso), al no haber ninguna comparación anterior se activa la entrada A=B.

7485

A0

A3

A2

A1

B0

B3

B2

B1

A<B

A>B

A=B

A<B

A>BA=B

SalidasEntradas

7485

A0

A3

A2

A1

B0

B3

B2

B1

A<B

A>B

A=B

A<B

A>BA=B

7485

A0

A3

A2

A1

B0

B3

B2

B1

A<B

A>B

A=B

A<B

A>BA=B

A0

A3

A2

A1

B0

B3

B2

B1

A4

A7

A6

A5

B4

B7

B6

B5

5 V

Menor peso Mayor peso

Page 9: MUX&DEMUX

Curso 2009-10 Lógica Digital y Microprogramable

David Sornosa Cervera 9

5.- SUMA BINARIA. La suma binaria o suma en sistema binario se realiza de la misma forma que la

suma en sistema decimal. En cualquier sistema, se suman las cifras de igual peso junto con el acarreo de la cifra anterior, y se obtiene un resultado; este resultado puede ser de una cifra o de dos, en este último caso se pasa la segunda cifra como acarreo para la suma de las siguientes cifras. Veamos un ejemplo en sistema decimal y en sistema binario.

Ambas sumas representan exactamente los mismos números. En la suma en sistema

decimal, empezamos por los dígitos de menor peso, 8 y 5, cuya suma es 13, por lo que representamos el 3 y pasamos un acarreo de 1 a la siguiente suma, por lo que ésta es:

10127 =++ , donde nuevamente representamos la cifra 0 y pasamos un 1 de acarreo a la siguiente suma, 6123 =++ , obteniéndose de esta forma el resultado 603.

En sistema binario, se opera de la misma manera. En el ejemplo, las sumas

correspondientes de los 5 bits de menor peso dan 0 ó 1 y por lo tanto no producen acarreo. Pero la suma del sexto bit es 11+ , cuyo resultado obviamente es 2, que en binario se escribe 10, esto quiere decir que el resultado que se coloca en el sexto bit es 0, y se pasa el acarreo a la suma de los bits siguientes. Como los dos siguientes bits son 1, sumados al bit de acarreo da 3, lo que en binario es escribe 11, por lo que se pone un 1 en la séptima cifra y se vuelve a pasar el acarreo. Siguiendo de esta forma se obtiene el resultado de la suma binario, que se puede comprobar igual al resultado decimal.

Basándose en lo explicado, se puede diseñar un sumador total (full adder en inglés)

para dos únicos bits, con entrada de acarreo del bit anterior, y salida de acarreo para el bit siguiente, para cual se parte de la tabla de verdad de este circuito sumador.

A i Bi Ci Si Ci+1

0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 1 1 0 0 1 0 1 0 1 0 1 1 1 0 0 1 1 1 1 1 1

Las entradas a la tabla de verdad son los dos bits del mismo

peso Ai, Bi, los cuales deben ser sumados también con el acarreo Ci, el cual procede de la suma de los bits anteriores.

Como salidas, obtenemos la cifra correspondiente a la suma

de los bits, Si, y la salida de acarreo Ci+1, la cual debe sumarse con los dos bits siguientes.

Tabla de verdad

De esta tabla de verdad se puede deducir que las funciones lógicas a implementar

son:

iiii CBAS ⊕⊕=

3 7 82 2 5+

306

1 00 0 0 0

001 1 1 11 1 1 1

1+

111111 0000

Page 10: MUX&DEMUX

Curso 2009-10 Lógica Digital y Microprogramable

David Sornosa Cervera 10

iiiiii1i C·BC·AB·AC ++=+ La figura 10-a muestra la implementación mediante puertas lógicas de un sumador

total, y la figura 10-b muestra su símbolo lógico.

Figura 10-a Figura 10-b Uniendo bloques “sumador total”, como el mostrado en la figura 10-b, se puede

hacer un sumador del número de bits que se desee. En la figura 11 se muestra un sumador de 4 bits.

Figura 11.

Con este tipo de estructuras, se pueden lograr sumadores de cualquier número de

bits, con el único inconveniente de que para obtener el resultado correcto hay que esperar a que el acarreo llegue al bit de mayor peso (MSB). Este retardo va a ser proporcional al número de bits de la suma.

Figura 12.

Ai Bi Ci

Si

Ci+1

Ai

Bi

Ci

Si

Ci+1

Ai

Bi

Ci

Si

Ci+1

Ai

Bi

Ci

Si

Ci+1

Ai

Bi

Ci

Si

Ci+1

Ai

Bi

Ci

Si

Ci+1

A0 A1 A2S0 S1 S2 S3

B0 B1 B2 B3

A3

C

LSB MSB

7483

A0A3 A2 A1 B0B3 B2 B1

C0 C4

S3 S2 S1 S0

Page 11: MUX&DEMUX

Curso 2009-10 Lógica Digital y Microprogramable

David Sornosa Cervera 11

Existen circuitos integrados sumadores, como por ejemplo el 7483 y el 74283 (figura 12), que son sumadores de 4 bits, los cuales siguen básicamente la estructura explicada, con la única diferencia de que implementan circuitos que mejoran el retardo comentado del acarreo, llamados carry lookahead, que calculan los acarreos en paralelo con las sumas, sin esperar al acarreo anterior, lo que mejora la rapidez del sumador.

6.- RESTA BINARIA.

Se podría, de manera similar a como se ha implementado un sumador digital binario, implementar un circuito restador, pero esta forma de operar no sería muy práctica. Lo práctico es buscar la forma de que la suma y la resta se puedan realizar con el mismo circuito. A continuación se explica cómo aprovechar los circuitos sumadores para realizar restas.

Sabido es que restar no es más que sumar el minuendo con el sustraendo cambiado

de signo, por lo tanto hay que introducir el signo negativo en el sistema binario. Para diferenciar entre los números positivos y negativos en binario se añade delante del bit de mayor peso un bit de signo (BS), el cual cuando es 0 indica que el número es positivo y cuando es 1 indica que el número es negativo.

Para cambiar el signo de un número binario hay varios métodos, entre ellos el

complemento a uno y complemento a 2. El complemento a uno de un número binario consiste en negar o complementar

uno a uno todos los bits de un número. El complemento a dos de un número consiste en realizar el complemento a uno y

sumarle uno al resultado. La figura 13-a muestra el resultado de realizar el complemento a uno (C.A.1) al

número 7 (en binario 111), mientras que en la figura 13-b se muestra el proceso para realizar el complemento a dos también del número 7.

Figura 13-a. Figura 13-b.

Cada forma de realizar el complemento o cambiar el signo origina una forma de

restar en binario. En la resta mediante complemento a uno, se cambia el signo al sustraendo (se

complementa), se suma con el minuendo y al resultado hay que sumarle el bit de acarreo que aparece después del bit de signo.

70 0 01

0 1 1 1BS

-7 (C.A.1)

C.A.1

001+

11

70 0 01

0 1 1 1BS

-7 (C.A.2)

Page 12: MUX&DEMUX

Curso 2009-10 Lógica Digital y Microprogramable

David Sornosa Cervera 12

En la resta mediante complemento a dos, simplemente se suma el minuendo con el complemento a dos del sustraendo, y éste es directamente el resultado, de forma que el bit de acarreo que aparece después del bit de signo no tiene ningún significado.

En cualquiera de los dos casos, si el resultado es positivo (bit de signo igual a 0), se

interpreta tal cual, pero si el resultado es negativo (bit de signo igual a 1), el resultado está codificado en complemento a uno o complemento a dos, y se debe realizar el complemento correspondiente si se desea conocer su valor absoluto.

Las figuras 14-a y 14-b muestran dos ejemplos para realizar la resta 7 – 5 en

complemento a uno y en complemento a dos respectivamente, donde el bit de acarreo final se ha llamado C, y el bit de signo BS. Obsérvese que en la figura 14-a (resta en complemento a uno), el bit de acarreo final se suma para obtener el resultado final (2), mientras que en la figura 14-b (resta en complemento a dos), el mismo bit se deshecha para obtener el mismo resultado.

Figura 14-a. Figura 14-b. Normalmente los circuitos digitales utilizan los mismos circuitos para realizar

sumas y restas, por lo que se prefiere pasar el sustraendo como el complemento a dos del número que se quiere restar, ya que de esta forma se obtiene directamente el resultado. 7.- SUMA EN BCD NATURAL.

Sumar en BCD natural es el equivalente en lógica digital a sumar en decimal, sólo que cada cifra se obtiene del código binario BCD correspondiente. Por lo tanto, para sumar cada cifra del primer número con su cifra correspondiente del segundo número se necesitará un sumador de 4 bits. Pero una vez hecho esto, pueden ocurrir tres cosas:

- La suma resultante es igual o menor que nueve. Por ejemplo: 5 + 3 = 8. En este

caso el sumador ya daría el resultado correcto y no se genera acarreo a la cifra siguiente.

- La suma resultante es mayor que nueve y menor que dieciséis. En este caso, se produce un acarreo a la cifra siguiente, y además la cifra a mostrar es el resultado de la suma menos 10. Por ejemplo: 5 + 7 = 12, esta suma genera acarreo, y además el sumador debe de dar como resultado 2, es decir, 12 – 10.

- La suma resultante es mayor o igual a dieciséis. En este caso, el sumador produce un acarreo, y para obtener la cifra correcta hay que sumarle 6. Por ejemplo: 8 + 9 = 17. En este caso, el sumador mostraría de resultado 1, generaría acarreo y el resultado que debe mostrar es 7, es decir, 1 + 6.

17

0 010 1 1 1

BS

-5 (C.A.1)0 0 0 11

1+0 0 1 02

C

17

0 110 1 1 1

BS

-5 (C.A.2)0 0 1 012

C

Page 13: MUX&DEMUX

Curso 2009-10 Lógica Digital y Microprogramable

David Sornosa Cervera 13

En consecuencia, para sumar en BCD hay que realizar la suma decimal cifra a cifra, y si el resultado es menor o igual a nueve se deja como está y no genera acarreo, si es superior a nueve y menor de dieciséis ha de generar acarreo y se le debe restar diez, y por último, si es superior a dieciséis debe generar acarreo y se le debe sumar seis.

Como hemos visto, para restar en binario existen 2 métodos: el complemento a uno

y el complemento a dos; como el segundo método es más directo (porque da directamente el resultado) es el que normalmente se empleará. Así que en los casos en que hay que restarle al resultado diez, que en binario es 1010, habrá que sumar al resultado el complemento a dos de diez, que es 0110. Dicho de otra forma, cuando el resultado de la suma BCD es 10 o más, hay que sumarle 6 en binario (es decir 0110) a dicho resultado tanto si es menor o mayor de dieciséis para obtener la cifra correspondiente en BCD.

Entonces, para sumar dos cifras en BCD, se necesitan dos sumadores, uno que haga

una primera suma, y según el resultado de ésta, un segundo sumador para sumarle seis. Por otro lado, se necesita una función lógica (que se trasladará a un circuito combinacional) que detecte cuando la suma es mayor o igual a diez, bien porque esté entre diez y quince o bien porque es mayor de quince, para saber cuando se tiene que realizar la segunda suma. Además, la misma función lógica sirve para indicar el acarreo a la siguiente cifra. Si llamamos s3, s2, s1 y s0 al resultado de la primera suma, y c al acarreo de dicha suma, la función lógica que genera el acarreo e indica que hay que sumar seis al resultado es: Cout = c + s3·s2 + s3·s1

8.- UNIDAD ARITMÉTICO - LÓGICA.

Como su nombre indica, una unidad aritmético – lógica (ALU) es un circuito que permite realizar operaciones tanto aritméticas como lógicas (es decir, del álgebra de Bool). Se pueden encontrar como circuitos independientes, y también como bloque funcional dentro de los microprocesadores y microcontroladores. De manera general, las operaciones matemáticas están codificadas en binario natural y complemento a 2 para las restas, pero se pueden codificar en otros códigos, como por ejemplo BCD natural.

Por ejemplo, está la ALU 74181, que trabaja con palabras de 4 bits (es decir, con

números binarios de 4 bits), aunque es posible su conexión en cascada para aumentar el número de bits utilizando más ALUs 74181. Este integrado tiene como entradas:

- Los cuatro bits del operando A. - Los cuatro bits del operando B. - Entradas de selección (para seleccionar la operación a realizar, entre 16). - Entrada de acarreo, por si viene de un integrado con el resultado de menor peso. - Entrada de control, para seleccionar operación entre 16 seleccionada es

aritmética o lógica. Y como salidas tiene los 4 bits del resultado, más una salida comparador (A = B) y

salidas de acarreo. Como curiosidad decir que este integrado trabaja con lógica inversa en las entradas de datos y en las salidas, es decir, que para estos pines se invierte el

Page 14: MUX&DEMUX

Curso 2009-10 Lógica Digital y Microprogramable

David Sornosa Cervera 14

significado de los ‘1’ y los ‘0’. No obstante, también es posible hacerlo trabajar con lógica directa.

Para saber más, se puede consultar el datasheet del fabricante.

9.- BIBLIOGRAFÍA.

Blanco Flores, F. y Olvera Peralta, S.: “Electrónica digital y microprogramable”. Ed. Paraninfo. Madrid, 2002.

Murgui Izquierdo, M., Vela Rozalén, J. J. y Vinagre Prieto, J. J.: “Tecnología industrial II”. Ed. Edebé. Barcelona, 1999. Remiro Domíguez, F., Gil Padilla, A. y Cuesta García, L.: “Lógica digital y microprogramable”. Ed. McGraw-Hill. Madrid, 1999. Serna Ruiz, A. y García Gil, J.V.: “Lógica digital y microprogramable”. Ed. Paraninfo. Madrid, 2000. Tocci, R: “Sistemas digitales. Principios y aplicaciones”. Ed. Prentice-Hall Hispanoamericana. México, 1996.

Val Blasco, S., Huertas Talón, J. L., Ibáñez Bellé, J., González Esteras, J. A. y Torres Leza, F.: “Tecnología industrial II”. Ed. McGraw-Hill. Madrid, 1996.