Simulador UC BIRD 1.0
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Manual del usuario
 

 

 

 

 

 

 

 

 

 

 

 

 


Índice

 

 

 

 

1. Instalar Simulador UC BIRD 1.0                                      

1.1 Introducción                                                                                 

1.2 Requisitos del sistema                                                          

1.3 Instalación BAJO Windows 95/98/Me, Windows 2000/XP                

1.4 Desinstalación del Simulador UC BIRD 1.0                            

1.5 Observaciones sobre la instalación                                             

 

 

2. VISIÓN GENERAL DE la aplicación                                    

 2.1 Componentes de la barra de menú                                      

   2.1.1 Menú Archivo                                                                          

   2.1.2 Menú Ver                                                                                 

   2.1.3 Menú Simulación                                                                     

   2.1.4 Menú Opciones                                                                        

   2.1.5 Menú Ayuda                                                                             

     2.2 Componentes de la barra de estado                                                 

     2.3 Componentes de la barra de herramientas                        

 

 

3. Ejecutando Simulador UC BIRD                                      

     3.1 Unidad de Control                                                                       

  3.2 algoritmo de control (asm)                                               

  3.3 Microprograma                                                                             

                                                                  3.4 memoria de control                                                                     

      3.5 señales de control                                                                      

     3.6 VISTA reducida DE LA UNIDAD DE PROCESO                             

     3.7 MEMORIA PRINCIPAL

     3.8 CONJUNTO DE REGISTROS

     3.9 PROGRAMA EJEMPLO

 

 

4. empezando a simular

    4.1 CONFIGURAR EL PERIODO DE RELOJ

     4.2 ELEGIR TIPO DE SIMULACIÓN

     4.3 SIMULAR UNA INSTRUCCIÓN

         4.3.1 MOSTRAR el FORMATO DE LA INSTRUCCIÓN

         4.3.2 MOSTRAR LA TABLA DE TRADUCCIÓN

         4.3.3 MOSTRAR EL ALGORITMO DE CONTROL (asm)

         4.3.4 VISUALIZAR LAS SEÑALES DE CONTROL ACTIVADAS EN LA U.P.

         4.3.5 RESETEAR LA UNIDAD DE CONTROL

     4.4 SIMULAR EL PROGRAMA EJEMPLO

         4.4.1 MODIFICAR LOS DATOS DEL PROGRAMA EJEMPLO

         4.4.2 MOSTRAR EL ESTADO DE LA U.P.

         4.4.3 MOSTRAR EL ALGORITMO DE CONTROL SIEMPRE

 

 

5. REPROGRAMAR LA MEMORIA DE CONTROL

        5.1 REPROGRAMAR LA INSTRUCCIÓN “AND”

         5.2 RESTAURAR LA MEMORIA DE CONTROL

         5.3 SIMULAR UNA INSTRUCCIÓN NUEVA

 

 


1. Instalar Simulador UC BIRD 1.0.

 

1.1 Introducción.

    La aplicación que está a punto de instalar es un simulador de la unidad de control microprogramada de la máquina BIRD4, que le permite simular un conjunto reducido de 4 instrucciones y un programa ejemplo que realiza la multiplicación de 2 números. La aplicación le muestra toda la información necesaria para comprender su funcionamiento.

     

1.2 Requisitos del sistema.

Para un correcto funcionamiento del sistema, la aplicación requiere:

à Windows 95/98/Me o Windows 2000/XP.

à Procesador tipo Pentium a 300 MHz o superior, 64 MB de RAM.

à Resolución de pantalla mínima de 1024 x 768 (imprescindible para un correcto funcionamiento de la aplicación)

à Teclado, ratón y altavoces (opcional).

 

1.3 Instalación bajo Windows 95/98/Me, Windows 2000/XP.

El software suministrado con el CD Simulador UC BIRD 1.0 ha sido instalado en plataformas PC bajo sistemas operativos Windows 95/98 y Windows 2000/XP. Para instalar la aplicación en su ordenador siga los siguientes pasos:

1.     Inserte el CD Simulador UC BIRD 1.0 en su  unidad de CD-ROM.

2.     Haga doble clic sobre el icono Mi PC situado en el escritorio de su ordenador.

3.     Haga doble clic sobre la unidad de CD-ROM con la etiqueta Simulador UC BIRD.

4.     Haga doble clic sobre el fichero ejecutable de nombre Setup.exe y comenzará la instalación de la aplicación Simulador UC BIRD 1.0 en su ordenador según muestra la Figura 1.1.

 

Figura 1.1: Interfaz que muestra el inicio del proceso de instalación de la aplicación Simulador    UC BIRD 1.0 en su ordenador.

 

 

5.     Haga clic sobre el botón Aceptar para comenzar la instalación de la aplicación y aparecerá una nueva interfaz para elegir la ubicación donde se instalará la aplicación, tal y como se muestra en la Figura 1.2.

6.     Si lo desea puede modificar la ubicación mostrada por defecto haciendo clic sobre el botón Cambiar directorio.

 

Figura 1.2: Interfaz que indica la ubicación donde se instalará la aplicación Simulador UC BIRD 1.0.

 

 

7.     Haga clic sobre el icono que muestra un ordenador una vez haya elegido la ubicación donde desea que se instale la aplicación y aparecerá una nueva interfaz donde puede elegir el nombre del grupo de programas tal y como muestra la Figura 1.3.

 

Figura 1.3: Interfaz que el nombre del grupo de programas.

 

Haga clic sobre el botón Continuar para comenzar con la instalación y aparecerá una interfaz que muestra el progreso de la instalación, tal y como aparece en la Figura 1.4.

 

Figura 1.4: Interfaz que muestra un contador de progreso del proceso de instalación de la aplicación Simulador UC BIRD 1.0.

 

Una vez la aplicación ha sido instalada en nuestro ordenador aparecerá un mensaje informando que la instalación ha finalizado satisfactoriamente, tal y como se muestra en la Figura 1.5. Reinicie el equipo si así lo desea para registrar los cambios realizados en el sistema.

 

Figura 1.5: Interfaz que presenta un mensaje informativo indicando que la instalación ha finalizado de forma satisfactoria.

 

 

Como consecuencia de estos pasos, en nuestro menú de inicio se habrá creado un nuevo grupo de elementos de nombre Simulador UC BIRD 1.0 que contiene el acceso directo a la aplicación Simulador UC BIRD 1.0 como muestra la Figura 1.6.

 

Figura 1.6: Imagen que muestra la ruta de acceso para iniciar el Simulador de la Unidad de Control.

 

 

 

1.4 Desinstalación del Simulador UC BIRD 1.0.

Puede desinstalar la aplicación Simulador UC BIRD 1.0 instalada en su ordenador siguiendo los siguientes pasos:

1.     Haga clic en el menú de inicio, seleccione Configuración y haga clic en Panel de Control. Aparecerá el Panel de Control del sistema.

2.     Haga doble clic en el icono Agregar o quitar programas y aparecerá un formulario que muestra todas las aplicaciones instaladas en nuestro ordenador.

3.     Seleccione de la lista de software la entrada Simulador UC BIRD 1.0 y se activará el botón Agregar o quitar como se muestra en la Figura 1.7.

 

Figura 1.7: Interfaz que muestra la ventana para desinstalar la aplicación que ha seleccionado.

 

 

4.     Haga clic sobre el botón Agregar o quitar y aparecerá un formulario pidiendo la confirmación de eliminar la aplicación Simulador UC BIRD 1.0, tal y como se muestra en la Figura 1.8. Haga clic sobre el botón si desea quitar la aplicación o haga clic sobre el botón No para cancelar la operación.

 

