02-alu
TRANSCRIPT
-
1
Unidad Lgica Aritmtica - ALU Ing. Elas Mendoza H.
(Recopilacin)
ResumenUna unidad lgica aritmtica (ALU) es una funcin
multioperacin digital de lgica combinacional. Esta puede realizar un conjunto de operaciones aritmticas bsicas y un conjunto de operaciones lgicas. El ALU tiene un nmero de lneas de seleccin para seleccionar una operacin particular de la unidad.
I. INTRODUCCIN OS diseos de la mayor parte de los sistemas de cmputo combinan las operaciones aritmticas y lgicas. El smbolo lgico estndar de una ALU aparece en la Figura
1. La salida de la ALU es un nmero binario de n bits, , que es el resultado obtenido al realizar
cierta operacin aritmtica o lgica sobre dos nmeros binarios de n bits, u operandos,
( 1 0 2nF f f= " )( )1 0 2nA a a= " y
( 1 0 2n )B b b= " . La operacin por realizar queda determinada mediante un cdigo de seleccin de k bits
, donde el nmero de posibles operaciones de la ALU es 2
( 1 0kS S S= " )k.
Diseemos un mdulo ALU que realice ocho funciones: las cuatro operaciones aritmticas estndar suma ( )A B+ , resta
, incremento y decremento ( 1A ) )( 1A+ ( )1A , as como las cuatro operaciones lgicas AND ( )A B , OR ( )A B , XOR ( )A B y NOT ( )A . Puesto que tenemos un total de ocho operaciones, el cdigo de seleccin debe tener 3 bits; es decir, . Definiremos los cdigos de seleccin como en la tabla 1 para las ocho funciones de la ALU.
2 1 0S S S S=
Queremos desarrollar el diseo de manera jerrquica, descendente. Esto significa que debemos descomponer el diseo de nivel superior de la ALU inicialmente en varios mdulos. Estos mdulos se descomponen a su vez, hasta que todo el diseo se puede representar mediante una jerarqua interconectada de mdulos funcionales pequeos y bien definidos. A continuacin, diseamos, implantamos y verificamos en forma individual los circuitos lgicos para estos mdulos. Por ltimo, los mdulos se conectan entre s
para formar el circuito ALU completo.
Fig. 1 Smbolo lgico de una ALU
Tabla 1 Tabla funcional de la ALU
Cdigo de seleccin Funcin
2S 1S 0S ALU Descripcin 0 0 0 F A B= + Suma 0 0 1 F A B= Resta 0 1 0 1F A= + Incremento 0 1 1 1F A= Decremento 1 0 0 F A B= AND 1 0 1 F A B= OR 1 1 0 F A= NOT 1 1 1 F A B= XOR
El intervalo deseado de nmeros que debe manejar la ALU
para una aplicacin dada determina el nmero de bits, n, de los nmeros binarios A, B y F. Para facilitar el desarrollo del diseo de un circuito ALU que se pueda utilizar para valores arbitrarios de n, comenzaremos nuestro diseo descendente descomponiendo nuestra ALU en secciones de 1 bit, donde la seccin i realiza las funciones deseadas sobre los bits y
de los operandos y produce el bit de resultado ia ib
if , como se muestra en la Figura 2. Para las funciones aritmticas, observe que cada seccin tiene una entrada de acarreo 1iC y una
L
-
2
salida de acarreo . Una vez que hayamos diseado el circuito para la seccin bsica de un bit, podremos crear una ALU de n bits (es decir, una ALU para la que A, B y F sean nmeros de n bits) conectando en cascada n secciones de 1 bit, como en la figura 3, con un circuito especial para generar el acarreo inicial en la entrada .
iC
1C
Fig. 2 Seccin de ALU de un bit
Fig. 3 ALU de n bits como cascada de n secciones de 1 bit
Ahora, consideremos el diseo de una seccin bsica de 1
bit. Como las cuatro operaciones aritmticas estn relacionadas, al igual que las cuatro operaciones lgicas, podemos dividir la seccin de ALU en tres mdulos: una unidad aritmtica (AU), una unidad lgica (LU) y un multiplexor de salida. La Figura 4 ilustra esto con un diagrama de bloques. Los cdigos de seleccin de la tabla 1 se definen de modo que el bit determina si la salida debe ser un resultado aritmtico o lgico. Por tanto, el multiplexor de salida selecciona la salida AU
2S if
( )iAUi
ff = para 02 =S , y la salida LU ( )
iLUiff = para . 12 =S
Ahora desarrollaremos el diseo de cada uno de los tres mdulos de la Figura 4.
Fig. 4 ALU de 1 bit dividida en unidades aritmtica y lgica separadas
II. MULTIPLEXOR El multiplexor de salida es un mdulo multiplexor 2 a 1
estndar. Como es un diseo sencillo y directo, no hay que descomponerlo ms. La Figura 5 muestra un circuito con compuerta NAND de dos niveles para el multiplexor 2 a 1.
Fig. 5 Multiplexor 2 a 1
III. UNIDAD LGICA Ahora analizaremos el diseo de la unidad lgica. Las
funciones lgicas de un sistema de cmputo digital son operaciones paralelas que se realizan un bit a la vez. Esto significa que el bit i del resultado, , es una funcin
lgica de los bits de entrada y , como lo resume la tabla 2. Un mtodo para implantar el mdulo LU consiste en utilizar una nica compuerta lgica primitiva para realizar cada una de las cuatro funciones lgicas, de modo que la salida de la compuerta deseada sea elegida mediante un multiplexor 4 a 1, segn el cdigo de seleccin .
iLUf
ia ib
01SS
-
3
Tabla 2 Funciones de la unidad lgica Funcin
1S 0S iLUf AND BAF = 0 0 iiba OR BAF = 0 1 ii ba +
NOT AF = 1 0 ia XOR BAF = 1 1 ii ba Este circuito aparece en la Figura 6, donde las entradas x y
y de la LU se conectan a las entradas y de la ALU,
respectivamente, y la salida de la LU se conecta a .
Podemos realizar el mdulo multiplexor 4 a 1 mediante el circuito de la Figura 7
ia ibf
iLUf
Fig. 6 Realizacin sencilla con multiplexor
Fig. 7 Cdigo de seleccin
Si es importante la minimizacin del nmero de compuertas
del mdulo LU, podemos graficar la informacin de la tabla 2 en un mapa K, como en las Figuras 8 y 9, obteniendo la siguiente ecuacin lgica reducida:
xSSyxSyxSxySf 01001 +++=
La Figura 10 muestra una implantacin de la ecuacin mediante compuertas NAND de dos niveles.
0111110111
__11011000110110100101
_11001100011111010110
__11010000101110000100
__0100000000
01
yXORx
xNOT
yORx
yANDx
FyxSS LU
Fig. 8 Tabla de la Verdad del LU
xy\S1S0 00 01 11 10
00 0 0 0 1 01 0 1 1 1 11 1 1 0 0 10 0 1 1 0
Fig. 9 Mapa K de la LU
Fig. 10 Circuito LU minimizado
.
-
4
IV. UNIDAD ARITMTICA Podemos disear la unidad aritmtica de nuestra ALU con
el mtodo ya descrito. La suma y la resta se realizan con un nico circuito sumador completo que usa aritmtica de complemento a dos. Para este diseo, utilizaremos el circuito sumador completo (FA) de las Figuras 11 y 12. Cuando las secciones de la ALU se conecten en cascada, las etapas FA se conectarn en la configuracin del sumador con acarreo en
Fig. 11 Circuito FA con compuertas NAND
Fig. 12 Realizacin de la salida Si de FA con compuertas
XOR cascada de la Figura 13. Ahora, recordemos que un
sumador completo de n bits realiza la expresin
1_CYXF ++=
Fig. 13 Sumador Seudo paralelo (acarreo en cascada) Donde F, X y Y son nmeros binarios de n bits y es la
entrada de acarreo. Podemos implantar con facilidad las cuatro
operaciones aritmticas deseadas controlando los valores de Y y en la ecuacin. Por tanto, disearemos un circuito que
producir la salida para cada mdulo FA, segn los bits
y del cdigo de seleccin, y otro circuito para obtener
. La Figura 14 muestra la configuracin completa de la
seccin AU de 1 bit. Observe que la entrada del FA
simplemente se conecta a la entrada de la ALU.
1C
1C
iy
1S 0S
1C
ix
ia
Fig. 14 Diagrama de bloque de la seccin AU
Consideremos cada una de las cuatro operaciones aritmticas por separado. Suma: BAF += . En este caso, para el mdulo FA, slo hacemos AX = , BY = y . Por tanto, el mdulo Y-GEN debe conectar la entrada a la entrada del FA.
01 =Cib iy
Resta: BAF = . Si recordamos la definicin del complemento a dos,
[ ]( )21 1 0 1n
F A BA B
A b b b
= = += + +"
Por tanto, implantamos la resta haciendo i iy b= y 11 =C . En consecuencia, el mdulo Y-GEN debe conectar el complemento de a la entrada del FA. ib iy Incremento: 1+= AF . En este caso, hacemos 0iy = y
11 =C en la ecuacin. Por tanto, el mdulo Y-GEN debe proporcionar 0 a la entrada de la FA. iy
-
5
Decremento: 1= AF . De nuevo, utilizamos la definicin de complemento a dos como sigue:
( )[ ]( )( )
2
11
(00 01)
11 11
11 11 0
F AA
A
A
A
= = + = + = += + +
Por tanto, realizamos la funcin de decremento haciendo las entradas del FA y . 1=iy 01 =C
La tabla 3 resume el anlisis anterior, enumerando los valores necesarios para las entradas y del FA para cada una de las cuatro operaciones aritmticas. Con esta tabla, podemos deducir circuitos lgicos para el mdulo Y-GEN de la Figura 1-14 y el mdulo C-GEN de la Figura 1-3.
iy 1C
Tabla 3 Valores de y para las funciones aritmticas
iy 1C
Funcin 1S 0S iy 1C
Suma 0 0 ib 0
Resta 0 1 ib 1 Incremento 1 0 0 1 Decremento 1 1 1 0
Para el circuito Y-GEN, indicamos sobre un mapa K,
como en las Figuras 15 y 16. Obtenemos la ecuacin lgica para la salida como sigue:
iy
iy
( ) ( )( )
1 0 0 1 0
0 1 0 1
0 1
i i i
i i
i
y S S b S b S S
S S b S S b
S S b
= + += + +=
1S 0S ib iy 0 0 0 0 0 0 1 1
Suma
0 1 0 1 0 1 1 0
Resta
1 0 0 0 1 0 1 0
Incremento
1 1 0 1 1 1 1 1
Decremento
Fig. 15 Tabla de Verdad del diseo del mdulo Y-GEN
ib \ 1 0S S 00 01 11 10 0 0 1 1 0 1 1 0 1 0
Fig. 16 Mapa K del diseo del mdulo Y-GEN La Figura 17 muestra un circuito lgico que realiza la
ecuacin anterior.
Fig. 17 Circuito lgico del diseo del mdulo Y-GEN
Para el circuito C-GEN, indicamos sobre un mapa K,
como en las Figuras 18 y 19 y obtenemos la siguiente ecuacin lgica:
1C
1 1 0 1
1 0
C S S S SS S
= +=
0
1S 0S 1C 0 0 0 Suma 0 1 1 Resta 1 0 1 Incremento 1 1 0 Decremento
Fig. 18 Tabla de Verdad del diseo de mdulo C-GEN
0S \ 1S 0 1 0 0 1 1 1 0
Fig. 19 Mapa K del diseo del mdulo C-GEN Realizamos la ecuacin anterior mediante una nica
compuerta XOR, como en la Figura 20.
Fig. 20 Circuito lgico del diseo del mdulo C-GEN
Ahora, formamos la seccin ALU de 1 bit interconectando
los mdulos individuales antes desarrollados (LU, FA, Y-GEN y MUX). El circuito completo para la seccin ALU de 1 bit aparece en la Figura 21.
-
6
Fig. 21 Seccin de ALU completa de 1 bit
El paso final en el proceso de diseo consiste en crear
nuestra ALU de n bits conectando en cascada n secciones ALU de 1 bit y conectando el mdulo C-GEN como se muestra en la Figura 3. Aunque los dos circuitos pueden combinarse de esta manera, sta no es la mejor forma de disear un ALU.
Un ALU ms eficiente puede obtenerse si se investiga la posibilidad de generar operaciones lgicas de un circuito aritmtico ya disponible. Esto puede hacerse inhibiendo todos los arrastres de entrada de los circuitos del sumador completo en paralelo. Considrese la funcin de Boole que genera la suma de salida de un circuito sumador completo:
i i iF X Y C= i
i
El arrastre de entrada en cada etapa puede hacerse igual
a 0 cuando la variable de seleccin sea igual a 1. El resultado ser:
iC
2S
i iF X Y=
Esta expresin es vlida debido a la propiedad de la operacin OR-exclusiva . As, con el arrastre de salida de cada etapa igual a 0, los circuitos del sumador completo generan la operacin de OR-exclusiva.
0x =
Considrese el circuito aritmtico de la Figura 14. El valor de puede seleccionarse por medio de dos variables de
seleccin que sean iguales a 0 , , iy
ib ib o 1. El valor de ix es siempre igual a la entrada a . La tabla 4 muestra las cuatro operaciones lgicas obtenidas cuando la tercera variable de seleccin
i
2 1S = . Esta variable de seleccin obliga a que C sea igual a 0 mientras que y escogen un valor
particular de .
i
1S 0S
iy
x
Tabla 4 Operaciones lgicas en una etapa de un circuito aritmtico
Las cuatro operaciones lgicas obtenidas por esta
configuracin son la transferencia, la OR-exclusiva, la equivalencia y el complemento. La segunda entrada es la operacin de equivalencia porque:
i i i i i i i ia b a b a b a b = + = : La ltima entrada en la tabla es el NOT u operacin de
complemento ya que:
1i ia a = La tabla tiene una columna ms la cual contiene la lista de
las cuatro operaciones lgicas que se van a incluir en el ALU. Dos de estas operaciones, la OR-exclusiva y el NOT estn disponibles. La pregunta que debe ser contestada es de si es posible modificar el circuito aritmtico de manera que genere las funciones lgicas OR y AND en vez de las funciones de transferencia y equivalencia. Este problema se investiga a continuacin.
V. DISEO DE UNA UNIDAD LGICA ARITMTICA En esta seccin se disea un ALU con ocho operaciones
aritmticas y cuatro operaciones lgicas. Las tres variables de seleccin y seleccionan ocho operaciones diferentes
y el arrastre de entrada se usa para seleccionar cuatro
operaciones aritmticas adicionales. Con
2 1S S 0S
inC
2 0S = , las variables y conjuntamente con C , seleccionan las ocho operaciones aritmticas listadas en la Tabla 5. Con
1S 0S in
-
7
2 1S = , las variables y seleccionan las cuatro operaciones lgicas OR, OR-exclusiva, AND y NOT.
1S 0S
Tabla 5 Tabla de funcin para el circuito aritmtico de la figura 14
El diseo de un ALU es un problema de lgica
combinacional. Debido a que la unidad tiene un patrn regular, sta puede fraccionarse en etapas idnticas conectadas en cascada por medio de los arrastres. Se puede disear una etapa del ALU y luego duplicarla para conseguir el nmero de etapas requeridas. Hay seis entradas a cada etapa: , iA iB ,
, , y . Hay dos salidas de cada etapa: la salida
y el arrastre de salida . Se puede formular una tabla de verdad con 64 entradas y simplificar las dos funciones de salida. Aqu se escoge el uso de un procedimiento alterno que usa la disponibilidad de un sumador paralelo.
1C 2S 1S 0S
iF 1iC +
Los pasos de que se compone el diseo de un ALU son los siguientes:
1. Disear la seccin aritmtica independientemente de la seccin lgica.
2. Determinar las operaciones lgicas obtenidas del circuito aritmtico en el paso 1, asumiendo que los arrastres de salida de todas las etapas son 0.
3. Modificar el circuito aritmtico para obtener las operaciones lgicas requeridas.
El tercer paso en el diseo no es un procedimiento directo y
requiere cierta cantidad de genialidad por parte del diseador. No hay garanta de que se pueda encontrar una solucin o que la solucin use el mismo nmero de compuertas. El ejemplo presentado aqu demuestra el tipo de pensamiento lgico que se requiere algunas veces en el diseo de sistemas digitales.
Se debe tener en cuenta que se dispone de varios ALU en CI encapsulados. En un caso prctico, lo que se debe hacer es buscar un ALU adecuado o unidad procesadora entre los circuitos integrados que se obtienen comercialmente. Pero, la lgica interna del CI seleccionado debe haber sido diseado por una persona familiarizada con las tcnicas de diseo lgico.
La solucin para el primer paso del diseo se muestra en las Figura 11, 14 y 17. La solucin al segundo paso de diseo es presentado en la Tabla 4. La solucin para el tercer paso se deduce a continuacin.
De la tabla 4 se observa que si , el arrastre de
entrada en cada etapa debe ser 0. Con 2 1S =
iC 1 0 10S S = cada etapa as genera la funcin . Para cambiar la salida a una operacin OR, se debe cambiar la entrada a cada circuito sumador completo de a . Esto puede lograrse
aplicando la funcin OR a
iF A= iiiA iA B+
iB y cuando iA 2 1 0 110S S S = . Las otras variables de seleccin que dan una salida
indeseable ocurren cuando . La unidad de esta
manera genera una salida pero se requiere
generar la operacin AND . Se puede investigar la
posibilidad de aplicar la funcin OR a cada entrada con
alguna funcin de Boole . La funcin que se obtiene se usa
para
2 1 0 101S S S =i iF A B= : i
ii iF AB=iA
iK
iX cuando 2 1 0 101S S S = :
( )i i i i i i i i i i i i iF X Y A K B AB K B A K B= = + = + +
Una cuidadosa inspeccin del resultado revela que si la
variable iK Bi= se obtiene una salida:
i i i i i i i i i iF AB B B A B B AB= + + =
Dos trminos son iguales a 0 porque 0i iB B = . El resultado obtenido es la operacin AND que se requiere. La
conclusin es que, si se aplica con iA iB a una funcin OR cuando 2 1 0 101S S S = , la salida genera la operacin AND.
El ALU final se muestra en la Figura 22. El diagrama puede extenderse fcilmente a ms etapas. Las entradas a cada circuito sumador completo se especifican por medio de las funciones de Boole:
2 1 0 2 1 0
1 0 0 1 0
2
i i i
i i i
i i
iX A S S S B S S S B
Y S S B S B S S
Z S C
= + += + +=
Cuando 2 0S = , las tres funciones se reducen a:
1 0 0 1 0
i i
i i i
i i
X A
Y S S B S B S SZ C
== + +=
Las cuales son las funciones para el circuito aritmtico de la Figura 14. Las operaciones lgicas se generan cuando
-
8
2 1S = . Para 111, las funciones se reducen a:
2 1 0 100S S S =
1 0 0 1 0
0
i i
i i i
i
X A
Y S S B S B S SZ
== + +=
La salida es igual a iF i iX B y produce las operaciones
OR-exclusiva y de complemento como se especifica en la tabla 1-4. Cada con iA iB se aplican a una funcin OR cuando , para producir la operacin OR como
se ha discutido antes. Cada con
2 1 0 110S S S =iA iB se aplican a una
funcin OR cuando para producir una operacin AND como se ha expuesto previamente.
2 1 0 101S S S =Las 12 operaciones generadas en el ALU se sumarizan en la
tabla 6. La funcin particular se selecciona por medio de ,
, y . Las operaciones aritmticas son idnticas a
aquellas listadas para el circuito aritmtico. El valor de para las cuatro funciones lgicas no tienen efecto en la operacin de la unidad y aquellas entradas se marcan con
2S
1S 0S inC
inC
X de no importa.
Tabla 6 Tabla de funcin para el ALU de la figura 22
Fig. 22 Diagrama lgico de una unidad lgica aritmtica (ALU)
REFERENCIAS [1] M. M. Mano, Lgica Digital y Diseo de Computadores, 1ra ed., J. A.
Valbuena, Ed. Prentice Hall Hispanoamericana, 1982, pp. 382-396.
INTRODUCCINMultiplexorUnidad lgicaUnidad aritmticaDiseo de una Unidad Lgica Aritmtica