Anda di halaman 1dari 31

UNIVERSIDAD NACIONAL DE SAN ANTONIO ABAD DEL CUSCO

FACULTAD DE INGENIERÍA, ELÉCTRICA, ELECTRÓNICA, INFORMÁTICA Y


MECÁNICA

ESCUELA PROFESIONAL DE INGENIERÍA INFORMÁTICA Y DE SISTEMAS

Implementación de operaciones aritméticas y lógicas en una CPU


con una unidad de control microprogramada

Asignatura : Microprocesadores

Docente: Mg. Carrasco Poblete, Edwin

Alumnos:

Clavijo Manuttupa, Eliaquin


Huillcahuaman Mondaca, Arleen Marjory

Cusco - Peru
June 22, 2018
INDICE

Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ii

Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . iii

CAPITULO

I. Marco Conceptual . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

1.1 La unidad de procesamiento . . . . . . . . . . . . . . . . . . . 1


1.2 La unidad de Control . . . . . . . . . . . . . . . . . . . . . . . 2
1.3 Herramientas de diseño . . . . . . . . . . . . . . . . . . . . . . 4
1.4 Algoritmos usados. . . . . . . . . . . . . . . . . . . . . . . . . 4
1.4.1 Algoritmo de Suma-Desplazamiento para la Multiplicación 4
1.4.2 Algoritmo de la División con Restauración . . . . . . . 6

II. Diseño de la unidad de procesamiento . . . . . . . . . . . . . . . . 8

2.1 Diagrama lógico de la unidad de procesamiento . . . . . . . . . 9


2.2 Diseño fı́sico de la unidad de procesamiento . . . . . . . . . . . 10
2.2.1 Registros A y B . . . . . . . . . . . . . . . . . . . . 10
2.2.2 Multiplexor Registro B . . . . . . . . . . . . . . . . . 11
2.2.3 Contador . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2.4 ALU . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2.5 Registro Salida de ALU . . . . . . . . . . . . . . . . 13
2.2.6 Tabla de pines de Integrados . . . . . . . . . . . . . 13
2.2.7 Unidad de Procesamiento Completo . . . . . . . . . 15

III. Diseño de la unidad de control . . . . . . . . . . . . . . . . . . . . 16

3.1 Formato de la memoria de control . . . . . . . . . . . . . . . . 16


3.2 Diseño de la memoria de control . . . . . . . . . . . . . . . . . 17
3.2.1 Micromemoria . . . . . . . . . . . . . . . . . . . . . 17
3.2.2 Multiplexor de condiciones . . . . . . . . . . . . . . . 18
3.2.3 Contador de Programa . . . . . . . . . . . . . . . . . 18

i
3.2.4 Unidad de Control Completo . . . . . . . . . . . . . . 19
3.3 Microprograma de las operaciones implementadas . . . . . . . . 20

IV. Pruebas de validación . . . . . . . . . . . . . . . . . . . . . . . . . . 21

4.1 Resultado de ejecución de operaciones . . . . . . . . . . . . . . 21


4.1.1 Prueba de la Suma . . . . . . . . . . . . . . . . . . . 22
4.1.2 Prueba de la Multiplicación . . . . . . . . . . . . . . 23
4.1.3 Prueba de la División . . . . . . . . . . . . . . . . . . 24

V. Conclusiones, Sugerencias y Recomendaciones . . . . . . . . . . . 25

5.1 Conclusión . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

VI. Referencias Bibliográficas . . . . . . . . . . . . . . . . . . . . . . . 26

i
PRESENTACIÓN

El presente informe detalla la implementación de las operaciones lógicas y aritméticas tales


como la adición, sustracción, and, or, entre otros. Se trato de usar modelos hechos en
semestres anteriores pero debido a que no estaba correctamente detallado y en desorden
se decidió empezar desde cero.
Se trato de ser lo mas transparente posible ası́ como de optimizar el uso de recursos
hardware, para ello se implemento con los algoritmos de división y multiplicación mas efi-
cientes, como la multiplicación por suma-desplazamiento, y la división por restauración,
todos estos algoritmos llevados a su máxima optimización, como el uso de registros.

El software que usamos para la implementación del circuito fue “Proteus Professional
8.7” y para dar lectura y escritura de las lı́neas del microprograma que se debı́an grabar
en las memorias EPROM se utilizó:” Hex Editor Neo versión 6.31”.
Haciendo una comparativa con el proyecto de referencia se optimizo varios aspectos,
como el uso de memorias eprom, el uso de registros adicionales, el orden, entre otros.

ii
INTRODUCCIÓN

La utilización de las matemáticas forma parte de nuestra vida cotidiana, desde el