Figura 1.8: Interfaz de confirmación de eliminación de la aplicación Simulador UC BIRD 1.0.

 

 

1.5 Observaciones sobre la instalación.

         Es posible que durante el proceso de instalación, dependiendo de las aplicaciones que ya tenga instaladas en su equipo, aparezcan algunos mensajes advirtiéndole de un error al registrar un determinado archivo.

Ello se debe a que el archivo que se intenta registrar ya está registrado y por lo tanto no debe volver a ser registrado a no ser que sea una versión más reciente. Se recomienda que se conserven los archivos del sistema y por lo tanto haga clic sobre el botón Si (conservar el archivo) y seguirá el proceso de  instalación.

 

                                                                Figura 1.9: Conflicto entre versiones de un archivo.

 

 

 

2. Visión general de la aplicación.

         Una vez instalada la aplicación, podrá acceder a ella a través del Menú de Inicio del sistema de la siguiente forma:

1.     Haga clic en el botón de Inicio del sistema.

2.     Seleccione Programas, luego Simulador UC BIRD 1.0.

3.     Haga clic en Simulador UC BIRD 1.0.

 

      En caso de que la pantalla de su ordenador no disponga de la resolución óptima (1024x768) no podrá iniciar el simulador. Por el contrario, si dispone de ella pero su resolución actual no es la indicada (1024x768) se procederá al cambio de la misma.

      Como resultado de los pasos anteriores y a continuación de la pantalla de presentación se mostrará la aplicación Simulador UC BIRD con el aspecto que aparece en la Figura 2.1.

 

Memoria Principal y Conjunto de Registros

 

Unidad de Proceso

 

Señales de control

 

Algoritmo ASM

 

Unidad de Control

 

Barra de menú

 

Barra de herramientas

 

Microprograma

 

Barra de estado

 

Memoria de Control

 

Programa ejemplo

 

Barra de título

 

Figura 2.1: Pantalla principal de la aplicación Simulador UC BIRD 1.0

 

 

 

   Tal y como puede apreciarse en la Figura 2.1, la interfaz de la aplicación Simulador UC BIRD está compuesta por:

1.     Barra de título:   

     En ella se muestra el nombre de la aplicación y la hora actual del sistema.

2.     Barra de menú:

     En ella se muestran las distintas operaciones que permite realizar la aplicación.

3.     Barra de estado:

Esta barra muestra, en este orden: el estado del simulador, el código de la instrucción que se está simulando, el nombre de la instrucción, el valor del PC, el periodo de la señal de reloj y la fecha del sistema.

4.     Barra de herramientas:

Esta barra contiene información sobre el estado de la simulación de la Unidad de Control así como de operaciones básicas en la simulación de una instrucción (parar simulación y continuar simulación).

5.     Unidad de Control:

Esta parte de la interfaz muestra visualmente la estructura y la información referente a cada componente hardware de la Unidad de Control (μPC, μIR, Memoria de Control, Tabla de Traducción, etc.). Durante la simulación se puede ir comprobando cómo se va generando dicha información y el camino que sigue en la Unidad de Control.

6.     Señales de Control:

Es el conjunto de 18 señales que la Unidad de Control debe activar para el correcto funcionamiento de la Unidad de Proceso. Durante la simulación de una instrucción se podrá observar mediante el encendido/apagado de unas señales luminosas, cuales son las señales que se activan/desactivan en cada estado del microprograma.

7.     Microprograma:

Es una secuencia de microinstrucciones (donde cada una de ellas se corresponde a un estado en el algoritmo de control) escritas en microensamblador, que están cargadas en la memoria de control y que representan los pasos que deben seguirse para la ejecución ciclo a ciclo de una instrucción en ensamblador.  

8.     Unidad de Proceso:

Como se observa en la pantalla principal (Figura 2.1), es una vista reducida de la Unidad de Proceso que permite ver el componente (contador, registro, etc.) al que corresponde cada señal de control

9.     Memoria de Control y Algoritmo ASM (Algoritmo de Control):

Seleccionando la pestaña correspondiente a “Memoria de Control y Algoritmo ASM” le permite ver el contenido de la Memoria de Control, que se corresponde con cada microinstrucción del microprograma anteriormente descrito.

Junto con la Memoria de Control, también podrá ver el Algoritmo ASM seguido por el microprograma y ver, en cada momento, el estado en el que se encuentra el mismo.

10.Memoria Principal y Conjunto de Registros:

Seleccionando la pestaña “MP”, se mostrará tanto el contenido de la Memoria Principal como el Conjunto de Registros. La Memoria Principal está dividida en dos áreas: de datos y de instrucciones, pudiendo modificar el área de datos. En cuanto al Conjunto de Registros, está formado por 32 registros, de los que el registro 0 contiene el valor 0 y no se puede modificar y el registro 31 se corresponde con el puntero de pila (SP).

11.Programa ejemplo:

Seleccionando la pestaña “programa”, se mostrará el programa ejemplo abierto, escrito tanto en lenguaje de alto nivel como en lenguaje ensamblador (mediante las 4 instrucciones básicas que simula la aplicación).

 

2.1 Componentes de la barra de menú.

Como puede apreciarse en la Figura 2.1, la interfaz de la aplicación Simulador UC BIRD posee varios menús que permiten: abrir un programa ejemplo, visualizar distintos elementos del Simulador, simular una instrucción, mostrar las opciones del simulador o la ayuda disponible, entre otras.

 

2.1.1 Menú Archivo:

El menú “Archivo” permite abrir el programa ejemplo, restaurar el microprograma de las modificaciones hechas por el usuario o realizar ciertas operaciones sobre la Memoria Principal, como se aprecia en la Figura 2.2.

Figura 2.2: Controles de menú del elemento de menú “Archivo”.

 

*     Abrir Programa Ejemplo (Ctrl+F1):

Carga y muestra el programa ejemplo escrito en lenguaje de alto nivel y su correspondiente traducción a ensamblador.

*     Cargar programa en MP (Ctrl+F2):

Una vez cargado el programa ejemplo, quedará habilitada la opción de cargarlo en Memoria Principal. Al  seleccionar dicha opción se realiza la carga del programa en Memoria Principal, pudiendo ver en ese momento el contenido de la Memoria o modificando el área de datos de la misma (sólo datos A y B). En éste momento podremos empezar la simulación del programa.

*     Descargar programa de MP (Ctrl+D):

Ésta opción quedará habilitada en el momento en que carguemos el programa en Memoria Principal, y su función es inicializar la Memoria Principal, dejándola vacía (sin ningún dato ni instrucción).

*     Modificar datos de MP (Ctrl+M):

Presenta una interfaz a través de la cual se podrán modificar los datos de entrada (A y B) del programa ejemplo cargado en Memoria Principal.

*     Restaurar microprograma (Ctrl+F5):

Puesto que el usuario puede modificar la Memoria de control, con todo lo que esto supone para la incertidumbre de los resultados de la simulación, esta opción permite restaurar el contenido de la misma a su contenido por defecto.

*     Salir (Supr):

Cierra la aplicación.

 

2.1.2 Menú Ver:

El menú “Ver” ofrece la posibilidad de mostrar los distintos elementos del simulador: Memoria de Control, Memoria Principal, etc. Dicho elemento de menú está formado por los controles de menú que aparecen en la Figura 2.3.

Figura 2.3: Controles de menú del elemento de menú “Ver”.

 

*     Memoria de Control y ASM (F1):

