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
OPTIMIZACIÓN DEL PROYECTO DE IMPLEMENTACIÓN DE UN PROCESADOR BÁSICO
Asignatura
: Microprocesadores Microprocesadores
Docente
: Mg. Carrasco Poblete, Edwin
Integrantes
:
-
Código: Cornejo Pillco, Javier Jail Ortogorin Condori, Lisbeth
SEMESTRE SEMESTRE 2018-I 20 18-I
CUSCO-PERÚ
155193 130348
Contenido PRESENTACIÓN .........................................................................................................................3 INTRODUCCIÓN .........................................................................................................................4 Capítulo 1 - ASPECTOS GENERALES .....................................................................................4 1.1 Objetivo General ................................................................................................................4 1.2 Objetivos Específicos ........................................................................................................4 1.3 Delimitaciones ....................................................................................................................5 1.4
Limitaciones...................................................................................................................5
Capítulo 2 - MARCO CONCEPTUAL .........................................................................................6 2.1 Unidad Central de Procesamiento ....................................................................................6 2.1.1 Unidad de Control Microprogramada ........................................................................6 2.2 Simulador ............................................................................................................................7 Capítulo 3 – DESARROLLO DEL PROYECTO ........................................................................9 3.1 Algoritmos ...............................................................................................................................9 3.2 Operaciones Lógicas Implementadas ........................... .......................... .......................... .10 3. 3.33 Descripción de las modifi caciones en los circuitos de las operaciones aritmético – lógicas. .......................... ......................... .......................... ......................... ...... 13 3.4 Unidad de control ........................... ......................... .......................... ......................... ...... 14 3.4.1 Micromemoria Micromemoria.......................... ......................... .......................... ......................... ...... 14 3.4.2 Registro de desplazamiento Inicio – Fin de programa ............... .......................... .15 3.5 Unidad de Procesos ........................................................................................................ 15 3.5.1 Registros A y B. ........................................................................................................ 16 3.5.2 Multiplexor 1 .............................................................................................................. 17 3.5.3 Multiplexor de Selección .......................................................................................... 19 3.5.4 Unidad Aritmética Lógica ......................................................................................... 19 3.5.5 Tabla para selección de operación ......................................................................... 22 3.4 CPU Modificado ............................................................................................................... 23 3.5 Microprograma Modificado ........................ .......................... ......................... ................... 24 CONCLUSIONES ...................................................................................................................... 25 RECOMENDACIONES .............................................................................................................. 26 BIBLIOGRAFIA ........................................................................................................................... 27 Bibliografía ................................................................................................................................... 27 2
PRESENTACIÓN El presente trabajo detalla o muestra las optimizaciones que se realizan tanto en los circuitos como en la microprograma para poder visualizar el resultado de las operaciones aritmético - lógicas en el registro A. Toda la implementación del presente trabajo se realizó utilizando el software: “Proteus 8 Professional” y para dar lectura y escritura de las líneas de l os microprogramas se utilizó:” Hex Editor Neo”.
El ingreso de datos hace uso de los registros A y B, se encuentran construidos en el diseño inicial y los resultados de acuerdo a la operación elegida se muestran en el registro A, se puede rescatar que los registros cuentan con displays para la mejor comprensión. Además, se realizó la mejora del circuito lógico del ALU permitiendo así un mejor rendimiento. Todo el proceso de diseño e implementación fue realizado por los integrantes de este grupo haciendo uso de conocimientos adquiridos en los cursos de microelectrónica, arquitectura del computador y microprocesadores.
3
INTRODUCCIÓN
A lo largo de la historia del computador se realizaron distintas arquitecturas para implementar la lógica combinacional y secuencial, a tal punto que el componente principal de estas tareas se convirtió en un circuito complejo y diminuto. Al día de hoy se sabe que el procesador es el cerebro del sistema, encargado de procesar toda la información. Básicamente, es el “cerebro” de la computadora. Prácticamente, todo pasa por él, ya que es el responsable de ejecutar todas las instrucciones existentes. Mientras más rápido vaya el procesador, más rápido serán ejecutadas las instrucciones. La unidad central de proceso (CPU), procesador o microprocesador, es el verdadero cerebro del ordenador. Su misión consiste en controlar y coordinar todas las operaciones del sistema. Para ello extrae, una a una, las instrucciones del programa que está en la memoria central del ordenador (memoria RAM), las analiza y emite las órdenes necesarias para su completa realización. El presente trabajo está enfocado a optimizar los circuitos necesarios para poder visualizar el resultado final de las operaciones aritmético - lógicas en el registro A que para este caso es el registro de salida.
Capítulo 1 - ASPECTOS GENERALES 1.1 Objetivo General Visualizar los resultados de las operaciones aritmético – lógicas en el registro A, cuyo diseño inicial contenía las operaciones de adición, sustracción, división, multiplicación y lógicas (AND, OR y NOT) y buscar mejores métodos para implementar el modelo básico de microprocesador. 1.2 Objetivos Específicos •
Modificar el diseño inicial de los circuitos.
•
Modificar las microinstrucciones de las micro memorias. 4
•
Optimizar los componentes para buscar mayor eficiencia.
1.3 Delimitaciones Entender el funcionamiento del algoritmo de división ya que tiene una complejidad de funcionalidad mayor a las demás operaciones y revisar la Data sheep de los componentes implementados. 1.4 Limitaciones •
El proyecto se ve limitado al uso de circuitos integrados proporcionados por el software utilizado “Proteus Professional 8”.
5
Capítulo 2 - MARCO CONCEPTUAL 2.1 Unidad Central de Procesamiento La CPU de un computador es la parte principal de la computadora, encargada de ejecutar los programas almacenados en la memoria principal recuperando las instrucciones, examinándolas para ejecutarlas sujeta a cambios que puedan surgir durante la construcción de circuitos.
Fig. 1 Organización simple de un computador con una CPU y dos periféricos. Fuente: [1] 2.1.1 Unidad de Control Microprogramada La unidad de control microprogramada interpreta y ejecuta las instrucciones almacenadas en la memoria principal y genera las señales de control para ejecutarlas. Consta de los siguientes componentes: • Contador de programa: Es un registro interno del computador en el que se almacena la
dirección de la última instrucción leída. De esta manera el computador puede saber cuál es la siguiente instrucción que debe ejecutar. • Registro de instrucción: al igual que el registro contador de programa el Registro de instrucción
es parte de la unidad de control y contiene la instrucción que se está ejecutando en cada momento. • Decodificador: es un componente interno del microprocesador que se encarga de extraer el
código de operación de la instrucción en proceso. 6
• Reloj interno: Emit e una serie de pulsos eléctricos a intervalos constantes llamados ciclos,
estos ciclos marcan el ritmo que ha de seguirse para la realización de cada paso de que consta la instrucción. • Secuenciador: almacena todas las posibles instrucciones soportadas p or el procesador.
Condicio nes de una Unidad d e Contro l Micropro gramada: • Debe poseer suficiente memoria para que no interfiera con el flujo normal de trabajo. • A cada
instrucción se le debe asociar la dirección de comienzo de su microprograma. • Ha de leer las microinstrucciones sucesivas y bifurcar a uno nuevo cuando termina el que se
está ejecutando. Tareas de una Unidad de Control Microprogramada: • 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 proporcione el microprograma en ejecución. • La ejecución de las microinstrucciones, se debe señalar las señales de control.
Fig. 2 Diagrama de organización de una unidad de control. Fuente: Propia 2.2 Simulador Para el desarrollo del proyecto se utilizó el programa” Proteus Professional 8”, que permite realizar todas las tareas de construcción de circuitos electrónicos, tales como: dibujo de esquemas de circuitos, simulación interactiva de circuitos analógicos, digitales y con microcontroladores, con animación en tiempo real además de diseño de circuitos impresos. 7
Proteus es una compilación de programas de diseño y simulación electrónica, desarrollado por Labcenter Electronics que consta de los dos programas principales: Ares e Isis. Hablando del programa ISIS, Intelligent Schematic Input System (Sistema de Enrutado de Esquemas Inteligente) permite diseñar el plano eléctrico del circuito que se desea realizar con componentes muy variados, desde simples resistencias, hasta alguno que otro microprocesador o microcontrolador, incluyendo fuentes de alimentación, generadores de señales y muchos otros componentes con prestaciones diferentes. Este programa ISIS nos permite dibujar sobre un área de trabajo, un circuito que posteriormente podemos simular, y verificar para encontrar sus posibles errores.
8
Capítulo 3 – DESARROLLO DEL PROYECTO 3.1 Algoritmos DIAGRAMAS DE FLUJO
Multiplicación:
División:
9
3.2 Operaciones Lógicas Implementadas
Utilizamos las operaciones que el ALU de por sí ya las tiene, solo tuvimos que darle las entradas correctas, seleccionándolas si son aritméticas o lógicas, en este caso utilizamos 2 aritméticas que son la suma y la resta, y 3 lógicas que son and, or y not. Suma: (entradas) 1 0 0 1 Resta: (entradas) 0 1 1 0 And : (entradas) 1 1 1 0 Or
: (entradas) 1 0 1 1
Not
: (entradas) 0 0 0 0
Lo anterior es una parte de lo que va en las microinstrucciones para que el ALU 10
ejecute las operaciones designadas, pero en el bus de direcciones las entradas que se colocan para seleccionar cada operación lógica es: AND
OR
NOT
•
AND: Esta operación lógica solo trabaja con 4 bits del registro A y 11
con 4 bits del registro B, la operación es bit a bit y se guarda en el registro A. •
OR: Esta operación lógica solo trabaja con 4 bits del registro A y con
4 bits del registro B, la operación es bit a bit y se guarda en el registro A. •
NOT: La operación lógica not trabaja con el registro A, el cual consta
de 8 bits, en el esquema sobre el que trabajamos los registros A y B intercambiaban sus valores internamente, tuvimos que evitar que sucediera esto para que así la operación sea correcta, el resultado se guarda en el registro A. Los códigos que se muestran son los utilizados para las operaciones matemáticas. DIVISION
SUMA
MULTIPLICACION
RESTA
12
3.3 Descripción de las modificaciones en los circuitos de las operaciones aritmético – lógicas. Estas modificaciones realizadas surgen en los buses del registro D que es el registro que contiene el cociente de la operación de división. Primeramente, para la operación de división se tuvo que modificar las entradas del multiplexor 1 para poder mostrar el resultado que es el cociente en el registro A, como sigue:
Fig. 3 Fuente: Propia Modificación
Fig. 4 Fuente: Propia En la Fig.4 se muestra la modificación que sufrieron las entradas del multiplexor 1 para conectarlas al registro D que contiene el cociente de la división; excepto los pines E del 13
multiplexor 1, para poder guardar el resultado de la división se tiene que realizar un ciclo más que permita escribir la información del registro D en el registro A y no realizar alguna operación cuando el resultado pase por el ALU. 3.4 Unidad de control La unidad de control indica al camino de datos lo que tiene que hacer, cada ciclo de reloj, durante la ejecución de las instrucciones que fueron modificadas. 3.4.1 Micromemoria Utiliza cinco memorias EPPROM 2732 de ocho bits, haciendo un total de 32 bits siendo el tamaño necesario para almacenar el microprograma de las operaciones aritméticas: adición, sustracción, división y multiplicación además las operaciones lógicas: AND, OR y NOT.
Fig. 5 Micromemoria de la unidad de control conformada por 5 memorias EPROM. Fuente: Propia. 2732 ( UV – EPROM – 8 bits ) 14
Pin A 0 – A 11 E G/VPP DQ0 – DQ7
Detalle Entrada de datos. Entrada de habilitacion. Habilitador de salida / Entrada de programacion + 25 v. Salida de datos.
VCC
Fuente de alimentacion
VSS
Tierra
Tabla 1. Descripción del circuito utilizado para la construcción de la micromemoria. 3.4.2 Registro de desplazamiento Inicio – Fin de programa Registro desplazamiento controla el inicio del algoritmo de división, en este registro se guarda el cociente de la división, luego para modificación se copiaron los datos de este registro al registro de propósito general A.
Fig. 6 Registro desplazador de 8 bits. Fuente: Propia. 3.5 Unidad de Procesos La unidad de proceso o procesamiento se encarga de ejecutar las tareas que le encomienda la unidad de control. 15
La implementación en el presente caso, es mostrar los resultados de las operaciones aritmético – lógicas en el registro de propósito general A. Los componentes requeridos para la implementación son: 3.5.1 Registros A y B. Se utilizó dos registros 74173 de cuatro bits para A y uno para B. El motivo es que cuando se realice las operaciones aritmético – lógicas, se muestre el resultado en el registro A. El registro A es el registro por donde ingresan los datos y también sirve para mostrar el resultado obtenido de una operación aritmética – lógica.
Fig. 7 Registro A de 8 bits. Fuente: Propia.
16
Fig. 8 Registro de 4 bits. Fuente: Propia. 3.5.2 Multiplexor 1 A continuación, se detalla los pines que fueron modificados para una conexión como sigue: los pines RD0 – RD7 se conectaron con los pines del registro D, en la tabla siguiente se muestra.
74157( Multiplexor Cuadruple 2 a 1) Pin nA, nB -A, B
Detalle Entrada de datos. Selectores de entrada.
-E
Habilitador de salida.
nY
Salida de datos
17
Tabla 2. Detalle del Multiplexor 74157.
74157 (Multiplexor Cuádruple 2 a 1) -A / B
Na
nB
-E
Y
X
X
X
1
0
0
1
X
0
1
0
0
X
0
0
1
X
1
0
1
1
X
0
0
0
Tabla 3. Códigos de operación del Multiplexor 74157.
18
3.5.3 Multiplexor de Selección Multiplexor de selección 74157 de 8 bits. De acuerdo a la modificación selecciona entre el registro D o el registro B para mostrar el resultado de las operaciones aritmético – lógicas en el registro A en especial el cociente de la división que anteriormente se mostraba en el registro D.
Fig. 9 Multiplexor de 8 bits. Fuente: Propia. 3.5.4 Unidad Aritmética Lógica Unidad Aritmético-Lógica de ocho bits. Se utilizó dos ALU 74LS181 de cuatro bits encargado de realizar las operaciones aritmético – lógicas, priorizando la operación de división, es decir que calculado el cociente permita pasar el resultado sin ninguna modificación para ser almacenado en el registro A, para esta operación el código utilizado fue: ALU0 = 0, ALU1 = 1, ALU2 = 0 y ALU3 = 1; y el bit M = 1.
19
74181(Unidad aritmetica lógica de 4 bits) Pin A0 - A3
Detalle Entrada de operandos.
B0-B3
Entrada de operación.
F0-F3
Habilitadores de salida.
S0-S3
Selección de funcion de entrada.
CN
Entrada acarreo.
M
Modo de control de entrada.
A=B
Salida de comparador.
CN+4
Salida de acarreo.
G
Acarreo genera salida.
P
Acarreo propaga salida. Tabla 4. Detalle de la Unidad Aritmética Lógica 74181.
20
Fig. 10 Unidad Aritmetica Logica. Fuente:Propia.
21
3.5.5 Tabla para selección de operación La siguiente tabla muestra las entradas necesarias para realizar la operación de división modificada.
Fig. 11 Valores de entradas para la operación de división modificada del ALU (74LS181). Fuente: [2]
22
3.4 CPU Modificado Fig. 12 Unidad central de proceso implementada. Fuente: Propia.
23
3.5 Microprograma Modificado
Fig. 13 Instrucciones de la micromemoria modificada. Fuente: Propia.
DESCRIPCIÓN: tb
Controlador de los trifuffers de dirección
m2a
Multiplexor del registro B/desplazamiento
coen
Habilita del contador
coclr
Reset del contador
rsen
Habilitador de shift
res/s
Habilitador de entrada del shift
rsmr
Reset del shift
m1a
multiplexor de A/0
coen
Entrada habilitadora de salida del registro C
ce
Escritura/lectura del registro C
cmr
Reset del registro C
be
Escritura/Lectura del registro B
ae
Escritura/Lectura del registro A
ti
Habilitador de trifuffer de datos
24
CONCLUSIONES •
Modificar una CPU con operaciones aritmético - lógicas requieren no solo de conocimientos de programación además de conocimientos de manipulación de bits y conocimientos del funcionamiento de la CPU modificada.
•
Para este caso la unidad de control microprogramada modificada resulto un poco complicada al momento de manipular los bits de los microinstrucciones.
•
A pesar de ser un modelo muy básico, el nivel de comprensión de los algoritmos fue complejo para poder interpretar y modificar las microinstrucciones.
•
Para la implementación del ALU se tubo que modificar parte del circuito, lo que resulto en la modificación de parte del proyecto.
•
Algoritmos como la división y la multiplicación solo requieren operaciones básicas de suma y resta para realizarse, por eso el proyecto base tenía una unidad de control ALU que requería de un solo bit para enviar las señales y usar estas dos operaciones, para implementar funciones lógicas tuvimos que usar microinstrucciones para enviar señales al ALU, lo cual resulta para nosotras, más útil porque se pueden utilizar todas las operaciones restantes que el ALU ofrece. Probablemente por eso fue un poco más sencillo implementar las operaciones lógicas.
•
Todos los algoritmos usados para la multiplicación y división son eficientes, una tarea aparte fue comprender la lógica y los componentes con el que fueron diseñados. El algoritmo de división requiere de más saltos que el de multiplicación haciendo que la escritura y comprensión del microprograma sea un poco más complicado. El algoritmo de multiplicación es más sencillo pues usa sumas sucesivas, pero ambos requieren un desplazador para cada uno y activan el PSW así que se tienen que revisar sus valores para continuar el algoritmo.
25
RECOMENDACIONES •
Utilizar Excel para comprender e ilustrar mejor las microinstrucciones modificadas para cada operación que luego serán grabadas en las memorias de la unidad de control.
•
Se requiere bastante detalle y cuidado al realizar la configuración de las memorias de control (EPROM) para obtener los resultados deseados.
•
En la modificación, el uso de los componentes y la funcionalidad de estos debe ser muy claro y documentado lo que permitirá una gran facilidad de seguimiento del proceso.
26
BIBLIOGRAFIA
Bibliografía [1] D. dikygs, «Nociones de Informatica,» 28 abril 2011. [En línea]. Available: http://nocionesdeinformatica.blogspot.pe/2011/04/esquema-general-de-un-ordenador-i.html. [Último acceso: 19 12 2017]. [2] M. Sandi, «microprocesadores blogspot,» jueves septiembre 2006. [En línea]. Available: http://6270microprocesadores.blogspot.pe/. [Último acceso: 15 11 2017]. [3] A. Tanenbaum y T. Austin, Structured Computer Organization, New Jersey: Pearson Education, 2013. [4] sistemasumma, «sistemas umma,» 9 Septiembre 2012. [En línea]. Available: https://sistemasumma.com/2012/09/09/diagrama-de-circuitos-logicos/. [Último acceso: 15 11 2017]. [5] Huamán Lima, Ines Katia y JZegarra Corimanya, Cristel Dayana , «Implementación de las
operaciones lógicas and, or, not en una CPU con una unidad de control microprogramada» Cusco, 2017.
27