71
Capítulo 15 Análisis de sistemas digitales Indice 15 ANÁLISIS DE SISTEMAS DIGITALES 1. TEORIA DE ANALIZADORES LÓGICOS 1 1.1. Introducción 1 1.2. ¿Osciloscopios o analizadores lógicos? 2 1.3. El Analizador lógico 3 1.4. El Analizador de estados 6 1.5. El disparo de los analizadores lógicos 6 2. EL ANALIZADOR LÓGICO HP-1662A 8 2.1. General 8 2.2. El menú configuration 8 2.3. Etiquetas y símbolos 9 2.4. Cambiar de menú 9 2.5. El menú format 10 2.6. Crear la etiqueta del reloj del sistema 10 2.7. Crear la etiqueta del bus de datos 11 2.8. El menú waveform 11 2.9. Borrar la lista de etiquetas 11 2.10. Añadir etiquetas 11 2.11. Los markers 12 2.12. Secuencia de disparo o trigger 13 2.13. Menú trigger 13 2.14. Borrar una secuencia de disparo 13

sistema minimo 8088.pdf

Embed Size (px)

Citation preview

Page 1: sistema minimo 8088.pdf

Capítulo 15 Análisis de sistemas digitales Indice

15

ANÁLISIS DE SISTEMAS DIGITALES

1. TEORIA DE ANALIZADORES LÓGICOS

1

1.1. Introducción 1

1.2. ¿Osciloscopios o analizadores lógicos? 2

1.3. El Analizador lógico 3

1.4. El Analizador de estados 6

1.5. El disparo de los analizadores lógicos 6

2. EL ANALIZADOR LÓGICO HP-1662A

8

2.1. General 82.2. El menú configuration 82.3. Etiquetas y símbolos 92.4. Cambiar de menú 92.5. El menú format 102.6. Crear la etiqueta del reloj del sistema 102.7. Crear la etiqueta del bus de datos 112.8. El menú waveform 112.9. Borrar la lista de etiquetas 112.10. Añadir etiquetas 112.11. Los markers 122.12. Secuencia de disparo o trigger 132.13. Menú trigger 132.14. Borrar una secuencia de disparo 13

Page 2: sistema minimo 8088.pdf

Capítulo 15 Análisis de sistemas digitales Indice

2.15. Definir una secuencia de disparo 14

3. LA UNIDAD DE PRUEBAS

16

3.1. El interprete de comandos 15

3.2 El editor de programas 18

4. EL MICROPROCESADOR 8088

22

4.1. Descripción 21

4.2. Los registros de la eu del 8088 22

4.3. Los registros de la biu del 8088 36

4.4. Unidad aritmética/lógica. alu 23

4.5. Buses 23

4.6. MMU 23

4.7. El patillaje de la cpu intel 8088 24

4.8. Timings de la CPU 8088 29

4.9. Ciclos de reposo 30

4.10. La arquitectura pipeline 31

5. REALIZACIÓN DE LA PRÁCTICA

35

5.1. Objectivos de la práctica 34

5.2. Descripción del sistema basado en la cpu 8088 34

5.3. Configuración del analizador 35

5.4. Líneas generales a seguir 38

5.5. El generador de reloj y el watchdog 40

5.6. La CPU 44

5.7. La memoria 59

5.8. Acceso a periférico 51

5.9. El teclado 52

5.11. El display 55

5.12. La PIO 59

5.13. Estudio de una comunicación RS-232 59

Page 3: sistema minimo 8088.pdf

Capítulo 15 Análisis de sistemas digitales Indice

5.14. Localización de errores 60

5.15. Programación en código máquina 61

5.16 El Desensamblador 65

Esquemas 68

Page 4: sistema minimo 8088.pdf

Capítulo 15. Análisis de sistemas digitales Página 1

1- TEORÍA DE ANALIZADORES LÓGICOS

1.1- INTRODUCCIÓN

Los microprocesadores han revolucionado las líneas de producción. Los productos son más elegantes, rápidos, amigables y competitivos. Pero son más difíciles de diseñar, de probar y de reparar cuando se estropean. Estructuras complejas de buses y timings requieren instrumentos que nos permitan analizar los sistemas digitales.

Hay dos tipos de instrumentos para el análisis de sistemas digitales: los analizadores lógicos y los analizadores de firmas. A su vez, los analizadores lógicos los podemos dividir en; analizadores de tiempos y los analizadores de estados.

Un analizador lógico, podría considerarse como un osciloscopio de 64 canales o más, el cual sólo es capaz de discernir si una señal está por encima o por debajo de un cierto nivel de tensión umbral.

El analizador lógico, se utiliza básicamente para determinar y localizar los fallos del hardware a nivel de integrados así como el orden y tiempos de las señales También se utiliza en el Software por ejemplo en la depuración de programas. Con una buena secuencia de disparo, se puede empezar la adquisición cuando el programa entra en la subrutina deseada.

El analizador de firmas detecta y visualiza una única firma digital asociada al punto de prueba del dispositivo a analizar. Comparando la firma actual con las correctas, el técnico puede encontrar el punto del circuito defectuoso. Para ello, es necesario diseñar los sistemas pensando en las técnicas de análisis de firmas.

Se denomina firma, a toda secuencia digital que transcurre en un punto del circuito bajo unas condiciones y en un tiempo determinado y permite identificar el funcionamiento en dicho punto. Es decir, convierte una secuencia de unos y ceros, en función del tiempo, en un número hexadecimal de cuatro caracteres. Gracias a los algoritmos de compresión, de que dispone el instrumento, podemos asegurar que a una secuencia digital, únicamente le corresponde un código hexadecimal.

El análisis de firmas, está orientado única y exclusivamente, a la detección y localización de errores en los sistemas digitales. Para ello, es necesario saber las firmas en cada punto de prueba cuando el sistema funciona correctamente.

Page 5: sistema minimo 8088.pdf

Capítulo 15. Análisis de sistemas digitales Página 2

1.2- ¿ OSCILOSCOPIO O ANALIZADOR LÓGICO ?

Cuando hay que analizar un sistema digital, mucha gente elige un osciloscopio,

porque le resulta más familiar; hay uno en casi todos los laboratorios y son relativamente fáciles de utilizar. Es el instrumento electrónico de propósito general por excelencia. Pero un analizador lógico es el más adecuado en el análisis de sistemas digitales.

Los analizadores lógicos surgieron a partir de los osciloscopios. Presentan los datos de la misma forma que lo hace un osciloscopio: tiempo en el eje horizontal, y amplitud en el vertical. Aunque el analizador lógico sólo nos indica si el nivel de la señal está por debajo o por encima de unos niveles ( ceros o unos), puede capturar y visualizar ocho o más señales a la vez, cosa que los osciloscopios no pueden hacer.

Un analizador lógico reacciona igual que un circuito lógico; cuando una señal

supere o no un cierto umbral de tensión, reconocerá esta señal como un nivel alto o bajo respectivamente.

El sistema de disparo es mucho más potente y variado. Los analizadores lógicos, son especialmente útiles cuando visualizamos la

"relación" de tiempos o datos en un bus, como por ejemplo los buses de datos, direcciones o señales de control de un microprocesador. Puede descodificar la información de los buses del microprocesador y mostrarlas en un formato más comprensible. 1.2.1- CUANDO UTILIZAR UN OSCILOSCOPIO

Generalmente, un osciloscopio es el instrumento más adecuado cuando se necesita una buena resolución vertical de tensión, o bien, cuando sea necesaria una precisión elevada en el cálculo de intervalos de tiempo. 1.2.2- CUANDO UTILIZAR UN ANALIZADOR LÓGICO - Cuando sea necesario visualizar muchas señales a la vez. - Cuando se desee interpretar las señales de un sistema de la misma forma que lo hace el hardware. - Cuando se necesite disparar para un patrón o conjunto de niveles altos y bajos.

Page 6: sistema minimo 8088.pdf

Capítulo 15. Análisis de sistemas digitales Página 3

1.3- EL ANALIZADOR LÓGICO 1.3.1- EL ANALIZADOR DE TIEMPOS

El analizador de tiempos (Timing Analizer) es la parte del analizador más parecida a un osciloscopio. Un analizador de tiempos, muestra por pantalla la información de la misma forma que lo hace un osciloscopio, tiempo en el eje horizontal y amplitud en el vertical. En ambos instrumentos, la señal está en función del tiempo. Un analizador de tiempos dispone de un reloj interno que le marca la frecuencia de muestreo. Muestrea el dispositivo de forma asíncrona.

En el muestreo podemos considerar tres aspectos:

a. - Velocidad de muestreo y resolución

Un analizador de tiempos trabaja muestreando la señal de entrada para determinar si se halla por encima o por debajo del umbral de tensión. Con estas muestras, se crea una lista de unos y ceros que representan la señal de entrada. Esta lista se carga en memoria y se utiliza para reconstruir la forma de un sólo bit (figura 1).

Un analizador de tiempos, es igual que un osciloscopio de memoria, pero con sólo un bit de resolución vertical, es decir en cada muestra sólo pueden existir dos estados; uno y cero.

Figura 1. Reconstrucción de una señal

Esta tendencia a cuadricularlo todo, parece limitar la utilidad del analizador de

tiempos. Hemos de recordar, no obstante, que no lo queremos como un instrumento paramétrico.

Si deseamos ver la forma o el tiempo de subida de una señal, estamos utilizando el instrumento equivocado. No obstante, si se desea verificar los tiempos relativos entre flancos viéndolos a la vez, entonces es el instrumento correcto.

Cuando un analizador de tiempos muestrea una señal de entrada, ésta puede estar a nivel alto o nivel bajo. Si el nivel es alto en una muestra, y bajo en la siguiente, el analizador sabe que la señal de entrada ha cambiado en algún momento entre las dos muestras. Pero no sabe cuando tuvo lugar el cambio. El mayor error para esta ambigüedad, es un periodo de muestreo (figura 2).

Page 7: sistema minimo 8088.pdf

Capítulo 15. Análisis de sistemas digitales Página 4

Figura 2. Error máximo cometido

Recordemos que cada muestra utiliza una posición de memoria. Así pues,

una mayor resolución (mayor velocidad de muestreo), implica una menor ventana de observación, para una misma capacidad de memoria; por lo tanto se requiere un compromiso entre resolución y tiempo total de adquisición . b. - Muestreo transicional

Cuando tenemos una señal de entrada a ráfagas, por ejemplo la señal de la figura 3, nos vemos obligados a ajustar el período de muestreo (4 ns en el ejemplo) para conseguir una resolución adecuada, para capturar los pulsos del principio. Esto significa, que un analizador con 4 K muestras de memoria, terminará la adquisición al cabo de 16.4 µs, por lo tanto el siguiente tren de pulsos no será capturado.

Figura 3. Análisis convencional

Observemos que, pasados los primeros 44 ns, hemos muestreado y

adquirido datos durante un largo tiempo; en el cual no había actividad. Esto ha agotado la memoria del analizador sin proporcionar información adicional. Lo que en realidad necesitamos conocer es cuándo suceden las transiciones y si son positivas o negativas.

Para conseguirlo, podríamos utilizar un "detector de transiciones" a la entrada del analizador de tiempos junto con un contador. El analizador de tiempos, ahora capturará sólo aquellas muestras precedidas de una transición, junto con el tiempo transcurrido desde la ultima transición. De esta forma, utilizamos sólo dos posiciones de memoria por transición y ninguna cuando no hay actividad a la entrada. Esta técnica se llama Análisis Transicional (figura 4).

Page 8: sistema minimo 8088.pdf

Capítulo 15. Análisis de sistemas digitales Página 5

Podemos hablar de "capacidad efectiva de memoria", la cual es igual al

tiempo total empleado para capturar los datos, dividido por el período de muestreo. En el ejemplo de la fig. 3, teníamos una ventana de observación total de 50,088 us, que dividido entre 4 ns, nos da una capacidad efectiva de memoria de 15,5 K muestras.

Figura 4. Análisis transicional

c. - Captura de glitches

Un glitch se define como cualquier transición que supere el umbral de tensión durante un tiempo inferior al período de muestreo (figura 5).

Figura 5. Detección de glitches

Uno de los principales problemas en un sistema digital son los glitches. Los glitches tienen el antipático hábito de aparecer en los momentos más inoportunos y de provocar los más desastrosos resultados. ¿ Cómo podemos capturar un glitch que aparece una vez cada 36 horas y nos vuelve loco el sistema ? Los analizadores lógicos, tienen un sistema de captura de glitches y unas posibilidades de disparo que hacen más posible localizar los problemas provocados por los glitches.. Un glitch puede ser causado por: un acoplamiento capacitivo entre pistas, el rizado de la alimentación, elementos que piden grandes picos de corriente, retardos entre señales, etc. El analizador de tiempos después de muestrear la señal de entrada, puede seguir el rastro de cualquier transición que suceda entre dos muestras, por lo tanto podrá reconocer fácilmente un glitch.

Page 9: sistema minimo 8088.pdf

Capítulo 15. Análisis de sistemas digitales Página 6

Durante la visualización de glitches, puede ser de gran utilidad, el poder disparar sobre el glitch y visualizar los datos antes del disparo. Esto puede ayudarnos a identificar qué lo ha causado. Pensando en el ejemplo anterior, podemos dejar el analizador a la espera del glitch, y una vez suceda, con calma analizar las causas.

Page 10: sistema minimo 8088.pdf

Capítulo 15. Análisis de sistemas digitales Página 7

1.4- EL ANALIZADOR DE ESTADOS

Por regla general utilizamos un analizador de estados para saber qué pasa en un bus, y un analizador de tiempos para saber cuándo ha pasado. Por lo tanto, un analizador de estados, generalmente muestra los datos en forma de listado y un analizador de tiempos en forma de diagrama de tiempos.

Un analizador de estados muestrea sincrónicamente el sistema, cogiendo la frecuencia de muestreo del propio sistema.

Si queremos entender cuándo hemos de utilizar un analizador de estados, necesitamos saber qué es un estado. En un circuito lógico, un estado es una muestra tomada de un bus o línea cuando los datos son válidos.

Por ejemplo, en un biestable. El dato en la entrada D no será válido hasta que no llegue un flanco de subida en la entrada de reloj. Por tanto, un estado para un biestable, es cuando llega un flanco de subida en la señal de reloj.

Si conectamos un analizador de estados a la entrada D, y le indicamos que adquiera los datos para cada flanco de subida del reloj, cualquier actividad en las líneas de entrada, no será capturada por el analizador hasta que no llegue el flanco de subida del reloj. 1.5- EL "DISPARO" EN LOS ANALIZADORES LÓGICOS

Otro término que resulta familiar para todo aquel que ha utilizado un osciloscopio es el de trigger o disparo. Pero en los analizadores lógicos se llama secuencia de disparo. Una secuencia de disparo está formada por un conjunto de niveles y términos (Ver apartado 2-13).

A diferencia de un osciloscopio que empieza la adquisición después del disparo, un

analizador lógico continuamente adquiere datos, y para la adquisición una vez encontradas las condiciones de disparo. Luego se visualizan los datos que tiene almacenados en la memoria.