Visualiza el contenido de la Memoria de Control microprogramada y el Algoritmo ASM asociado al mismo. Durante la simulación, el algoritmo ASM muestra el estado actual de la Unidad de Control destacándolo de color verde. Además, haciendo clic sobre el algoritmo ASM se muestra una pantalla con el algoritmo ASM en tamaño mayor.

*     Memoria Principal y CR (F2):

Muestra tanto el contenido de la Memoria Principal como el Conjunto de Registros (CR).

*     Programa cargado (F3): 

Muestra el programa ejemplo abierto o cargado en Memoria Principal, se puede ver tanto el programa escrito en lenguaje de alto nivel como en lenguaje ensamblador.

*     Estado de la UP (F4):

Muestra el estado en el que se encuentra la Unidad de Proceso: valor de todas las señales de control, valor del PC, valores de los registros IR1, IR2, Rx, Ry, salida de la ALU y el valor del flag Z de la ALU (flag que indica si la salida de la ALU es 0).

*     Todas las microinstrucciones (Ctrl+U):

Muestra el microprograma completo junto con las nuevas microinstrucciones añadidas por el usuario.

*     Operaciones de la ALU (Ctrl+W):

Muestra una interfaz con los códigos necesarios (señales a2, a1, a0) para cada operación que se quiera realizar con la ALU.

 

2.1.3 Menú Simulación:

El menú “Simulación” permite: empezar la simulación de una instrucción o del programa ejemplo; parar, continuar o terminar la simulación iniciada; e incluso cambiar el periodo de la señal de reloj (clk1). Dicho menú aparece en la Figura 2.4.

 

Figura 2.4: Controles de menú del elemento de menú “Simulación”

 

*     Simular Instrucción (forma continua) (Ctrl+Q):

Comienza la simulación de una instrucción, dicha simulación se hará de forma que la señal de reloj será activada por el ordenador. Si se desea, se puede cambiar el tipo de simulación por medio del submenú tipo (continua, ciclo a ciclo, paso a paso).

*     Simular Instrucción (ciclo a ciclo) (Ctrl+A):

Igual que en el caso anterior, comienza la simulación de una instrucción, pero ahora, es el usuario el encargado de activar la señal de reloj (clk1) en el momento que crea oportuno.

*     Simular Instrucción (paso a paso) (Ctrl+Z):

Se inicia la simulación de una instrucción donde las dos señales de reloj (clk1 y clk2) deben ser activadas por el usuario.

*     Simular Programa Ejemplo (Ctrl+E):

Una vez abierto el programa ejemplo (Archivo -> Abrir Programa Ejemplo) y cargado en Memoria Principal (Archivo -> Cargar Programa en MP) podrá iniciar la simulación del mismo. Se mostrará la Memoria Principal y el Conjunto de Registros. Podrá ver con detalle las modificaciones realizadas por el programa en ambas estructuras.

*     Parar Simulación (Ctrl+P):

Detiene la simulación de la instrucción “congelando” toda la información. Así puede ver de forma más clara y tranquila.

*     Continuar Simulación (Ctrl+C):

Continúa la simulación de la instrucción previamente parada.

*     Simulación Rápida (Ctrl+R):

Cambia la duración del ciclo de reloj (clk1) a su valor mínimo (3 segundos). De esta forma la simulación será mucho más rápida.

*     Simulación Lenta (Ctrl+L):

Modifica la duración del ciclo de reloj (clk1) a un valor intermedio (15 segundos), de modo que la simulación será más lenta (el valor máximo del ciclo de reloj es 59 segundos).

*     Tipo:

Este menú muestra a su vez un submenú donde podemos elegir el tipo de simulación: continua (F5), ciclo a ciclo (F6) o paso a paso (F7).

*     Terminar Simulación (Ctrl+T):

Finaliza la simulación de la instrucción o del programa ejemplo que se encuentra simulando.

*     Tiempo de clk1:

Este menú muestra otro submenú donde permite aumentar (F12) o disminuir (F11) en un segundo el periodo de reloj (clk1) cada vez que pulse o seleccione.

 

2.1.4 Menú Opciones:

El menú “Opciones” muestra las opciones sobre el simulador. Estas son: la configuración del tiempo de reloj (clk1), la modificación de la dirección de inicio del área de instrucciones de Memoria Principal, el tipo de simulación (continua, ciclo a ciclo o paso a paso) o el número de ciclos que como máximo se simulará una instrucción. Dicho elemento de menú se muestra en la Figura 2.5.

 

Figura 2.5: Controles de menú del elemento de menú “opciones”.

 

 

*     Ver Opciones (Ctrl+O):

Presenta una pantalla por medio de la cual podrá configurar la simulación a su gusto. Dicha interfaz se muestra a continuación en la Figura 2.6.

        Figura 2.6: Configuración de las opciones del simulador.

 

         Las opciones disponibles en la interfaz son las siguientes:

 

1) Ciclo de reloj.

Número de segundos que dura cada ciclo de reloj (clk1). Por defecto su valor es 11 segundos.

 

2) Algoritmo ASM.

à    Detener la simulación al mostrarlo: detiene la simulación al mostrar el algoritmo de control ASM.

à   Conservar tamaño de la ventana: dado que la ventana que muestra el algoritmo de control ASM es redimensionable, activando esta opción, se conserva el último tamaño de la ventana utilizado.

 

3) Tipo de simulación.

à     continua: realiza la simulación de forma continua como se comentó anteriormente en el menú “Simulación”.

à ciclo a ciclo: realiza la simulación ciclo a ciclo de una instrucción, el usuario es el encargado de activar la señal de reloj principal (clk1).

à  paso a paso: realiza la simulación paso a paso de una instrucción, es decir, las señales de reloj clk1 y clk2 son activadas por el usuario.

Estas tres opciones se pueden seleccionar mientras se esté realizando la simulación, pudiendo alternar en tiempo de simulación el propio tipo de simulación, según nuestras necesidades.

         4) Memoria Principal.

à @ inicio de las instrucciones: permite modificar la dirección de comienzo de las instrucciones en Memoria Principal. El valor por defecto es 16384 (4000 en hexadecimal) y el rango de valores comprende desde 7 (0007 H:) a 65518 (FFEE H:).

 

5) Simulación avanzada.

à Informar del valor de Z: en el caso de estar simulando el programa ejemplo y en concreto una instrucción de tipo BEQ, si tiene activada esta opción, le informará en el estado 15, del valor del flag Z por medio de una ventana de información

à Número de ciclos a simular: indica el número de ciclos o microinstrucciones que el simulador va a dedicar para simular una instrucción que haya microprogramado. 

 

 

2.1.5 Menú Ayuda:

El menú “Ayuda” permite ver la ayuda disponible sobre la aplicación, tal y como se muestra en la Figura 2.7.

 

Figura 2.7: Controles de menú del elemento de menú “Ayuda”

 

*     Contenido:

      Muestra el archivo de ayuda disponible sobre la aplicación.

*     Acerca del Simulador UC BIRD (Ctrl+B):

      Visualiza una pantalla de animación mostrando el título de la aplicación y su autor.

 

 

2.2 Componentes de la barra de estado.

        Como se aprecia en la interfaz del Simulador UC BIRD de la Figura 2.1, la aplicación posee una barra de estado que se muestra ampliada en la Figura 2.8. En esta barra se ofrece información referente a: el estado del simulador (Simulando / Parado / Esperando), el código de la instrucción que se está simulando, el nombre de la instrucción, el valor del PC (al simular el programa ejemplo) y el periodo de ciclo de reloj (configurable con las teclas F11 y F12).

 

 

Estado del simulador

 