manejo de operaciones básicas hasta operaciones más complejas. Entonces, para que
estas tengan una utilización práctica se dio paso a la implementación en máquinas que
pasaron desde tubos de vacı́o hasta lo que ahora conocemos como circuitos a nivel mi-
croscópico que permiten la solución a una gran variedad de problemas de lógica secuencial
y combinacional.

Actualmente los procesadores se valen de las operaciones matemáticas sencillas para poder
ejecutar instrucciones mandadas por el usuario. Operaciones matemáticas como la suma
o la resta son usadas para realizar operaciones más complejas como la multiplicación o
la división. En este trabajo se implementa la operación de la división usando el algoritmo
de división sin restauración sobre una base que en un principio contenı́a operaciones de
suma y multiplicación

iii
CAPITULO I

Marco Conceptual

1.1 La unidad de procesamiento

La CPU de un computador es el cerebro de la computadora, encargado de ejecu-


tar programas almacenados en la memoria principal recuperando las instrucciones, ex-
aminándolas, y luego ejecutándolas una tras otra. Los componentes están conectados por
un BUS, que es una colección de cables paralelos usados para la transmisión de direcciones,
datos y señales de control. La CPU está compuesta de diferentes partes:
Memoria: usado para guardar resultados temporales, compuesta de un número de
registros, donde cada registro puede contener un número determinado por el tamaño de
este para la ejecución correcta de los diferentes procesos, pueden ser accesados para lec-
tura o escritura a alta velocidad. (Entre los registros importantes tenemos el Program
Counter (PC) y el Registro de Instrucción(IR)).

Unidad aritmético lógica: Realiza las operaciones aritméticas como la suma, operación
booleana AND que son necesarias para llevar a cabo las instrucciones. Unidad de control:
Es la responsable de extraer las instrucciones de la memoria principal y determinar su tipo.
[1]

1
Figure 1.1: Organización simple de un computador con una CPU y dos periféricos.[1]

1.2 La unidad de Control

La unidad de control microprogramada se encarga de interpretar y ejecutar las instruc-


ciones almacenadas en la memoria principal y genera las señales de control necesarias para
ejecutarlas. Sus aspectos son:

Tareas:

• Secuenciamiento de las micro-instrucciones

• Ejecución de los microprogramas

Elementos:

• Buses de datos y dirección: Se encargan de transportar los datos de ingreso tales


como las instrucciones, operandos y las direcciones que se ejecutaran secuencial-
mente de acuerdo al proceso en ejecución.

2
• Unidad de control: Contiene la memoria de control, donde se almacenan los micro-
programas (saltos, condiciones, controles) que determinaran y mandaran las señales
de control necesarias para la realización de los procesos, se retro alimenta para
determinar los siguientes microprogramas a ser ejecutados.

• Unidad de proceso: Contiene el ALU (unidad aritmético lógica) que se encarga


de realizar las operaciones aritméticas, además de contener los registros de los
operandos, buffers temporales y demás registros necesarios para el control y feedback
de la unidad de control.

• Secuenciamiento: El secuenciamiento de la unidad de control se da por incremento


de la dirección actual o por salto condicional dependiendo del feedback que propor-
cione el microprograma en ejecución.

• Organización: El siguiente diagrama muestra una organización simple de una unidad


de control.

Figure 1.2: Diagrama de organización de una unidad de control.

3
1.3 Herramientas de diseño

Para el desarrollo del proyecto utilizamos el programa ”ProteusDesign Suite 8.5”


“Proteus combina la facilidad de uso con potentes funciones para ayudarle a diseñar,
probar y diseñar PCBs profesionales como nunca antes.
Con casi 800 variantes de microcontroladores listos para la simulación directamente desde
el esquema, uno de los paquetes profesionales más intuitivos de disposición de PCB en
el mercado y un autorouter basado en forma de clase mundial incluido como estándar,
Proteus Design Suite 8 ofrece el paquete de software completo para los ingenieros de hoy
y mañana .

1.4 Algoritmos usados.

En este caso solo se uso algoritmos para la multiplicación y la división, los cuales se
explicaran en detalle.

1.4.1 Algoritmo de Suma-Desplazamiento para la Multiplicación

La multiplicación será un proceso iterativo, y en cada ciclo se realizarán las siguientes


operaciones:

1. Se realiza el producto del multiplicando por el bit 0 del multiplicador, con lo cual
obtendremos productos parciales que pueden valer lo mismo que el multiplicando
desplazado (cuando el bit del multiplicador sea 1) o bien 0 (cuando dicho bit sea
nulo).

2. Se desplazará el multiplicando un lugar hacia la izquierda para alinear correctamente