NOTA: La memoria tiene una capacidad determinada, por ejemplo 4K, lo

cual significa que podemos almacenar 4.000 muestras. La velocidad de muestreo está relacionada con la posición de la base de

tiempos . A menos tiempo de la Base mayor velocidad de muestreo. Si ponemos un valor grande en la base de tiempo, la velocidad de

muestreo será pequeña y viceversa. Si hacemos la adquisición a una velocidad demasiado pequeña (base de

tiempos grande) puede ser que las muestras tengan una separación tal que perdamos información. Si ponemos una velocidad de adquisición demasiado

Page 11: sistema minimo 8088.pdf

Capítulo 15. Análisis de sistemas digitales Página 8

grande (Base pequeña) la adquisición será correcta pero la ventana que observamos será pequeña y tenemos poca información.

Lo más correcto será hacer una primera adquisición con una velocidad grande y luego hacer nuevas adquisiciones a menor velocidad para tener la información necesaria sin perder detalles.

En el botón "control de adquisición" tenemos dos formas de hacerla : automática y manual.

En la adquisición automática ,normalmente el "trigger" se sitúa en el centro de la memoria. En el modo manual podemos elegir la posición y la velocidad de muestreo.

En la "visualización" el Delay nos indica la posición del centro de la pantalla respecto al trigger. Por tanto el Delay sólo hace referencia a lo que estamos viendo en el centro respecto al trigger.

No hay que confundir la velocidad con que se adquieren los datos con las modificaciones de la base de tiempos para visualizar los datos. 1.5.1- EL DISPARO POR PATRÓN

La mayoría de los analizadores pueden disparar por patrones, es decir un conjunto de niveles altos o bajos de las señales de entrada. Por ejemplo, podemos indicarle al analizador lógico, que dispare en el instante que en el bus de datos tenga el valor 34 hexadecimal.

El disparo por patrón puede utilizarse para disparar cualquier tipo de analizador lógico. Siendo el único método posible para disparar un " analizador de estados". 1.5.2- EL DISPARO POR FLANCO

Cuándo ajustamos el nivel de disparo de un osciloscopio, podemos pensar que

estamos ajustando el nivel de un comparador que dirá al osciloscopio cuándo la señal de entrada ha superado el nivel de referencia.

Un analizador de tiempos funciona básicamente igual que un osciloscopio cuándo dispara por flanco, excepto que el nivel de disparo, es el umbral lógico. ¿ Pero, por qué añadir el disparo por flanco en un analizador de tiempos ? Pues, porque mientras muchos dispositivos lógicos son activos por nivel, otras señales de control como los relojes suelen ser activas por flanco. El disparo por flanco, nos permite capturar los datos en el preciso instante que nuestro dispositivo recibe el sincronismo de reloj.

El disparo por flanco sólo puede utilizarse para disparar un "analizador de tiempos". Nota: Con mucha frecuencia se utiliza un disparo compuesto por flanco y por patrón.

Page 12: sistema minimo 8088.pdf

Capítulo 15 Análisis de sistemas digitales Página 8

2- EL ANALIZADOR LÓGICO HP-1672G

2.1- GENERAL

El sistema de menús del Analizador HP 1672G está separado en varios grupos. El grupo Analizer, prepara la adquisición y el grupo System, dispone de utilidades del Instrumento en general.

El Instrumento está formado por dos analizadores independientes Analyzer 1 y Analyzer 2. En la práctica sólo utilizaremos el primero.

El Instrumento dispone de 4 pods o sondas. Cada una tiene 16 canales de datos más 1 de reloj. Las sondas están agrupadas de dos en dos. Las sondas reciben los nombres A1, A2, A3 y A4 y los relojes J, K, L y M respectivamente.

Cada par de sondas puede asignarse a cualquiera de los dos analizadores. Nosotros asignaremos los dos pares de sondas al Analizador 1

2.2- EL MENÚ CONFIGURACIÓN Hay que configurar el analizador cada vez que se enciende. Ver apartado 5.3 pág

35 En la práctica asignaremos las dos pares de sondas al primer analizador.

GRUPO MENÚS OPERACIONESSalvar y recuperar configuraciones

DISK Formatear d iscosCopias d iscos

SYSTEM EXTERNAL I/ O Selecionar la interfície de comunicacionesConfigurar la interfície de comunicaciones

UTILITIES Utilidades del sistemaTEST Test del sistema

ANALIZADOR CONFIGURATION Nombre del analizadorTipo de analizadorModo de adquisición

FORMAT Umbral lógicoANALYZER Asignación de etiquetas

Asignación de símbolosBorrar secuencias de d isparo

TRIGGER Definición de términosDefinición de niveles de secuencia

WAVEFORM Visualización de etiquetasMarkers

Tabla 1. Menús del analizador lógico HP-1672G

Page 13: sistema minimo 8088.pdf

Capítulo 15 Análisis de sistemas digitales Página 9

Para dejar inactivo el segundo analizador, pulsar sobre el campo Type, a continuación pulsar sobre la opción Off, dentro del campo de configuración.

Para darle un nombre el primer analizador primero hay que borrar el que tiene, para ello pulsar sobre el campo Name, a continuación pulsar Clear para borrar el anterior, y luego escribir 8088. Pulsar Done para finalizar.

Para asignar las sondas A3 y A4 al primer analizador, pulsar sobre ellas. A continuación pulsar sobre la opción 8088, que está encima.

El campo "Type" del primer analizador debe estar en "Timing" si se desea realizar un análisis de tiempos ; y en "State" si se desea realizar un análisis de estados. De momento dejarlo en "Timing."

Junto al nombre de las sondas, hay unos símbolos que indican el estado de las señales que tienen conectadas. El símbolo indica que tiene conectada una señal variante en el tiempo. El símbolo ¯ indica que tiene un nivel alto. El símbolo _ indica que tiene un nivel bajo.

2.3- ETIQUETAS Y SÍMBOLOS

Una "etiqueta" sirve para asignar un nombre a una "señal" del circuito o a un conjunto de señales. Por ejemplo, si físicamente hemos conectado el reloj del sistema al reloj del pod 4, en el Analizador indicaremos, a través de una etiqueta, que el Clock M de la sonda A4 se llama CLOCK.

Una etiqueta también puede asignarse a un conjunto de señales. Es decir, podemos asignar la etiqueta "Bus" a los ocho bits de menor peso del bus de datos.

Símbolo :Cuando una etiqueta está formada por varias señales se llama "símbolo" a cada combinación posible de dichas señales Así podemos asignar la etiqueta "ciclo" al conjunto de señales :! SSO, IO/!M y DT/!R. Por otra parte a cada una de las combinaciones posibles la llamaremos "símbolo" . Ej. si las tres son cero tendremos el símbolo FETCH . ( Ver tabla pág. 28 )

La asignación de etiquetas y símbolos se realiza en el menú Format del grupo Analyzer.

2.4- CAMBIAR DE MENÚ

Para cambiar de menú pulsar sobre el nombre del menú actual, en este caso Configuration. Aparecerá la lista de menús del grupo. Pulsar sobre el menú deseado, en nuestro caso Format 8088.

Page 14: sistema minimo 8088.pdf

Capítulo 15 Análisis de sistemas digitales Página 10

2.5- LOS CAMPOS DEL MENÚ "FORMAT"

El campo Timing Acquisition Mode sirve para definir el modo de funcionamiento del analizador. En el modo "Timing" se realiza el análisis de tiempos. Pulsar sobre él si se desea modificar. De momento dejarla como está.

El campo TTL define el umbral lógico. La práctica funciona con niveles TTL. Dejarlo como está.

Los campos Pods y Labels nos permiten seleccionar los Pods y Labels que interesen con el mando giratorio. Si el icono está sobre el campo Pods, el desplazamiento con el botón giratorio del Analizador será horizontal a través de las sondas del Analizador. Si el icono está sobre Labels, el desplazamiento será vertical a través de las etiquetas.

La mitad inferior de la pantalla está formada por cinco columnas o campos. La primera correspondiente al nombre de las etiquetas. Pulsar sobre la etiqueta

para cambiarle el nombre, activarla o desactivarla.

La segunda define la polaridad de la etiqueta. Dejarla en lógica positiva. Las tres siguientes corresponden al reloj y a las sondas o pods.

2.6- ASIGNAR LA ETIQUETA DEL RELOJ DEL SISTEMA A "CLOCK" Entrar en el menú FORMAT 8088. El asterisco (*) es el vínculo entre la etiqueta y la señal del circuito. Si en los "pods" aparecen algunos * hay que borrarlos. Para ello:

1. Desplazar la pantalla para que aparezca A1. 2. Pulsar sobre el campo que está debajo de pod y a la derecha de la.etiqueta 3. Pulsar Clear. Done para finalizar.

El reloj del sistema está conectado al Clock M. del analizador Para activarlo:

1. Pulsar sobre Bus1. Elegir la opción Modify Label. 2. Pulsar Clear para borrar el nombre. 3. Escribir CLOCK. Done para aceptar. 4. Desplazarse por la pantalla horizontalmente hasta que aparezcan los relojes. 5. Pulsar sobre el campo que está debajo de los relojes y a la derecha de la etiqueta. 6. Escribir ‘ *...’. Done para finalizar. (Con el * activamos el clock M del pod 4).

Page 15: sistema minimo 8088.pdf

Capítulo 15 Análisis de sistemas digitales Página 11

2.7- ASIGNAR LA "ETIQUETA" DEL BUS DE DATOS A "DATOS" El "bus de datos" está conectado a los ocho bits de menor peso del pod A1.Para ello:

1. Substituir Bus2 por DATOS. 2. Desplazar la pantalla para que aparezca A1. 3. Pulsar sobre el campo que está debajo de A1 y a la derecha de la etiqueta. 4. Escribir ‘.... .... **** ****’ (Activamos los 8 bits de menor peso de A1).

2.8- EL MENÚ WAVEFORM

Una vez creadas las etiquetas, debemos elegir las señales que deseamos visualizar. Entrar en el menú Waveform 8088. Como regla general, borrar la antigua lista de etiquetas.

2.9- PARA BORRAR LA LISTA DE ETIQUETAS 1. Pulsar dos veces sobre la lista de etiquetas 2. Pulsar Delete All. Pulsar Continue

2.10- PARA AÑADIR ETIQUETAS

Hay dos tipos de etiquetas: Las que representan una sola señal y las que representan varias, como DATOS. Las primeras se insertan con Bit 0. Las otras, como Bus ó como secuencial

Cuando tengamos una etiqueta que esté formada por más de una señal (bus),

podemos elegir visualizar todas las señales o sólo algunas determinadas. Así: Bit n. Dónde n es un número. En este caso sólo visualizamos la señal n del bus.

Por ejemplo, Bit 3 de DATOS significa DATO 3. Las etiquetas formadas por una sola señal, por ejemplo CLOCK, siempre deberán

insertarse como Bit 0.

Sequential: Inserta la totalidad de las señales del bus de forma secuencial.

Bus. Inserta un bus, de forma que sólo se observa el valor del bus en cada instante y no su evolución temporal. Ejemplo: Si queremos visualizar las señales que representan las etiquetas Clock y Datos seguiremos la secuencia siguiente:

1. Pulsar dos veces sobre la lista (vacía) de etiquetas 2. Pulsar Insert 3. Pulsar CLOCK. Pulsar Bit 0 4. Pulsar sobre la lista de etiquetas

Page 16: sistema minimo 8088.pdf

Capítulo 15 Análisis de sistemas digitales Página 12

5. Pulsar Insert 6. Pulsar DATOS. Pulsar Bus 7. Poner la base de tiempos a 200 ns 8. Pulsar RUN. Observar que la adquisición siempre es diferente debido a que no se ha definido

ninguna secuencia de disparo.

El trazo discontinuo vertical que aparece indica el instante de disparo. En la parte inferior de la pantalla, el trazo grueso sobre el discontinuo es la ventana de observación actual respecto a la totalidad de los datos adquiridos.

Observar que encima de la señal de CLOCK existen unas rayitas que indican las divisiones del tiempo. Cada separación equivale al tiempo fijado en la base de tiempos. En el centro de la pantalla hay una línea más gruesa , es la referencia.

Pulsando sobre Delay o sobre la base de tiempos y girando el botón podemos ver sus efectos.

2.11- LOS MARKERS A modo de ejemplo sólo se explicarán los Markers de tiempo del menú Waveform. Los pasos a seguir son:

1. Pulsar Markers Off 2. Pulsar Time. Aparecen por pantalla los nuevos campos que permiten utilizar los markers. 3. Pulsar sobre Trigger to "X" 4. Girar el botón hasta que el Marker "X" esté en la posición deseada 5. Pulsar sobre Trigger to "O" 6. Girar el botón hasta que el Marker "O" esté en la posición deseada 7. Leer el valor de la diferencia en el campo "X" to "O"

NOTA En la parte inferior de la pantalla, debajo de la línea de los markers, aparece una "X" o una "O" para su mejor identificación.

Para desactivar los markers pulsar sobre Markers Time y Off.

2.12- SECUENCIA DE DISPARO O TRIGGER

Una secuencia de disparo es un conjunto de condiciones que deberán cumplirse para que el Analizador empiece o termine la adquisición.

Básicamente el disparo podrá producirse por un flanco, por un patrón o una

combinación de ambos.

Page 17: sistema minimo 8088.pdf

Capítulo 15 Análisis de sistemas digitales Página 13

2.13- MENÚ TRIGGER Para definir una secuencia de disparo, deberá entrarse en el menú Trigger 8088.

Una "secuencia" de disparo está formada por uno o más niveles. Definidos en la mitad superior de la pantalla con números en un recuadro.

Cada "nivel" está formado por una combinación de términos. Las condiciones de un mismo nivel se han de cumplir al mismo tiempo, mientras que cuando hay varios niveles las condiciones de cada nivel se han de cumplir sucesivamente en el orden de los niveles

Un "término" es una condición Puede ser un flanco, un patrón, un margen de valores o un temporizador. Mitad inferior de la pantalla.

La "secuencia de disparo" más sencilla estará formada por un sólo nivel que contenga un único término. NOTA: Cuando se quiera modificar las condiciones de disparo hay que parar e iniciar de nuevo la adquisición. Esto es debido a que cuando está activa la adquisición no permite modificar nada. 2.14- BORRAR UNA SECUENCIA DE DISPARO

Antes de definir una secuencia de disparo, deberá borrarse la anterior. Hay dos posibilidades:

a. Borrar la secuencia entera b. Borrar solamente los términos

2.14.1- PARA BORRAR LA SECUENCIA ENTERA

1. Pulsar Modify Trigger. 2. Pulsar Clear Trigger. 3. Pulsar All.

2.14.2- PARA BORRAR UN TÉRMINO

1. Pulsar sobre el término. Por ejemplo a. 2. Pulsar Clear (=x). (X significa un valor lógico indiferente.)

Page 18: sistema minimo 8088.pdf

Capítulo 15 Análisis de sistemas digitales Página 14

2.15- DEFINIR UNA SECUENCIA DE DISPARO