Código de instrucción

 

Nombre de la instrucción

 

Valor del PC

 

Periodo de reloj

 
 

 

 


Figura 2.8: Barra de estado del Simulador UC BIRD.

 

 

2.3 Componentes de la barra de herramientas.

Indica el estado de la simulación.

 
Como puede apreciarse en la interfaz de la aplicación Simulador UC BIRD de la Figura 2.1, posee una barra de herramientas que muestra el estado de la simulación (simulando, parada o esperando instrucción) y ofrece funcionalidades como: parar/  continuar la simulación, activar/desactivar el sonido de la señal de reloj o mostrar la pantalla de opciones. Todo ello se muestra en la Figura 2.9.

 

Figura 2.9: Barra de herramientas del Simulador UC BIRD.

 

 

 

 

3. Ejecutando Simulador UC BIRD.

El simulador de la Unidad de Control de la máquina BIRD4 ofrece multitud de información que es necesario comprender antes de empezar a simular una instrucción.

Como se ha comentado anteriormente en el apartado 2, la información básica que ofrece el simulador a través de su pantalla principal es: el hardware de la Unidad de Control y las interconexiones entre los componentes, las 18 señales activadas por la Unidad de Control, el esquema de la Unidad de Proceso, el contenido de la Memoria de Control (microprograma), el Algoritmo ASM, la Memoria Principal, el Conjunto de Registros y el programa ejemplo. A continuación se explica con detalle toda esta información disponible.

 

 

3.1 Unidad de Control.

         La Unidad de Control guía y controla el funcionamiento de toda la máquina. Existen varios métodos para implementar la UC agrupándose en dos grandes bloques: métodos cableados y métodos microprogramados. En este caso se ha utilizado el método microprogramado, donde el autosecuenciamiento de la UC y las señales de control que se enviarán en cada estado a la UP se guardan en la memoria de control (Memoria EPROM), y constituye lo que se denomina microprograma.

La UC microprogramada es un circuito lógico sencillo que permite realizar la ejecución en secuencia de un conjunto de instrucciones muy elementales, llamadas microinstrucciones (no confundir con las instrucciones propias del lenguaje máquina). Cada microinstrucción contiene las señales de control que se enviarán a la UP, junto a una serie de bits que permitirán seguir el secuenciamiento, tal y como se observa en la Figura 3.1.

         En la imagen de la Figura 3.1 se observan también los datos generados durante la simulación: valor del μPC,  valor de la posición de la memoria de control a la que se está accediendo, contenido del μIR, etc.

         Existe la posibilidad de ver la información generada en las salidas de cada componente simplemente pasando el puntero del ratón sobre los cables de los datos. Si desea ver la información disponible en la tabla de traducción (correspondencia entre código de instrucción y dirección de la memoria EPROM) basta con hacer clic sobre la propia tabla.

 

Figura 3.1: Estructura y estado del hardware de la UC microprogramada.

 

 

3.2 Algoritmo de control (ASM).

El algoritmo de control constituye un esquema claro sobre la situación de la unidad de control. En él es fácil ver en qué estado se encuentra la unidad de control y qué va a hacer en el siguiente ciclo. Su “implementación” de forma microprogramada, es lo que la aplicación pretende mostrar. La Figura 3.2 muestra dicho algoritmo de control.

 

Estado actual del algoritmo de control.

 

              Figura 3.2: Algoritmo de control y el estado actual durante la simulación.

 

Para visualizar el algoritmo de control hay tres opciones:

a) seleccionar en el menú “Ver”, la opción “Memoria de control y ASM

b) hacer clic sobre el botón vertical “MC y ASM” (ver Figura 3.8).

c) mediante la tecla rápida F1.

 

En la Figura 3.2 se puede observar el algoritmo de control simulado por la aplicación. El estado en el que se encuentra la UC está resaltado en color verde y coincide con el estado del microprograma (ver Figura 3.3). Si se desea ampliar el tamaño del algoritmo hay que hacer clic sobre el mismo y se mostrará una ventana donde se podrá ver con claridad el lenguaje utilizado para indicar qué es lo que se hace en cada estado.

 

3.3 Microprograma.

        Un microprograma trata de reflejar, por medio de microinstrucciones escritas en un lenguaje microensamblador, las “acciones” (señales de control + secuenciamiento de la UC) que se llevan a cabo en cada estado del algoritmo de control. Dicho microprograma ayuda a abstraer todas las señales que deben activarse en cada ciclo, siendo más comprensible e intuitivo que la utilización del lenguaje binario (tarea tediosa e incómoda).

 

Microinstrucción que se está ejecutando.

 

Figura 3.3: Microprograma escrito en lenguaje microensamblador.

 

La Figura 3.3 muestra el lenguaje microensamblador utilizado para la escritura del microprograma.

         Una instrucción en lenguaje ensamblador (add, beq, load, store) para su ejecución, pasa por varios estados del algoritmo de control, y cada estado equivale a una microinstrucción.

          El formato de una microinstrucción puede dividirse en dos campos: el que define el siguiente estado (7 bits) y el que define las señales de control (18 bits), tal como se muestra en la Figura 3.4.

 

Figura 3.4: Formato de una microinstrucción.

 

En nuestro caso, para definir el siguiente estado se utilizan 7 bits, de los cuales 2 bits son para indicar los 3 cualificadores (0, Z y 1) utilizados para efectuar el secuenciamiento del microprograma. El 0 permite el secuenciamiento consecutivo del microprograma (μPC:= μPC+1); por medio de la constante 1 se efectúan los saltos incondicionales del microprograma; el flag Z (flag de la ALU) es uno se efectúa el salto al estado indicado en el campo “est_salto”. Un bit se utiliza para seleccionar la dirección de salto de la tabla de traducción o del contenido del campo “est_salto” de la propia microinstrucción y los 4 bits restantes indican el estado de salto. Por último, son 18 bits los que se necesitan para definir las señales de control.

 

3.4 Memoria de Control.

         En la memoria de control se encuentra cargado el microprograma en forma de unos y ceros anteriormente descrito y del cual la unidad de control va leyendo. En nuestro caso, la memoria utilizada tiene un tamaño de 16x32, es decir, una capacidad para un microprograma con 16 microinstrucciones de 32 bits como máximo; lo que es lo mismo, una unidad de control de 16 estados como máximo. La lectura de la unidad de control es secuenciada por un contador que recibe el nombre de microcontador  de programa o μPC.

Para visualizar la Memoria de Control hay tres opciones:

a) seleccionar en el menú “Ver”, la opción “Memoria de control y ASM

b) hacer clic sobre el botón vertical “MC y ASM” (ver Figura 3.8).

c) mediante la tecla rápida F1.

         En la Figura 3.5 se muestra el contenido de dicha memoria.

 

Contenido de la memoria ocupada por una microinstrucción.

 

Dirección de memoria donde se encuentra la micro instrucción señalada

 

Posiciones libres de la Memoria de Control.

 

                            Figura 3.5: Contenido en binario de la memoria de control.

 

 

         Existen 5 microinstrucciones libres en la Memoria de Control (de la número 8 a la 12) que pueden ser utilizadas por el usuario para microprogramarlas en binario (indicando el secuenciamiento adecuado junto con el estado de salto y las señales de control) alguna otra instrucción. Además, el usuario puede modificar las que ya están microprogramadas y que corresponden a las 4 instrucciones básicas que el simulador por defecto simula.

         Como se aprecia en la figura, durante la simulación aparece seleccionada la posición de memoria a la que se está accediendo, en este ejemplo es la posición 5 y su contenido se corresponde con la columna de la derecha.

 

 