los productos parciales, que estarán convenientemente rellenados con ceros a la
izquierda y/o a la derecha (para ello, doblaremos el tamaño del multiplicando, e
inicialmente lo rellenaremos con ceros a la izquierda).

4
3. Se desplaza o se rota el multiplicador un lugar hacia la derecha (por esto siempre
se multiplica por el bit 0 del multiplicador).

4. e sumará el producto parcial con la suma acumulada de los productos parciales


obtenidos en los pasos anteriores (al principio el producto acumulado será 0).

Figure 1.3: Diagrama de flujos del algoritmo.

5
1.4.2 Algoritmo de la División con Restauración

La división se realizará más o menos igual que como se hace con lápiz y papel.
Será un proceso iterativo de n+1 ciclos, en cada uno de los cuales se realizarán las
siguientes operaciones:

1. Se resta el dividendo parcial menos el divisor. Si la resta es positiva seguimos por


el paso 2, y si es negativa vamos al paso 3.

2. Resta positiva: el dividendo parcial cabe en el divisor. Por tanto, se añade un 1 al


cociente, y se desplaza el mismo un lugar a la derecha. Ir a 4.

3. Resta negativa: el dividendo parcial no cabe en el divisor. Por tanto, se añade un 0


al cociente y se desplaza el mismo un lugar a la derecha. Se restaura el dividendo
parcial sumándole el divisor. Ir a 4.

4. Se desplaza el divisor un lugar a la derecha.

6
Figure 1.4: Diagrama de flujos del algoritmo.

7
CAPITULO II

Diseño de la unidad de procesamiento

La unidad de proceso o procesamiento se encarga de ejecutar las tareas que le en-


comienda la unidad de control. La implementación en el presente caso, al igual que la
unidad de control, es muy básica y se centra en efectuar la operación de multiplicación
(Wiśniewski, 2009, pág. 153).

8
2.1 Diagrama lógico de la unidad de procesamiento

El diagrama base, con el cual se implemento la unidad de procesamiento es el siguiente.

Figure 2.1: Esquema general de la unidad de procesamiento

9
2.2 Diseño fı́sico de la unidad de procesamiento

La unidad de proceso o unidad de procesamiento es uno de los tres bloques funcionales


principales en los que se divide una unidad central de procesamiento (CPU).
La función de la unidad de proceso o procesamiento se encarga de ejecutar las tareas
que le encomienda la unidad de control. [6] La implementación en el presente caso, al
igual que la unidad de control se acopla al diseño presentado adquirido como base. Los
componentes requeridos para la implementación son:

2.2.1 Registros A y B

El registro B, es un registro de 4 bits, con control de lectura y escritura, para ello


usamos un Registro 74173

Figure 2.2: Registro b de 4 bits. Fuente: Propia

10
Figure 2.3: Registro desplazador a de 8 bits. Fuente: Propia

El registro A es un registro de desplazamiento 74199 encargado de generar desplaza-


mientos a la izquierda a la información guardada en el registro, según el controlador
proveniente de la unidad de control.

2.2.2 Multiplexor Registro B

Multiplexor óctuple dos a uno. Se utilizó dos multiplexores cuádruples dos a uno
74157. Recibe como entrada el registro B, y se envı́a dependiendo de la operación al
primer o segundo ALU.

Figure 2.4: Multiplexor doble de 8 bits. Fuente: Propia

11
2.2.3 Contador

Se uso un contador 74LS590 encargado de contar el numero de desplazamientos en


las operaciones de la multiplicación y la división.

Figure 2.5: contador de 8 bits. Fuente: Propia

2.2.4 ALU

Unidad Aritmético-Lógica de ocho bits. Se utilizó dos ALU 74LS181 de cuatro bits.

Figure 2.6: ALU doble. Fuente: Propia

12
2.2.5 Registro Salida de ALU

Registro doble de 4 bits 74173 usado para almacenar, grabar y mandar al bus de datos
la salida del ALU.

Figure 2.7: Registro doble Salida ALU. Fuente: Propia

2.2.6 Tabla de pines de Integrados

Figure 2.8: Tabla de los registros 74173. Fuente: Trabajo Anterior

13
Figure 2.9: Tabla de los multiplexores 74175. Fuente: Trabajo Anterior

Figure 2.10: Tabla del ALU 74181. Fuente: Trabajo Anterior

14
2.2.7 Unidad de Procesamiento Completo

Figure 2.11: Unidad de control. Fuente: Propia

15
CAPITULO III

Diseño de la unidad de control