Vamos a definir una secuencia que dispare el analizador cuando en el bus de datos aparezca el dato 00 hexadecimal. Proceso:

1. Borrar la secuencia anterior (ver apartado 2..14). 2. Pulsar sobre la 1ª etiqueta. En nuestro caso CLOCK.

Aparece por pantalla la lista de etiquetas definidas.

3. Pulsar DATOS. 4. Pulsar sobre el campo que está debajo de la etiqueta DATOS y a la derecha - del término a. En el cuadro que aparece escribir 00 y Done. 5. En la mitad superior de la pantalla pulsar sobre el nº 1. 6. Pulsar >. En el cuadro que aparece pulsar Occurs. El número de veces debe - - dejarse en uno. 7. Done para finalizar. 8. Pulsar RUN. Observamos que aunque no siempre dispara en el mismo - - - . . instante, el valor del bus de datos es siempre el mismo.

Este es un caso de un sólo nivel y un único término.

Vamos a definir ahora una secuencia de disparo de un nivel compuesto por una combinación de dos términos. Por ejemplo: cuando el flanco de bajada del CLOCK coincida con un valor 00 hexadecimal en el bus de DATOS. Proceso: Sin borrar la secuencia actual

9. Pulsar sobre el campo que está debajo de CLOCK y a la derecha de Edge1 10. Pulsar flanco de bajada 11. Seleccionar de nuevo el nivel 1. En el cuadro que aparece pulsar a. Aparecerá la - - lista de términos disponible 12. Elegir Combination 13. Pulsar a. Poner a On 14. Pulsar Edge1. Poner a On 15. Dónde se junten pulsar sobre la Or hasta convertirla en And. Pulsar Done 16. Pulsar RUN

NOTAS:

1ª Cada vez que se apaga el analizador se pierden las configuraciones y el contenido de la memoria. Al encenderlo de nuevo hay que volver a seguir todo el proceso.

2ª Para la realización de la práctica, el alumno deberá traer un disco vacío, si quiere grabar las configuraciones del analizador, para no perder el tiempo realizándolas cada vez.

Page 19: sistema minimo 8088.pdf

Capítulo 15. Análisis de sistemas digitales página 15

15

3- LA UNIDAD DE PRUEBAS 3.1- EL "INTERPRETE" DE COMANDOS

El diálogo entre el sistema y el usuario se realiza a través del interprete de comandos. Al disponer sólo de dos líneas en el display, el diálogo queda un poco limitado. Por ello se ha optado por la técnica de pregunta-respuesta. Limpiando la pantalla cuando finaliza una orden.

Siempre que el sistema dé un mensaje de error o de presentación, desaparecerá cuando el usuario pulse una tecla, para dejar paso al "prompt" ( "→") del sistema. 3.1.1- LOS "PROMPTS" DEL SISTEMA

Cuando aparece el prompt en la esquina superior izquierda del display significará que el sistema está preparado (Prompt, significa listo,preparado, inmediato) para recibir una orden, la cual deberá ir seguida de la tecla return. El sistema está formado por tres indicadores o prompts diferentes, que indican el tipo de aplicación que se está ejecutando. Así:

El símbolo "→", indica el prompt del interprete de comandos. Significa que el sistema está preparado para recibir un nuevo comando.

El símbolo "?", significa que el sistema está esperando una entrada de datos por teclado. El dato puede ser un número, un nombre de fichero o el tipo de error que se desea generar, dependiendo de la aplicación que se esté ejecutando.

El símbolo ":", significa que el editor de programas está esperando la siguiente orden a ejecutar. Por ejemplo añadir una instrucción de programa, borrar una instrucción, borrar el programa, etc. 3.1.2- LA ORDEN " EDIT "

El programa ejecutará el editor de programas. Esta orden está especialmente pensada para que el alumno aprenda a programar en código máquina. Al ser una aplicación con sus propias ordenes, se explicará su funcionamiento más adelante.

Page 20: sistema minimo 8088.pdf

Capítulo 15. Análisis de sistemas digitales página 16

16

3.1.3- LA ORDEN " ERROR "

Esta orden forzará al programa a provocar un error de hardware. Se pueden generar hasta cinco errores diferentes. Generado el error, el sistema dejará de funcionar. La única manera de recuperar las condiciones de funcionamiento normal, es pulsar el botón de reset del Aparato.

Al escribir la orden ERROR, la pantalla se borrará para dejar paso al mensaje "Numero de error". En la línea inferior aparecerá el prompt conforme el programa está esperando un número entre 1 y 5. Cualquier otro valor provocará un mensaje de error. El número de error sólo puede escribirse en decimal. 3.1.4- LA ORDEN " ETIQ "

Esta orden configura el analizador para poder crear las 35 etiquetas, y realizar la práctica. 3.1.5- LA ORDEN " EXEC "

Esta orden ejecuta un programa escrito por el alumno. El programa habrá sido escrito con el editor de programas, el cual se explicará más adelante.

Si se desea ejecutar un programa cíclico, debe tenerse la precaución de refrescar el WatchDog dentro del bucle, si no el sistema se inicializará de nuevo en menos de un segundo; si por el contrario se decide realizar un programa secuencial hay que tener la precaución de añadir el código de retorno de función inter-segmento, CS hexadecimal, si no el programa seguirá avanzando por la memoria hasta que el WatchDog inicialice el sistema. 3.1.6- LA ORDEN " PIO "

Esta orden envía un carácter por el puerto A de la PIO. De esta manera el alumno puede realizar el estudio completo de un acceso a periférico.

Al escribir la orden "PIO", la pantalla se borrará para dejar paso al mensaje "Dona'm el valor". En la línea inferior aparecerá el "prompt" conforme el programa está esperando un número entre 0 y 255. Cualquier otro valor provocará un mensaje de error.

El valor que se desea escribir en la PIO puede introducirse en decimal o hexadecimal de

forma indistinta. Pero, hay que añadir el prefijo 0x si se trata de uncódigo hexadecimal. Por ejemplo, introducir el número 35, ó el código 0x23 producirá el mismo resultado a la salida de la PIO.

Page 21: sistema minimo 8088.pdf

Capítulo 15. Análisis de sistemas digitales página 17

17

3.1.7- LA ORDEN " PCX "

Esta orden hace un volcado de la pantalla actual del Analizador en disco. La imagen de la pantalla se grabará en formato PCX de 16 tonos de grises. Si se desea cualquier otro formato tendrá que realizarse a través de los menús internos del Analizador.

Al escribir el comando PCX, la pantalla se borrará para dejar paso al mensaje "Nom del fitxer". En la línea inferior aparecerá el prompt conforme el programa está esperando el nombre del fichero sin extensión. Un nombre de fichero incorrecto producirá un mensaje de error. 3.1.8- LA ORDEN " RESET "

El programa entra en un bucle infinito sin refrescar el WatchDog del sistema. Esto provocará que al cabo de unos 500 ms actúe el WatchDog e inicialice de nuevo el sistema. Esta orden está especialmente pensada para que el alumno pueda estudiar el funcionamiento del WatchDog. 3.1.9- LA ORDEN " RS232 "

Esta orden envía un conjunto de mensajes al Analizador para que el alumno pueda estudiar una comunicación serie y el protocolo XON/XOFF. Hay que tener en cuenta que éste es el único comando que puede utilizarse para estudiar una comunicación serie. Cualquier otro comando, que configure el Analizador o que capture pantallas, no sirve, ya que aborta la adquisición de datos que estuviese realizando el Analizador. 3.1.10- LA ORDEN " WAVE "

Esta orden está especialmente pensada para simplificar el trabajo al alumno a la hora de insertar las señales que se desea visualizar en el menú Waveform. En la línea superior aparecerá el siguiente mensaje "Quin senyal", a partir de este momento pueden escribirse los nombres de las etiquetas que desee y hayan sido creadas e irán insertándose una detrás de la otra. Dentro de esta orden existen dos subórdenes:

ESBORRAR. Borra todas las etiquetas que se estén visualizando. SORTIR. Sale de la orden Wave.

Page 22: sistema minimo 8088.pdf

Capítulo 15. Análisis de sistemas digitales página 18

18

3.2- EL " EDITOR " DE PROGRAMAS

Este editor de programas permite programar en código máquina. El programa se escribe byte a byte directamente en la memoria del sistema. Los bytes de código pueden escribirse en decimal o hexadecimal de forma indiferente.

Cuando se entra en el editor de programas, en la memoria aún estará el antiguo programa que se haya escrito. Para borrarlo habrá que utilizarse la orden N.

Dentro del editor, el "prompt" será el símbolo ":", esto significa que está esperando una orden. Cuando el prompt sea el símbolo "?", significará que está esperando la entrada de datos.

Después de ejecutar una orden, se borrará la pantalla y aparecerá el prompt del editor de programas a la espera de una nueva orden.

Las órdenes disponibles dentro del editor de programas son:

- A. Añadir código a la memoria. - B nnn. Borrar una posición de memoria. - E nnn. Modificar una posición de memoria. - I nnn. Insertar una posición de memoria. - L. Listar el programa. - N. Borrar el programa. - S. Salir del editor de programas

3.2.1- " AÑADIR CÓDIGO " A LA MEMORIA

A. Añadir. Añade bytes de código en memoria. En la línea superior de la pantalla aparecerá el mensaje "Posicio: nnn", donde nnn es el número de la posición actual. En la línea inferior aparecerá el símbolo "?" a la espera que se introduzca el byte de código. A medida que se vayan introduciendo bytes de código, la posición irá incrementándose. Para finalizar la introducción, pulsar la tecla de retorno sin ningún código. 3.2.2- " BORRAR " UNA POSICIÓN DE MEMORIA

B nnn. Borrar. Permite eliminar la posición nnn. En la línea superior de la pantalla aparecerá el mensaje "P:nnn -> 0xNN", donde nnn es el número de la posición que se desea borrar y 0xNN es el valor que actualmente hay escrito. En la línea inferior aparecerá el mensaje "Borrar S/N ?". Si se pulsa la letra S la posición de memoria será eliminada.

Page 23: sistema minimo 8088.pdf

Capítulo 15. Análisis de sistemas digitales página 19

19

3.2.3- " MODIFICAR " UNA POSICIÓN DE MEMORIA

E nnn. Editar. Permite modificar el valor de la posición nnn. En la línea superior de la pantalla aparecerá el mensaje "P:nnn -> 0xNN", donde nnn es el número de la posición que se desea modificar y 0xNN es el valor que actualmente hay escrito. En la línea inferior aparecerá el símbolo "?" a la espera que se introduzca el byte de código. Si se deja en blanco, no se realizará ninguna modificación. 3.2.4- " INSERTAR " UNA POSICIÓN DE MEMORIA

I nnn. Insertar. Permite insertar un byte de código entre la posición nnn-1 y nnn. En la línea superior de la pantalla aparecerá el mensaje "Posicio: nnn", donde nnn es el número de la posición actual. En la línea inferior aparecerá el símbolo "?" a la espera que se introduzca el byte de código. 3.2.5- " LISTAR " EL PROGRAMA

L. Listado. Visualiza por pantalla todo el programa escrito en la memoria. Debido al tamaño de la pantalla, el listado saldrá de dos bytes en dos bytes. Para pasar de pantalla pulsar una tecla. En las dos líneas de la pantalla aparecerá el siguiente mensaje "P:nnn -> 0xNN", donde nnn es el número de la posición de memoria y 0xNN es el valor que hay escrito. 3.2.6- "BORRAR" EL PROGRAMA N. Nuevo. Borra el programa actual y pone el contador de posiciones a cero. 3.2.7- "SALIR DEL EDITOR" DE PROGRAMASS. Salir. Sale del editor de programas y vuelve al interprete de comandos.

Page 24: sistema minimo 8088.pdf

Capítulo 15. Análisis de sistemas digitales Página 21

4- EL MICROPROPROCESADOR 8088 4.1- DESCRIPCIÓN El microprocesador 8088 tiene una arquitectura interna de 16 bits (ALU, registros, buses internos, etc.), pero externamente dispone de un bus de datos de 8 bits y un bus de direcciones de 20 bits. Este microprocesador aporta, como estructura compleja, los nuevos conceptos de pipeline y MMU. La CPU 8088, está dividida en dos bloques: Unidad de Interficie de Bus (BIU). Tiene la misión de realizar el ciclo de fetch, o sea, buscar en la memoria la siguiente instrucción y cargarla en la cola y comunicar la CPU con el exterior. Unidad de Ejecución (EU). Se encarga de ejecutar las instrucciones que le suministra la BIU.

Como los dos bloques son independientes, mientras la EU no necesite el bus de direcciones y de datos, la BIU va cargando instrucciones adicionales y la EU va ejecutando las ya cargadas anteriormente. A este proceso se le llama pipeline. De esta forma cuando la EU acaba de ejecutar una instrucción, ya tiene preparada la siguiente.

Figura 6. La CPU 8088. Diagrama de bloques y patillaje

Page 25: sistema minimo 8088.pdf

Capítulo 15. Análisis de sistemas digitales Página 22

El 8088 tiene una cola de 4 bytes, donde se almacenan las instrucciones pendientes de ejecución. Con este sistema el 8088 reduce el tiempo de carga y ejecución de una instrucción. NOTA: El único problema que presenta este método viene cuando ha de ejecutarse una instrucción de salto o ruptura de secuencia. En estos casos las instrucciones que había almacenadas en la cola no son correctas, y hay que cargar de nuevo las instrucciones desde la nueva posición. En la unidad de interfície del bus tenemos (ver figura 6): - Registros de segmento. - Cola de instrucciones. - Puntero de instrucción - MMU. En la unidad de ejecución tenemos: - Registros de datos; registros de puntero e índice y registros de control (todos de 16 bits). - Unidad Aritmética/Lógica (ALU). - Secuenciador y descodificador de instrucciones. 4.2- LOS REGISTROS DE LA EU DEL 8088 Registros de datos. En total hay cuatro registros de datos, llamados AX, BX, CX y DX. Son accesibles como registros de 8 bits, están divididos en dos partes. Por ejemplo, el registro AX se divide en AH (parte alta) y AL (parte baja). Registros de índice y puntero. Los dos registros de índice son SI y DI. Funcionan normalmente manipulando cadenas, construcción de estructuras complejas de datos, etc. Los dos registros de puntero son el BP, que es de uso general, y el SP que es el puntero al stack.

Registro de control. Es el registro que contiene los flags. El contenido de este registro se actualiza cada vez que la EU ejecuta una instrucción

Registro de instrucción. Es el registro que contiene la instrucción completa. La BIU va cargando los diferentes bytes de la instrucción en este registro. Su longitud es de 4 bytes, igual que la instrucción más larga.

Page 26: sistema minimo 8088.pdf

Capítulo 15. Análisis de sistemas digitales Página 23

4.3- LOS REGISTROS DE LA BIU DEL 8088

El puntero de instrucción. Se llama IP. Contiene el offset de la dirección de la siguiente instrucción que la BIU cargará en la cola de instrucciones.