3.5 Señales de control.

         Las señales de control que la unidad de control  lee de la memoria de control van directamente a los componentes de la unidad de proceso, de modo que ésta realiza las acciones indicadas por dichas señales. Como se ha indicado anteriormente, el número de señales de control es 18 y la Figura 3.6 muestra de forma visual el momento en el que se activa cada señal de control.

 

Señales activadas durante la simulación.

 

                                                   Figura 3.6: Visualización de las señales de control activadas.

 

 

 

3.6 Vista reducida de la Unidad de Proceso.

        La aplicación ofrece la posibilidad de ver tanto una vista reducida como ampliada de la Unidad de Proceso. La Figura 3.7 muestra la Unidad de Proceso en tamaño reducido y su objetivo es que el usuario pueda ver la situación de cada señal de control (ver círculo rojo) simplemente haciendo clic sobre la señal de la interfaz que muestra todas las señales de control (ver Figura 3.6).

         Haciendo clic con el botón izquierdo del ratón sobre la imagen de la Unidad de Proceso, ésta se ampliará y arrastrando el ratón sobre la imagen por cualquier dirección manteniendo pulsada la tecla “Shift” podrá moverse por la imagen. Para restablecer la imagen haga clic con el botón derecho del ratón sobre la imagen.

 

Haga clic aquí para ampliar la UP.

 

Haga clic con el botón izquierdo del ratón sobre la imagen para hacer “zoom”. Para que la imagen retome su tamaño haga clic con el botón derecho del ratón.

 

Situación de la señal ld_Ry.

 

         Figura 3.7: Vista reducida de la Unidad de Proceso.

 

3.7 Memoria Principal.

Para visualizar la Memoria Principal hay tres opciones:

a) seleccionar en el menú “Ver”, la opción “Memoria Principal y CR

b) hacer clic sobre el botón vertical “MP y CR” (ver Figura 3.8).

c) mediante la tecla rápida F2.

 

 

 

 

 


Memoria Principal seleccionada

 

Botones verticales

 

Área de instrucciones

 

Área de datos.

 

                          Figura 3.8: Contenido de la Memoria Principal.

 

          La Memoria Principal se ha dividido arbitrariamente en dos áreas: área de datos (de la dirección 0000 a la 3FFF en hexadecimal.) y de instrucciones (de la dirección 4000 a la 4000 en hexadecimal). Los datos son de 16 bits ocupando una sola posición de memoria; sin embargo las instrucciones son de 32 bits (tamaño fijo), y por lo tanto ocupan 2 posiciones de memoria como muestra Figura 3.8. Por ejemplo, en el caso de la  instrucción “load” (LD r1,A) que ocupa dos posiciones (4000 H y 4001 H) y dado su formato de instrucción en la Figura 3.9, distinguimos los siguientes bloques de bits en Memoria Principal:

à 6 bits que indican el código de instrucción. Son los bits de más peso de la dirección 4000 H, en nuestro caso “000000”.

 

à 5 bits que indican el registro destino. Son los bits intermedios de la dirección 4000 H, en nuestro ejemplo “00001”, que se corresponde con el registro R1.

 

à 5 bits no utilizados por la instrucción. Son los bits de menos peso de la dirección de memoria 4000 H., en nuestro ejemplo “-----“, ya que su valor no nos interesa.

 

à 16 bits que indican la dirección de memoria a leer. Se corresponde con el contenido de la dirección 4001 H., en nuestro ejemplo la dirección 0 (dato A).

 

Figura 3.9:  Formato de instrucción de la instrucción load.

 

 

3.8 Conjunto de Registros.

        La máquina BIRD dispone de 32 registros (R0 .. R31), donde R0 siempre tiene el valor 0 y no se puede modificar. 

Para visualizar el Conjunto de Registros hay tres opciones:

a) seleccionar en el menú “Ver”, la opción “Memoria Principal y CR

b) hacer clic sobre el botón vertical “MP y CR” (ver Figura 3.8).

c) mediante la tecla rápida F2.

 

Haciendo clic sobre una posición del Conjunto de Registros se muestra su valor en decimal y en Complemento a 2. La Figura 3.10 muestra el contenido del Conjunto de Registros, destacando mediante fondo rojo el último registro modificado.

 

Modificación del registro 1 (R1) durante la simulación del programa ejemplo.

 

       Figura 3.10:  Contenido del Conjunto de Registros.

 

 

 

3.9 Programa ejemplo.

         Una vez abierto el programa ejemplo (menú Archivo -> Abrir Programa Ejemplo) dicho programa estará visible en la pantalla principal, sino haga clic en la tecla F3 o seleccione Programa Cargado en el menú Ver; podrá leer el programa tanto en lenguaje de alto nivel y como en ensamblador, según se muestra en la Figura 3.11.

 

Figura 3.11:  Programa ejemplo cargado.

 

 

 

4. Empezando a simular.

         Una vez vista y comprendida toda la información básica que dispone el simulador, se explican los pasos a seguir para una correcta simulación. Antes de empezar a simular una instrucción debemos conocer las opciones de las que disponemos.

 

4.1 Configurar el periodo de reloj.

         El periodo por defecto de la señal de reloj es de 11 segundos, pero ésta es configurable antes o durante la simulación a un valor comprendido entre 3 segundos (simulación rápida) y 59 segundos (simulación muy lenta). Se puede configurar el periodo de la señal de reloj de varias formas:

1)     Por medio del menú “Opciones”.

Abrir la ventana de opciones de simulación, para ello entrar en el menú Opciones y hacer clic en Ver Opciones. Aparece la pantalla que vemos en la Figura 4.1 donde podemos cambiar el valor del periodo.

 

Modifique el valor del periodo de la señal de reloj

 

Figura 4.1:  Interfaz que muestra las opciones de simulación. Configuración del periodo de la señal de reloj.

 

 

2)     Con las  teclas rápidas F11 y F12, que aumenta y decrementa en un segundo respectivamente el periodo de la señal de reloj.

 

Durante la simulación se puede cambiar el periodo de la señal de reloj por medio de las dos formas descritas anteriormente.

 

4.2 Elegir el tipo de simulación.

         Durante la simulación de una instrucción/programa podrá elegir el tipo de simulación: continua, ciclo a ciclo o paso a paso. Para ello siga los siguientes pasos:

1)     En el menú Simulación, seleccione el submenú Tipo y haga clic en alguna de las tres diferentes opciones: continua, ciclo a ciclo o paso a paso; como muestra la Figura 4.2. Por medio de las teclas rápidas F5, F6 y F7 puede cambiar en cualquier momento el tipo de simulación.

 

Figura 4.2:  Interfaz que muestra cómo elegir el tipo de simulación.

 

2)     También puede elegir el tipo de simulación desde el menú Opciones; para ello haga clic en el submenú Ver Opciones y se abrirá la ventana de la Figura 4.3

         A continuación elija el tipo de simulación más apropiado.

 

Seleccione la opción que desee.

 

Figura 4.3:  Interfaz que muestra las opciones de simulación. Elección del tipo de simulación.

 

          

4.3 Simular una instrucción.

        El simulador permite simular cuatro instrucciones básicas de la máquina BIRD (add, beq, load y store). Hay que hacer especial hincapié en que la simulación de cualquiera de las 4 instrucciones se realiza de forma que no se obtiene resultado alguno de la operación, simplemente se muestra el funcionamiento de la unidad de control microprogramada. Para iniciar la simulación de una de ellas seleccione el menú Simulación y haga clic en uno de los tres primeros submenús según el tipo de simulación que desea realizar (continua, ciclo a ciclo, paso a paso). Por ejemplo, si desea simular una instrucción ciclo a ciclo, debe hacer clic en simular instrucción (ciclo a ciclo).

