You are on page 1of 10

3 Unidad Aritmética y Lógica 3.

1 Estructura y Funcionamiento de una


ALU
7.2.- Unidad Aritmético-Lógica (Unidad de
Procesamiento).
La ALU es la unidad encargada de realizar las operaciones
elementales de tipo aritmético (sumas, restas, multiplicaciones, etc.)
y lógico (comparaciones, operaciones sobre el álgebra de Boole:
NOT, AND, OR, etc).

Los elementos básicos que componen la ALU son:


Circuito operacional (COP): Contiene los circuitos
necesarios para la realización de las operaciones con los
datos procedentes del Registro de Entrada.
Registro de Entrada (RE): Contiene los datos u operandos
que intervienen en una instrucción antes de que se realice la
operación por parte del COP.
Registro de Estado (RS): Contiene un conjunto de biestables
(indicadores) en los que se deja constancia de condiciones
que se dieron en la última operación realizada y que habrán
de ser tenidas en cuenta en operaciones posteriores.
Registro Acumulador (RA): Almacena los resultados de las
operaciones realizadas por el COP.
3.2 Operaciones con datos de memoria y
Registros

Unidad Aritmética y LÓgica (ALU)

Una unidad aritmética lógica puede realizar un conjunto de operaciones aritméticas básicas
y un conjunto de operaciones lógicas, a través de líneas de selección. En inglés ALU
significa Arithmetic Logic Unit (Unidad Aritmética Lógica). La figura 3.12.1. muestra el
diagrama de bloques de una ALU.

Figura 3.12.1. Diagrama de bloques de una ALU

Las cuatro entradas de A se combinan con las de B generando una operación de salida de
cuatro bits en F. La entrada de selección de modo S2 distingue entre las operaciones
aritméticas y lógicas. Las entradas de selección S0 y S1 determinan la operación aritmética o
lógica. Con las entradas S0 y S1 se pueden elegir cuatro operaciones aritméticas (con S2 en
un estado) y cuatro logicas (con S2 en otro estado). Los acarreos de entrada y salida tienen
sentido únicamente en las operaciones aritméticas. El diseño de una ALU implica el diseño
de la sección aritmética, la sección lógica y la modificación de la sección aritmética para
realizar las operaciones aritméticas y lógicas.

Sección Lógica

Los datos de entrada en una operación lógica son manipulados en forma separada y los bits
son tratados como variables binarias. En la tabla 3.12.1. se listan cuatro operaciones lógicas
OR, OR - Exclusiva, AND y NOT. En el circuito, las dos líneas de selección (S1, S0)
permiten seleccionar una de las compuertas de entrada, correspondientes a la función Fi .

S1 S0 Salida Función Fi
0 0 F=Ai+Bi OR
0 1 F=AiBi XOR
1 0 F=Ai·Bi AND
1 1 F=A'i NOT

Tabla 3.12.1. Tabla de Función Lógica.


El circuito lógico de la figura 3.12.2 es una etapa de un circuito lógico de n bits.

Figura 3.12.2. Diagrama lógico de un circuito lógico de una ALU

Sección Aritmética

El componente básico de la sección aritmética es un sumador en paralelo (ver lección


3.10.1). Las operaciones aritméticas configuradas en el circuito aritmético se presentan en
la tabla 3.12.2. En una ALU, la suma aritmética se puede implementar con un número
binario en A, otro número en la entrada B y el acarreo de entrada Cin en un valor lógico 0.
El resto de las funciones se enuncian en la columna descripción.

Selección de Funció
Salida N Descripción
Función n
S1 S0 Cin  N F  
0 0 0 0 A Transferir A
0 0 1 0 A+1 Incrementar A
0 1 0 B A+B Suma ó agregar B a A
0 1 1 B A+B+1 Suma con accarreo ó agregar B a A más 1
1 0 0 B’ A+B’ Agregar el complemento de 1 de B a A
1 0 1 B’ A+B’+1 Agregar el complemento de 2 de B a A
1 1 0 Todos unos A-1 Decrementar A
1 1 1 Todos unos A Trasferir A

Tabla 3.12.2. Tabla de la Función F en un Circuito Aritmético

La implementación de las funciones anteriores por medio de un circuito lógico sencillo se


describe a continuación. El circuito se diseña bajo el precepto de intervenir cada entrada Bi
para obtener las siguientes funciones:

S1 S0 Ni
0 0 0
0 1 Bi
1 0 Bi'
1 1 1

Tabla 3.12.3. Tabla del circuito para la entrada Bi

La figura 3.12.3. muestra el circuito.

Figura 3.12.3. Circuito para la tabla 3.12.2.

Por medio de estas funciones se pueden lograr las funciones de la tabla 3.12.2 al agregar el
número Ni (tabla 3.12.3) a la entrada A a través de un sumador en paralelo para cada etapa,
teniendo en cuenta el valor de la entrada Cin. El circuito combinacional aritmético se
muestra en la figura 3.12.4. En la figura, la entrada A se denomina Mi en el sumador
completo.