Registros de segmento. En total hay cuatro registros de segmento. Estos registros son la base de la dirección de los segmentos de código (CS), datos (DS), stack (SS) y extra (ES). 4.4- UNIDAD ARITMÉTICA/LÓGICA. (ALU)

La ALU, es capaz de realizar operaciones de suma, resta, multiplicación y división. Además de operaciones lógicas tales como: and, or, desplazamiento, rotación, etc. 4.5- BUSES

El 8088 posee un bus de datos interno de 16 bits. No obstante, externamente dispone de un bus de datos de 8 bits multiplexado con los 8 bits de menor peso del bus de direcciones. En función del estado de la señal ALE, serán datos o direcciones. 4.6- MMU

Esta es otra aportación del 8088, en lo que se refiere a estructura compleja. Este microprocesador dispone de un bus de direcciones externo de 20 bits, con el que se puede direccionar un total de un megabyte de memoria. Todo el mapa de memoria está dividido en zonas de datos y códigos. A estos bloques, se les llama "segmentos" y tienen un tamaño de 64 Kbytes.

Todos los accesos a memoria, son relativos (offset) a

una dirección de base (segmento). La dirección total se forma sumándole un offset desplazado cuatro bits a un segmento.

Cuando el 8088 necesita acceder a memoria, el procedimiento es el siguiente: La BIU elige uno de los registros segmento y se le añade el valor de la dirección elegida. Por ejemplo en un ciclo de lectura de instrucción o fetch, el registro elegido es el CS y la dirección lógica es el contenido del registro IP. Fig. 7

Cuando es un acceso a memoria, los registros de segmentos elegidos son DS o ES. Aunque las instrucciones que manipulan el stack, utilicen como Segmento SS y offset SP.

Figura 7. Crear una dirección

Page 27: sistema minimo 8088.pdf

Capítulo 15. Análisis de sistemas digitales Página 24

4.7- EL PATILLAJE DE LA CPU INTEL 8088 El patillaje de la CPU 8088 (ver Fig. 15), se divide en los siguientes grupos de función: 1. Direcciones 2. Datos 3. Control y estado 4. Temporización 5. Alimentación y masa El número de patas para cada grupo varia. El grupo de temporización tiene una sola señal que es el CLOCK, mientras que otros, como por ejemplo los grupos de direcciones o datos, utilizan bastantes más y además multiplexadas en el tiempo. A continuación haremos una descripción del patillaje del 8088, por grupos. 4.7.1- DIRECCIONES Y DATOS El 8088 utiliza un bus de direcciones de 20 bits para poder direccionar directamente un megabyte de memoria. Algunos bits del bus de direcciones están multiplexados en el tiempo con otras funciones, como por ejemplo bits del bus de datos o bits de control y estado. De esta forma el 8088 proporciona todas las señales necesarias con sólo un encapsulado de 40 patas. AD0-AD7. Address / Data. Las señales AD0 hasta AD7 están multiplexadas en el tiempo, para de esta forma poder proporcionar direcciones o datos (ver figura 8). Al principio de cada "ciclo máquina", los 8 bits de menor peso del bus de direcciones aparecen en estas patas. Más tarde en el mismo ciclo máquina, se convertirán en el bus de datos. A partir de este momento, AD0-AD7 pasa a ser un bus bidireccional, dependiendo de si el 8088 esta leyendo o escribiendo datos al o desde el sistema.

Figura 8. Bus de datos y direcciones multiplexado

Page 28: sistema minimo 8088.pdf

Capítulo 15. Análisis de sistemas digitales Página 25

A8-A15. Address. Estas señales contienen la información correspondiente a los siguientes 8 bits del bus de direcciones. Estas señales no están multiplexadas en el tiempo, es decir que la información se mantiene válida durante todo el ciclo máquina. AS16-AS19. Address / Status. Las señales A16 hasta A19 están multiplexadas en el tiempo. Al principio de cada ciclo máquina, pasan a ser los cuatro bits de mayor peso del bus de direcciones. En la segunda parte del ciclo máquina, estas cuatro señales proporcionan información sobre el estado de la CPU. Cuando se han fijado las direcciones, en estas patas aparecen las señales S3 y S4. Estas dos señales pueden descodificarse para extraer la información correspondiente al segmento de memoria a que está accediendo el 8088 durante el ciclo máquina actual. La señal de estado S5 informa del estado del flag de permisión de interrupción. S6 siempre se mantiene a nivel bajo. Estos bits de estado, no son necesarios en la mayoría de sistemas, pero pueden ser utilizados para hacer diagnósticos del funcionamiento. Los buses de direcciones y datos entran en estado de alta impedancia cuando la CPU cede los buses. Durante el ciclo de reconocimiento de interrupción, en las cuatro direcciones de mayor peso, la información referente a las direcciones, tendrá un valor indeterminado, pero la información de estado será válida. 4.7.2- CONTROL Y ESTADO Las señales de "control y estado" indican el tipo de ciclo máquina que está realizando la CPU y además sirven para controlar la lógica externa. Son las siguientes: !RD1. Read. La señal de !RD indica que la CPU está leyendo datos de la memoria o periférico de E/S2. !WR. Write. La señal de !WR indica que la CPU está escribiendo datos a la memoria o periférico de E/S. ALE. Address Latch Enable. La señal ALE es una salida que se utiliza para fijar el bus de direcciones en un sistema iAPX883. Esta señal normalmente se conecta a la entrada " enable" (G) de un 74LS373 (ver fig. 15).

1 El símbolo ! indica negación, o que es activa por nivel bajo. 2Entrada/Salida 3iAPX88 hace referencia a un microsistema completo basado en la CPU 8088

Page 29: sistema minimo 8088.pdf

Capítulo 15. Análisis de sistemas digitales Página 26

El flanco de bajada de ALE fija el bus de direcciones, haciéndolas válidas durante el resto del ciclo máquina. IO/!M. In/Out / Memory. Esta salida indica si el actual ciclo máquina está direccionando a un periférico de E/S ó a la memoria (ALTO= E/S, BAJO = MEMORIA). Esta señal es valida durante todo el ciclo máquina. RESET. Esta entrada proporciona la manera de inicializar el sistema iAPX88. Esta entrada es activa por nivel alto, la cual viene activada desde el 8284A. Al activar la señal de RESET, provocamos que el procesador finalice la instrucción que estaba ejecutando y los buses quedan en estado de alta impedancia. Cuando la señal de RESET vuelve a ser cero, el 8088 empezará a ejecutar desde la posición de memoria FFFF0 hexadecimal. Una vez inicializado el microprocesador, éste queda en las siguientes condiciones:

1. El registro de flags se pone a cero. Esto inhibe las interrupciones y el modo de ejecución paso a paso.

2. Los registros DS, ES, SS y IP se ponen a cero. 3. El registro CS tiene el valor FFFF hexadecimal. Mn/!Mx. Minimum / Maximum. Esta entrada configura el modo de trabajo del 8088. Modo mínimo si vale uno y modo máximo si vale cero. El modo de trabajo del microprocesador indica el tamaño del sistema que controla. Influye en el fan-out de los buses y las señales de control cambian de nombre y función para poder ser conectadas directamente al controlador de bus 8288. Las señales de control explicadas hasta ahora, son suficientes para controlar un pequeño sistema con los buses multiplexados. Si se desea controlar un sistema mayor y con el sistema de buses desmultiplexados, hará falta conocer el resto de señales de control. DT/!R. Data Transmit / Receive. La señal DT/!R es una salida, que permite controlar la dirección del bus de datos cuando pasa a través de un buffer bidireccional (74LS245). Cuando vale uno significa que el 8088 transmite los datos al bus de datos del sistema. Cuando vale cero, el 8088 recibe los datos desde el bus de datos del sistema. !DEN. Data Enable. La señal !DEN permite el paso de los datos a través del buffer bidireccional. Esto evita colisiones en los buses mientras el 8088 pone las direcciones en el bus. INTR. Interrupt Request. La señal INTR, informa al 8088 que pare lo que esté haciendo y que sirva la interrupción solicitada. El 8088 muestrea esta señal durante el último período de reloj de cada instrucción.

Page 30: sistema minimo 8088.pdf

Capítulo 15. Análisis de sistemas digitales Página 27

Cuando la CPU detecta que INTR vale uno, el 8088 salta a una RSI (rutina de servicio de interrupción) a través de la tabla de vectores de interrupción ubicada en la parte baja de la memoria. La señal INTR puede ser enmascarada por software manipulando el flag correspondiente en el registro de flags. La señal INTR se sincroniza internamente. !INTA. Interrupt Acknowledge. La señal !INTA se utiliza como señal de lectura cuando se está sirviendo un ciclo de reconocimiento de interrupción. !INTA está activa durante los tres últimos períodos de reloj de cada ciclo de reconocimiento de interrupción. !SSO.. Cuando se descodifica junto con las señales IO/!M y DT/!R, nos dan información del tipo de actividad que tiene lugar en los buses.

Tabla 2. Funciones que realiza la CPU

!HOLD/HLDA. Hold / Hold Acknowledge. La señal HOLD es una entrada activa por nivel bajo e indicia a la CPU que hay otro dispositivo que desea los buses. Cuando el microprocesador recibe una petición de liberar el Bus (HOLD=0),terminará la última instrucción que está realizando y luego pondrá a uno la señal HLDA para indicar que los buses están disponibles. NOTA :Una transferencia de datos ocupa un ciclo máquina para un byte o dos ciclos máquina para una palabra o reconocimiento de interrupción. NMI. Non Maskable Interrupt. Esta interrupción no es enmascarable por software. A través de la tabla de vectores de interrupción, se ejecutará la RSI(Rutina Servicio Interrupción) asociada. Un flanco de subida en esta entrada provocará que al final de la instrucción actual se sirva la interrupción. Esta entrada se sincroniza internamente.

!SSO DT/!R IO/!M FUNCION0 0 1 Reconocimiento de interrupción1 0 1 Lectura periférico de E/S0 1 1 Escritura periférico de E/S1 1 1 Ciclo de espera0 0 0 Ciclo de lectura de instrucción1 0 0 Lectura memoria0 1 0 Escritura memoria1 1 0 Pasivo

Page 31: sistema minimo 8088.pdf

Capítulo 15. Análisis de sistemas digitales Página 28

READY. La señal de READY, se utiliza para añadir estados de espera en un ciclo máquina cuando tenemos periféricos o memoria lentos. READY es una entrada, la cual viene sincronizada por el 8284A. !TEST. Esta entrada sincroniza la CPU con un evento externo. Cuando se utiliza junto con la instrucción " wait for test ", la CPU se queda a la espera hasta que la entrada de TEST es puesta a cero por un dispositivo externo. 2.7.3- ALIMENTACIÓN ( CLOCK) El 8088 lleva la pata 40 conectada a 5V y la pata 20 conectada a masa. Es aconsejable poner un condensador de desacoplo para reducir el ruido. 2.7.4- TEMPORIZACIÓN La pata 19 es la entrada de reloj para el 8088. La frecuencia máxima de reloj es de 5 MHz para el 8088, y de 8 MHz para el 8088-2. Generalmente la señal de reloj viene del 8284A. 2.8- TIMINGS DE LA CPU 8088 La CPU 8088 se comunica con el exterior a través de los buses del sistema. Esta comunicación se logra con un ciclo máquina, en el cual los datos se transmiten entre el 8088 y la memoria o periférico de E/S. Durante este ciclo máquina, el 8088 primero genera una dirección para poder direccionar una posición de memoria o un dispositivo de E/S. Cuando el 8088 activa las líneas de control, de lectura o escritura, el dato es transferido a/o desde la CPU a la memoria o el dispositivo de E/S. Al finalizar el ciclo de lectura o escritura, el dato es fijado en el 8088 (lectura) o en el dispositivo seleccionado (escritura), y la correspondiente señal de control se desactiva. Un ciclo máquina básico del 8088 está compuesto por cuatro períodos de reloj, que llamaremos T1, T2, T3 y T4. Para localizar el inicio de un ciclo máquina se ha de tener en cuenta: 1º que T1 empieza con un flanco de bajada del CLOCK. 2º que durante el período T1 baja la señal ALE. Durante el período T1. La CPU coloca una dirección en el bus. Esta dirección apunta a una posición de memoria o a un periférico dentro del iAPX88. Se garantiza que cuando baje la señal ALE, esta dirección aún será valida. Además, en este momento las señales de control IO/!M, !SSO y DT/!R también serán válidas.

Page 32: sistema minimo 8088.pdf

Capítulo 15. Análisis de sistemas digitales Página 29

Estas tres señales indican a la lógica externa "qué tipo de ciclo máquina" se dispone a realizar la CPU (ver tabla 2 ;Pág. 28). Durante el período T2, los 8 bits de direcciones/datos de menor peso del 8088, empiezan a fluctuar preparándose para la transferencia de datos. A continuación, las señales de control !DEN y !RD o !WR serán válidas, para poder validar el dato en el bus para la transferencia. Este dato será leído hacia dentro, o hacia fuera del 8088 a través de las señales AD[0:7], los cuales en este momento hacen funciones de bus de datos. En este momento, las cuatro direcciones de mayor peso, hacen funciones de bus de estado. La información de estado estará disponible al descodificar estos bits. De todas formas, S3 y S4 pueden descodificarse para determinar que segmento de memoria está siendo accedido en el actual ciclo máquina. Esta información puede utilizarse para seleccionar uno de los cuatro segmentos de memoria (código, datos, stack y extra) que son direccionados por el iAPX88. Esta técnica permite partir la memoria en cuatro segmentos para expandirla hasta 4 MBytes. El hecho de descodificar S3 y S4 proporciona un grado de protección a la memoria, puesto que se puede evitar escrituras erróneas en segmentos que se solapan. Durante T3 la CPU continua haciendo valer el dato escrito en el bus, o bien sigue leyendo el bus de datos, además sigue proporcionando información de estado en los 4 bits de mayor peso del bus. Este estado, proporciona el tiempo necesario para que el dato se estabilice en el bus de datos, y así poder ser leídos por la CPU o dispositivo seleccionado (memoria o periférico). A principios de T4 las señales !RD o !WR suben a uno (quedan inactivas), y el dato es fijado en el 8088 o dispositivo direccionado. Las señales !DEN y DT/!R también suben y la memoria o periférico quedan desactivados. 2.9- CICLOS DE REPOSO La CPU 8088 sólo ejecuta un ciclo máquina cuando las instrucciones u operandos son transferidos entre el 8088 y la memoria o periférico. Cuando no ejecuta un ciclo máquina, la interfície con el bus ejecuta un ciclo de reposo (TI). Durante este ciclo de reposo, la CPU continua dando información del estado del anterior ciclo máquina, en la parte alta del bus de direcciones. Si el anterior ciclo máquina era de escritura, la CPU mantiene el dato en el bus antes de que empiece el siguiente ciclo máquina. Pero si era un ciclo de lectura, la CPU no mantiene el dato en el bus.

Page 33: sistema minimo 8088.pdf

Capítulo 15. Análisis de sistemas digitales Página 30