Si se observa el algoritmo de control de la Figura 3.2 verá cómo las tres primeras microinstrucciones hacen referencia a la etapas de búsqueda (2 ciclos) y decodificación que son comunes a todas las instrucciones del procesador y por lo tanto las deben ejecutar todas las instrucciones. Es en la microinstrucción 2 (correspondiente al estado 2 del algoritmo de control y a la decodificación de la instrucción) donde se dará a elegir la instrucción que queremos simular (add, beq, load o store), tal y como muestra la interfaz de la Figura 4.12.

 

A continuación se explica con detalle la ejecución de la primera microinstrucción que podemos observar en el microprograma de la Figura 3.3.

 

         à Paso 1: Activación de la señal de reloj por primera vez.

Por defecto el μPC tiene el valor 15 (en decimal) pero al inicializarse o al hacer clic sobre el botón de “RESET”, éste contendrá el valor 0. En la imagen de la Figura 4.4 se puede observar cómo se inicia el μPC (valor 0) con la activación de la señal de reloj (clk1). Una vez haya concluido el primer ciclo de reloj, es el usuario el que tiene que activar la señal de reloj en cada ciclo por medio del botón que se observa en la Figura 4.4

 

 

Activación de la señal de reloj clk1 e inicio de la simulación.

 

Figura 4.4:  Pantalla que muestra el inicio de la simulación de una instrucción ciclo a ciclo.

 

 

à Paso 2: Lectura actualizada de Memoria de Control.

Los 4 bits de la salida del μPC llegan a la entrada de la dirección (@) de Memoria de Control, leyendo la nueva posición de la ROM que indica el nuevo valor del μPC, es decir la posición 0 de la Memoria de Control; ya que la Memoria de Control se encuentra leyendo siempre porque las señales CS y RD están constantemente a 1.

En la  Figura 4.5 se observa  la Memoria de Control parpadea, indicando de que se ha realizado la lectura.

 

 

Lectura de Memoria de Control de la posición 0. La Memoria parpadea.

 

Figura 4.5:  Pantalla que muestra la lectura actualizada de Memoria de Control.

 

 

Al realizar una nueva lectura de Memoria de Control (Paso 2), es decir, cuando se actualiza el valor del μPC, se puede ver en la Figura 4.6 cómo la nueva posición de Memoria de Control leída se encuentra seleccionada o destacada; del mismo modo en la pantalla principal se muestra el estado del algoritmo de control y la microinstrucción del microprograma que se está ejecutando.

También se puede observar que todavía no ha variado ninguna señal de control debido a que el contenido de la posición de Memoria de Control leída aún no se ha cargado en el μIR.

Si hubiese elegido simular paso a paso la instrucción, en este momento se pararía la simulación a la espera de que el usuario activara la señal de reloj clk2.

 

 

Estado del algoritmo de control.

 

Microinstrucción que se está ejecutando.

 

Contenido de la posición de Memoria que se acaba de leer.

 

Figura 4.6:  Pantalla que muestra el estado del algoritmo de control y del microprograma.

 

 

         à Paso 3: Activación de la señal de reloj clk2.

         En este momento es cuando se activa la señal de reloj clk2 resaltada de color rojo en la Figura 4.7. Esta activación se produce de forma automática debido a que no se ha elegido la simulación paso a paso siendo esta última la que permite al usuario activar las dos señales de reloj (clk1 y clk2).

 

 

La señal de reloj “clk2” se activa.

 

Figura 4.7:  Pantalla que muestra la activación de la señal de reloj clk2.

 

 

à Paso 4: Carga del μIR.

         Una vez activada la señal de reloj clk2, se carga en el μIR el contenido de la posición de Memoria que anteriormente se ha leído y que está resaltada de color verde.

En la Figura 4.8 se puede ver el nuevo contenido del μIR y cómo se muestran las 18 señales de control.

 

Se generan las señales de control.

 

Figura 4.8:  Pantalla que muestra la carga del μIR.

 

à Paso 5: Selección de los datos del multiplexor.

