Está en la página 1de 13

DISEO ALU Enunciado:

ALU_04 Disear una unidad aritmtico-lgica de 4 bits que, en funcin de las seales de control S 2 , S 1 , S 0 realice las operaciones aritmticas y lgicas mostradas en la tabla. S2 = 0 OPERACIONES LGICAS A B A+B AB S2 = 1 OPERACIONES ARITMTICAS -A+3 -A-3 -B-4 -B-3

S1 0 0 1 1

S0 0 1 0 1

Disear con el menor coste en circuitos integrados.

Una ALU o Unidad Aritmtico Lgica (Arithmetic Logia Unit) es un circuito combinacional, es decir, un sistemas digitales cuyas salidas en cualquier instante t dependen nicamente de los valores de las entradas en ese mismo instante t (excepto retardos en la propagacin de las seales por el circuito), que puede realizar tanto operaciones lgicas como operaciones aritmticas segn cierta combinacin de seales de seleccin de operacin. En este caso dichas seales de seleccin de operacin van a ser 3 bits, S2,S1 y S0. El primero de todos ellos, S2, ser el encargado de seleccionar entre que se muestren los resultados provenientes de la unida lgica (S2=0) o de la unidad aritmtica (S2=1). S1 y S0 se encargarn de la seleccin de la operacin a realizar dentro de dichas unidades. Las seales de datos sern 2 de 4 bits cada una, A y B. Para comenzar, plantearemos el diseo de la ALU en dos unidades diferenciadas, unidad lgica y unidad aritmtica. Las entradas de datos de cuatro bits A i y B i se introducirn a ambas, sin embargo a la salida deberemos que solucin mostrar mediante el uso de

cuatro multiplexores de dos a uno, cado uno encima de otro, para as conseguir ofrecer en la salida de la ALU slo una solucin SULi o SALi. Como ya hemos mencionado esta seleccin se llevar a cabo con la entrada S2. Todas ests seales sern introducidas por el usuario. Un esquema de lo que podra ser la ALU lo tenemos aqu:

iB

S 1

S 0

S 2

4 M u ltip le x o r e s d e 2 a 1

i d

a d

i c a

L i S A L U i

i d

Sr

i t Am

t ii c a

Este mismo esquema pero realizado utilizando Orcad sera:


U A [ 3 : 0 ] n A i d a d [ 3 : 0 A ] r it m S A e t i c L U o L o [ 3 : 0 g ic ] a S A L U [ 3 : 0 ]