Debido a que la CPU lee (pre fetch) al menos cuatro bytes de instrucción para la cola de instrucciones, la relación entre la lectura de la instrucción y la transferencia del operando asociado, puede estar separada en el tiempo por lecturas de bytes de instrucción adicionales. En general, cuando se lee una instrucción y es puesta en la cola de instrucciones del 8088, varias instrucciones serán leídas y puestas en la cola, antes de que sean descodificadas y ejecutadas. NOTA: Si la instrucción que se está ejecutando es un salto o cualquier otra instrucción de transferencia de control, todas las instrucciones existentes en la cola serán descartadas sin haber sido ejecutadas. 2.10- LA ARQUITECTURA PIPELINE DEL 8088

La figura 9 muestra la evolución temporal de la ejecución de un programa en un microprocesador estándar. Primero, el microprocesador debe leer la instrucción de la memoria (ciclo de fetch), una vez leída y descodificada, el microprocesador ejecuta la instrucción. Sólo después que el microprocesador haya ejecutado la instrucción, la CPU está preparada para ir a buscar la siguiente instrucción, la ejecuta, etc.

El hardware de la CPU que ejecuta las instrucciones obviamente debe esperar hasta

que la instrucción sea leída y descodificada antes de que empiece su ejecución. Por lo tanto, en un microprocesador estándar, el hardware de ejecución malgasta mucho tiempo esperando que las instrucciones sean leídas y descodificadas.

El 8088 elimina este tiempo de espera dividiendo la CPU en dos unidades funcionales

independientes (figura 10).

Figura 9. Ejecución secuencial de un programa

Page 34: sistema minimo 8088.pdf

Capítulo 15. Análisis de sistemas digitales Página 31

2.10.1- LA UNIDAD DE INTERFÍCIE CON EL BUS (BIU) Y LA UNIDAD DE EJECUCIÓN (EU) TRABAJAN EN PARALELO El 8088 tiene una unidad de interfície con el bus, llamada BIU (Bus Interface Unit) cuyo único trabajo es leer las instrucciones de la memoria y pasar los datos hacia y desde el hardware de ejecución al mundo exterior a través de la interfície del bus. Puesto que la unidad de ejecución EU (Execution Unit) y la unidad de interfície con el bus son independientes, la BIU lee las instrucciones adicionales mientras la unidad de ejecución ejecuta la instrucción anterior. Esto es posible gracias al Instrucción Pipeline o cola, entre la unidad de interfície y la unidad de ejecución; la unidad de interfície llena la cola con las instrucciones que serán ejecutadas. De este modo, cuando la unidad de ejecución termina una instrucción, la siguiente instrucción normalmente está ya lista sin necesidad de tiempos de espera. La figura 11 muestra el trabajo en paralelo de las unidades de ejecución y de interfície en el 8088.

2.10.2- BENEFICIOS DE LA ARQUITECTURA PIPELINE Debido a que la BIU normalmente está ocupada leyendo instrucciones para la cola, el bus del 8088 está más ocupado, sacando así un mayor rendimiento a la estructura de buses del

Figura 10. Unidades funcionales de la CPU

Figura 11. La arquitectura Pipeline

Page 35: sistema minimo 8088.pdf

Capítulo 15. Análisis de sistemas digitales Página 32

sistema. El trabajo en paralelo de la lectura de instrucciones y su ejecución, da al 8088 un rendimiento equivalente al de un microprocesador que mueva datos de 16 bits a la vez. Otro beneficio del trabajo en paralelo es que puesto que la EU rara vez necesita esperar a que la BIU lea la siguiente instrucción, hay una menor necesidad de que la BIU lea las instrucciones rápidamente. De este modo, la BIU del 8088 permite un máximo rendimiento sin necesidad de utilizar dispositivos de memoria rápidos. Cuando la ejecución del programa salta a una nueva dirección, el tiempo de fetch es el único tiempo que no es totalmente transparente. Cuando esto sucede, la unidad interfície recibe la nueva dirección de la unidad de ejecución; entonces empieza a leer las instrucciones secuencialmente a partir de la nueva dirección. La unidad de ejecución deberá esperar a que la nueva instrucción sea leída igual que lo hacen los microprocesadores estándar. Después de que la primera instrucción haya sido leída de la nueva dirección la unidad de interfície continua otra vez llenando la cola con instrucciones y el tiempo de fetch vuelve a ser otra vez transparente.

Page 36: sistema minimo 8088.pdf

Capítulo 15. Análisis de sistemas digitales Página 34

5- REALIZACIÓN DE LA PRÁCTICA

5.1 OBJETIVOS DE LA PRÁCTICA El objetivo de esta práctica, es que el alumno conozca el funcionamiento y posibilidades de uno de los instrumentos más utilizados en el análisis de sistemas digitales, el analizador lógico. Además esta práctica será un complemento a la teoría del microprocesador 8088 que se estudia en la asignatura de ordenadores. El estudio se realizará sobre un sistema completo basado en la CPU 8088, el sistema está totalmente abierto para que el alumno pueda estudiar su funcionamiento. Los 68 canales del Analizador lógico HP 1672G están conectados a las 68 señales más útiles para el estudio del sistema .

5.2- DESCRIPCIÓN DEL SISTEMA BASADO EN LA CPU 8088 Como ya se ha dicho antes, todo el sistema está controlado por el microprocesador Intel 8088 en "modo mínimo" con los buses multiplexados y trabajando a una velocidad de reloj de aproximadamente 5 MHz. El sistema está

Figura 12. Diagrama de bloques del sistema

Page 37: sistema minimo 8088.pdf

Capítulo 15. Análisis de sistemas digitales Página 35

permanentemente vigilado por un WatchDog, que inicializará de nuevo el sistema cada vez que el software falle.

La memoria está formada por dos bancos de 32 Kbytes; Un banco de memoria RAM, donde tenemos la tabla de vectores de interrupción, el segmento de datos y el stack; y un banco de memoria EPROM donde tenemos el segmento de código.

La interfície con el usuario se realiza a través de un teclado de PC y una pantalla LCD de diez y seis caracteres por dos líneas. El usuario indica al sistema qué operación desea realizar a través de un interprete de comandos, el cual permite entre otros: configurar el Analizador, editar un programa, ejecutar un programa, grabar la pantalla actual, generación de errores, etc.

La interfície con el Analizador se realiza a través del estándar RS-232, realizando el control de flujo con el protocolo XON/XOFF. A través del canal serie, el usuario puede: configurar el Analizador, volcar la pantalla a disco, etc.

Para que se puedan realizar pruebas de acceso a periférico, se ha conectado una PIO, de propósito general, en el sistema. De esta manera, cuando el alumno escriba sus propios programas en código máquina tendrá alguna vía para comunicarse con el exterior.

Una vez realizado el estudio completo del funcionamiento del sistema, el alumno tendrá que poner en práctica los conocimientos obtenidos, simulando errores dentro del propio sistema, y luego buscar dónde se halla el error.

5.3- CONFIGURACIÓN DEL ANALIZADOR

Antes de realizar ninguna medida, tendremos que configurar el Analizador Lógico. Recordemos que la comunicación entre la "unidad de pruebas" y el Analizador se realiza vía RS-232. Por lo tanto tendremos que configurar el Analizador para que pueda recibir las ordenes a través del conector RS-232. Los pasos a seguir son: 1. Encender el Analizador lógico. En pocos segundos aparecerá una pantalla. 2. Encender la unidad de pruebas. Aparecerá por pantalla el mensaje de . presentación. 3. Entrar en el grupo SYSTEM. 4. Entrar en el menú de EXTERNAL I/O. 5. En el menú Controller seleccionar Connected to RS-232C. 6. Pulsar sobre RS-232 Settings. Aparecerá la pantalla de especificaciones. 7. Fijar baud rate 19.2 K 8. Fijar parity Even. ( par) 9. El resto dejarlo como está. 10. Pulsar Done para finalizar.

Page 38: sistema minimo 8088.pdf

Capítulo 15. Análisis de sistemas digitales Página 36

A partir de este momento, el Analizador está preparado para recibir ordenes a través de la RS-232.

Recordemos que el Analizador dispone de 68 canales. Agrupados en 4 pods o sondas de 17 canales cada una. Para poder realizar el estudio del funcionamiento de la Unidad de Pruebas, se ha conectado cada canal del Analizador a una señal de la Unidad de Pruebas.

Los 68 canales están conectados a las distintas señales de la unidad de pruebas . Para

idendificarlos se les asignan distintos nombres o "etiquetas". Hay 32 etiquetas asignadas a señales simples y 3 etiquetas asignadas a buses . Total 35. Las etiquetas de los buses consumen varios canales . Así AX(0 a 14) = 15 . D(0 a 7) = 8 PA(0 a 7 ) = 8 Si añadimos las 5 señales que necesita el desensamblador y que no tienen ningún

interés didáctico, salen los 68 canales del Analizador. En efecto (15+8+8+32+5 =68). Para una mejor comprensión, el nombre que figura en los esquemas, es el mismo que el

de las etiquetas. Debido a que nuestro sistema tiene más de 68 señales, se han conectado las más didácticas, es decir, las que permiten hacer un estudio más adecuado.

Para evitar al estudiante la pérdida de tiempo creando las 35 etiquetas, la Unidad de Pruebas dispone de un comando que las crea todas. Pasos a seguir: 1. Volver al grupo ANALYZER. 2. Si continua en pantalla de la unidad de pruebas el mensaje de presentación, pulsar

una tecla. 3. En el prompt1, teclear la orden ETIQ (ver apartado 3.1.4, pág 17) . 4. Entrar en el menú FORMAT.

Puede observarse en la pantalla del Analizador, que las 35 etiquetas han sido creadas. Recordemos que una etiqueta se asigna a un canal mediante un asterisco. Por ejemplo, la etiqueta A15 está asignada al canal 15 del Pod A3

En la tabla de la página 37 se detalla donde han sido conectados los 68 canales del

Analizador. En la primera columna de la tabla aparece el canal de la sonda. En la segunda, el nombre de la etiqueta. En la tercera y cuarta columna, aparece el chip y el número de la pata.

1A partir de este momento, siempre que hagamos referencia al prompt, significará que es una orden para la unidad de pruebas.

Page 39: sistema minimo 8088.pdf

Capítulo 15. Análisis de sistemas digitales Página 37

Analizador Unidad de pruebas Analizador Unidad de pruebasPOD # 1 ETIQUETA CHIP PIN POD # 2 ETIQUETA CHIP PINCLOCK J **** CLOCK K KBCLK U10.8251 25DATA 15 PA7 U9.8155 28 DATA 15 !KEYB U5.74LS138 14DATA 14 PA6 U9.8155 27 DATA 14 !PIO U30.74LS138 13DATA 13 PA5 U9.8155 26 DATA 13 !LCD U5.74LS138 12DATA 12 PA4 U9.8155 25 DATA 12 !WDOG U5.74LS138 11DATA 11 PA3 U9.8155 24 DATA 11 !RS232 U5.74LS138 10DATA 10 PA2 U9.8155 23 DATA 10 !PIC U5.74LS138 9DATA 9 PA1 U9.8155 22 DATA 9 !EPROM U6.74LS139 11DATA 8 PA0 U9.8155 21 DATA 8 !RAM U6.74LS139 4DATA 7 D7 U2.74LS245 11 DATA 7 IRQ10 U20.8251 15DATA 6 D6 U2.74LS245 12 DATA 6 IRQ9 U20.8251 14DATA 5 D5 U2.74LS245 13 DATA 5 IRQ8 U10.8251 14DATA 4 D4 U2.74LS245 14 DATA 4 RXD U20.8251 3DATA 3 D3 U2.74LS245 15 DATA 3 TXD U20.8251 19DATA 2 D2 U2.74LS245 16 DATA 2 KBDATA U10.8251 3DATA 1 D1 U2.74LS245 17 DATA 1 AS19 U0.8088 35DATA 0 D0 U2.74LS245 18 DATA 0 AD0 U0.8088 16

Analizador Unidad de pruebas Analizador Unidad de pruebasPOD # 3 ETIQUETA CHIP PIN POD # 4 ETIQUETA CHIP PINCLOCK L TOUT U9.8155 6 CLOCK M CLOCK U0.8088 19DATA 15 A15 U0.8088 39 DATA 15 Q_555 U12.NE555 3DATA 14 AX14 U4.74LS373 16 DATA 14 !DEN U0.8088 26DATA 13 AX13 U4.74LS373 15 DATA 13 Q_121 U11.74121 6DATA 12 AX12 U4.74LS373 12 DATA 12 ****DATA 11 AX11 U4.74LS373 9 DATA 11 !SS0 U0.8088 34DATA 10 AX10 U4.74LS373 6 DATA 10 !INTA U0.8088 24DATA 9 AX9 U4.74LS373 5 DATA 9 INTR U0.8088 18DATA 8 AX8 U4.74LS373 2 DATA 8 DT/!R U0.8088 27DATA 7 AX7 U3.74LS363 19 DATA 7 IO/!M U0.8088 28DATA 6 AX6 U3.74LS363 16 DATA 6 !WR U0.8088 29DATA 5 AX5 U3.74LS363 15 DATA 5 !RD U0.8088 32DATA 4 AX4 U3.74LS363 12 DATA 4 ALE U0.8088 25DATA 3 AX3 U3.74LS363 9 DATA 3 AX19 U3.74LS373 19DATA 2 AX2 U3.74LS363 6 DATA 2 ****DATA 1 AX1 U3.74LS363 5 DATA 1 ****DATA 0 AX0 U3.74LS363 2 DATA 0 ****

Tabla 3. Conexiones de los canales del analizador al sistema

Page 40: sistema minimo 8088.pdf

Capítulo 15. Análisis de sistemas digitales Página 38

5.4- LÍNEAS GENERALES A SEGUIR

A continuación, se hace una pequeña descripción de cuales son las líneas básicas a seguir para realizar una buena adquisición.

Una vez cargadas las etiquetas, podemos empezar el estudio del funcionamiento de la Unidad de Pruebas. El estudio se ha separado en 11 apartados, del 5.5 al 5.16. Al principio de cada apartado, junto con la explicación teórica se adjunta el esquema. Al final del capítulo, están los esquemas completos. Los esquemas completos, conviene seguirlos para tener una visión global del sistema, y no perder el mundo de vista.

Primero debe leerse y comprenderse la teoría, a continuación el alumno debe elegir qué señales considera interesante visualizar para poder realizar el estudio. Recordemos, que sólo se pueden observar las señales con un nombre asignado (etiquetas). Antes de colocar las nuevas etiquetas en la pantalla, deberán borrarse las etiquetas existentes.

Cuando se desea añadir etiquetas a la pantalla de visualización, aparecerá una pantalla con todas las etiquetas juntas. Se han intentado separar en 9 grupos.

En el siguiente cuadro están las 35 etiquetas disponibles: Tabla 4. Etiquetas disponibles distribuídas en grupo. 1 2 3 4 5 6 7 8 9 .

AD0 CLOCK IRQ8 !RAM !KEYB KBCLK TOUT Q_121 PIO_A[0:7]A15 !SSO IRQ9 !EPROM !PIO KBDATA TXD Q_555