En este paso se produce la selección de los datos de los multiplexores . La selección del multiplexor que realiza la carga o el incremento del μPC se produce por medio de los 2 primeros bits del μIR, que es el Cod_cualificador (ver Figura 3.4); en nuestro ejemplo, al ser “00” el valor de los 2 bits del “cod_cualificador”, se selecciona la entrada 0 del multiplexor (incrementará el μPC), resaltándose ésta de color rojo según se aprecia en la Figura 4.9. Por otro lado, la selección del multiplexor que proporciona al μPC el dato para cargar la realiza el tercer bit del μIR (“desc") que al ser “0” también selecciona la entrada 0 del multiplexor, que corresponde a la dirección del estado de salto indicado en la propia microinstrucción.

 

 

Selección de los multiplexores.

 

Figura 4.9:  Pantalla que muestra la selección de los datos de los multiplexores.

 

 

         à Paso 6: Activación de la señal de carga/incremento del μPC.

         Como puede apreciarse en la Figura 4.10, la señal de incremento del μPC (señal “E”) se activa, pero no tendrá efecto hasta que el usuario active la señal de reloj clk1.

 

Activación de la señal de incremento del μPC.

 

Figura 4.10:  Pantalla que muestra la activación de la señal de incremento del μPC.

 

 

         à Paso 7: Actualización del μPC.

         Al activar el usuario la señal de reloj, se incrementa el contador del μPC al valor “1” (0001 en binario), como se aprecia en la Figura 4.11. A continuación se volverán a seguir los pasos anteriormente descritos para la ejecución de las siguientes microinstrucciones hasta terminar la simulación de la instrucción load.

 

 

El μPC se actualiza.

 

Activación de la señal de reloj clk1.

 

Figura 4.11:  Pantalla que muestra la actualización del μPC.

 

 

Una vez llegado al estado 2 del algoritmo de control (decodificación de la instrucción) la aplicación mostrará una pantalla similar a la Figura 4.12 donde el usuario debe elegir la instrucción que desea simular.

 

Figura 4.12:  Interfaz que muestra las instrucciones que se pueden simular.

 

 

4.3.1 Mostrar el formato de la instrucción.

        Durante la simulación de una instrucción es posible conocer el formato de la misma haciendo doble clic sobre el nombre de la instrucción en la barra de estado. Es necesario saber el formato de una instrucción para comprender el código binario que aparece en la Memoria Principal. La Figura 4.13 indica cómo mostrar el formato de una instrucción.

 

 


Figura 4.13:  Interfaz que indica cómo mostrar el formato de una instrucción.

 

 

          Tras el doble clic aparece una pantalla como la de la Figura 4.14 con el formato de la instrucción “load”. Si se hace doble clic sobre la barra de estado antes de llegar al estado de decodificación, es decir, sin haber elegido todavía una instrucción, se muestran todos los formatos de instrucción de todas las instrucciones.

 

Hacer doble clic sobre el nombre de la instrucción para conocer su código.

 

Figura 4.14:  Interfaz que muestra el formato de instrucción de la instrucción “load”.

 

 

4.3.2 Mostrar la Tabla de Traducción.

          La tabla de traducción (TT) contiene las correspondencias entre el código de instrucción y la dirección ROM donde comienza la fase de ejecución de la instrucción. Para ver el contenido de la tabla de traducción simplemente haga clic sobre la tabla de traducción de la Unidad de Control, tal y como se muestra en la Figura 4.15.

 

Haga clic sobre la tabla de traducción para que se muestre su contenido.

 

Figura 4.15:  Interfaz que indica cómo mostrar el contenido de la tabla de traducción.

 

 

          La Figura 4.16 muestra cómo aparecería el contenido de la tabla de traducción sobre la Unidad de Control; en ella se puede apreciar que la primera entrada (correspondiente a la instrucción load) se encuentra destacada o seleccionada, esto indica que es dicha entrada la que se está leyendo. En la imagen se puede ver la correspondencia entre el código de instrucción (“000000”) y la dirección de la memoria ROM (“0011”) donde comienza la ejecución de esa instrucción.

 

 

Contenido de la tabla de traducción.

 

Figura 4.16:  Interfaz que muestra el contenido de la tabla de traducción.

 

 

4.3.3 Mostrar el algoritmo de control (ASM).

        En ocasiones es interesante ver el algoritmo de control en un tamaño mayor, en el que se puedan distinguir las operaciones que se realizan en cada estado o las señales de control que se activan en los diferentes estados. Para ampliar el algoritmo de control debe hacer clic sobre el algoritmo de control que aparece en la parte inferior derecha de la interfaz principal, tal y como se muestra en la Figura 4.17.

 

 

Haga clic sobre el algoritmo de control para verlo aumentado.

 

                       Figura 4.17:  Interfaz que indica cómo mostrar el algoritmo de control en tamaño grande.

 

 

          A continuación se mostrará una pantalla con el algoritmo de control aumentado; en él podrá ver las señales de control que se activan en cada estado haciendo clic sobre el número correspondiente a cada estado, según se muestra en la Figura 4.18.

 

Haga clic en el número de estado para ver las señales que se activan en el mismo.

 

Figura 4.18:  Interfaz que muestra el algoritmo de control aumentado.

 

4.3.4 Visualizar las señales de control activadas en la Unidad de Proceso.

          Durante la simulación, si desea conocer dónde se encuentran en la unidad de proceso las señales de control activadas, sólo tiene que hacer clic en el botón que indica “UP”, según se muestra en la Figura 4.19.

 

 

Haga clic en el botón que se indica para ver las señales en la UP.

 

Figura 4.19: Pantalla que indica cómo mostrar las señales activadas en la UP.

 

          Una vez hecho clic en el botón, aparecerá una imagen de la unidad de proceso ampliada con las señales de control que se encuentran activadas en ese preciso momento, destacadas mediante un círculo rojo, tal y como se muestra en la Figura 4.20.

 

Figura 4.20:  Interfaz que muestra las señales de control activadas en la UP.

 

 

4.3.5 Resetear la Unidad de Control.

          Existe la posibilidad de resetear la Unidad de Control haciendo clic sobre el botón “RESET” del μPC, el cual pondrá a 0 el propio μPC, es decir, volverá a la fase de búsqueda de la instrucción. La Figura 4.21 muestra su situación.

 

 

Haga clic en el botón que se indica para resetear la Unidad de Control.

 

          Figura 4.21:  Interfaz que muestra la situación del botón de “RESET”.

 

 

4.4 Simular el programa ejemplo.

          El simulador permite simular un programa ejemplo que realiza la multiplicación de dos números. Para iniciar la simulación de dicho programa debe seguir los siguientes pasos:

1)     Abra el programa ejemplo. Para ello haga clic en el menú Archivo y seleccione el submenú Abrir Programa Ejemplo (Ctrl+F1).

2)     Cargue en Memoria Principal el programa haciendo clic en el menú Archivo y seleccionado el submenú Cargar Programa en MP (Ctrl+F2).

3)     Una vez se haya cargado el programa en Memoria Principal, podrá ver su contenido y por lo tanto el programa. A continuación, haga clic en el menú Simulación y seleccione el submenú Simular Programa Ejemplo (Ctrl+E). Se iniciará la simulación del programa.

 

Al finalizar la simulación, la aplicación informa del resultado obtenido en la multiplicación, pudiendo ver el resultado de la misma escrito en la posición 2  de Memoria Principal. Esta posición corresponde a la variable “RESULTADO” del programa. La Figura 4.22 muestra el resultado obtenido de la simulación del programa con los datos 5 y 3.

 

Escritura del resultado en Memoria Principal.

 

Estado final del Conjunto de Registros.

 

 Figura 4.22:  Resultado final de la simulación del programa.

 

 

4.4.1 Modificar los datos del programa ejemplo.

          El programa ejemplo utiliza los datos de entrada A y B para multiplicarlos mediante sumas reiteradas (A*B = A + A + .. + A, tantas veces como indica la variable B). Por defecto, los datos A y B contienen los valores 5 (0101) y 3 (0011) respectivamente, pero se pueden modificar. El dato A puede ser incluso negativo (entre -1 y -32768), mientras que el dato B debe ser positivo (entre 0 y 32767). Comentar que el resultado de la multiplicación tiene que ser representable en complemento a 2 con 16 bits para que sea correcto, en caso contrario se produciría “overflow” y  el resultado obtenido no se corresponderá con el esperado por el usuario.

          Para modificar los datos A y B debe hacer clic en el menú Archivo y seleccionar el submenú Modificar datos de MP (Ctrl+M). En el ejemplo se han modificado los datos A (-2043) y B (15) tal y como se muestra en la Figura 4.23.

 

El dato B tiene el valor 15.

 

El dato A tiene el valor -2043.

 

Figura 4.23:  Interfaz que muestra la modificación de los datos A y B.

 

          Una vez se hayan modificado los datos necesarios, haga clic en el botón Aceptar para que el área de datos de la Memoria Principal se actualice con los nuevos valores de A y B. En la figura 4.24 se muestra cómo quedará la Memoria Principal.

 

Los datos A y B se han modificado en MP.

 

Figura 4.24:  Interfaz que muestra la Memoria Principal modificada.

 

 

4.4.2 Mostrar el estado de la Unidad de Proceso.

        Durante la simulación del programa ejemplo, es posible conocer el estado de la unidad de proceso (valores de los registros Rx, Ry, IR1, IR2 y del PC, entre otros).

 

Haga clic sobre el registro IR1 para ver su contenido.

 

Haga clic sobre esta zona para conocer el dato de salida de la MP.

 

Figura 4.25:  Interfaz que muestra el estado de la Unidad de Proceso.

 

          Conocer el estado de la unidad de proceso resulta interesante para no perder detalle de la simulación. Pasando el puntero del ratón sobre los registros indicados anteriormente, se visualizará su contenido actual, resaltado en color verde, y haciendo clic sobre ellos la aplicación le mostrará una ventana de información sobre su valor en decimal/complemento a 2. Para ver el estado de la unidad de proceso haga clic en el menú Ver y seleccione el submenú Estado de la UP o pulse F4 durante la simulación del programa ejemplo. La Figura 4.25 muestra el estado de la unidad de proceso.

 

4.4.3 Mostrar el algoritmo de control siempre.

          Dado que durante la simulación del programa ejemplo es interesante ver tanto la Memoria Principal como el Conjunto de Registros, para observar los cambios que se van produciendo, existe la posibilidad de ver también, a la vez, el algoritmo de control en una ventana pequeña. Para ello, debe hacer clic sobre el botón “ASM” que se encuentra encima del Conjunto de Registros y aparecerá el algoritmo en la parte inferior izquierda, tal y como se muestra la Figura 4.26.

 

Haga clic aquí para mostrar el algoritmo siempre visible.

 

Algoritmo de control siempre visible.

 

Figura 4.26: Pantalla que indica cómo mostrar el algoritmo de control siempre visible.

 