La unidad de control es una de las partes más importantes de cualquier sistema digital
responsable de la interacción de otros bloques del sistema. [5] La unidad de control emite
señales de control (ordenes) externas a la CPU para producir el intercambio de datos
con la memoria y los módulos de E/S. También emite señales de control internas para
transferir datos entre registros, hacer que la ALU ejecute una función concreta y regular
otras operaciones internas (se controla a sı́ misma).

3.1 Formato de la memoria de control

Figure 3.1: Diagrama de la UC. Fuente: Trabajo Anterior

16
3.2 Diseño de la memoria de control

Para diseñar la memoria de control se uso los siguientes integrados.

3.2.1 Micromemoria

Utiliza cuatro memorias EPPROM 2732 de ocho bits, haciendo un total de 32 bits
siendo el tamaño necesario para almacenar las salidas de control del microprograma.

Figure 3.2: Memoria EPPROM 2732. Fuente: Propia

17
3.2.2 Multiplexor de condiciones

El multiplexor de condiciones 4512. Encargado de controlar los saltos de acuerdo a


las condiciones dictadas por el microprograma que son enviadas a través de la unidad de
proceso.

Figure 3.3: Multiplexor 4512. Fuente: Propia

3.2.3 Contador de Programa

Registro contador 74161 de cuatro bits, se puede cargar información en él y empezar
la cuenta desde el mismo o restaurarlo (valor 0) y empezar a contar. el cual cuenta con
un registro sincronizado, y una carga de memoria.

Figure 3.4: Modulo contador. Fuente: Propia

18
3.2.4 Unidad de Control Completo

Figure 3.5: Unidad de Control implementado. Fuente: Propia

19
3.3 Microprograma de las operaciones implementadas

Figure 3.6: Microprograma. Fuente: Propia

Figure 3.7: Microprograma. Fuente: Propia

20
CAPITULO IV

Pruebas de validación

4.1 Resultado de ejecución de operaciones

Las pruebas se realizaron con los siguientes datoos:

Para el registro A: 00010100, 20 en base 10


Para el registro B: 0011, 3 en base 10
A continuación se muestra la dirección de las operaciones implementadas:

Operación Dirección
Suma 001100
Resta 010000
Multiplicación 100000
División 000001
And 010100
Or 011000
Not 011100

Table 4.1: Tabla de direcciones.

21
4.1.1 Prueba de la Suma

Para ello usamos el código 001100, asi como los valores de los registros antes men-
cionados.
Los resultados se muestran en la parte superior, asi como las entradas en la parte inferior
.

Figure 4.1: Resultados de la prueba suma. Fuente: Propia

22
4.1.2 Prueba de la Multiplicación

Para este caso utilizaremos el código 100000, y la respuesta se guarda en el mismo


registro A.

Figure 4.2: Resultados de la prueba multiplicación. Fuente: Propia

23
4.1.3 Prueba de la División

Para este caso utilizaremos el código 000001, como se muestra la respuesta esta en
los 4 primeros bits del resultado.

Figure 4.3: Resultados de la prueba división. Fuente: Propia

24
CAPITULO V

Conclusiones, Sugerencias y Recomendaciones

5.1 Conclusión

• Una unidad de control microprogramada es más difı́cil de diseñar e implementar,


pero resulta mucho más versátil y fácil de alterar que una unidad de control cableada.

• El algoritmo de multiplicación por desplazamiento y sumas sucesivas prueba ser


eficiente y fácil de implementar, ya que no necesitamos acarrear resultados como en
una modelo de multiplicación clásico.

• Se requirió utilizar un reloj para la sincronización, ya que hubo problema al momento


de la recolección de los datos.

• A pesar de ser un modelo muy básico, y el nivel de dificultad muy bajo, tomó mucho
tiempo implementar las partes y combinarlas.

25
CAPITULO VI

Referencias Bibliográficas

(2) Patterson D.A., Hennessy J.L, Computer Organization and Design, tercera
edición, Morgan Kaufmann Publishers, 2005.

(2) Wiśniewski, R. (2009)., Synthesis of compositional microprogram control units


for programmable devices, Zielona Góran

(2) I. Campos Ardiles, R. R. Flores Gonzalez y J. León Malpartida,


Diseño de un multiplicador y sumador de dos números de cuatro bits en una CPU con
Unidad de Control Microprogramada, Cusco, 2017.

(2) A. Delgado Moscoso y J. A. Alanya Pantoja, Implementación de la op-


eración de división y resta en una CPU con unidad de control microprogramada, Cusco,
2017.

(2) Luis Rincón Córcoles, Circuitos para multiplicación y división de números en


coma fija,Universidad Rey Juan Carlos,España, 2018.

26

Anda mungkin juga menyukai