AS19 ALE IRQ10 !LCD RXDAX[0:14] IO/!M !WDOG

AX19 !RD !RS232D[0:7] !WR !PIC

DT/!R!DENINTR!INTA

Grupo 1. Las tres primeras corresponden a las direcciones de la CPU. Las

tres siguientes son los buses de direcciones y datos multiplexados del sistema.

Grupo 2. Son las 10 señales necesarias para estudiar el funcionamiento de la

CPU. Es el bus de control. Grupo 3. Los tres vectores de interrupción. Grupo 4. Las señales de selección de memoria.

Page 41: sistema minimo 8088.pdf

Capítulo 15. Análisis de sistemas digitales Página 39

Grupo 5. Las señales de selección de periférico. Grupo 6. Reloj y datos del teclado. Grupo 7. Reloj y datos de la comunicación RS-232. Grupo 8. Señales para el estudio del WatchDog. Grupo 9. Puerto A de la PIO.

En segundo lugar, debe elegirse la secuencia de disparo adecuada. En la mayoría de los casos, se hará coincidir el instante del disparo con el evento deseado. Una vez decidido el evento de disparo, este tendrá que expresarse como un flanco, un nivel o una combinación de ambos.

Antes de definir una nueva secuencia de disparo, es recomendable borrar completamente

la secuencia anterior, si no pueden producirse resultados inesperados. Las etiquetas, con las que queremos disparar el Analizador, las colocaremos al principio de la lista.

El modo de adquisición, también es importante. Generalmente se utilizará el Analizador de tiempos convencional. En otros casos, la adquisición adecuada se realizará con el Analizador de estados.

Las características de cada modo de funcionamiento, se han explicado en el apartado

dedicado a la teoría de analizadores lógicos. Página 3 y siguientes.

La primera adquisición deberá realizarse en modo repetitivo. Una vez ajustada la base de tiempos, deberá posicionarse el disparo mediante el delay en una posición de la pantalla que permita la observación de toda la información.

A continuación pasamos a estudiar cada uno de los 11 apartados. 5.5- EL GENERADOR DE RELOJ Y EL WATCHDOG

Antes de hacer el estudio del WatchDog explicaremos lo que es y qué funciones realiza.

Pongamos el caso de una estación meteorológica situada en la cumbre de una montaña. Dicha estación, está controlada por un microcontrolador el cual adquiere los datos climatológicos de forma automática y los transmite vía radio a una estación central de recogida y procesado de datos.

Page 42: sistema minimo 8088.pdf

Capítulo 15. Análisis de sistemas digitales Página 40

Cualquier descarga electrostática podría colgar nuestro dispositivo, y resultaría muy costoso mandar a un técnico para restablecer el sistema. Por lo tanto se hace necesario el uso de un dispositivo que detecte que nuestro sistema se ha colgado y restablezca automáticamente las condiciones iniciales. El circuito encargado de vigilar el buen funcionamiento de nuestro sistema, es el WatchDog.

De forma periódica, el programador deberá indicarle al WatchDog que el programa sigue su flujo normal. Pero si transcurrido cierto tiempo, el WatchDog no recibe noticias, significará que el programa se ha colgado o ha saltado a una zona de memoria errónea, en cuyo caso el WatchDog actuará reiniciando el sistema

Para ello, introduciremos una orden en el programa, que vaya indicando al WatchDog de forma periódica, que el programa funciona correctamente. Imagínese el siguiente programa, que es un bucle infinito, que lee el teclado, escribe por pantalla y refresca el WatchDog. void main(void) { for(; ;) { // Bucle infinito

Lee Teclado(); Escribe Pantalla(); WatchDog(); // Refresco del WatchDog

} }

Si por lo que fuese, el programa se colgase, el WacthDog se daría cuenta de que nadie le informa del buen funcionamiento del programa y automáticamente restablecería las condiciones iniciales.

5.5.1- ESTUDIO DEL WATCHDOG

Como puede observarse en el esquema (figura 13), el WatchDog consta de tres bloques funcionales; un descodificador 74LS138, un monoestable 74121 y un oscilador 555.

El descodificador esta diseñado de tal manera que dará un flanco negativo cuando se haga un acceso al periférico situado en la dirección 40 hexadecimal.

Debido a que el tiempo que la salida del descodificador se mantiene activa (nivel bajo) es insuficiente para saturar directamente el transistor y que además está invertida, intercalamos un monoestable que alarga e invierte el pulso, para que pueda saturar el transistor T1.

Page 43: sistema minimo 8088.pdf

Capítulo 15. Análisis de sistemas digitales Página 41

Figura 13. Esquema del WatchDog

El 555 es un oscilador cuya constante de tiempo viene fijada por las resistencias R6 y R7

junto con el condensador C2. Mientras el condensador C2 este descargado la salida Q del 555 se mantiene a uno. Pero cuando el condensador C2 se carga, la salida cambia a cero, hecho que reiniciará el sistema, al poner un cero a la entrada de la AND (ver fig. 14).

Por lo tanto se trata de evitar que el condensador C2 se cargue por completo.