5. Reprogramar la Memoria de Control.

          Por defecto, en la memoria de control se carga el microprograma que aparece en la Figura 3.3 el cual permite simular las 4 instrucciones básicas de la máquina BIRD4. Puesto que resulta interesante añadir o modificar microinstrucciones para poder simular la ejecución de nuevas instrucciones, se da la posibilidad de hacerlo, añadiendo 5 nuevas microinstrucciones o modificando las ya existentes (menos las 3 primeras, ya que se corresponden con la búsqueda y decodificación de la instrucción).

          Comentar que al simular la nueva instrucción (Simulación -> Simular instrucción) añadida no tendrá ningún efecto en la Unidad de Proceso (como las demás instrucciones); en cambio la modificación de una instrucción ya microprogramada permite al simular el programa ejemplo conocer el resultado que se obtiene.

 

 

5.1 Reprogramar la instrucción “AND”.

Veamos un ejemplo de cómo añadir la instrucción AND y también de cómo aprovechar las ya existentes para modificarlas y obtener la instrucción AND. Para realizar la operación “and”, primeramente debe tener cargados en los registros Rx y Ry los dos datos y posteriormente realizar la operación.

A)    Añadir una nueva instrucción.

Para añadir una instrucción debe seguir los siguientes pasos:

1)     Haga clic en la tabla de traducción para hacerla visible y posteriormente en el botón de añadir nueva instrucción situado en la parte superior izquierda de la tabla de traducción según, muestra la Figura 4.27.

 

Haga clic aquí para añadir una instrucción a la TT.

 

                   Figura 4.27:  Añadir una entrada a la tabla de traducción.

 

2)     A continuación se mostrará una pantalla donde debe elegir el código de instrucción correspondiente a la instrucción AND y su posición (@ROM) en la Memoria de control. Por medio de la interfaz de la Figura 4.28 elegiremos estas opciones.

 

 

                   Figura 4.28:  Interfaz para elegir las características de la nueva instrucción.

 

Los códigos de instrucción de las 4 instrucciones básicas no se pueden utilizar (no se encuentran en la lista), al igual que las direcciones de la memoria ROM que ya se encuentran utilizadas.

La nueva instrucción queda registrada en la tabla de traducción según muestra la Figura 4.29.

 

Añadir entrada.

 
 


Eliminar entrada.

 

                   Figura 4.29:  Interfaz que muestra la nueva entrada de la instrucción AND.

                  

 

3)    

Cambios realizados en la microinstrucción que sale por defecto.

 
A continuación aparece una pantalla donde tendrá que proporcionar el contenido de la microinstrucción 8 perteneciente a la instrucción “AND”, es decir, determinar el secuenciamiento de la unidad de control (que microinstrucción se ejecuta tras la 8) y determinar el valor de las diferentes señales de control para que cargue en el registro Rx el valor del registro fuente 1 (Rb) de la instrucción. La Figura 4.30 indica la forma de hacerlo.

 

 


Para programar viendo la UP.

 

Figura 4.30:  Interfaz que muestra la programación de la instrucción AND. Microinstrucción 8.

 

Si se desea, se puede programar la microinstrucción viendo la unidad de proceso haciendo clic en el botón Mostrar la Unidad de Proceso, de esta forma verá la situación de las diferentes señales de control y le resultará más sencilla la programación de la microinstrucción.

En la Figura 4.31 aparece la pantalla que muestra la programación de la microinstrucción viendo la Unidad de Proceso.

Una vez finalizada la microprogramación de la microinstrucción (pulsando el botón “Aceptar”), se informará si la microinstrucción que se acaba de microprogramar hace referencia a otra que está aún sin programar, en ese caso se mostrará de nuevo la interfaz para programar la microinstrucción siguiente (la microinstrucción 9); por el contrario se cerrará la pantalla.

 

4) El siguiente paso es programar las microinstrucciones 9 y 10 para finalizar la programación de la instrucción AND. La microinstrucción 9 debe realizar la carga del registro fuente 2 (Rc) en el registro Ry, mientras que la microinstrucción 10 tiene que realizar la operación en la ALU con los dos datos cargados anteriormente en los registros Rx y Ry. En estos momentos sería necesario recordar todos los códigos de operación de la ALU para escoger los correspondientes a la operación AND; para ver los códigos de la ALU haga clic en el menú Ver y seleccionar el submenú Operaciones de la ALU. La Figura 4.34 muestra los códigos de operación de la ALU.

 

Correspondencia de la señal“ld_Rx” en la programación de la microinstrucción con la señal de la UP.

 

Figura 4.31:  Interfaz que muestra la programación de la instrucción AND viendo la UP. Microinstrucción 8.

 

          La Figura 4.31 muestra la situación de cada señal de control que aparece cuando se está microprogramando una microinstrucción; se observa como los nombres de las señales de control se corresponden con los de la Unidad de Proceso.

         

          Las Figuras 4.32 y 4.33 muestran la programación de las microinstrucciones 9 y 10 de la instrucción AND.

 

 

Cambios realizados en la microinstrucción que sale por defecto.

 

Figura 4.32:  Interfaz que muestra la programación de la instrucción AND. Microinstrucción 9.

 

 

Cambios realizados en la microinstrucción que sale por defecto.

 

Figura 4.33:  Interfaz que muestra la programación de la instrucción AND. Microinstrucción 10.

 

                           

Código de operación de la operación AND.

 

                                  Figura 4.34:  Interfaz que muestra los códigos de operación de la ALU.

 

          Una vez terminada la programación de la última microinstrucción, se puede visualizar el nuevo microprograma haciendo clic en el menú Ver y seleccionando el submenú Todas las microinstrucciones (Ctrl+U). A continuación se muestra en la Figura 4.35 el microprograma modificado.

 

Cambios realizados en el microprograma. (instrucción AND).

 

Figura 4.35:  Microprograma modificado con la instrucción AND.

 

A)    Modificar una microinstrucción ya existente.

Por ejemplo se pueden utilizar las microinstrucciones de la instrucción ADD para programar la instrucción AND. Las microinstrucciones 5 y 6 son semejantes a las que tiene que realizar la instrucción AND, mientras que la 7 es la que se debe modificar para cambiar el código de operación de la “suma” (000) por la de la operación “and” (010); en la Figura 4.34 se pueden ver todos los códigos de operación y las operaciones que admite la ALU. La Figura 4.36 muestra cómo cambiar la microinstrucción 7 para obtener la instrucción AND.

 

Cambios realizados en la microinstrucción 7.

 

Figura 4.36:  Interfaz que muestra la modificación de la microinstrucción 7.

 

                     

5.2 Restaurar la Memoria de Control.

          Si se desea, se puede restaurar la memoria de control haciendo clic en el menú Archivo y seleccionando el submenú Restaurar microprograma; a continuación, todos los cambios y modificaciones introducidas serán eliminadas, quedando el contenido inicial de la memoria de control.

 

         

5.3 Simular una instrucción nueva.

          Una vez terminada la microprogramación de la nueva instrucción, se puede simular dicha instrucción en la Unidad de Control microprogramada de la siguiente forma:

à Inicie la simulación de forma normal, como se explicó anteriormente en el apartado 4.3, y escoja Simular con la memoria de control modificada cuando se lo pida.

à Durante la simulación, en el estado de decodificación, elija la nueva instrucción en el menú emergente, tal y como se muestra en la Figura 4.37.

 

Elija la instrucción AND.

 

Figura 4.37:  Interfaz que muestra la nueva instrucción que acaba de microprogramar.