1.
Instalar
Simulador UC BIRD 1.0
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.2
Componentes de la barra de estado
2.3 Componentes de la barra de
herramientas
3. Ejecutando Simulador UC BIRD
3.2 algoritmo de
control (asm)
3.6 VISTA reducida DE LA UNIDAD DE PROCESO
4.1 CONFIGURAR EL PERIODO DE
RELOJ
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.
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.
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 Sí 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 Algoritmo ASM Barra de estado Memoria de Control Programa ejemplo Barra de
título
Unidad de Proceso
Señales de control
Unidad de Control
Barra de menú
Barra de herramientas
Microprograma
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:
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ú.
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.
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.
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.
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.
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.
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.
El menú “Ayuda” permite ver la ayuda disponible sobre la aplicación, tal y como se muestra en la Figura 2.7.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
La señal de
reloj “clk2” se activa.
Figura
4.7: Pantalla que muestra la activación de la señal de reloj clk2.
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.
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.
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.
El μPC se actualiza. Activación
de la señal de reloj clk1.
Figura
4.11: Pantalla que muestra la actualización del μPC.
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.
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.
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.
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).
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.
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.
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.
Figura 4.20: Interfaz que muestra las señales de
control activadas en la UP.
4.3.5 Resetear
la Unidad de Control.
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.
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 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.
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.
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.
4.4.3 Mostrar el algoritmo de control siempre.
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.
5.1 Reprogramar la instrucción “AND”.
A) Añadir una nueva instrucción.
Para añadir una instrucción debe seguir los siguientes
pasos:
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.
Figura 4.28: Interfaz para
elegir las características de la nueva instrucción.
La nueva
instrucción queda registrada en la tabla de traducción según muestra la Figura
4.29.
Añadir 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.
Figura 4.30: Interfaz que muestra la programación
de la instrucción AND. Microinstrucción 8.
Correspondencia de la señal“ld_Rx” en la
programación de la microinstrucción con la señal
de la UP.
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.
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.
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.
5.3 Simular una instrucción nueva.
à 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.
Figura 4.37: Interfaz que
muestra la nueva instrucción que acaba de microprogramar.