Está en la página 1de 71

Capítulo 15 Análisis de sistemas digitales Indice

15
ANÁLISIS DE SISTEMAS DIGITALES
1
1. TEORIA DE ANALIZADORES LÓGICOS

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
8
2. EL ANALIZADOR LÓGICO HP-1662A

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
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
22
4. EL MICROPROCESADOR 8088

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
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
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.
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.


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).
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).
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.
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.
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
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.
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 OPERACION ES


Salvar y recup erar configu raciones
DISK Form atear d iscos
Copias d iscos
SYSTEM EXTERN AL I/ O Selecionar la interfície d e com unicaciones
Configurar la interfície d e comu nicaciones
UTILITIES Utilid ad es d el sistema
TEST Test d el sistem a
AN ALIZADOR CON FIGURATION N ombre d el analizad or
Tipo d e analizad or
Mod o d e ad qu isición
FORMAT Um bral lógico
AN ALYZER Asignación d e etiquetas
Asignación d e sím bolos
Borrar secu encias d e d isparo
TRIGGER Definición d e térm inos
Definición d e niveles d e secu encia
WAVEFORM Visu alización d e etiquetas
Markers

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


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.
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).
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
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.
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.)
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.
Capítulo 15. Análisis de sistemas digitales página 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.

15
Capítulo 15. Análisis de sistemas digitales página 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.

16
Capítulo 15. Análisis de sistemas digitales página 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.

17
Capítulo 15. Análisis de sistemas digitales página 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.

18
Capítulo 15. Análisis de sistemas digitales página 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.

19
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.

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

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.
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.
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 Figura 7. Crear una dirección


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.
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


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.
2
Entrada/Salida
3
iAPX88 hace referencia a un microsistema completo basado en la CPU 8088
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.
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.

!SSO DT/!R IO/!M FUNCION


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

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.
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.
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.
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.

Figura 9. Ejecución secuencial de un programa

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).
Capítulo 15. Análisis de sistemas digitales Página 31

Figura 10. Unidades funcionales de la CPU

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.

Figura 11. La arquitectura Pipeline

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
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.
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


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.
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.

1
A partir de este momento, siempre que hagamos referencia al prompt, significará que es una orden para la unidad
de pruebas.
Capítulo 15. Análisis de sistemas digitales Página 37

Analizador Unidad de pruebas Analizador Unidad de pruebas


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

Analizador Unidad de pruebas Analizador Unidad de pruebas


POD # 3 ETIQUETA CHIP PIN POD # 4 ETIQUETA CHIP PIN
CLOCK L TOUT U9.8155 6 CLOCK M CLOCK U0.8088 19
DATA 15 A15 U0.8088 39 DATA 15 Q_555 U12.NE555 3
DATA 14 AX14 U4.74LS373 16 DATA 14 !DEN U0.8088 26
DATA 13 AX13 U4.74LS373 15 DATA 13 Q_121 U11.74121 6
DATA 12 AX12 U4.74LS373 12 DATA 12 ****
DATA 11 AX11 U4.74LS373 9 DATA 11 !SS0 U0.8088 34
DATA 10 AX10 U4.74LS373 6 DATA 10 !INTA U0.8088 24
DATA 9 AX9 U4.74LS373 5 DATA 9 INTR U0.8088 18
DATA 8 AX8 U4.74LS373 2 DATA 8 DT/!R U0.8088 27
DATA 7 AX7 U3.74LS363 19 DATA 7 IO/!M U0.8088 28
DATA 6 AX6 U3.74LS363 16 DATA 6 !WR U0.8088 29
DATA 5 AX5 U3.74LS363 15 DATA 5 !RD U0.8088 32
DATA 4 AX4 U3.74LS363 12 DATA 4 ALE U0.8088 25
DATA 3 AX3 U3.74LS363 9 DATA 3 AX19 U3.74LS373 19
DATA 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
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 !KE YB KBCLK TOUT Q_121 P IO_A[0:7]
A15 !SSO IRQ9 !E P ROM !P IO KBDATA TXD Q_555
AS19 ALE IRQ10 !LCD RXD
AX[0:14] IO/!M !WDOG
AX19 !RD !RS232
D[0:7] !WR !P IC
DT/!R
!DE N
INTR
!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.


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.
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.
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.
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).
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.
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.
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.
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.
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.
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.
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.


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
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.
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.
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.
Figura 22. Esquema del PIC

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.
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.
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.
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
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).
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.
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


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.
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.
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
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).
Capítulo 15. Análisis de sistemas digitales Página 64
Capítulo 15. Análisis de sistemas digitales Página 65
Capítulo 15. Análisis de sistemas digitales Página 66
Capítulo 15. Análisis de sistemas digitales Página 67
Capítulo 15. Análisis de sistemas digitales Página 68
Capítulo 15. Análisis de sistemas digitales Página 69

También podría gustarte