Figura 3.12.4. Circuito aritmético

Diseño de una Unidad Aritmética Lógica


En el diseño de una ALU se deben seguir los siguientes pasos:

1. Diseñar la sección aritmética independientemente de la sección lógica.

2. Determinar las operaciones lógicas del circuito aritmético, asumiendo que los
acarreos de salida de todas las etapas son 0.

3. Modificar el circuito aritmético para obtener las operaciones lógica requeridas.

El diseño simple de una ALU se hace utilizando el sumador completo para generar las
operaciones lógicas de la unidad. Por lo tanto es necesario introducir una variable de
control adicional (S2), con el fin de seleccionar entre las operaciones lógicas y aritméticas.
En este diseño, un valor S2 = 1 hace que el circuito efectúe operaciones lógicas. Recordando
la salida de un sumador completo:

F = (Ai Bi)Cin

A partir de esta ecuación, es posible obtener la función lógica requerida, utilizando la


debida manipulación lógica. La función requerida se expone en la tabla 3.12.4.

Operación Sumador Función


S2 S1 S0 Ai Bi Cin Manipulación Salida
Completo requerida Fi
Aplicar una función OR
1 0 0 Ai 0 0 Ai OR Ai+Bi
A i + Bi
1 0 1 Ai Bi 0 Ai  XOR Ninguna Ai
Aplicar una función OR
1 1 0 Ai Bi' 0 Ai·Bi AND Ai·Bi
Ai + Bi'
1 1 1 Ai 1 0 A'i NOT Ninguna A'i

Tabla 3.12.4. Tabla de obtención de las funciones lógicas con un sumador completo

Partiendo de la tabla 3.12.4., las entradas Mi, Ni y Cini en un sumador completo, son
equivalentes a las siguientes expresiones:

Mi = Ai + S2·S1'·S0'·Bi + S2·S1·S0'·Bi'

Ni = S0·Bi + S1·Bi'

Cini = S2'·Ci

La figura 3.12.5. muestra el diagrama de la unidad aritmética lógica de dos etapas.


Figura 3.12.5. Diagrama lógico de una ALU

Las doce operaciones generadas en el ALU se resumen en la tabla 3.12.5., la función en


particular se selecciona a través de S2, S1, S0 y Cin. Las operaciones aritméticas son las
mismas del circuito aritmético.

Selección Salida F hDescripción


hS hS hS Ci
F  
2 1 0 n

0 0 0 0 A Trasferir A
0 0 0 1 A+1 Incrementar A
0 0 1 0 A+B Suma
0 0 1 1 A+B+1 Suma con accarreo
0 1 0 0 A-B-1 Resta con préstamo
0 1 0 1 A-B Sustracción
0 1 1 0 A-1 Decrementar A
0 1 1 1 A Transferir A
1 0 0 X A+B OR
1 0 1 X A  OR-Exclusiva
1 1 0 X A·B AND
1 1 1 X A’ Complementar A

Tabla 3.12.5. Tabla de verdad de una ALU


3.3 Diseño de una ALU mediante HDL

Herramientas Computacionales Utilizadas en las Metodologias de DiseÑo


Descendentes (Top-Down)

En el diseño Top - Down se captura una idea en un nivel de abstracción alto y se


implementa a partir de ésta descripción, en un proceso hacia abajo incrementando el nivel
de detalle según lo requerido. La figura 4.3.1. muestra la forma de diseño Top- Down. En el
primer nivel de la figura se aprecia un sistema inicial dividido en módulos, los cuales se
dividen sucesivamente hasta llegar a los componentes básicos del circuito o elementos
primarios. Estos elementos se enmarcan en un cuadrado con la líneas más gruesa. Los
métodos de diseño se basan en programas computacionales conocidos como herramientas
de automatización del diseño electrónico (EDA Tools), las cuales sobresalen por ofrecer
una reducción significativa en el tiempo del diseño.

Figura 4.2.1. Metodologia De Diseño Top - Down

Las herramientas siguen el diagrama de flujo de la figura 4.4.2.


Figura 4.2.2. Diagrama de Flujo con herramientas EDA

Este proceso se resume en los siguientes pasos:

1. Planteamiento de las especificaciones.