Para un correcto funcionamiento, la rutina de refresco del WatchDog deberá quedar como sigue: void WatchDog(void) { outportb(0x40, NULL); // Escribe un byte en el puerto 40 hexadecimal }

5.5.2- PRECAUCIONES - Debe tenerse en cuenta, que aunque un sistema se haya colgado, las interrupciones pueden seguir funcionando correctamente, por lo tanto jamás debe incluirse el refresco del WatchDog dentro de una RSI (Rutina de Servicio de Interrupción). - La constante de tiempo del oscilador ha de ser tal que permita al programa realizar al menos un ciclo completo. - Siempre hay que refrescar el WatchDog dentro de los bucles de espera. - El WatchDog restablecerá el funcionamiento normal del sistema, siempre que el error se deba a un fallo en el programa. Si se rompe físicamente algún componente el WatchDog intentará una y otra vez sin éxito arrancar de nuevo el equipo.

Page 44: sistema minimo 8088.pdf

Capítulo 15. Análisis de sistemas digitales Página 42

5.5.3- EL GENERADOR DE RELOJ Y RESET DEL SISTEMA

La inicialización del sistema puede ser debida a dos causas totalmente independientes. Una, que el usuario pulse el reset del sistema, y otra que el WatchDog actúe.

Figura 14. Generador de reloj y reset del sistema

En la figura 14 el 8284 es un generador de reloj y reset compatible con la CPU 8088 y

familia. Sólo necesita a su entrada un cristal de cuarzo que le sirva de patrón, y una señal de reset que dure más de cuatro períodos de reloj. A su salida producirá las señales de CLOCK, READY y RESET conforme los requerimientos de sincronización y permanencia del 8088.

La frecuencia del reloj del sistema es tres veces menor que la frecuencia a la que oscila el cristal de cuarzo. Además el 8284 tiene una salida PCLOCK que es la mitad de la frecuencia del reloj del sistema, la cual se utiliza para los periféricos. 5.5.4- PRÁCTICAS A REALIZAR

Primero observaremos las señales cuando el sistema funciona normalmente y a continuación forzaremos al programa a entrar en un bucle infinito. Los pasos a seguir son: 1. Entrar en el menú de WAVEFORM. 2. Pulsar dos veces sobre el campo de etiquetas. Elegir la opción de borrar todas las

etiquetas y confirmar. 3. Volver a pulsar para insertar las señales deseadas. En este caso elegiremos las

siguientes: la señal de refresco del WatchDog !WDOG, la salida del monoestable Q_121 y la salida del oscilador Q_555.

4. Elegir una base de tiempos de por ejemplo 10 us/div. 5. Entrar en el menú de TRIGGER. 6. Pulsar sobre la primera etiqueta, aparecerá por pantalla la lista de etiquetas. Entonces

pulsar sobre la etiqueta deseada, en nuestro caso !WDOG (elegimos la señal con la que queremos disparar).

Page 45: sistema minimo 8088.pdf

Capítulo 15. Análisis de sistemas digitales Página 43

A continuación ponemos la condición que tiene que tener mediante el término. En nuestro caso un cero. Para ello: 7. Pulsar sobre el término deseado, por ejemplo a. Elegir la opción de limpiar el término,

es decir Clear (=x). De esta forma estamos seguros que no hay ninguna asignación anterior.

8. Pulsar sobre el campo que está al lado del término a y justo debajo de la etiqueta !WDOG, poner un cero.

9. Definir la secuencia de disparo, cuando a suceda una vez (consultar apartado 2.15, pág. 14).

10. Pulsar el botón de RUN. Podemos ver en la pantalla las señales !WDOG y Q_121 y que Q_555 no baja.

Se puede ver el tiempo que tarda el sistema en refrescar el WatchDog y el ciclo de trabajo a la salida del monoestable.

Cuando se quieran calcular tiempos de retardo entre señales o cualquier otro tiempo. Hay que tener en cuenta que el sistema muestrea a una cierta frecuencia, y que el error máximo cometido será un período de muestra.

Una vez visto el funcionamiento del monoestable, vamos a provocar que actúe el WatchDog, para ello: 11. Definir el término a como Q_555= 0. Para ello repetir los pasos 5 a 9. No olvidarse de borrar la secuencia de disparo anterior. 12. Volver al menú de WAVEFORM. 13. Poner una base de tiempos generosa, de aproximadamente 100 ms/div. 14. Pulsar RUN. Vemos que el analizador está a la espera de que se cumpla la condición de disparo. 15. En el prompt, escribir la orden RESET (apartado 3.1.8, pág 17). Como se ha explicado antes, se trata de un bucle infinito.

Al cabo de unos instantes, en la pantalla de la unidad de pruebas, habrá aparecido el mensaje de presentación, señal inequívoca de que el sistema se ha inicializado de nuevo. En el centro de la pantalla del Analizador aparecerá un cambio de estado en la salida del oscilador.

Ajustar el retardo, hasta que por pantalla aparezca el ultimo flanco de refresco del WatchDog y el reset del sistema. Medir el tiempo que tarda el oscilador en resetear el sistema. Está suficientemente dimensionado el sistema ?

Para que se pueda visualizar este intervalo de tiempo será necesario pasar el Acquisition Mode a

Manual, el Trigger Position a User Defined, con el Post Store al 20% y el Sample Period a 10 us. Para el resto de las medidas el Acquisition Mode deberá estar en Automatic.

Page 46: sistema minimo 8088.pdf

Capítulo 15. Análisis de sistemas digitales Página 44

5.6 - LA CPU

El microprocesador utilizado es un Intel 8088 funcionando en modo mínimo. Observar que la interrupción utilizada es la enmascarable puesto que la no enmascarable está inhibida, al igual que las señales de test y petición de buses.

El desmultiplexado del bus de datos se hace con un 74LS245, que es un buffer bidireccional. El sentido de los datos se fija con la pata DIR, la cual está gobernada con la señal DT/!R de la CPU, (recordemos que vale cero cuando el sentido de los datos es de entrada y vale uno cuando los datos salen de la CPU).

Las salidas del buffer entran en estado de alta impedancia cuando la entrada G vale uno, es decir

mientras la CPU no valide los datos con la señal !DEN. El desmultiplexado del bus de direcciones se hace con dos 72LS373, que es un latch seguidor

unidireccional. Mientras la entrada de control G está a uno, la señal de salida sigue a la entrada, pero cuando ésta baja a cero, el flanco fija, a la salida, los datos que en ese momento estén a la entrada.

Vemos, pues, que este chip esta controlado por la señal ALE de la CPU, la cual baja

cuando en el bus hay una dirección valida. La señal de control OC, está conectada a masa, por lo tanto habilita la salida.

Figura 15. La CPU y el desmultiplexado de los buses

Como sólo se utilizan las primeras quince direcciones para direccionar la memoria. Y la

dirección de mayor peso para mapear los bancos de memoria. El resto de direcciones no es necesario desmultiplexarlas, de esta forma nos ahorramos un chip.

Page 47: sistema minimo 8088.pdf

Capítulo 15. Análisis de sistemas digitales Página 45

Figura 16. Ciclo de fetch o lectura de instrucción

En la figura 16 se pueden observar las señales implicadas cuando la CPU realiza un ciclo

de lectura de instrucción o fetch. Como ya se ha visto en la teoría, durante el primer periodo de reloj la señal ALE baja para validar el bus de direcciones (Recordemos que un período de reloj empieza con el flanco de bajada) , además en este momento las señales !SSO, IO/!M y DT/!R ya indican de qué tipo de ciclo máquina se trata. (fig. 16) En el caso de un ciclo de lectura de instrucción las tres valen cero.

!SS0 DT/!R IO/!M Función

0 0 1 Reconocimiento de interrupción 1 0 1 Lectura periférico de E/S 0 1 1 Escritura periférico de E/S 1 1 1 Ciclo de espera 0 0 0 Ciclo de lectura de instrucción 1 0 0 Lectura memoria 0 1 0 Escritura memoria 1 1 0 Pasivo

Fig 16 Tipo de actividad que tienen los buses

Durante el segundo período de reloj, bajará la señal !RD o !WR .En nuestro caso por tratarse de un ciclo de lectura de instrucción, bajará la señal de !RD. Al cabo de poco rato bajará la señal !DEN.

A partir de este momento la memoria o dispositivo direccionado, se dispone a colocar los datos en el bus, para que la CPU pueda leerlos. A principios del cuarto periodo, subirán las señales de !RD o !WR y !DEN.

Page 48: sistema minimo 8088.pdf

Capítulo 15. Análisis de sistemas digitales Página 46

Al finalizar este estudio el alumno tendría que ser capaz de reconocer sin ninguna duda,

todos y cada uno de los ciclos máquina de la CPU. Además de interpretar la secuencia de ejecución de un programa.

En la figura 17 se puede observar la ejecución completa de un programa cíclico. Cada ciclo máquina, es fácilmente identificable observando los flancos de la señal ALE, en total vemos que nuestro programa ejecuta diez ciclos máquina, antes de empezar de nuevo.

Con un simple vistazo se puede observar que el programa está formado por ocho ciclos de

lectura y dos de escritura, y si observamos la señal IO/!M llegaremos a la conclusión que son ocho ciclos de lectura a memoria y dos ciclos de escritura a periférico.

Si observamos la señal !SSO durante los ocho ciclos de lectura, veremos que esta a cero, por lo tanto no son ciclos de lectura a memoria, sino que son ciclos de lectura de instrucción.

Figura 17. Ejecución de un programa cíclico

A simple vista, también observaremos que hay ciclos que ocupan más de cuatro períodos

de reloj. Bien, esto no es cierto. Lo que pasa es que la CPU esta ejecutando ciclos de reposo. Recordemos que los ciclos de reposo, son aquellos ciclos que ocupan un sólo período de

reloj, en los que la CPU no hace un acceso a memoria ni a periférico, sino que realiza algún tipo de operación interna. Por ejemplo el último ciclo máquina es exageradamente largo. Esto es debido a que la CPU está ejecutando la instrucción de salto para volver al principio del programa.

Cuando se realice el estudio del desensamblador (apartado 5.16) y la programación en código máquina (apartado 5.15), se explicará con un poco más de detalle el programa que acabamos de estudiar.

Page 49: sistema minimo 8088.pdf

Capítulo 15. Análisis de sistemas digitales Página 47

5.6.1- PRÁCTICAS A REALIZAR

Cada vez que la CPU hace un ciclo de lectura o escritura a memoria o periférico de E/S, lo indica al resto del sistema activando las señales del bus de control. En total hay siete "ciclos máquina" a estudiar:

1.- Ciclo de " fetch " o lectura de instrucción 2.- Ciclo de lectura a memoria 3.- Ciclo de escritura a memoria 4 - Lectura de periférico 5.- Ciclo de escritura a periférico 6.- Ciclo de reconocimiento de interrupción. Se realizará más adelante. 7.- Ciclo de reposo

Como se ha explicado anteriormente, descodificando las señales !SSO, DT/!R y IO/!M

(Fig 16, pág. 46) podemos saber que ciclo máquina esta ejecutando la CPU. También sabemos, que cuando baja la señal ALE, las anteriores señales tienen un valor estable. Esta información nos será útil para elegir una secuencia de disparo correcta. Pasos a seguir: 1. Entrar en el menú de FORMAT. 2. Seleccionar la primera etiqueta que no esta asignada (después de PIO_A). Elegir la

opción de MODIFY. 3. Poner por ejemplo, el nombre CICLO. Automáticamente queda activada. 4. Localizar en el cuadro general de etiquetas (tabla 1) las posiciones

correspondientes a las tres señales a descodificar y darlas de alta o ponerlas en ON, colocando el * en el pod correspondiente. Para hacerlo es mejor utilizar las teclas SELECT, DONE y las flechas. La

flecha para arriba para el * y para abajo el . del teclado del analizador, ya que nos indica la posición que estamos.

Una vez tenemos creada una etiqueta llamada CICLO, y que tiene asignados las tres

posiciones correspondientes a las señales !SSO, DT/!R y IO/!M. Vamos a asignar un valor lógico, llamado símbolo, a cada una de las ocho combinaciones posibles (ver tabla 2). 5. Entrar en el submenú de SYMBOLS. Si aún no se ha introducido ningún

símbolo saldrá New Symbol. 6. Cambiar la etiqueta por CICLO y poner la base en binario. 7. Seleccionar el símbolo. Elegir Add a Symbol (añadir un símbolo), y escribir FETCH. 8. Una vez creado el primer símbolo, asignarle el valor 000 binario.

Repetir esta operación asignando un símbolo para cada uno de los ciclos máquina de la CPU. Tener en cuenta que el orden de los bits de la etiqueta es el mismo que el de asignación, y no tiene porqué ser el mismo que el de la tabla 2.

Page 50: sistema minimo 8088.pdf

Capítulo 15. Análisis de sistemas digitales Página 48

9. Pulsar Done para salir. 10. Entrar en el menú de WAVEFORM. 11. Borrar todas las señales. 12. Añadir las nuevas señales. Se recomienda; CLOCK, !SSO, ALE, IO/!M, !RD o !WR,

DT/!R y !DEN. 13. Poner la base de tiempos en 100 ns/div. para ver un ciclo máquina. 14. Entrar en el menú de TRIGGER. 15. Borrar la secuencia de disparo anterior. 16. Poner la etiqueta ALE en primer lugar y CICLO en el segundo. 17. Cambiar la base de CICLO, de hexadecimal a símbolo. 18. Fijar Edge1 como flanco de bajada de ALE. 19. Fijar a como FETCH de CICLO. 20. Entrar a editar la secuencia de disparo (nivel) 21. Pulsar sobre el nombre del término a. 22. Elegir Combination. 23. Poner los términos a y EDGE1 a ON. Donde se junten cambiar OR porAND. 24. Salir y volver al menú de WAVEFORM. Pulsar RUN. 25. Centrar el ciclo en la pantalla.

Una vez definida la secuencia de disparo, para estudiar el resto de ciclos máquina sólo habrá que cambiar el valor de la variable a, poniéndole el valor del símbolo deseado.

Es interesante que el alumno complemente el estudio de los ciclos máquina de la CPU, observando el comportamiento de los buses de datos y direcciones, antes y después de que sean desmultiplexados. Para poder realizar el estudio, se han puesto a nuestra disposición las señales AD0, AX0 y D0 y además las señales AS19 y AX19, para poder realizar el estudio del paso de un bus multiplexado a uno desmultiplexado.

Para ello, pueden observarse los tiempos de propagación del 74LS245 y del

74LS373. También puede observarse el comportamiento de una señal multiplexada y como se comportan las salidas desmultiplexadas cuando se activan las señales ALE, DT/!R y !DEN.

Page 51: sistema minimo 8088.pdf

Capítulo 15. Análisis de sistemas digitales Página 49

5.7- LA MEMORIA

La memoria está formada por dos bancos de 32 Kbytes (figura 18). El primero es un banco de memoria RAM estática situado en la parte baja de la memoria. El segundo banco es una EPROM mapeada en la parte alta. El mapeado de memoria, queda de la siguiente manera:

SRAM. Direcciones comprendidas entre 00000 y 7FFFF EPROM. Direcciones comprendidas entre F8000 y FFFFF Por lo tanto el registro segmento de código CS vale F800 hexad y el registro de segmento de datos DS vale oo40 hexadecimal. Ya que la tabla de vectores de interrupción está en la parte más baja de la memoria. En concreto, son 256 vectores de interrucción y cada una ocupa 4 bytes.

La figura 19 muestra el esquema de la memoria.

Figura 19. Esquema de la Memoria

El 74LS139 es un doble descodificador de dos a cuatro. Es ésta, la mínima lógica que

evita colisiones (ver figura 19). La selección de la RAM se hará cuando la dirección de mayor peso AX19 sea cero y el acceso sea a memoria., es decir, que la señal IO/!M valga cero. Por el contrario la selección de la EPROM se hará cuando AX19 sea uno y el acceso sea de lectura a memoria. Para evitar posibles errores, la selección del banco de EPROM se selecciona además con la señal de !RD.

5.7.1- PRÁCTICAS A REALIZAR

En este apartado, haremos un estudio completo de un acceso a memoria. El procedimiento a seguir será el siguiente: 1. En el menú WAVEFORM:, borrar las etiquetas existentes.

Page 52: sistema minimo 8088.pdf

Capítulo 15. Análisis de sistemas digitales Página 50

2. Colocar las señales siguientes, implicadas en este estudio: AX19, IO/!M, !RD, !WR, !RAM y !EPROM .Se recomienda utilizar la orden WAVE (apartado 3.1.11, pág 19).

3. Preparar una secuencia de disparo que nos permita ver un acceso a memoria. Por ejemplo que dispare cuando se haga un acceso de lectura, !RD= 0. No olvidar borrar la secuencia de disparo existente.

4. Volviendo al menú de WAVEFORM, poner una base de tiempos 2 us/div. Para observar los accesos a memoria que realiza el sistema.

5. Pulsar RUN.

Una vez hecha la adquisición, observar el funcionamiento de la selección de memoria, y comprobar que se corresponde con lo dicho en el párrafo anterior. Observar también la diferencia en la duración de las señales de selección de la RAM y de la EPROM. Explicar a que se debe. Prácticas adicionales

Puede realizarse un estudio de los tiempos de propagación de todos los dispositivos, desde que la CPU activa las señales de control, hasta que se activa la señal de selección del banco de memoria deseado. El estudio puede ampliarse haciendo un seguimiento de todas las señales implicadas, desde que la CPU pone una dirección en el bus de direcciones, hasta que consigue leer o escribir un dato. 5.8- ACCESO A PERIFÉRICO

En nuestro caso disponemos de seis periféricos: Teclado, PIO, LCD, WatchDog, RS232 y PIC.

El método a seguir para realizar este estudio, es muy parecido al realizado en el apartado

anterior. Las señales implicadas pueden ser: AX4, AX5, AX6, IO/!M, !RD, !WR, !KEYB, !PIO, !LCD, !WDOG, !RS232, y !PIC

La selección de los periféricos (fig 20) se hace mediante las direcciones AX4, AX5 y AX6 . Las direcciones de los distintos periféricos, en hexadecimal, son: Teclado = 10H ; LCD = 30H ; WatchDog =40H ; PIO = 21H ; RS232 = 50H

Page 53: sistema minimo 8088.pdf

Capítulo 15. Análisis de sistemas digitales Página 51

Figura 20. Selección de periférico

Se observa en el esquema (figura 20) que la lógica de selección de la PIO es

diferente a la de los demás dispositivos. Esto es debido a que la PIO necesita que su entrada de selección esté activa un tiempo antes que baje la señal de !RD o !WR.

Los demás periféricos son seleccionados cuando la CPU realiza un ciclo de lectura o escritura a periférico. Más adelante veremos que la CPU mantiene también la señal IO/!M a nivel alto cuando sirve un ciclo de reconocimiento de interrupción y esto provocaría accesos erróneos a periférico.

Cuando se pulsa una tecla del teclado de la unidad de pruebas, provocamos una interrupción. Al finalizar la RSI hay que enviar al PIC el código correspondiente al final de interrupción. Dentro de la RSI leeremos el carácter que haya en el buffer de entrada. Cuando se detecte que se ha soltado la tecla, escribiremos el carácter en el display. Por lo tanto el hecho de pulsar una tecla, provoca la selección de tres periféricos. 5.9- EL TECLADO

En el apartado anterior hemos estudiado cómo hacía la CPU para direccionar el teclado, en este apartado se estudiará, cómo envía los datos el teclado.

Cuando se pulsa una tecla primero se lee el teclado, después se escribe en

el display y para finalizar se envía un código de final de interrupción al PIC. El teclado se comunica con el sistema, a través del 8251A, que es una USART de propósito general compatible con el 8088.

Page 54: sistema minimo 8088.pdf

Capítulo 15. Análisis de sistemas digitales Página 52

Figura 21. Esquema del teclado

La única manera de inicializar un teclado, es interrumpiendo la alimentación. Por eso

hemos intercalado un transistor en su alimentación, el cual esta saturado en condiciones normales de funcionamiento. Pero entra en corte, cada vez que se inicializa el sistema. Observar que se encienden los LEDS cada vez que se pulsa el botón de reset.

La conexión del teclado se hace con un conector DIN de 5 pins. De los cuales, sólo cuatro están conectados: 1-Reloj, 2-Datos, 4-Masa y 5-Alimentación.

El teclado envía los datos de forma asíncrona, a una velocidad de 13.5 Kbauds, con un bit de paridad par y otro de parada. Cuando el teclado está en reposo, las líneas de datos y de reloj están a nivel alto. Cuando se pulsa una tecla, el reloj empieza a oscilar y la línea de datos empieza la transmisión.

Cuando la USART detecta que el carácter está completo, sube la salida RxRDY (receiver ready). Indicando así a la lógica externa que lea el carácter que tiene en el buffer de entrada. Si no se leyera, el siguiente carácter machacaría al anterior y se perdería.

La salida RxRDY, se utiliza para generar la interrupción IRQ8.

La señal de reloj que proviene del teclado, se utiliza para sincronizar ambos dispositivos, y así se pueden utilizar diferentes teclados, aunque vayan a velocidades diferentes. Hecho bastante frecuente.

El teclado envía un código correspondiente a la tecla pulsada, que se corresponde con su posición en el teclado y no con el carácter ASCII de la tecla. El teclado mandará una y otra vez el código de la tecla, mientras ésta se mantenga apretada.

A continuación envía un código indicando que se ha soltado la tecla. Hay que ir con

cuidado, puesto que ciertas teclas especiales están formadas por más de un código. Por ejemplo la tecla de Pausa está formada por seis caracteres.

Page 55: sistema minimo 8088.pdf

Capítulo 15. Análisis de sistemas digitales Página 53

5.9.1- PRÁCTICAS A REALIZAR 1. Señales implicados: KBCLK, KBDATA, IRQ8, !KEYB y !LCD. 2. Base de tiempos recomendada 100 us/div 3. Secuencia de disparo preparada para flanco de bajada de KBDATA. 4. Preparar la adquisición y pulsar una tecla. 5. Centrar el código, haciendo varias adquisiciones y jugando con el retardo.

Observar que realmente al final de la transmisión de un código, se genera una interrupción. La activación de la señal de selección del teclado, significa que se ha servido la interrupción. Puesto que la RSI sólo lee la tecla y la coloca en buffer circular.

Como complemento, se puede intentar obtener el código de alguna tecla y el código de liberación de tecla. 5.10- EL CICLO DE RECONOCIMIENTO DE INTERRUPCIÓN

El 8259A es un controlador de interrupciones compatible con el 8088. El cual se conecta directamente al bus de datos. Es un dispositivo capaz de priorizar ocho vectores de interrupción. Una vez priorizada la interrupción, el PIC hace la petición a la CPU y cuando ésta la reconoce, entonces pone el valor del vector de interrupción en el bus de datos.

En nuestro sistema sólo generamos tres interrupciones diferentes: 1.- cuando se pulsa una tecla, 2.- cuando el buffer de la RS-232 aún tiene caracteres que enviar y

3.- cuando se recibe un carácter a través de la RS-232.

Cuando se ha servido una interrupción, debe indicarse al PIC que ha finalizado. Por lo tanto la CPU manda un código de fin de interrupción.

Una vez realizado el estudio, de cómo un periférico genera una interrupción, ya estamos en condiciones de estudiar cómo ésta es servida por la CPU. Aunque tenemos tres tipos de interrupciones, utilizaremos la del teclado, por ser la más sencilla. 5.10.1- PRÁCTICAS A REALIZAR 1. Señales implicados: Bus Datos, IRQ8, INTR, !SSO, ALE, IO/!M, DT/!R y !INTA. 2. Disparar por flanco de bajada de !INTA.

Figura 22. Esquema del PIC

Page 56: sistema minimo 8088.pdf

Capítulo 15. Análisis de sistemas digitales Página 54

3. Base de tiempos de 500 ns. 4. Preparar la adquisición y pulsar una tecla.

Figura 23. Ciclo de reconocimiento de interrupción

En la figura 23 al igual que en la pantalla del analizador se puede apreciar como

la señal que proviene del teclado IRQ8, sube indicando que solicita una interrupción. Al cabo de poco tiempo, el PIC sube la señal INTR de la CPU. Cuando la CPU acaba la instrucción actual, los dos primeros ALE, entonces empieza propiamente el ciclo de reconocimiento de interrupción subiendo ALE. En este caso la señal !RD no bajará, puesto que es la señal !INTA la que hace funciones de lectura.

Un ciclo de reconocimiento de interrupción, consta de dos ciclos máquina. El primero sirve para que el PIC priorize las peticiones que tiene en sus entradas y prepare el vector de interrupción correspondiente. A partir de este momento, si hubiese una petición más prioritaria tendría que esperar a la siguiente petición.

El segundo sirve para que la CPU lea el vector de interrupción. Como puede observarse en la figura, es durante el segundo ciclo, cuando !INTA esta activo, el PIC pone el valor del vector de interrupción en el bus de datos, en este caso 8.

Cuando el PIC detecta que le han reconocido la interrupción, libera la señal INTR. En cambio el teclado tarda un poco más, pero el PIC es bastante inteligente para saber que no hace falta preocuparse.

Como complemento, se pueden provocar las otras dos interrupciones. Utilizando la orden que realiza una transmisión serie, pero no la de configuración. Para las diferentes interrupciones, verificar el vector de interrupción.

También se puede localizar el ciclo máquina, en que la CPU indica al PIC que la interrupción ha finalizado y descubrir el código de final de interrupción.

Page 57: sistema minimo 8088.pdf

Capítulo 15. Análisis de sistemas digitales Página 55

5.11- EL DISPLAY

Otra parte importante de la interfície con el usuario, es el display. Para ello hemos conectado un LCD de dieciséis caracteres por dos líneas, el cual se conecta directamente al bus de datos y es tratado como cualquier otro periférico.

Figura 24. Esquema del display

Al ser un dispositivo muy lento (es decir, tarda bastante en escribir un carácter

en comparación con la velocidad de la CPU) y restrictivo en lo referente a los tiempos de establecimiento y mantenimiento de las señales de control (es decir, necesita que la orden de lectura o escritura llegue pasado un cierto tiempo después de que se haya selecciona el periférico), nos hemos visto obligados a utilizar la dirección A15 directamente tal y como sale de la CPU (recordemos que es valida durante todo el ciclo).

Así al no pasar a través del 74LS373 ganamos unos nanosegundos que nos son

necesarios para cumplir los tiempos anteriormente mencionados. Esta dirección la utilizaremos, para diferenciar si realizamos un acceso de datos o de control.

Antes de realizar ninguna operación sobre el LCD, primero hay que leer el estado del flag de ocupado. Por lo tanto, en el mejor de los casos, se necesitan dos accesos para realizar alguna operación sobre el LCD.

Hay que tener en cuenta, que este dispositivo, al contrario de los demás, funciona con lógica positiva. Por lo tanto el conexionado de las señales de control queda de la siguiente forma: * Señal RS. Sirve para indicarle al LCD si realizamos un acceso de datos o de control. Cuando A15 vale cero, significa un acceso de control y por el contrario cuando vale uno es un acceso de datos. * Señal R/W. Cuando ésta señal vale cero significa que la CPU escribe y cuando vale uno la CPU lee. Por eso utilizaremos la señal !SSO para indicar lectura/escritura. * La entrada de selección del dispositivo es activa por nivel alto, por lo tanto hay que invertir la salida de la lógica de selección de periférico.

Page 58: sistema minimo 8088.pdf

Capítulo 15. Análisis de sistemas digitales Página 56

5.11.1- PRÁCTICAS A REALIZAR 1. Señales implicados: A15, IO/!M, !SSO, !LCD y !WDOG. 2. Disparo cuando se active la selección del LCD. 3. Base de tiempos de 10 us/div. 4. Iniciar la adquisición. 5. En el "prompt", escribir VER.

Observar cuántos ciclos de lectura hace la CPU, antes de poder escribir un carácter. Que hace la CPU durante el bucle de espera (aumentar la base de tiempos) ? 5.12- LA PIO

El sistema dispone de una PIO 8155 de propósito general compatible con el 8088. Esta formada por tres puertos: A, B y C . El puerto A, está a disposición del alumno y tiene todas las señales a su disposición dentro del Analizador. La dirección del puerto A es la 21 hexadecimal.

Para seleccionar la PIO hay dos posibilidades: Primera, utilizar la orden del sistema operativo, que saca por el puerto A

un valor determinado (ver apartado 3.1.7 ) . Segunda, escribir un programa en código máquina que acceda a la

dirección 21 hexadecimal y luego ejecutarlo. De momento recomendamos la primera opción.

La salida del contador interno TOUT de la PIO, nos servirá como base de tiempos para la comunicación RS-232. A su salida tenemos una onda cuadrada de 19,2 KHz.

La PIO, ha sido diseñada para conectarla directamente a los buses y señales de control de la CPU. Y ella misma ya desmultiplexará los buses de datos y direcciones

Page 59: sistema minimo 8088.pdf

Capítulo 15. Análisis de sistemas digitales Página 57

Figura 25. Esquema de la PIO

Además esta PIO, dispone de 256 bytes de memoria interna, que no está mapeada 5.12.1- PRÁCTICAS A REALIZAR 1. Señales implicados: AD0, IO/!M, ALE, !PIO, !WR, PIO_A Bus. 2. Disparo por !PIO=0 > 200 ns. 3. Base de tiempos de 100 ns/div 4. Iniciar la adquisición. 6. En el "prompt", escribir PIO.

Se trata de estudiar el proceso de escritura de un dato en el puerto A de la PIO. En primer lugar direccionamos el puerto A de la PIO (21H), como vemos en la fig.25, AD0 vale 1, dado que la dirección es impar, y IO/!M índica una operación de entrada/salida. En el momento en que la dirección es estable en el bus (ALE=1), la CPU selecciona el circuito de la PIO (!PIO=0), y envía a la PIO (!WR=0) el dato que hayamos introducido ( en el ejemplo un 2). Veremos que AD0 pasa de 1 a 0 dado que la dirección de la PIO es impar y el dato enviado es par.

Transcurrido el tiempo necesario el dato aparece en el puerto de salida de la PIO (PIO_A=02).

Page 60: sistema minimo 8088.pdf

Capítulo 15. Análisis de sistemas digitales Página 58

Figura 26. Acceso a la PIO

5.13- ESTUDIO DE UNA COMUNICACIÓN RS-232

Como se puede observar en el esquema la interfície RS-232 está formada por una USART 8251 y un MAX232.,que sirve para pasar del nivel TTL a +-12V que utiliza la transmisión serie. La conexión con el analizador se hace con un conector CANON de 9 pins. La comunicación es bidireccional y a dos hilos: TxD y RxD.

La placa del microprocesador en estudio se comunica con el Analizador a

través de la RS-232. El control de flujo se realiza con el protocolo XON/XOFF. Este protocolo establece que cuando un receptor está preparado para recibir datos envía un carácter XON (17 decimal) al transmisor y éste empieza la transmisión de los datos. Cuando el receptor tiene bastante, envía un carácter XOFF (19 decimal) al transmisor y este tiene que parar la transmisión hasta que reciba de nuevo un XON.

La única manera de seleccionar la RS232 es iniciar una transición serie.

Para ello se utiliza la orden del sistema operativo preparada para tal fin (ver apartado 3.1.9). Precaución: no cargar de nuevo las etiquetas ,pues, se perdería la adquisición actual.Una comunicación serie también provoca interrupciones.

Page 61: sistema minimo 8088.pdf

Capítulo 15. Análisis de sistemas digitales Página 59

Figura 27. Esquema de la RS-232

Los relojes de transmisión (TXC) y recepción (RXC) están conectados a la salida

del temporizador de la PIO (TOUT), el cual está programado para proporcionar una onda cuadrada de 19.2 KHz., que se utiliza como reloj para la comunicación.

La interrupción que proviene del receptor es más prioritaria que la del

transmisor. Así puede cortar la comunicación cuando sea necesario.

5.13.1- PRÁCTICAS A REALIZAR Sabiendo que se trata de una comunicación asíncrona (figura 28) con un start bit, ocho bits de datos, un bit de paridad y un stop bit comprobar el valor de los códigos XON y XOFF. Hay que poner una base de tiempos más pequeña 1. Señales implicados: TOUT, TXD y RXD 2. Disparar por flanco de bajada de RXD 3. Base de tiempos de 10 ms 4. Preparar la adquisición 5. En el "prompt", escribir RS232

Las señales TxD y RxD están vistas desde el punto de vista de la placa. Es decir, en TxD los datos viajan desde la placa hacía el Analizador.

Observar que realmente el Analizador para la comunicación cuando lo desea. Ejercicio propuesto para que no se pierdan datos.

Reposo Start DO D1 D2 D3 D4 D5 D6 D7 Paridad Stop

Figura28.Formato de una transmisión asíncrona

Page 62: sistema minimo 8088.pdf

Capítulo 15. Análisis de sistemas digitales Página 60

5.14- LOCALIZACIÓN DE ERRORES

Una vez realizado el estudio del funcionamiento de la placa. El alumno deberá provocar y localizar un total de cinco errores.

El error se provocará con la orden ERROR (apartado 7.1.3, pág. 17). El alumno deberá tener en cuenta que cuando provoque el error, el sistema dejará de funcionar. La única manera de restablecer las condiciones iniciales será pulsando el botón de reset.

Los errores se han provocado sobre los elementos más sencillos del sistema. Tales como: monoestables, multiplexores, buffers, etc. Es decir, dispositivos en los que es fácil verificar su funcionamiento. Por ejemplo, en un multiplexor es muy sencillo verificar si unas ciertas entradas producen la salida deseada.

Por el contrario, los dispositivos de la escala alta de integración tales como memorias, CPU, PIC, etc. se necesita someterlos a un examen exhaustivo. Estos dispositivos deben verificarse por separado y conectando unos estímulos determinados en sus entradas de control que nos permitan observar su funcionamiento. En un sistema como el nuestro, nos sería prácticamente imposible saber quien ha puesto un dato incorrecto en el bus de datos. Como orientación de una búsqueda lógica se sugiere: 1.- Tener los esquemas a mano. 2.- Si no funciona ni el teclado ni el display, mirar si funciona el WatchDog. 3.- Ver si van bien los buffers y los decodificadores. 4.- Deducir que chip falla.

5.15 PROGRAMACIÓN EN CÓDIGO MÁQUINA

En este apartado el alumno deberá realizar sus propios programas en código máquina. El programa deberá escribirse utilizando el editor de programas EDIT (apartado 3.2, pág. 19).

A continuación se hace una breve resumen de las instrucciones más sencillas del 8088 y su codificación. Instrucción: CMP AL, val82 2 Indica un valor inmediato de 8 bits.

Page 63: sistema minimo 8088.pdf

Capítulo 15. Análisis de sistemas digitales Página 61

Codificación: 0x3C val8 Descripción: Resta val8 del contenido del registro AL, pero no retorna

resultado. La operación afecta a los flags. Si son iguales, el flag de cero (ZF) se pone a uno.

Flags afectados: ZF Instrucción: DEC AX Codificación: 0x48 Descripción: Decrementa el contenido del registro AX Flags afectados: ZF Instrucción: INC AX Codificación: 0x40 Descripción: Incrementa el contenido del registro AX Flags afectados: ZF Instrucción: JMP desp Codificación: 0xEB desp Descripción: Efectua un salto incondicional. El desplazamiento debe estar

comprendido entre -128 y +127 bytes de esta instrucción, es decir, desp es un valor con signo de 8 bits (complemento a dos, por lo tanto restar el número al valor 256 decimal).

Flags afectados: ninguno Instrucción: JC desp Codificación: 0x72 desp Descripción: Efectúa un salto si se cumple la condición CF = 1. El

desplazamiento debe estar comprendido entre -128 y +127 bytes de esta instrucción.

Flags afectados: ninguno Instrucción: JNC desp Codificación : 0x73 desp Descripción: Efectua un salto si se cumple la condición CF = 0. El

desplazamiento debe estar comprendido entre -128 y +127 bytes de esta instrucción.

Flags afectados: ninguno Instrucción: JZ desp Codificación: 0x74 desp Descripción: Efectua un salto si se cumple la condición ZF = 1. El

desplazamiento debe estar comprendido entre -128 y +127 bytes de esta instrucción.

Page 64: sistema minimo 8088.pdf

Capítulo 15. Análisis de sistemas digitales Página 62

Flags afectados: ninguno Instrucción: JNZ desp Codificación: 0x75 desp Descripción: Efectua un salto si se cumple la condición ZF = 0. El

desplazamiento debe estar comprendido entre -128 y +127 bytes de esta instrucción.

Flags afectados ninguno Instrucción: MOV AL, val8 Codificación: 0xB0 val8 Descripción: Transfiere val8 al registro AL. Flags afectados: ninguno Instrucción: NOP Codificación: 0x90 Descripción: El procesador no hace nada. Pasa a ejecutar la instrucción

siguiente. Flags afectados: ninguno Instrucción: OUT puerto, AL Codificación: 0xE6 puerto Descripción: Transfiere el contenido del registro AL a un puerto de salida.

El puerto es un valor comprendido entre 0 y 256. Los puertos de interés son:

WatchDog, puerto = 0x40 Puerto A de la PIO, puerto = 0x21 Flags afectados: ninguno Instrucción: RET FAR Codificación : 0xCB Descripción: Retorna de un procedimiento, previamente invocado mediante

CALL FAR, utilizando como dirección de retorno la dirección salvada en la pila por CALL.

Flags afectados: ninguno Instrucción: ROL AL, 1 Codificación : 0xD0 0xC0 Descripción: Rotar a la izquierda un bit el contenido del registro AL junto

con el flag de acarreo (CF). Flags afectados: CF Instrucción: ROR AL, 1 Codificación: 0xD0 0xC8

Page 65: sistema minimo 8088.pdf

Capítulo 15. Análisis de sistemas digitales Página 63

Descripción: Rotar a la derecha un bit el contenido del registro AL junto

con el flag de acarreo (CF). Flags afectados: CF

5.15.1- EJEMPLO DE PROGRAMA ; ENSAMBLADOR CODIGO MÁQUINA INICI: INC AX ; 0x40 OUT PIO, AL ; 0xE6 0x21 OUT WDOG, AL ; 0xE6 0x40 JMP INICI ; 0xEB 0xF9

La primera instrucción incrementa el acumulador. Es una instrucción de un sólo byte.

La segunda y la tercera, son un acceso de escritura a periférico. Se codifican mediante dos bytes, el primero es el código de la instrucción y el segundo es el número del puerto.

La cuarta, es un salto relativo a la posición actual. Se codifica mediante dos bytes, el primero es el código de la instrucción y el segundo es el valor del salto en complemento a dos.

5.15.2- EJERCICIOS PROPUESTOS Realizar un programa que al visualizar el puerto A de la PIO aparezcan las

siguientes formas de onda. 1. Onda en forma de diente de sierra orientada a la derecha. Es decir,

realizar un bucle infinito que desplace un bit una posición hacia la derecha cada vez.

2. Onda en forma de diente de sierra orientada a la izquierda. 3. Una onda triangular (primero a la derecha y luego a la izquierda, asi

sucesivamente).

Page 66: sistema minimo 8088.pdf

Capítulo 15. Análisis de sistemas digitales Página 64

Page 67: sistema minimo 8088.pdf

Capítulo 15. Análisis de sistemas digitales Página 65

Page 68: sistema minimo 8088.pdf

Capítulo 15. Análisis de sistemas digitales Página 66

Page 69: sistema minimo 8088.pdf

Capítulo 15. Análisis de sistemas digitales Página 67

Page 70: sistema minimo 8088.pdf

Capítulo 15. Análisis de sistemas digitales Página 68

Page 71: sistema minimo 8088.pdf

Capítulo 15. Análisis de sistemas digitales Página 69