[ 3

: 0

[ 3 : 0

[ 2

: 0

[ 2 : 0

G V C C _ A R R O W V A L U

o u t

o u t

Como podemos ver adems de las entradas seleccionadas por el usuario, existen otras dos entradas, VCC y GND. La primera VCC es la fuente de alimentacin, es decir donde irn unidos lo 1 por ejemplo en los multiplexores de la unidad lgica; mientras que GND, del ingls ground, es la tierra, donde uniremos los 0. Y dentro de lo que llamamos Unidad Aritmtico Lgica:
S A B [ 2 [ 3 [ 3 : 0 : 0 : 0 ] U ] ] S G V C N C U D [ 1 A B : 0 S G V L C n i d [ 3 [ 3 ] [ 1 N C a : 0 : 0 : 0 D d ] S ] ] L U o g L i c [ 3 a : 0 ] L2 A 3 S U L5 S U A 6 S U 1L S U A 1 S U 1L S U A 1 S S U U S 2 1 1 1 1 1 2 1 12 2 3 20 43 3 334 4 0 5A G 7 4 0 U A B A B A B A B / B L S 1 5 7 3 1 2 3 4 4 Y 7 Y 9 Y 1 Y S S S 2S A A A A L L L L S U U U U A 0 1 2 3 L U [ 3 : 0 ] S A L U

[ 3

: 0

U A B S [ 1 S

i d [ 3 [ 3

A U

r i t m A [ 3

t i c : 0 ]

: 0 S] : 0 : 0 D C ] ]

: 0

] [ 1 N C

G V U A

El siguiente paso es la realizacin de los dos grandes bloques que componen la ALU, la unidad lgica y la unidad aritmtica. Diseo de la unidad lgica.La unidad lgica es la parte de la unidad aritmtico lgica que se encarga de realizar los calculo de tipo lgico entre las variables Ai y Bi.

Lo primero que haremos ser realizar la tabla de verdad de la unidad lgica, que se utilizar cuando la entrada en S2 este a nivel bajo. Por lo que la tabla de verdad deberemos hacerla en funcin a cuatro entradas, las de control, S1 y S0, y las de datos Ai y Bi. La tabla de verdad nicamente deberemos hacerla una vez, sin embargo, a la hora de implementar las funciones mediante multiplexores, deberemos repetir el procedimiento cuatro veces, uno por cada bit, en este caso cuatro. As quedarn cuatro salidas SUL i (SUL0, SUL1, SUL2, SUL3) que sern el resultado de las operaciones realizadas con las entradas de datos Ai (A0, A1, A2, A3,) y Bi (B0, B1, B2, B3).

S1 0 0 1 1

S0 0 1 0 1

Operacin Lgica Negacin de A Negacin de B Suma lgica de A y el complemento de B (OR) Multiplicacin lgica de A y B (AND)

Tabla de verdad: S1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 S0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 Ai 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 Bi 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 SUL i 1 1 0 0 1 0 1 0 1 0 1 1 0 1 1 1

1 0 B i B i B i 1 Bi 1

Podemos simplificar la tabla de verdad haciendo que SULi est en funcin de Bi. As haramos una tabla de verdad de 3 variables, las de control, S1 y S0, y esta vez nicamente la de datos Ai. Podramos haber simplificado igualmente por cualquier otra variable que no

fuera Bi sin embargo la he escogido por simple cuestin de comodidad ya que al haberla representado como bit menos significativo (LSB), est situada en la columna ms exterior en la derecha y es muy fcil reducir la tabla de verdad as. S1 0 0 0 0 1 1 1 1 S0 0 0 1 1 0 0 1 1 Ai 0 1 0 1 0 1 0 1 SUL i 1 0 Bi Bi Bi 1 Bi 1

Una vez tenemos la tabla de verdad reducida, podemos implementar la funcin SUL i con un multiplexor de 8 a 1, utilizando las entradas S 1 (MSB), S 0 , A i (LSB) como entradas de control del multiplexor, y los valores 1, 0 y la entrada B i y su complemento como entradas del multiplexor. La salida de dicho multiplexor ser SUL i . Como ya he comentado antes, al ser una unidad lgica con 4 bits este procedimiento habremos de repetirlo cuatro veces. Para asignar las entradas del multiplexor nos basaremos en la tabla de verdad anterior. El orden de peso en los bits es el antes ya comentado S 1 , S 0 , A i (LSB).

S1 S 0
1 0 Bi Bi Bi 1 Bi 1
0 1 2 3 4 5 6 7 2 1

Ai
0

SULi

Una vez hecho esto ya tendramos la solucin de la unidad lgica para i=0,1,2,3. El equivalente de este circuito en Orcad, utilizando el inversor 74LS04 y el multiplexor 74LS151 sera:
G N D U D D D D D D D D 1 0 1 2 3 4 5 6 7 W Y

U 1 7 B V i C C 4

2 A 2 L S 0 4 1 1 1 1 S S 1 1 0 1

4 3 2 1

6 5

S S

U U

L L

i ' i

5 4 3 2

1 0 A B 9 C 7 G 7 4 L S 1 5 1

[ 1

: 0

Este es el circuito para cada bit i, a continuacin, mostraremos el circuito donde estn implementados todos los bit de solucin de la unidad lgica. Es decir, repetiremos el proceso para este bit, pero nombraremos en vez de i, el bit correspondiente (0,1,2,3). La forma ms rpida de realizar este procedimiento es utilizar los llamados mdulos jerrquicos, donde en cada uno implementaremos este circuito. El circuito completo de la unidad lgica quedara de esta manera:
A B S G V [ 3 : 0 [ 3 : 0 [ 1 : 0 N C D C S S A B 1 1 ] ] ] S A B 0 0 o A B S G V lu i i [ 1 N C i c : 0 D C i o S n U S U U n L id L i i' a d L o S g i c U L a 1 1 ] c i o n U S U n id L i a d L o S g i c U L a 0 0 S U L [ 3 : 0 ]

U L o lu A B S G V i i [ 1 N C

: 0 D C i c i o

S n U S

U n U

L id

i' a d L o S g i c U L a 2 2

S S A B 2 2

U L o lu A B S G V i i [ 1 N C

L i

: 0 D C i c i o

S n U S

U n U

L id

i' a d L o g i c S U a L 3 3

S S A B 3 3

U L o lu A B S G V i i [ 1 N C L

L i

: 0 D C i

i'

Cada mdulo jerrquico recibe de entrada los dos bit de datos correspondientes (A i y Bi) y los dos bit de control que controlan que operacin se realiza, es decir S1 y S0. Estos dos ltimos se introducen al mdulo jerrquico directamente mediante un bus de dos bit. La salida de cada mdulo jerrquico nos proporciona la solucin para cada bit, y su negado, que no utilizamos.

Diseo de la unidad aritmtica.La unidad aritmtica se encargar de realizar los clculos de carcter aritmtico, valga la redundancia, que le indicaremos mediante las seales de control. Todos stos clculos se realizarn en complemento a dos, puesto que as ahorramos circuitera con respecto a otro tipo de representaciones de cantidades negativas. Los clculos a realizar son los siguientes:

S1 0 0 1 1

S0 0 1 0 1

OPERACIONES ARITMTICAS -A+3 -A-3 -B-4 -B-3

Para poder realizarla con el mnimo coste en circuito integrados tendremos que hacer ciertas manipulaciones:

A + 3 = A +1+ 3 A 3 = A +1 3 = A 2 = A + 2 +1 B 4 = B +1 4 = B 3 = B + 3 +1 B 3 = B +1 3 = B 2 = B + 2 +1
La implementaremos utilizando sumadores en paralelo de 4 bit 74LS83 como el siguiente:
1 8 3 1 1 7 4 1 1 1 0 U A A A A 1 2 3 4 1 2 3 4 0 4 L S C 4 8 3 1 4 ? S S S S 9 1 6 2 2 3 1 5 4

B B 6 B B 3 C 7

Puesto que necesitamos introducir los datos dentro de l a partir de 2 entradas de 4 bits (A1A4 y B1B4 en el dibujo) y una entrada de un bit que representar el acarreo de entrada vamos a construir una tabla con los datos obtenidos en la manipulaciones algebraicas anteriormente realizadas.

S1 0 0 1 1

S0 0 1 0 1

OPERACIONES ARITMTICAS -A+3 -A-3 -B-4 -B-3

EQUIVALENTE A +1+ 3 A + 2 +1 B + 3 +1 B + 2 +1

X A A 3 2

Y 3 2 B B

Cin 1 1 1 1

X e Y representarn los 4 bits de entrada de A y B del sumador respectivamente. Cin el acarreo de entrada. En el bloque X para elegir entre A, 3 y 2 utilizaremos multiplexores, lo mismo en el bloque Y. Por otro lado, para negar la variable o el nmero utilizaremos, puertas XOR de la siguiente manera:

a 0 X OR 2

a 1 X OR 2

a'

Para las entradas de control de los multiplexores que controlen la entrada en X e Y, utilizaremos una funcin de S1 y S0. Tambin sern en funcin de S1 y S0 las entradas de las puertas XOR que se encargarn de negar las variables. F1: Elegir para X: A (F1=0) o un nmero (F1=1) F2: Elegir para Y: B(F2=0) o un nmero (F2=1) F3: Negar el contenido que entrar en BA1B4 si F3=1, o la dejar sin negar si F3=0 Adems se nos presenta una nueva cuestin que resolver, habremos de elegir en ambos bloques entre 2 y 3 para F1=0 o F3=0. En el bit de peso 0 o LSB (bit menos significante)

para elegir entre 2 y 3 pondremos S0 negado ya que se corresponde dicho valor con el requerido, en vez de poner 0 o 1 constantes. Vamos a representar la tabla de verdad de las diferentes funciones:

S1 0 0 1 1

S0 0 1 0 1

F1 0 0 1 1

F2 1 1 0 0

F3 0 1 1 1

F1 = S1 ( S 0 + S 0 ) = S1 F2 = S1 ( S 0 + S 0 ) = S1 = F1 F3 = S1 S 0 + S1 S 0 + S1 S 0 = S1 + S 0
Otra situacin que se nos plantea sera poner un multiplexor de 2 a 1 que eligiera entre 0 y 1. Como los multiplexores de 2 a 1 no estn disponibles como circuitos integrados (el CI disponible son 4 puestos en cascada) vamos a realizar el diseo de dicho multiplexor:
U 6 A 3 7 C M 7 4 L S 0 4 1 2 M 2 7 4 L S 0 8 U 9 A 3 4 L S 0 8 1 2 7 4 L S 3 2 U 8 A 3 S M

1 U 1 7 A 2

1 2

Siendo M1 y M2 las entradas a coger, CM la seal de control del multiplexor y SM la salida. Vamos a ver la tabla de verdad de ste multiplexor: CM 0 1 SM M1 M2

CM ser la seal de control que controle por lo tanto (si est el multiplexor situado en el LSB) entre 2 y 3. Sin embargo esta solucin es mucho ms costosa en circuitos integrados ya que requiere la utilizacin de puertas lgicas mientras que la otra solucin es directa. Pasemos a implementar el diseo del bloque X (el que se encargar de seleccionar y modificar las entradas para las variables A1A4 del 74LS83). El bloque lgico X es el siguiente:
U ? A 3 7 4 L S U ? A 3 2 7 4 L S U ? A 3 7 4 L S U ? A 3 7 4 L S 8 6 8 6 X 3 8 6 X 2 8 6 X 1 X 0 X [ 3 : 0 X ] [ 3 : 0 ]

[ 3

: 0

A A

0 1 2 3 1 1 1 1 1

V G

C N

C D

2 3 5 6 1 0 4 3 1

U 1 1 2 2 3 3 4 4 A B A B A B A B

4 1 2 3 4 / B Y Y Y Y

4 7 9 1 2

1 2

A A

5A G 7 4

1 L S 1 5 7 2

U S 0 1 7 4

A 2 1 L S 0 4 2

[ 1

: 0

Ahora que ya tenemos el bloque lgico X, el siguiente paso ser implementar el bloque lgico Y, y de esta manera ya trabajar directamente sobre el sumador una vez que ya han sido seleccionadas las entradas.

1 2 B V [ 3 C C 1 1 1 1 1 U S 0 1 7 4 L ? A 2 S 0 U 4 ? A 2 4 ? A 3 7 4 L S 3 2 L S 0 4 1 : 0 ] 2 3 5 6 U 1 1 2 12 03 43 34 4 5A G 7 4 A B A B A B A B / B L S 1 5 7 1 2 1 ? 1 2 3 4 Y Y Y Y 4 7 9 1 2 1 2 1 2

A 3 S 8 3 6 S 8 3 6 S 8 3 6 S 8 6 U A 3 U A 2 U A 1 U A 0 S U A [ 3 : 0 ]

7 U

4 ?

L A

7 U

7 U

[ 1

: 0

7 1 2 U

Como podemos observar la diferencia ms importante con el bloque lgico X, es la suma lgica S1 y S0 para negar las variables en las puertas XOR.

Una vez ya tenemos implementados ambos bloques, la unidad aritmtica estar formada como ya hemos mencionado por un sumador 74LS83 al que se le conectarn las salidas de ambos bloques lgicos y tambin el acarreo de entrada que ir conectado a la alimentacin. Finalmente las salidas sern el resultado de la operacin que saldr en un bus de 4 bits, y el acarreo de salida, formado por un solo bit de datos.

B A A B S G V C [ 3 [ 3 [ 1 N C : 0 : 0 : 0 D B B S G V B ] ] ] S G V B

l o

q [ 3 [ 1 N C

u : X0 : 0 D C

L ][ 3 ]

g : 0 X ]

i c [ 3

X : 0 ] X X X X 0 1 2 3 0 1 2 3 1 8 3 1 1 1 1 ] 7 4 1 0 U A A A A 1 2 3 4 1 2 3 4 0 4 L C S 1 4 8 4 3 C o u t 5 S S S S 9 61 22 13 5 4 S S S S U U U U A A A A 0 1 2 3 S U A [ 3 : 0 ]

l o

Y Y Y Y o g Y : 0 i c ] [ 3 o Y : 0

l o

q [ 3 [ 1 N C

u : Y0 : 0 D C

L ][ 3 ]

B B 6B B 3 C 7

l o