2. Entrada del diseño:En esta etapa se realiza una descripción del
circuito, para la cual existen varias alernativas,
a. Captura Esquemática: Dibujo del circuito mediante interfaz
gráfica, puede ser un diagrama de bloques.
b. Mediante lenguajes de descripción HDL como VHDL, Verilog,
Abel y CUPL.
c. Diagramas de transición de estados.
d. Formas de onda –Tablas de verdad.
3. Simulación HDL (Opcional): Simula el comportamiento del circuito
que se acaba de describir antes de la síntesis.
4. Síntesis lógica: Consiste en tomar la descripción HDL y a partir de
ella, generar y simplificar las ecuaciones lógicas correspondientes
al circuito descrito.
5. Simulación funcional: Simula las ecuaciones lógicas, sin tener en
cuenta los retardos.
6. Implementación del diseño: Los pasos a seguir dependen del tipo
de PLD que se esté utilizando en el diseño. Trazado del mapa,
Colocación y enrutamiento, Creación del archivo para la
programación del dispositivo. Revisa si el circuito se adapta al
chip; No. salidas, No. de términos productos por salida.
7. Simulación temporal: Después de la implementación ya se conoce
como queda programado el circuito y se puede realizar una
simulación teniendo en cuenta los retardos.
8. Programación: La implementación genera un archivo JEDEC que
indica el estado de las conexiones. Este archivo se usa para
programar (o quemar el chip).

Ventajas del Diseño Top - Down

La metodologia de diseño descendente disminuye el tiempo de diseño. Por medio de los


programas CAD para diseño de impresos se ha logrado disminuir el tiempo a 1/10 parte de
lo que se gastaba antes, cuando esto se hacia antes manualmente. En la realización de las
simulaciones no es necesario sólo un prototipo, ya que este generalmente funciona; antes se
debía repetir el proceso 2 o 3 veces hasta que el prototipo funcionara.

Las últimas herramientas de diseño electrónico permiten implementar de forma automática


la metodología de diseño Top - Down.

Lenguajes de Descripción de Hardware (HDL - Hardware Description Language)

Los lenguejes HDL permiten realizar el primer paso de la metodología del diseño
descendente. Se describen en un lenguaje de alto nivel el comportamiento requerido del
circuito a diseñar. Esta descripción se puede hacer mediante tablas de verdad, lista de
transiciones de estados, ecuaciones lógicas. Con base a la descripción, el programa realiza
los siguientes pasos:

1. Sintetiza y simplifica las ecuaciones lógicas.


2. Simula las ecuaciones.
3. Sintetiza el circuito lógico.
4. Simula el circuito lógico.
5. Sintetiza el archivo para programar un PLD.

Entre otras ventajas, se pueden mencionar las siguientes:

1. EL programa HDL es el mismo así cambie la tecnología, Ejemplo: FPGA,


transistores 2.5m ., 1.2 m .
2. Facilita la comunicación entre los diseñadores.
3. Facilita el uso de las partes de un diseño en otros (Reutilización).
4. Es posible verificar el funcionamiento del sistema dentro del proceso de diseño sin
necesidad de implementar el circuito.
5. Las simulaciones del diseño, antes de que este sea implementado, permiten probar
la arquitectura del sistema para tomar decisiones en cuanto a cambios en el diseño.
6. Las herramientas de síntesis tienen la capacidad de convertir una descripción hecha
en un HDL, VHDL por ejemplo, a compuertas lógicas y además, optimizar dicha
descripción de acuerdo a la tecnología utilizada.
7. Las descripciones en un HDL proporcionan documentación de la funcionalidad de
un diseño independientemente de la tecnología utilizada.
8. Una descripción realizada en un HDL es más fácil de leer y comprender que los
nestlist o circuitos esquemáticos.
9. Un circuito hecho mediante una descripción en un HDL puede ser utilizado en
cualquier tipo de dispositivo programable capaz de soportar la densidad del diseño.
Es decir, no es necesario adecuar el circuito a cada dispositivo porque las
herramientas de síntesis se encargan de ello.

Lenguajes HDL más populares

En la actualidad existen diversas herramientas de diseño para integrar sistemas de gran


complejidad. Los lenguajes de descripción de hardware constituyen una opción de diseño
de soluciones de sistemas electrónicos.

ABEL

El lenguaje ABEL es el más utilizado en los PLDs. El lenguaje ABEL facilita la


programación de PLDs combinatorios y secuenciales. Un circuito en ABEL se puede
describir en forma de ecuación lógicas, tabla de verdad o en transición de estados.

El programa ABEL cumple los siguientes pasos:

1. Verifica si existen errores en la sintaxis del programa fuente.


2. Simplifica o sintetiza las ecuaciones según sea el caso.
3. Simula las ecuaciones.
4. Puede escoger el dispositivo que mejor se adapte, o verificar si el dispositivo
especificado sí se adapta a la aplicación.
5. Genera el archivo JEDEC para la programación del PLD.

VHDL

El VHDL es un lenguaje de descripción y modelado diseñado para descibir en forma


entendible la funcionalidad y la organización del hardware de los sistemas digitales y otros
componentes. VHDL maneja una sintaxis amplia y flexible. El lenguaje VHDL permite el
diseño Top -Down o en otras palabras; modelar los bloques de alto nivel, simularlos y
adecuar la funcionalidad en alto nivel antes de llegar a los niveles bajos de abstracción en la
implementación del diseño.

CUPL

El lenguaje CUPL se describirá en la leccion 5 de este capítulo.

You might also like