Você está na página 1de 71

Captulo 15 Anlisis de sistemas digitales

Indice

15
ANLISIS DE SISTEMAS DIGITALES
1

1. TEORIA DE ANALIZADORES LGICOS


1.1. Introduccin 1.2. Osciloscopios o analizadores lgicos? 1.3. El Analizador lgico 1.4. El Analizador de estados 1.5. El disparo de los analizadores lgicos 1 2 3 6 6 8

2.

EL ANALIZADOR LGICO HP-1662A


8 8 9 9 10 10 11 11 11 11 12 13 13 13

2.1. General 2.2. El men configuration 2.3. Etiquetas y smbolos 2.4. Cambiar de men 2.5. El men format 2.6. Crear la etiqueta del reloj del sistema 2.7. Crear la etiqueta del bus de datos 2.8. El men waveform 2.9. Borrar la lista de etiquetas 2.10. Aadir etiquetas 2.11. Los markers 2.12. Secuencia de disparo o trigger 2.13. Men trigger 2.14. Borrar una secuencia de disparo

Captulo 15 Anlisis de sistemas digitales

Indice

2.15. Definir una secuencia de disparo

14

3. LA UNIDAD DE PRUEBAS
3.1. El interprete de comandos 3.2 El editor de programas

16
15 18 22

4.

EL MICROPROCESADOR 8088
21 22 36 23 23 23 24 29 30 31

4.1. Descripcin 4.2. Los registros de la eu del 8088 4.3. Los registros de la biu del 8088 4.4. Unidad aritmtica/lgica. alu 4.5. Buses 4.6. MMU 4.7. El patillaje de la cpu intel 8088 4.8. Timings de la CPU 8088 4.9. Ciclos de reposo 4.10. La arquitectura pipeline

5. REALIZACIN DE LA PRCTICA
5.1. Objectivos de la prctica 5.2. Descripcin del sistema basado en la cpu 8088 5.3. Configuracin del analizador 5.4. Lneas generales a seguir 5.5. El generador de reloj y el watchdog 5.6. La CPU 5.7. La memoria 5.8. Acceso a perifrico 5.9. El teclado 5.11. El display 5.12. La PIO 5.13. Estudio de una comunicacin RS-232

35
34 34 35 38 40 44 59 51 52 55 59 59

Captulo 15 Anlisis de sistemas digitales


5.14. Localizacin de errores 5.15. Programacin en cdigo mquina 5.16 El Desensamblador Esquemas

Indice
60 61 65 68

Captulo 15. Anlisis de sistemas digitales

Pgina 1

1- TEORA DE ANALIZADORES LGICOS


1.1- INTRODUCCIN
Los microprocesadores han revolucionado las lneas de produccin. Los productos son ms elegantes, rpidos, amigables y competitivos. Pero son ms difciles de disear, 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 anlisis de sistemas digitales: los analizadores lgicos y los analizadores de firmas. A su vez, los analizadores lgicos los podemos dividir en; analizadores de tiempos y los analizadores de estados. Un analizador lgico, podra considerarse como un osciloscopio de 64 canales o ms, el cual slo es capaz de discernir si una seal est por encima o por debajo de un cierto nivel de tensin umbral. El analizador lgico, se utiliza bsicamente para determinar y localizar los fallos del hardware a nivel de integrados as como el orden y tiempos de las seales Tambin se utiliza en el Software por ejemplo en la depuracin de programas. Con una buena secuencia de disparo, se puede empezar la adquisicin 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 tcnico puede encontrar el punto del circuito defectuoso. Para ello, es necesario disear los sistemas pensando en las tcnicas de anlisis 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 funcin del tiempo, en un nmero hexadecimal de cuatro caracteres. Gracias a los algoritmos de compresin, de que dispone el instrumento, podemos asegurar que a una secuencia digital, nicamente le corresponde un cdigo hexadecimal. El anlisis de firmas, est orientado nica y exclusivamente, a la deteccin y localizacin de errores en los sistemas digitales. Para ello, es necesario saber las firmas en cada punto de prueba cuando el sistema funciona correctamente.

Captulo 15. Anlisis de sistemas digitales

Pgina 2

1.2- OSCILOSCOPIO O ANALIZADOR LGICO ?


Cuando hay que analizar un sistema digital, mucha gente elige un osciloscopio, porque le resulta ms familiar; hay uno en casi todos los laboratorios y son relativamente fciles de utilizar. Es el instrumento electrnico de propsito general por excelencia. Pero un analizador lgico es el ms adecuado en el anlisis de sistemas digitales. Los analizadores lgicos 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 lgico slo nos indica si el nivel de la seal est por debajo o por encima de unos niveles ( ceros o unos), puede capturar y visualizar ocho o ms seales a la vez, cosa que los osciloscopios no pueden hacer. Un analizador lgico reacciona igual que un circuito lgico; cuando una seal supere o no un cierto umbral de tensin, reconocer esta seal como un nivel alto o bajo respectivamente. El sistema de disparo es mucho ms potente y variado. Los analizadores lgicos, son especialmente tiles cuando visualizamos la "relacin" de tiempos o datos en un bus, como por ejemplo los buses de datos, direcciones o seales de control de un microprocesador. Puede descodificar la informacin de los buses del microprocesador y mostrarlas en un formato ms comprensible. 1.2.1- CUANDO UTILIZAR UN OSCILOSCOPIO Generalmente, un osciloscopio es el instrumento ms adecuado cuando se necesita una buena resolucin vertical de tensin, o bien, cuando sea necesaria una precisin elevada en el clculo de intervalos de tiempo. 1.2.2- CUANDO UTILIZAR UN ANALIZADOR LGICO - Cuando sea necesario visualizar muchas seales a la vez. - Cuando se desee interpretar las seales de un sistema de la misma forma que lo hace el hardware. - Cuando se necesite disparar para un patrn o conjunto de niveles altos y bajos.

Captulo 15. Anlisis de sistemas digitales

Pgina 3

1.3- EL ANALIZADOR LGICO


1.3.1- EL ANALIZADOR DE TIEMPOS
El analizador de tiempos (Timing Analizer) es la parte del analizador ms parecida a un osciloscopio. Un analizador de tiempos, muestra por pantalla la informacin de la misma forma que lo hace un osciloscopio, tiempo en el eje horizontal y amplitud en el vertical. En ambos instrumentos, la seal est en funcin del tiempo. Un analizador de tiempos dispone de un reloj interno que le marca la frecuencia de muestreo. Muestrea el dispositivo de forma asncrona. En el muestreo podemos considerar tres aspectos: a. - Velocidad de muestreo y resolucin Un analizador de tiempos trabaja muestreando la seal de entrada para determinar si se halla por encima o por debajo del umbral de tensin. Con estas muestras, se crea una lista de unos y ceros que representan la seal de entrada. Esta lista se carga en memoria y se utiliza para reconstruir la forma de un slo bit (figura 1). Un analizador de tiempos, es igual que un osciloscopio de memoria, pero con slo un bit de resolucin vertical, es decir en cada muestra slo pueden existir dos estados; uno y cero.

Figura 1. Reconstruccin de una seal 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 paramtrico. Si deseamos ver la forma o el tiempo de subida de una seal, estamos utilizando el instrumento equivocado. No obstante, si se desea verificar los tiempos relativos entre flancos vindolos a la vez, entonces es el instrumento correcto. Cuando un analizador de tiempos muestrea una seal 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 seal de entrada ha cambiado en algn momento entre las dos muestras. Pero no sabe cuando tuvo lugar el cambio. El mayor error para esta ambigedad, es un periodo de muestreo (figura 2).

Captulo 15. Anlisis de sistemas digitales

Pgina 4

Figura 2. Error mximo cometido

Recordemos que cada muestra utiliza una posicin de memoria. As pues, una mayor resolucin (mayor velocidad de muestreo), implica una menor ventana de observacin, para una misma capacidad de memoria; por lo tanto se requiere un compromiso entre resolucin y tiempo total de adquisicin .
b. - Muestreo transicional

Cuando tenemos una seal de entrada a rfagas, por ejemplo la seal de la figura 3, nos vemos obligados a ajustar el perodo de muestreo (4 ns en el ejemplo) para conseguir una resolucin adecuada, para capturar los pulsos del principio. Esto significa, que un analizador con 4 K muestras de memoria, terminar la adquisicin al cabo de 16.4 s, por lo tanto el siguiente tren de pulsos no ser capturado.

Figura 3. Anlisis convencional

Observemos que, pasados los primeros 44 ns, hemos muestreado y adquirido datos durante un largo tiempo; en el cual no haba actividad. Esto ha agotado la memoria del analizador sin proporcionar informacin adicional. Lo que en realidad necesitamos conocer es cundo suceden las transiciones y si son positivas o negativas. Para conseguirlo, podramos utilizar un "detector de transiciones" a la entrada del analizador de tiempos junto con un contador. El analizador de tiempos, ahora capturar slo aquellas muestras precedidas de una transicin, junto con el tiempo transcurrido desde la ultima transicin. De esta forma, utilizamos slo dos posiciones de memoria por transicin y ninguna cuando no hay actividad a la entrada. Esta tcnica se llama Anlisis Transicional (figura 4).

Captulo 15. Anlisis de sistemas digitales

Pgina 5

Podemos hablar de "capacidad efectiva de memoria", la cual es igual al tiempo total empleado para capturar los datos, dividido por el perodo de muestreo. En el ejemplo de la fig. 3, tenamos una ventana de observacin total de 50,088 us, que dividido entre 4 ns, nos da una capacidad efectiva de memoria de 15,5 K muestras.

Figura 4. Anlisis transicional c. - Captura de glitches Un glitch se define como cualquier transicin que supere el umbral de tensin durante un tiempo inferior al perodo de muestreo (figura 5).

Figura 5. Deteccin de glitches Uno de los principales problemas en un sistema digital son los glitches. Los glitches tienen el antiptico hbito de aparecer en los momentos ms inoportunos y de provocar los ms desastrosos resultados. Cmo podemos capturar un glitch que aparece una vez cada 36 horas y nos vuelve loco el sistema ? Los analizadores lgicos, tienen un sistema de captura de glitches y unas posibilidades de disparo que hacen ms posible localizar los problemas provocados por los glitches.. Un glitch puede ser causado por: un acoplamiento capacitivo entre pistas, el rizado de la alimentacin, elementos que piden grandes picos de corriente, retardos entre seales, etc. El analizador de tiempos despus de muestrear la seal de entrada, puede seguir el rastro de cualquier transicin que suceda entre dos muestras, por lo tanto podr reconocer fcilmente un glitch.

Captulo 15. Anlisis de sistemas digitales

Pgina 6

Durante la visualizacin 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.

Captulo 15. Anlisis de sistemas digitales

Pgina 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 cundo 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 sincrnicamente el sistema, cogiendo la frecuencia de muestreo del propio sistema. Si queremos entender cundo hemos de utilizar un analizador de estados, necesitamos saber qu es un estado. En un circuito lgico, un estado es una muestra tomada de un bus o lnea cuando los datos son vlidos. Por ejemplo, en un biestable. El dato en la entrada D no ser vlido 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 seal 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 lneas 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 LGICOS


Otro trmino que resulta familiar para todo aquel que ha utilizado un osciloscopio es el de trigger o disparo. Pero en los analizadores lgicos se llama secuencia de disparo. Una secuencia de disparo est formada por un conjunto de niveles y trminos (Ver apartado 2-13). A diferencia de un osciloscopio que empieza la adquisicin despus del disparo, un analizador lgico continuamente adquiere datos, y para la adquisicin 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 posicin 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 pequea y viceversa. Si hacemos la adquisicin a una velocidad demasiado pequea (base de tiempos grande) puede ser que las muestras tengan una separacin tal que perdamos informacin. Si ponemos una velocidad de adquisicin demasiado

Captulo 15. Anlisis de sistemas digitales

Pgina 8

grande (Base pequea) la adquisicin ser correcta pero la ventana que observamos ser pequea y tenemos poca informacin. Lo ms correcto ser hacer una primera adquisicin con una velocidad grande y luego hacer nuevas adquisiciones a menor velocidad para tener la informacin necesaria sin perder detalles. En el botn "control de adquisicin" tenemos dos formas de hacerla : automtica y manual. En la adquisicin automtica ,normalmente el "trigger" se sita en el centro de la memoria. En el modo manual podemos elegir la posicin y la velocidad de muestreo. En la "visualizacin" el Delay nos indica la posicin del centro de la pantalla respecto al trigger. Por tanto el Delay slo 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 PATRN


La mayora de los analizadores pueden disparar por patrones, es decir un conjunto de niveles altos o bajos de las seales de entrada. Por ejemplo, podemos indicarle al analizador lgico, que dispare en el instante que en el bus de datos tenga el valor 34 hexadecimal. El disparo por patrn puede utilizarse para disparar cualquier tipo de analizador lgico. Siendo el nico mtodo posible para disparar un " analizador de estados".

1.5.2- EL DISPARO POR FLANCO


Cundo ajustamos el nivel de disparo de un osciloscopio, podemos pensar que estamos ajustando el nivel de un comparador que dir al osciloscopio cundo la seal de entrada ha superado el nivel de referencia. Un analizador de tiempos funciona bsicamente igual que un osciloscopio cundo dispara por flanco, excepto que el nivel de disparo, es el umbral lgico. Pero, por qu aadir el disparo por flanco en un analizador de tiempos ? Pues, porque mientras muchos dispositivos lgicos son activos por nivel, otras seales 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 slo puede utilizarse para disparar un "analizador de tiempos".

Nota: Con mucha frecuencia se utiliza un disparo compuesto por flanco y por patrn.

Captulo 15 Anlisis de sistemas digitales

Pgina 8

2- EL ANALIZADOR LGICO HP-1672G


2.1- GENERAL
El sistema de mens del Analizador HP 1672G est separado en varios grupos. El grupo Analizer, prepara la adquisicin 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 prctica slo utilizaremos el primero. El Instrumento dispone de 4 pods o sondas. Cada una tiene 16 canales de datos ms 1 de reloj. Las sondas estn 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 CONFIGURACIN


Hay que configurar el analizador cada vez que se enciende. Ver apartado 5.3 pg 35 En la prctica 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 EXTERN AL I/ O Selecionar la interfcie d e com unicaciones Configurar la interfcie d e comu nicaciones UTILITIES Utilid ad es d el sistema TEST Test d el sistem a CON FIGURATION N ombre d el analizad or Tipo d e analizad or Mod o d e ad qu isicin FORMAT Um bral lgico Asignacin d e etiquetas Asignacin d e sm bolos Borrar secu encias d e d isparo TRIGGER Definicin d e trm inos Definicin d e niveles d e secu encia WAVEFORM Visu alizacin d e etiquetas Markers

SYSTEM

AN ALIZADOR

AN ALYZER

Tabla 1. Mens del analizador lgico HP-1672G

Captulo 15 Anlisis de sistemas digitales

Pgina 9

Para dejar inactivo el segundo analizador, pulsar sobre el campo Type, a continuacin pulsar sobre la opcin Off, dentro del campo de configuracin. Para darle un nombre el primer analizador primero hay que borrar el que tiene, para ello pulsar sobre el campo Name, a continuacin 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 continuacin pulsar sobre la opcin 8088, que est encima. El campo "Type" del primer analizador debe estar en "Timing" si se desea realizar un anlisis de tiempos ; y en "State" si se desea realizar un anlisis de estados. De momento dejarlo en "Timing." Junto al nombre de las sondas, hay unos smbolos que indican el estado de las seales que tienen conectadas. El smbolo indica que tiene conectada una seal variante en el tiempo. El smbolo indica que tiene un nivel alto. El smbolo _ indica que tiene un nivel bajo.

2.3- ETIQUETAS Y SMBOLOS


Una "etiqueta" sirve para asignar un nombre a una "seal" del circuito o a un conjunto de seales. Por ejemplo, si fsicamente hemos conectado el reloj del sistema al reloj del pod 4, en el Analizador indicaremos, a travs de una etiqueta, que el Clock M de la sonda A4 se llama CLOCK. Una etiqueta tambin puede asignarse a un conjunto de seales. Es decir, podemos asignar la etiqueta "Bus" a los ocho bits de menor peso del bus de datos. Smbolo :Cuando una etiqueta est formada por varias seales se llama "smbolo" a cada combinacin posible de dichas seales As podemos asignar la etiqueta "ciclo" al conjunto de seales :! SSO, IO/!M y DT/!R. Por otra parte a cada una de las combinaciones posibles la llamaremos "smbolo" . Ej. si las tres son cero tendremos el smbolo FETCH . ( Ver tabla pg. 28 ) La asignacin de etiquetas y smbolos 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 mens del grupo. Pulsar sobre el men deseado, en nuestro caso Format 8088.

Captulo 15 Anlisis de sistemas digitales

Pgina 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 anlisis de tiempos. Pulsar sobre l si se desea modificar. De momento dejarla como est. El campo TTL define el umbral lgico. La prctica funciona con niveles TTL. Dejarlo como est. Los campos Pods y Labels nos permiten seleccionar los Pods y Labels que est sobre el campo Pods, el interesen con el mando giratorio. Si el icono desplazamiento con el botn giratorio del Analizador ser horizontal a travs de las sondas del Analizador. Si el a travs de las etiquetas. icono est sobre Labels, el desplazamiento ser vertical

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 lgica 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 vnculo entre la etiqueta y la seal 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 opcin 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).

Captulo 15 Anlisis de sistemas digitales

Pgina 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 seales 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 AADIR ETIQUETAS


Hay dos tipos de etiquetas: Las que representan una sola seal 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 ms de una seal (bus), podemos elegir visualizar todas las seales o slo algunas determinadas. As: Bit n. Dnde n es un nmero. En este caso slo visualizamos la seal n del bus. Por ejemplo, Bit 3 de DATOS significa DATO 3. Las etiquetas formadas por una sola seal, por ejemplo CLOCK, siempre debern insertarse como Bit 0. Sequential: Inserta la totalidad de las seales del bus de forma secuencial. Bus. Inserta un bus, de forma que slo se observa el valor del bus en cada instante y no su evolucin temporal. Ejemplo: Si queremos visualizar las seales que representan las etiquetas Clock y Datos seguiremos la secuencia siguiente: 1. Pulsar dos veces sobre la lista (vaca) de etiquetas 2. Pulsar Insert 3. Pulsar CLOCK. Pulsar Bit 0 4. Pulsar sobre la lista de etiquetas

Captulo 15 Anlisis de sistemas digitales


5. Pulsar Insert 6. Pulsar DATOS. Pulsar Bus 7. Poner la base de tiempos a 200 ns 8. Pulsar RUN.

Pgina 12

Observar que la adquisicin 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 observacin actual respecto a la totalidad de los datos adquiridos. Observar que encima de la seal de CLOCK existen unas rayitas que indican las divisiones del tiempo. Cada separacin equivale al tiempo fijado en la base de tiempos. En el centro de la pantalla hay una lnea ms gruesa , es la referencia. Pulsando sobre Delay o sobre la base de tiempos y girando el botn podemos ver sus efectos.

2.11- LOS MARKERS


A modo de ejemplo slo se explicarn 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 botn hasta que el Marker "X" est en la posicin deseada 5. Pulsar sobre Trigger to "O" 6. Girar el botn hasta que el Marker "O" est en la posicin deseada 7. Leer el valor de la diferencia en el campo "X" to "O"

una "X" o una "O" para su mejor identificacin.

NOTA En la parte inferior de la pantalla, debajo de la lnea de los markers, aparece 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 debern cumplirse para que el Analizador empiece o termine la adquisicin. Bsicamente el disparo podr producirse por un flanco, por un patrn o una combinacin de ambos.

Captulo 15 Anlisis de sistemas digitales

Pgina 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 ms niveles. Definidos en la mitad superior de la pantalla con nmeros en un recuadro. Cada "nivel" est formado por una combinacin de trminos. 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 "trmino" es una condicin Puede ser un flanco, un patrn, un margen de valores o un temporizador. Mitad inferior de la pantalla. La "secuencia de disparo" ms sencilla estar formada por un slo nivel que contenga un nico trmino. NOTA: Cuando se quiera modificar las condiciones de disparo hay que parar e iniciar de nuevo la adquisicin. Esto es debido a que cuando est activa la adquisicin 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 trminos 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 TRMINO 1. Pulsar sobre el trmino. Por ejemplo a. 2. Pulsar Clear (=x). (X significa un valor lgico indiferente.)

Captulo 15 Anlisis de sistemas digitales

Pgina 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 trmino 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 nmero 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 slo nivel y un nico trmino. Vamos a definir ahora una secuencia de disparo de un nivel compuesto por una combinacin de dos trminos. 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 trminos disponible 12. Elegir Combination 13. Pulsar a. Poner a On 14. Pulsar Edge1. Poner a On 15. Dnde 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 realizacin de la prctica, el alumno deber traer un disco vaco, si quiere grabar las configuraciones del analizador, para no perder el tiempo realizndolas cada vez.

Captulo 15. Anlisis de sistemas digitales

pgina 15

3- LA UNIDAD DE PRUEBAS
3.1- EL "INTERPRETE" DE COMANDOS
El dilogo entre el sistema y el usuario se realiza a travs del interprete de comandos. Al disponer slo de dos lneas en el display, el dilogo queda un poco limitado. Por ello se ha optado por la tcnica de pregunta-respuesta. Limpiando la pantalla cuando finaliza una orden. Siempre que el sistema d un mensaje de error o de presentacin, 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 aplicacin que se est ejecutando. As: El smbolo "", indica el prompt del interprete de comandos. Significa que el sistema est preparado para recibir un nuevo comando. El smbolo "?", significa que el sistema est esperando una entrada de datos por teclado. El dato puede ser un nmero, un nombre de fichero o el tipo de error que se desea generar, dependiendo de la aplicacin que se est ejecutando. El smbolo ":", significa que el editor de programas est esperando la siguiente orden a ejecutar. Por ejemplo aadir una instruccin de programa, borrar una instruccin, 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 cdigo mquina. Al ser una aplicacin con sus propias ordenes, se explicar su funcionamiento ms adelante.

15

Captulo 15. Anlisis de sistemas digitales

pgina 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 botn de reset del Aparato. Al escribir la orden ERROR, la pantalla se borrar para dejar paso al mensaje "Numero de error". En la lnea inferior aparecer el prompt conforme el programa est esperando un nmero entre 1 y 5. Cualquier otro valor provocar un mensaje de error. El nmero de error slo puede escribirse en decimal.

3.1.4- LA ORDEN " ETIQ " Esta orden configura el analizador para poder crear las 35 etiquetas, y realizar la prctica. 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 ms adelante. Si se desea ejecutar un programa cclico, debe tenerse la precaucin 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 precaucin de aadir el cdigo de retorno de funcin 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 enva un carcter por el puerto A de la PIO. De esta manera el alumno puede realizar el estudio completo de un acceso a perifrico. Al escribir la orden "PIO", la pantalla se borrar para dejar paso al mensaje "Dona'm el valor". En la lnea inferior aparecer el "prompt" conforme el programa est esperando un nmero 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 aadir el prefijo 0x si se trata de uncdigo hexadecimal. Por ejemplo, introducir el nmero 35, el cdigo 0x23 producir el mismo resultado a la salida de la PIO.

16

Captulo 15. Anlisis de sistemas digitales


3.1.7- LA ORDEN " PCX "

pgina 17

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 travs de los mens internos del Analizador. Al escribir el comando PCX, la pantalla se borrar para dejar paso al mensaje "Nom del fitxer". En la lnea inferior aparecer el prompt conforme el programa est esperando el nombre del fichero sin extensin. 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 acte 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 enva un conjunto de mensajes al Analizador para que el alumno pueda estudiar una comunicacin serie y el protocolo XON/XOFF. Hay que tener en cuenta que ste es el nico comando que puede utilizarse para estudiar una comunicacin serie. Cualquier otro comando, que configure el Analizador o que capture pantallas, no sirve, ya que aborta la adquisicin 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 seales que se desea visualizar en el men Waveform. En la lnea 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 irn insertndose una detrs de la otra. Dentro de esta orden existen dos subrdenes: ESBORRAR. Borra todas las etiquetas que se estn visualizando. SORTIR. Sale de la orden Wave.

17

Captulo 15. Anlisis de sistemas digitales

pgina 18

3.2- EL " EDITOR " DE PROGRAMAS


Este editor de programas permite programar en cdigo mquina. El programa se escribe byte a byte directamente en la memoria del sistema. Los bytes de cdigo pueden escribirse en decimal o hexadecimal de forma indiferente. Cuando se entra en el editor de programas, en la memoria an estar el antiguo programa que se haya escrito. Para borrarlo habr que utilizarse la orden N. Dentro del editor, el "prompt" ser el smbolo ":", esto significa que est esperando una orden. Cuando el prompt sea el smbolo "?", significar que est esperando la entrada de datos. Despus 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. Aadir cdigo a la memoria. - B nnn. Borrar una posicin de memoria. - E nnn. Modificar una posicin de memoria. - I nnn. Insertar una posicin de memoria. - L. Listar el programa. - N. Borrar el programa. - S. Salir del editor de programas

3.2.1- " AADIR CDIGO " A LA MEMORIA A. Aadir. Aade bytes de cdigo en memoria. En la lnea superior de la pantalla aparecer el mensaje "Posicio: nnn", donde nnn es el nmero de la posicin actual. En la lnea inferior aparecer el smbolo "?" a la espera que se introduzca el byte de cdigo. A medida que se vayan introduciendo bytes de cdigo, la posicin ir incrementndose. Para finalizar la introduccin, pulsar la tecla de retorno sin ningn cdigo.

3.2.2- " BORRAR " UNA POSICIN DE MEMORIA B nnn. Borrar. Permite eliminar la posicin nnn. En la lnea superior de la pantalla aparecer el mensaje "P:nnn -> 0xNN", donde nnn es el nmero de la posicin que se desea borrar y 0xNN es el valor que actualmente hay escrito. En la lnea inferior aparecer el mensaje "Borrar S/N ?". Si se pulsa la letra S la posicin de memoria ser eliminada.

18

Captulo 15. Anlisis de sistemas digitales


3.2.3- " MODIFICAR " UNA POSICIN DE MEMORIA

pgina 19

E nnn. Editar. Permite modificar el valor de la posicin nnn. En la lnea superior de la pantalla aparecer el mensaje "P:nnn -> 0xNN", donde nnn es el nmero de la posicin que se desea modificar y 0xNN es el valor que actualmente hay escrito. En la lnea inferior aparecer el smbolo "?" a la espera que se introduzca el byte de cdigo. Si se deja en blanco, no se realizar ninguna modificacin.

3.2.4- " INSERTAR " UNA POSICIN DE MEMORIA I nnn. Insertar. Permite insertar un byte de cdigo entre la posicin nnn-1 y nnn. En la lnea superior de la pantalla aparecer el mensaje "Posicio: nnn", donde nnn es el nmero de la posicin actual. En la lnea inferior aparecer el smbolo "?" a la espera que se introduzca el byte de cdigo.

3.2.5- " LISTAR " EL PROGRAMA L. Listado. Visualiza por pantalla todo el programa escrito en la memoria. Debido al tamao de la pantalla, el listado saldr de dos bytes en dos bytes. Para pasar de pantalla pulsar una tecla. En las dos lneas de la pantalla aparecer el siguiente mensaje "P:nnn -> 0xNN", donde nnn es el nmero de la posicin 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

Captulo 15. Anlisis de sistemas digitales

Pgina 21

4- EL MICROPROPROCESADOR 8088
4.1- DESCRIPCIN
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 misin de realizar el ciclo de fetch, o sea, buscar en la memoria la siguiente instruccin y cargarla en la cola y comunicar la CPU con el exterior. Unidad de Ejecucin (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 instruccin, ya tiene preparada la siguiente.

Captulo 15. Anlisis de sistemas digitales

Pgina 22

El 8088 tiene una cola de 4 bytes, donde se almacenan las instrucciones pendientes de ejecucin. Con este sistema el 8088 reduce el tiempo de carga y ejecucin de una instruccin. NOTA: El nico problema que presenta este mtodo viene cuando ha de ejecutarse una instruccin de salto o ruptura de secuencia. En estos casos las instrucciones que haba almacenadas en la cola no son correctas, y hay que cargar de nuevo las instrucciones desde la nueva posicin.

En la unidad de interfcie del bus tenemos (ver figura 6): - Registros de segmento. - Cola de instrucciones. - Puntero de instruccin - MMU. En la unidad de ejecucin tenemos: - Registros de datos; registros de puntero e ndice y registros de control (todos de 16 bits). - Unidad Aritmtica/Lgica (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, estn 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, construccin 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 instruccin Registro de instruccin. Es el registro que contiene la instruccin completa. La BIU va cargando los diferentes bytes de la instruccin en este registro. Su longitud es de 4 bytes, igual que la instruccin ms larga.

Captulo 15. Anlisis de sistemas digitales

Pgina 23

4.3- LOS REGISTROS DE LA BIU DEL 8088


El puntero de instruccin. Se llama IP. Contiene el offset de la direccin de la siguiente instruccin 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 direccin de los segmentos de cdigo (CS), datos (DS), stack (SS) y extra (ES).

4.4- UNIDAD ARITMTICA/LGICA. (ALU)


La ALU, es capaz de realizar operaciones de suma, resta, multiplicacin y divisin. Adems de operaciones lgicas tales como: and, or, desplazamiento, rotacin, 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 funcin del estado de la seal ALE, sern datos o direcciones.

4.6- MMU
Esta es otra aportacin 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 cdigos. A estos bloques, se les llama "segmentos" y tienen un tamao de 64 Kbytes. Todos los accesos a memoria, son relativos (offset) a una direccin de base (segmento). La direccin total se forma sumndole un offset desplazado cuatro bits a un segmento. Cuando el 8088 necesita acceder a memoria, el Figura 7. Crear una direccin procedimiento es el siguiente: La BIU elige uno de los registros segmento y se le aade el valor de la direccin elegida. Por ejemplo en un ciclo de lectura de instruccin o fetch, el registro elegido es el CS y la direccin lgica 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.

Captulo 15. Anlisis de sistemas digitales

Pgina 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 funcin: 1. Direcciones 2. Datos 3. Control y estado 4. Temporizacin 5. Alimentacin y masa El nmero de patas para cada grupo varia. El grupo de temporizacin tiene una sola seal que es el CLOCK, mientras que otros, como por ejemplo los grupos de direcciones o datos, utilizan bastantes ms y adems multiplexadas en el tiempo. A continuacin haremos una descripcin 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 estn 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 seales necesarias con slo un encapsulado de 40 patas. AD0-AD7. Address / Data. Las seales AD0 hasta AD7 estn multiplexadas en el tiempo, para de esta forma poder proporcionar direcciones o datos (ver figura 8). Al principio de cada "ciclo mquina", los 8 bits de menor peso del bus de direcciones aparecen en estas patas. Ms tarde en el mismo ciclo mquina, se convertirn 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

Captulo 15. Anlisis de sistemas digitales

Pgina 25

A8-A15. Address. Estas seales contienen la informacin correspondiente a los siguientes 8 bits del bus de direcciones. Estas seales no estn multiplexadas en el tiempo, es decir que la informacin se mantiene vlida durante todo el ciclo mquina. AS16-AS19. Address / Status. Las seales A16 hasta A19 estn multiplexadas en el tiempo. Al principio de cada ciclo mquina, pasan a ser los cuatro bits de mayor peso del bus de direcciones. En la segunda parte del ciclo mquina, estas cuatro seales proporcionan informacin sobre el estado de la CPU. Cuando se han fijado las direcciones, en estas patas aparecen las seales S3 y S4. Estas dos seales pueden descodificarse para extraer la informacin correspondiente al segmento de memoria a que est accediendo el 8088 durante el ciclo mquina actual. La seal de estado S5 informa del estado del flag de permisin de interrupcin. S6 siempre se mantiene a nivel bajo. Estos bits de estado, no son necesarios en la mayora de sistemas, pero pueden ser utilizados para hacer diagnsticos 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 interrupcin, en las cuatro direcciones de mayor peso, la informacin referente a las direcciones, tendr un valor indeterminado, pero la informacin de estado ser vlida.

4.7.2- CONTROL Y ESTADO


Las seales de "control y estado" indican el tipo de ciclo mquina que est realizando la CPU y adems sirven para controlar la lgica externa. Son las siguientes: !RD1. Read. La seal de !RD indica que la CPU est leyendo datos de la memoria o perifrico de E/S2. !WR. Write. La seal de !WR indica que la CPU est escribiendo datos a la memoria o perifrico de E/S. ALE. Address Latch Enable. La seal ALE es una salida que se utiliza para fijar el bus de direcciones en un sistema iAPX883. Esta seal normalmente se conecta a la entrada " enable" (G) de un 74LS373 (ver fig. 15).

1 2

El smbolo ! indica negacin, o que es activa por nivel bajo. Entrada/Salida 3 iAPX88 hace referencia a un microsistema completo basado en la CPU 8088

Captulo 15. Anlisis de sistemas digitales

Pgina 26

El flanco de bajada de ALE fija el bus de direcciones, hacindolas vlidas durante el resto del ciclo mquina. IO/!M. In/Out / Memory. Esta salida indica si el actual ciclo mquina est direccionando a un perifrico de E/S a la memoria (ALTO= E/S, BAJO = MEMORIA). Esta seal es valida durante todo el ciclo mquina. 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 seal de RESET, provocamos que el procesador finalice la instruccin que estaba ejecutando y los buses quedan en estado de alta impedancia. Cuando la seal de RESET vuelve a ser cero, el 8088 empezar a ejecutar desde la posicin 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 ejecucin 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 mnimo si vale uno y modo mximo si vale cero. El modo de trabajo del microprocesador indica el tamao del sistema que controla. Influye en el fan-out de los buses y las seales de control cambian de nombre y funcin para poder ser conectadas directamente al controlador de bus 8288. Las seales de control explicadas hasta ahora, son suficientes para controlar un pequeo 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 seales de control. DT/!R. Data Transmit / Receive. La seal DT/!R es una salida, que permite controlar la direccin del bus de datos cuando pasa a travs 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 seal !DEN permite el paso de los datos a travs del buffer bidireccional. Esto evita colisiones en los buses mientras el 8088 pone las direcciones en el bus. INTR. Interrupt Request. La seal INTR, informa al 8088 que pare lo que est haciendo y que sirva la interrupcin solicitada. El 8088 muestrea esta seal durante el ltimo perodo de reloj de cada instruccin.

Captulo 15. Anlisis de sistemas digitales

Pgina 27

Cuando la CPU detecta que INTR vale uno, el 8088 salta a una RSI (rutina de servicio de interrupcin) a travs de la tabla de vectores de interrupcin ubicada en la parte baja de la memoria. La seal INTR puede ser enmascarada por software manipulando el flag correspondiente en el registro de flags. La seal INTR se sincroniza internamente. !INTA. Interrupt Acknowledge. La seal !INTA se utiliza como seal de lectura cuando se est sirviendo un ciclo de reconocimiento de interrupcin. !INTA est activa durante los tres ltimos perodos de reloj de cada ciclo de reconocimiento de interrupcin. !SSO.. Cuando se descodifica junto con las seales IO/!M y DT/!R, nos dan informacin del tipo de actividad que tiene lugar en los buses.

!SSO DT/!R IO/!M FUNCION 0 0 1 Reconocimiento de interrupcin 1 0 1 Lectura perifrico de E/S 0 1 1 Escritura perifrico de E/S 1 1 1 Ciclo de espera 0 0 0 Ciclo de lectura de instruccin 1 0 0 Lectura memoria 0 1 0 Escritura memoria 0 Pasivo 1 1
Tabla 2. Funciones que realiza la CPU

!HOLD/HLDA. Hold / Hold Acknowledge. La seal 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 peticin de liberar el Bus (HOLD=0),terminar la ltima instruccin que est realizando y luego pondr a uno la seal HLDA para indicar que los buses estn disponibles. NOTA :Una transferencia de datos ocupa un ciclo mquina para un byte o dos ciclos mquina para una palabra o reconocimiento de interrupcin. NMI. Non Maskable Interrupt. Esta interrupcin no es enmascarable por software. A travs de la tabla de vectores de interrupcin, se ejecutar la RSI(Rutina Servicio Interrupcin) asociada. Un flanco de subida en esta entrada provocar que al final de la instruccin actual se sirva la interrupcin. Esta entrada se sincroniza internamente.

Captulo 15. Anlisis de sistemas digitales

Pgina 28

READY. La seal de READY, se utiliza para aadir estados de espera en un ciclo mquina cuando tenemos perifricos 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 instruccin " 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- ALIMENTACIN ( 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- TEMPORIZACIN
La pata 19 es la entrada de reloj para el 8088. La frecuencia mxima de reloj es de 5 MHz para el 8088, y de 8 MHz para el 8088-2. Generalmente la seal de reloj viene del 8284A.

2.8- TIMINGS DE LA CPU 8088


La CPU 8088 se comunica con el exterior a travs de los buses del sistema. Esta comunicacin se logra con un ciclo mquina, en el cual los datos se transmiten entre el 8088 y la memoria o perifrico de E/S. Durante este ciclo mquina, el 8088 primero genera una direccin para poder direccionar una posicin de memoria o un dispositivo de E/S. Cuando el 8088 activa las lneas 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 seal de control se desactiva. Un ciclo mquina bsico del 8088 est compuesto por cuatro perodos de reloj, que llamaremos T1, T2, T3 y T4. Para localizar el inicio de un ciclo mquina se ha de tener en cuenta: 1 que T1 empieza con un flanco de bajada del CLOCK. 2 que durante el perodo T1 baja la seal ALE. Durante el perodo T1. La CPU coloca una direccin en el bus. Esta direccin apunta a una posicin de memoria o a un perifrico dentro del iAPX88. Se garantiza que cuando baje la seal ALE, esta direccin an ser valida. Adems, en este momento las seales de control IO/!M, !SSO y DT/!R tambin sern vlidas.

Captulo 15. Anlisis de sistemas digitales

Pgina 29

Estas tres seales indican a la lgica externa "qu tipo de ciclo mquina" se dispone a realizar la CPU (ver tabla 2 ;Pg. 28). Durante el perodo T2, los 8 bits de direcciones/datos de menor peso del 8088, empiezan a fluctuar preparndose para la transferencia de datos. A continuacin, las seales de control !DEN y !RD o !WR sern vlidas, para poder validar el dato en el bus para la transferencia. Este dato ser ledo hacia dentro, o hacia fuera del 8088 a travs de las seales 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 informacin 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 mquina. Esta informacin puede utilizarse para seleccionar uno de los cuatro segmentos de memoria (cdigo, datos, stack y extra) que son direccionados por el iAPX88. Esta tcnica permite partir la memoria en cuatro segmentos para expandirla hasta 4 MBytes. El hecho de descodificar S3 y S4 proporciona un grado de proteccin a la memoria, puesto que se puede evitar escrituras errneas 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, adems sigue proporcionando informacin 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 ledos por la CPU o dispositivo seleccionado (memoria o perifrico). A principios de T4 las seales !RD o !WR suben a uno (quedan inactivas), y el dato es fijado en el 8088 o dispositivo direccionado. Las seales !DEN y DT/!R tambin suben y la memoria o perifrico quedan desactivados.

2.9- CICLOS DE REPOSO


La CPU 8088 slo ejecuta un ciclo mquina cuando las instrucciones u operandos son transferidos entre el 8088 y la memoria o perifrico. Cuando no ejecuta un ciclo mquina, la interfcie con el bus ejecuta un ciclo de reposo (TI). Durante este ciclo de reposo, la CPU continua dando informacin del estado del anterior ciclo mquina, en la parte alta del bus de direcciones. Si el anterior ciclo mquina era de escritura, la CPU mantiene el dato en el bus antes de que empiece el siguiente ciclo mquina. Pero si era un ciclo de lectura, la CPU no mantiene el dato en el bus.

Captulo 15. Anlisis de sistemas digitales

Pgina 30

Debido a que la CPU lee (pre fetch) al menos cuatro bytes de instruccin para la cola de instrucciones, la relacin entre la lectura de la instruccin y la transferencia del operando asociado, puede estar separada en el tiempo por lecturas de bytes de instruccin adicionales. En general, cuando se lee una instruccin y es puesta en la cola de instrucciones del 8088, varias instrucciones sern ledas y puestas en la cola, antes de que sean descodificadas y ejecutadas. NOTA: Si la instruccin que se est ejecutando es un salto o cualquier otra instruccin de transferencia de control, todas las instrucciones existentes en la cola sern descartadas sin haber sido ejecutadas.

2.10- LA ARQUITECTURA PIPELINE DEL 8088


La figura 9 muestra la evolucin temporal de la ejecucin de un programa en un microprocesador estndar. Primero, el microprocesador debe leer la instruccin de la memoria (ciclo de fetch), una vez leda y descodificada, el microprocesador ejecuta la instruccin. Slo despus que el microprocesador haya ejecutado la instruccin, la CPU est preparada para ir a buscar la siguiente instruccin, la ejecuta, etc.

Figura 9. Ejecucin secuencial de un programa

El hardware de la CPU que ejecuta las instrucciones obviamente debe esperar hasta que la instruccin sea leda y descodificada antes de que empiece su ejecucin. Por lo tanto, en un microprocesador estndar, el hardware de ejecucin malgasta mucho tiempo esperando que las instrucciones sean ledas y descodificadas. El 8088 elimina este tiempo de espera dividiendo la CPU en dos unidades funcionales independientes (figura 10).

Captulo 15. Anlisis de sistemas digitales

Pgina 31

Figura 10. Unidades funcionales de la CPU

2.10.1- LA UNIDAD DE INTERFCIE CON EL BUS (BIU) Y LA UNIDAD DE EJECUCIN (EU) TRABAJAN EN PARALELO
El 8088 tiene una unidad de interfcie 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 ejecucin al mundo exterior a travs de la interfcie del bus. Puesto que la unidad de ejecucin EU (Execution Unit) y la unidad de interfcie con el bus son independientes, la BIU lee las instrucciones adicionales mientras la unidad de ejecucin ejecuta la instruccin anterior. Esto es posible gracias al Instruccin Pipeline o cola, entre la unidad de interfcie y la unidad de ejecucin; la unidad de interfcie llena la cola con las instrucciones que sern ejecutadas. De este modo, cuando la unidad de ejecucin termina una instruccin, la siguiente instruccin normalmente est ya lista sin necesidad de tiempos de espera. La figura 11 muestra el trabajo en paralelo de las unidades de ejecucin y de interfcie 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 ms ocupado, sacando as un mayor rendimiento a la estructura de buses del

Captulo 15. Anlisis de sistemas digitales

Pgina 32

sistema. El trabajo en paralelo de la lectura de instrucciones y su ejecucin, 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 instruccin, hay una menor necesidad de que la BIU lea las instrucciones rpidamente. De este modo, la BIU del 8088 permite un mximo rendimiento sin necesidad de utilizar dispositivos de memoria rpidos. Cuando la ejecucin del programa salta a una nueva direccin, el tiempo de fetch es el nico tiempo que no es totalmente transparente. Cuando esto sucede, la unidad interfcie recibe la nueva direccin de la unidad de ejecucin; entonces empieza a leer las instrucciones secuencialmente a partir de la nueva direccin. La unidad de ejecucin deber esperar a que la nueva instruccin sea leda igual que lo hacen los microprocesadores estndar. Despus de que la primera instruccin haya sido leda de la nueva direccin la unidad de interfcie continua otra vez llenando la cola con instrucciones y el tiempo de fetch vuelve a ser otra vez transparente.

Captulo 15. Anlisis de sistemas digitales

Pgina 34

5- REALIZACIN DE LA PRCTICA
5.1 OBJETIVOS DE LA PRCTICA
El objetivo de esta prctica, es que el alumno conozca el funcionamiento y posibilidades de uno de los instrumentos ms utilizados en el anlisis de sistemas digitales, el analizador lgico. Adems esta prctica ser un complemento a la teora 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 lgico HP 1672G estn conectados a las 68 seales ms tiles para el estudio del sistema .

5.2- DESCRIPCIN 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 mnimo" 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

Captulo 15. Anlisis de sistemas digitales

Pgina 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 interrupcin, el segmento de datos y el stack; y un banco de memoria EPROM donde tenemos el segmento de cdigo. La interfcie con el usuario se realiza a travs de un teclado de PC y una pantalla LCD de diez y seis caracteres por dos lneas. El usuario indica al sistema qu operacin desea realizar a travs de un interprete de comandos, el cual permite entre otros: configurar el Analizador, editar un programa, ejecutar un programa, grabar la pantalla actual, generacin de errores, etc. La interfcie con el Analizador se realiza a travs del estndar RS-232, realizando el control de flujo con el protocolo XON/XOFF. A travs del canal serie, el usuario puede: configurar el Analizador, volcar la pantalla a disco, etc. Para que se puedan realizar pruebas de acceso a perifrico, se ha conectado una PIO, de propsito general, en el sistema. De esta manera, cuando el alumno escriba sus propios programas en cdigo mquina tendr alguna va para comunicarse con el exterior. Una vez realizado el estudio completo del funcionamiento del sistema, el alumno tendr que poner en prctica los conocimientos obtenidos, simulando errores dentro del propio sistema, y luego buscar dnde se halla el error.

5.3- CONFIGURACIN DEL ANALIZADOR


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

Captulo 15. Anlisis de sistemas digitales

Pgina 36

A partir de este momento, el Analizador est preparado para recibir ordenes a travs 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 seal de la Unidad de Pruebas. Los 68 canales estn conectados a las distintas seales de la unidad de pruebas . Para idendificarlos se les asignan distintos nombres o "etiquetas". Hay 32 etiquetas asignadas a seales 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 aadimos las 5 seales que necesita el desensamblador y que no tienen ningn inters didctico, salen los 68 canales del Analizador. En efecto (15+8+8+32+5 =68). Para una mejor comprensin, el nombre que figura en los esquemas, es el mismo que el de las etiquetas. Debido a que nuestro sistema tiene ms de 68 seales, se han conectado las ms didcticas, es decir, las que permiten hacer un estudio ms adecuado. Para evitar al estudiante la prdida de tiempo creando las 35 etiquetas, la Unidad de Pruebas dispone de un comando que las crea todas. Pasos a seguir: 1. 2. Volver al grupo ANALYZER. Si continua en pantalla de la unidad de pruebas el mensaje de presentacin, pulsar una tecla. 3. En el prompt1, teclear la orden ETIQ (ver apartado 3.1.4, pg 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 pgina 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 nmero de la pata.

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

Captulo 15. Anlisis de sistemas digitales


Analizador POD # 1 CLOCK J DATA 15 DATA 14 DATA 13 DATA 12 DATA 11 DATA 10 DATA 9 DATA 8 DATA 7 DATA 6 DATA 5 DATA 4 DATA 3 DATA 2 DATA 1 DATA 0 Analizador POD # 3 CLOCK L DATA 15 DATA 14 DATA 13 DATA 12 DATA 11 DATA 10 DATA 9 DATA 8 DATA 7 DATA 6 DATA 5 DATA 4 DATA 3 DATA 2 DATA 1 DATA 0 Unidad de pruebas ETIQUETA CHIP **** PA7 U9.8155 PA6 U9.8155 PA5 U9.8155 PA4 U9.8155 PA3 U9.8155 PA2 U9.8155 PA1 U9.8155 PA0 U9.8155 D7 U2.74LS245 D6 U2.74LS245 D5 U2.74LS245 D4 U2.74LS245 D3 U2.74LS245 D2 U2.74LS245 D1 U2.74LS245 D0 U2.74LS245 Unidad de pruebas ETIQUETA CHIP TOUT U9.8155 A15 U0.8088 AX14 U4.74LS373 AX13 U4.74LS373 AX12 U4.74LS373 AX11 U4.74LS373 AX10 U4.74LS373 AX9 U4.74LS373 AX8 U4.74LS373 AX7 U3.74LS363 AX6 U3.74LS363 AX5 U3.74LS363 AX4 U3.74LS363 AX3 U3.74LS363 AX2 U3.74LS363 AX1 U3.74LS363 AX0 U3.74LS363 Analizador POD # 2 CLOCK K DATA 15 DATA 14 DATA 13 DATA 12 DATA 11 DATA 10 DATA 9 DATA 8 DATA 7 DATA 6 DATA 5 DATA 4 DATA 3 DATA 2 DATA 1 DATA 0 Analizador POD # 4 CLOCK M DATA 15 DATA 14 DATA 13 DATA 12 DATA 11 DATA 10 DATA 9 DATA 8 DATA 7 DATA 6 DATA 5 DATA 4 DATA 3 DATA 2 DATA 1 DATA 0

Pgina 37
Unidad de pruebas ETIQUETA CHIP KBCLK U10.8251 !KEYB U5.74LS138 !PIO U30.74LS138 !LCD U5.74LS138 !WDOG U5.74LS138 !RS232 U5.74LS138 !PIC U5.74LS138 !EPROM U6.74LS139 !RAM U6.74LS139 IRQ10 U20.8251 IRQ9 U20.8251 IRQ8 U10.8251 RXD U20.8251 TXD U20.8251 KBDATA U10.8251 AS19 U0.8088 AD0 U0.8088 Unidad de pruebas ETIQUETA CHIP CLOCK U0.8088 Q_555 U12.NE555 !DEN U0.8088 Q_121 U11.74121 **** !SS0 U0.8088 !INTA U0.8088 INTR U0.8088 DT/!R U0.8088 IO/!M U0.8088 !WR U0.8088 !RD U0.8088 ALE U0.8088 AX19 U3.74LS373 **** **** ****

PIN 28 27 26 25 24 23 22 21 11 12 13 14 15 16 17 18

PIN 25 14 13 12 11 10 9 11 4 15 14 14 3 19 3 35 16

PIN 6 39 16 15 12 9 6 5 2 19 16 15 12 9 6 5 2

PIN 19 3 26 6 34 24 18 27 28 29 32 25 19

Tabla 3. Conexiones de los canales del analizador al sistema

Captulo 15. Anlisis de sistemas digitales

Pgina 38

5.4- LNEAS GENERALES A SEGUIR


A continuacin, se hace una pequea descripcin de cuales son las lneas bsicas a seguir para realizar una buena adquisicin. 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 explicacin terica se adjunta el esquema. Al final del captulo, estn los esquemas completos. Los esquemas completos, conviene seguirlos para tener una visin global del sistema, y no perder el mundo de vista. Primero debe leerse y comprenderse la teora, a continuacin el alumno debe elegir qu seales considera interesante visualizar para poder realizar el estudio. Recordemos, que slo se pueden observar las seales con un nombre asignado (etiquetas). Antes de colocar las nuevas etiquetas en la pantalla, debern borrarse las etiquetas existentes. Cuando se desea aadir etiquetas a la pantalla de visualizacin, aparecer una pantalla con todas las etiquetas juntas. Se han intentado separar en 9 grupos. En el siguiente cuadro estn las 35 etiquetas disponibles: Tabla 4. Etiquetas disponibles distribudas en grupo. 1 2 3 4 5 6 .
AD0 A15 AS19 AX[0:14] AX19 D[0:7] CLOCK !SSO ALE IO/!M !RD !WR DT/!R !DE N INTR !INTA IRQ8 IRQ9 IRQ10 !RAM !E P ROM !KE YB !P IO !LCD !WDOG !RS232 !P IC KBCLK KBDATA

7
TOUT TXD RXD

8
Q_121 Q_555

9
P IO_A[0:7]

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. Son las 10 seales necesarias para estudiar el funcionamiento de la CPU. Es el bus de control. Los tres vectores de interrupcin. Las seales de seleccin de memoria.

Grupo 2. Grupo 3. Grupo 4.

Captulo 15. Anlisis de sistemas digitales

Pgina 39

Grupo 5. Grupo 6. Grupo 7. Grupo 8. Grupo 9.

Las seales de seleccin de perifrico. Reloj y datos del teclado. Reloj y datos de la comunicacin RS-232. Seales para el estudio del WatchDog. Puerto A de la PIO.

En segundo lugar, debe elegirse la secuencia de disparo adecuada. En la mayora 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 combinacin 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 adquisicin, tambin es importante. Generalmente se utilizar el Analizador de tiempos convencional. En otros casos, la adquisicin adecuada se realizar con el Analizador de estados. Las caractersticas de cada modo de funcionamiento, se han explicado en el apartado dedicado a la teora de analizadores lgicos. Pgina 3 y siguientes. La primera adquisicin deber realizarse en modo repetitivo. Una vez ajustada la base de tiempos, deber posicionarse el disparo mediante el delay en una posicin de la pantalla que permita la observacin de toda la informacin. A continuacin 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 estacin meteorolgica situada en la cumbre de una montaa. Dicha estacin, est controlada por un microcontrolador el cual adquiere los datos climatolgicos de forma automtica y los transmite va radio a una estacin central de recogida y procesado de datos.

Captulo 15. Anlisis de sistemas digitales

Pgina 40

Cualquier descarga electrosttica podra colgar nuestro dispositivo, y resultara muy costoso mandar a un tcnico 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 automticamente las condiciones iniciales. El circuito encargado de vigilar el buen funcionamiento de nuestro sistema, es el WatchDog. De forma peridica, 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 errnea, en cuyo caso el WatchDog actuar reiniciando el sistema Para ello, introduciremos una orden en el programa, que vaya indicando al WatchDog de forma peridica, que el programa funciona correctamente. Imagnese el siguiente programa, que es un bucle infinito, que lee el teclado, escribe por pantalla y refresca el WatchDog. void main(void) { for(; ;) { Lee Teclado(); Escribe Pantalla(); WatchDog(); } }

// Bucle infinito

// Refresco del WatchDog

Si por lo que fuese, el programa se colgase, el WacthDog se dara cuenta de que nadie le informa del buen funcionamiento del programa y automticamente restablecera 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 diseado de tal manera que dar un flanco negativo cuando se haga un acceso al perifrico situado en la direccin 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 adems est invertida, intercalamos un monoestable que alarga e invierte el pulso, para que pueda saturar el transistor T1.

Captulo 15. Anlisis de sistemas digitales

Pgina 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); } 5.5.2- PRECAUCIONES Debe tenerse en cuenta, que aunque un sistema se haya colgado, las interrupciones pueden seguir funcionando correctamente, por lo tanto jams debe incluirse el refresco del WatchDog dentro de una RSI (Rutina de Servicio de Interrupcin). 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.

// Escribe un byte en el puerto 40 hexadecimal

El WatchDog restablecer el funcionamiento normal del sistema, siempre que el error se deba a un fallo en el programa. Si se rompe fsicamente algn componente el WatchDog intentar una y otra vez sin xito arrancar de nuevo el equipo.

Captulo 15. Anlisis de sistemas digitales


5.5.3- EL GENERADOR DE RELOJ Y RESET DEL SISTEMA

Pgina 42

La inicializacin del sistema puede ser debida a dos causas totalmente independientes. Una, que el usuario pulse el reset del sistema, y otra que el WatchDog acte.

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. Slo necesita a su entrada un cristal de cuarzo que le sirva de patrn, y una seal de reset que dure ms de cuatro perodos de reloj. A su salida producir las seales de CLOCK, READY y RESET conforme los requerimientos de sincronizacin 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. Adems el 8284 tiene una salida PCLOCK que es la mitad de la frecuencia del reloj del sistema, la cual se utiliza para los perifricos. 5.5.4- PRCTICAS A REALIZAR Primero observaremos las seales cuando el sistema funciona normalmente y a continuacin forzaremos al programa a entrar en un bucle infinito. Los pasos a seguir son: 1. 2. 3. Entrar en el men de WAVEFORM. Pulsar dos veces sobre el campo de etiquetas. Elegir la opcin de borrar todas las etiquetas y confirmar. Volver a pulsar para insertar las seales deseadas. En este caso elegiremos las siguientes: la seal de refresco del WatchDog !WDOG, la salida del monoestable Q_121 y la salida del oscilador Q_555. Elegir una base de tiempos de por ejemplo 10 us/div. Entrar en el men de TRIGGER. Pulsar sobre la primera etiqueta, aparecer por pantalla la lista de etiquetas. Entonces pulsar sobre la etiqueta deseada, en nuestro caso !WDOG (elegimos la seal con la que queremos disparar).

4. 5. 6.

Captulo 15. Anlisis de sistemas digitales

Pgina 43

A continuacin ponemos la condicin que tiene que tener mediante el trmino. En nuestro caso un cero. Para ello: 7. Pulsar sobre el trmino deseado, por ejemplo a. Elegir la opcin de limpiar el trmino, es decir Clear (=x). De esta forma estamos seguros que no hay ninguna asignacin anterior. Pulsar sobre el campo que est al lado del trmino a y justo debajo de la etiqueta !WDOG, poner un cero. Definir la secuencia de disparo, cuando a suceda una vez (consultar apartado 2.15, pg. 14). Pulsar el botn de RUN.

8. 9. 10.

Podemos ver en la pantalla las seales !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 seales o cualquier otro tiempo. Hay que tener en cuenta que el sistema muestrea a una cierta frecuencia, y que el error mximo cometido ser un perodo de muestra. Una vez visto el funcionamiento del monoestable, vamos a provocar que acte el WatchDog, para ello:
11. Definir el trmino a como Q_555= 0. Para ello repetir los pasos 5 a 9. No 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 condicin de disparo. 15. En el prompt, escribir la orden RESET (apartado 3.1.8, pg 17). Como se ha antes, se trata de un bucle infinito. explicado olvidarse

Al cabo de unos instantes, en la pantalla de la unidad de pruebas, habr aparecido el mensaje de presentacin, seal inequvoca 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.

Captulo 15. Anlisis de sistemas digitales

Pgina 44

5.6 - LA CPU
El microprocesador utilizado es un Intel 8088 funcionando en modo mnimo. Observar que la interrupcin utilizada es la enmascarable puesto que la no enmascarable est inhibida, al igual que las seales de test y peticin 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 seal 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 seal !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 seal de salida sigue a la entrada, pero cuando sta baja a cero, el flanco fija, a la salida, los datos que en ese momento estn a la entrada.

Vemos, pues, que este chip esta controlado por la seal ALE de la CPU, la cual baja cuando en el bus hay una direccin valida. La seal de control OC, est conectada a masa, por lo tanto habilita la salida.

Figura 15. La CPU y el desmultiplexado de los buses Como slo se utilizan las primeras quince direcciones para direccionar la memoria. Y la direccin de mayor peso para mapear los bancos de memoria. El resto de direcciones no es necesario desmultiplexarlas, de esta forma nos ahorramos un chip.

Captulo 15. Anlisis de sistemas digitales

Pgina 45

Figura 16. Ciclo de fetch o lectura de instruccin En la figura 16 se pueden observar las seales implicadas cuando la CPU realiza un ciclo de lectura de instruccin o fetch. Como ya se ha visto en la teora, durante el primer periodo de reloj la seal ALE baja para validar el bus de direcciones (Recordemos que un perodo de reloj empieza con el flanco de bajada) , adems en este momento las seales !SSO, IO/!M y DT/!R ya indican de qu tipo de ciclo mquina se trata. (fig. 16) En el caso de un ciclo de lectura de instruccin las tres valen cero. !SS0 0 1 0 1 0 1 0 1 DT/!R 0 0 1 1 0 0 1 1 IO/!M 1 1 1 1 0 0 0 0 Funcin Reconocimiento de interrupcin Lectura perifrico de E/S Escritura perifrico de E/S Ciclo de espera Ciclo de lectura de instruccin Lectura memoria Escritura memoria Pasivo

Fig 16 Tipo de actividad que tienen los buses Durante el segundo perodo de reloj, bajar la seal !RD o !WR .En nuestro caso por tratarse de un ciclo de lectura de instruccin, bajar la seal de !RD. Al cabo de poco rato bajar la seal !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, subirn las seales de !RD o !WR y !DEN.

Captulo 15. Anlisis de sistemas digitales

Pgina 46

Al finalizar este estudio el alumno tendra que ser capaz de reconocer sin ninguna duda, todos y cada uno de los ciclos mquina de la CPU. Adems de interpretar la secuencia de ejecucin de un programa. En la figura 17 se puede observar la ejecucin completa de un programa cclico. Cada ciclo mquina, es fcilmente identificable observando los flancos de la seal ALE, en total vemos que nuestro programa ejecuta diez ciclos mquina, 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 seal IO/!M llegaremos a la conclusin que son ocho ciclos de lectura a memoria y dos ciclos de escritura a perifrico. Si observamos la seal !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 instruccin.

Figura 17. Ejecucin de un programa cclico A simple vista, tambin observaremos que hay ciclos que ocupan ms de cuatro perodos 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 slo perodo de reloj, en los que la CPU no hace un acceso a memoria ni a perifrico, sino que realiza algn tipo de operacin interna. Por ejemplo el ltimo ciclo mquina es exageradamente largo. Esto es debido a que la CPU est ejecutando la instruccin de salto para volver al principio del programa. Cuando se realice el estudio del desensamblador (apartado 5.16) y la programacin en cdigo mquina (apartado 5.15), se explicar con un poco ms de detalle el programa que acabamos de estudiar.

Captulo 15. Anlisis de sistemas digitales


5.6.1- PRCTICAS A REALIZAR

Pgina 47

Cada vez que la CPU hace un ciclo de lectura o escritura a memoria o perifrico de E/S, lo indica al resto del sistema activando las seales del bus de control. En total hay siete "ciclos mquina" a estudiar: 1.- Ciclo de " fetch " o lectura de instruccin 2.- Ciclo de lectura a memoria 3.- Ciclo de escritura a memoria 4 - Lectura de perifrico 5.- Ciclo de escritura a perifrico 6.- Ciclo de reconocimiento de interrupcin. Se realizar ms adelante. 7.- Ciclo de reposo Como se ha explicado anteriormente, descodificando las seales !SSO, DT/!R y IO/!M (Fig 16, pg. 46) podemos saber que ciclo mquina esta ejecutando la CPU. Tambin sabemos, que cuando baja la seal ALE, las anteriores seales tienen un valor estable. Esta informacin nos ser til para elegir una secuencia de disparo correcta. Pasos a seguir: 1. 2. 3. 4. Entrar en el men de FORMAT. Seleccionar la primera etiqueta que no esta asignada (despus de PIO_A). Elegir la opcin de MODIFY. Poner por ejemplo, el nombre CICLO. Automticamente queda activada. Localizar en el cuadro general de etiquetas (tabla 1) las posiciones correspondientes a las tres seales 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 posicin que estamos.

Una vez tenemos creada una etiqueta llamada CICLO, y que tiene asignados las tres posiciones correspondientes a las seales !SSO, DT/!R y IO/!M. Vamos a asignar un valor lgico, llamado smbolo, a cada una de las ocho combinaciones posibles (ver tabla 2). 5. Entrar en el submen de SYMBOLS. Si an smbolo saldr New Symbol. no se ha introducido ningn

6. 7. 8.

Cambiar la etiqueta por CICLO y poner la base en binario. Seleccionar el smbolo. Elegir Add a Symbol (aadir un smbolo), y escribir FETCH. Una vez creado el primer smbolo, asignarle el valor 000 binario. Repetir esta operacin asignando un smbolo para cada uno de los ciclos mquina de la CPU. Tener en cuenta que el orden de los bits de la etiqueta es el mismo que el de asignacin, y no tiene porqu ser el mismo que el de la tabla 2.

Captulo 15. Anlisis de sistemas digitales

Pgina 48

9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25.

Pulsar Done para salir. Entrar en el men de WAVEFORM. Borrar todas las seales. Aadir las nuevas seales. Se recomienda; CLOCK, !SSO, ALE, IO/!M, !RD o !WR, DT/!R y !DEN. Poner la base de tiempos en 100 ns/div. para ver un ciclo mquina. Entrar en el men de TRIGGER. Borrar la secuencia de disparo anterior. Poner la etiqueta ALE en primer lugar y CICLO en el segundo. Cambiar la base de CICLO, de hexadecimal a smbolo. Fijar Edge1 como flanco de bajada de ALE. Fijar a como FETCH de CICLO. Entrar a editar la secuencia de disparo (nivel) Pulsar sobre el nombre del trmino a. Elegir Combination. Poner los trminos a y EDGE1 a ON. Donde se junten cambiar OR porAND. Salir y volver al men de WAVEFORM. Pulsar RUN. Centrar el ciclo en la pantalla.

Una vez definida la secuencia de disparo, para estudiar el resto de ciclos mquina slo habr que cambiar el valor de la variable a, ponindole el valor del smbolo deseado. Es interesante que el alumno complemente el estudio de los ciclos mquina de la CPU, observando el comportamiento de los buses de datos y direcciones, antes y despus de que sean desmultiplexados. Para poder realizar el estudio, se han puesto a nuestra disposicin las seales AD0, AX0 y D0 y adems las seales AS19 y AX19, para poder realizar el estudio del paso de un bus multiplexado a uno desmultiplexado. Para ello, pueden observarse los tiempos de propagacin del 74LS245 y del 74LS373. Tambin puede observarse el comportamiento de una seal multiplexada y como se comportan las salidas desmultiplexadas cuando se activan las seales ALE, DT/!R y !DEN.

Captulo 15. Anlisis de sistemas digitales

Pgina 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 esttica 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 cdigo CS vale F800 hexad y el registro de segmento de datos DS vale oo40 hexadecimal. Ya que la tabla de vectores de interrupcin est en la parte ms baja de la memoria. En concreto, son 256 vectores de interruccin 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 mnima lgica que evita colisiones (ver figura 19). La seleccin de la RAM se har cuando la direccin de mayor peso AX19 sea cero y el acceso sea a memoria., es decir, que la seal IO/!M valga cero. Por el contrario la seleccin de la EPROM se har cuando AX19 sea uno y el acceso sea de lectura a memoria. Para evitar posibles errores, la seleccin del banco de EPROM se selecciona adems con la seal de !RD. 5.7.1- PRCTICAS 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.

Captulo 15. Anlisis de sistemas digitales


2. 3.

Pgina 50

4. 5.

Colocar las seales siguientes, implicadas en este estudio: AX19, IO/!M, !RD, !WR, !RAM y !EPROM .Se recomienda utilizar la orden WAVE (apartado 3.1.11, pg 19). 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. Volviendo al men de WAVEFORM, poner una base de tiempos 2 us/div. Para observar los accesos a memoria que realiza el sistema. Pulsar RUN.

Una vez hecha la adquisicin, observar el funcionamiento de la seleccin de memoria, y comprobar que se corresponde con lo dicho en el prrafo anterior. Observar tambin la diferencia en la duracin de las seales de seleccin de la RAM y de la EPROM. Explicar a que se debe. Prcticas adicionales Puede realizarse un estudio de los tiempos de propagacin de todos los dispositivos, desde que la CPU activa las seales de control, hasta que se activa la seal de seleccin del banco de memoria deseado. El estudio puede ampliarse haciendo un seguimiento de todas las seales implicadas, desde que la CPU pone una direccin en el bus de direcciones, hasta que consigue leer o escribir un dato.

5.8- ACCESO A PERIFRICO


En nuestro caso disponemos de seis perifricos: Teclado, PIO, LCD, WatchDog, RS232 y PIC. El mtodo a seguir para realizar este estudio, es muy parecido al realizado en el apartado anterior. Las seales implicadas pueden ser: AX4, AX5, AX6, IO/!M, !RD, !WR, !KEYB, !PIO, !LCD, !WDOG, !RS232, y !PIC La seleccin de los perifricos (fig 20) se hace mediante las direcciones AX4, AX5 y AX6 . Las direcciones de los distintos perifricos, en hexadecimal, son: Teclado = 10H ; LCD = 30H ; WatchDog =40H ; PIO = 21H ; RS232 = 50H

Captulo 15. Anlisis de sistemas digitales

Pgina 51

Figura 20. Seleccin de perifrico Se observa en el esquema (figura 20) que la lgica de seleccin de la PIO es diferente a la de los dems dispositivos. Esto es debido a que la PIO necesita que su entrada de seleccin est activa un tiempo antes que baje la seal de !RD o !WR. Los dems perifricos son seleccionados cuando la CPU realiza un ciclo de lectura o escritura a perifrico. Ms adelante veremos que la CPU mantiene tambin la seal IO/!M a nivel alto cuando sirve un ciclo de reconocimiento de interrupcin y esto provocara accesos errneos a perifrico. Cuando se pulsa una tecla del teclado de la unidad de pruebas, provocamos una interrupcin. Al finalizar la RSI hay que enviar al PIC el cdigo correspondiente al final de interrupcin. Dentro de la RSI leeremos el carcter que haya en el buffer de entrada. Cuando se detecte que se ha soltado la tecla, escribiremos el carcter en el display. Por lo tanto el hecho de pulsar una tecla, provoca la seleccin de tres perifricos.

5.9- EL TECLADO
En el apartado anterior hemos estudiado cmo haca la CPU para direccionar el teclado, en este apartado se estudiar, cmo enva los datos el teclado. Cuando se pulsa una tecla primero se lee el teclado, despus se escribe en el display y para finalizar se enva un cdigo de final de interrupcin al PIC. El teclado se comunica con el sistema, a travs del 8251A, que es una USART de propsito general compatible con el 8088.

Captulo 15. Anlisis de sistemas digitales

Pgina 52

Figura 21. Esquema del teclado La nica manera de inicializar un teclado, es interrumpiendo la alimentacin. Por eso hemos intercalado un transistor en su alimentacin, 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 botn de reset. La conexin del teclado se hace con un conector DIN de 5 pins. De los cuales, slo cuatro estn conectados: 1-Reloj, 2-Datos, 4-Masa y 5-Alimentacin. El teclado enva los datos de forma asncrona, a una velocidad de 13.5 Kbauds, con un bit de paridad par y otro de parada. Cuando el teclado est en reposo, las lneas de datos y de reloj estn a nivel alto. Cuando se pulsa una tecla, el reloj empieza a oscilar y la lnea de datos empieza la transmisin. Cuando la USART detecta que el carcter est completo, sube la salida RxRDY (receiver ready). Indicando as a la lgica externa que lea el carcter que tiene en el buffer de entrada. Si no se leyera, el siguiente carcter machacara al anterior y se perdera. La salida RxRDY, se utiliza para generar la interrupcin IRQ8. La seal 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 enva un cdigo correspondiente a la tecla pulsada, que se corresponde con su posicin en el teclado y no con el carcter ASCII de la tecla. El teclado mandar una y otra vez el cdigo de la tecla, mientras sta se mantenga apretada. A continuacin enva un cdigo indicando que se ha soltado la tecla. Hay que ir con cuidado, puesto que ciertas teclas especiales estn formadas por ms de un cdigo. Por ejemplo la tecla de Pausa est formada por seis caracteres.

Captulo 15. Anlisis de sistemas digitales


5.9.1- PRCTICAS A REALIZAR 1. 2. 3. 4. 5.

Pgina 53

Seales implicados: KBCLK, KBDATA, IRQ8, !KEYB y !LCD. Base de tiempos recomendada 100 us/div Secuencia de disparo preparada para flanco de bajada de KBDATA. Preparar la adquisicin y pulsar una tecla. Centrar el cdigo, haciendo varias adquisiciones y jugando con el retardo.

Observar que realmente al final de la transmisin de un cdigo, se genera una interrupcin. La activacin de la seal de seleccin del teclado, significa que se ha servido la interrupcin. Puesto que la RSI slo lee la tecla y la coloca en buffer circular. Como complemento, se puede intentar obtener el cdigo de alguna tecla y el cdigo de liberacin de tecla.

5.10- EL CICLO DE RECONOCIMIENTO DE INTERRUPCIN


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 interrupcin. Una vez priorizada la interrupcin, el PIC hace la peticin a la CPU y cuando sta la reconoce, entonces pone el valor del vector de interrupcin en el bus de datos. Figura 22. Esquema del PIC En nuestro sistema slo generamos tres interrupciones diferentes: 1.- cuando se pulsa una tecla, 2.- cuando el buffer de la RS-232 an tiene caracteres que enviar y 3.- cuando se recibe un carcter a travs de la RS-232. Cuando se ha servido una interrupcin, debe indicarse al PIC que ha finalizado. Por lo tanto la CPU manda un cdigo de fin de interrupcin. Una vez realizado el estudio, de cmo un perifrico genera una interrupcin, ya estamos en condiciones de estudiar cmo sta es servida por la CPU. Aunque tenemos tres tipos de interrupciones, utilizaremos la del teclado, por ser la ms sencilla. 5.10.1- PRCTICAS A REALIZAR 1. 2. Seales implicados: Bus Datos, IRQ8, INTR, !SSO, ALE, IO/!M, DT/!R y !INTA. Disparar por flanco de bajada de !INTA.

Captulo 15. Anlisis de sistemas digitales


3. 4. Base de tiempos de 500 ns. Preparar la adquisicin y pulsar una tecla.

Pgina 54

Figura 23. Ciclo de reconocimiento de interrupcin En la figura 23 al igual que en la pantalla del analizador se puede apreciar como la seal que proviene del teclado IRQ8, sube indicando que solicita una interrupcin. Al cabo de poco tiempo, el PIC sube la seal INTR de la CPU. Cuando la CPU acaba la instruccin actual, los dos primeros ALE, entonces empieza propiamente el ciclo de reconocimiento de interrupcin subiendo ALE. En este caso la seal !RD no bajar, puesto que es la seal !INTA la que hace funciones de lectura. Un ciclo de reconocimiento de interrupcin, consta de dos ciclos mquina. El primero sirve para que el PIC priorize las peticiones que tiene en sus entradas y prepare el vector de interrupcin correspondiente. A partir de este momento, si hubiese una peticin ms prioritaria tendra que esperar a la siguiente peticin. El segundo sirve para que la CPU lea el vector de interrupcin. Como puede observarse en la figura, es durante el segundo ciclo, cuando !INTA esta activo, el PIC pone el valor del vector de interrupcin en el bus de datos, en este caso 8. Cuando el PIC detecta que le han reconocido la interrupcin, libera la seal INTR. En cambio el teclado tarda un poco ms, 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 transmisin serie, pero no la de configuracin. Para las diferentes interrupciones, verificar el vector de interrupcin. Tambin se puede localizar el ciclo mquina, en que la CPU indica al PIC que la interrupcin ha finalizado y descubrir el cdigo de final de interrupcin.

Captulo 15. Anlisis de sistemas digitales

Pgina 55

5.11- EL DISPLAY
Otra parte importante de la interfcie con el usuario, es el display. Para ello hemos conectado un LCD de diecisis caracteres por dos lneas, el cual se conecta directamente al bus de datos y es tratado como cualquier otro perifrico.

Figura 24. Esquema del display Al ser un dispositivo muy lento (es decir, tarda bastante en escribir un carcter en comparacin con la velocidad de la CPU) y restrictivo en lo referente a los tiempos de establecimiento y mantenimiento de las seales de control (es decir, necesita que la orden de lectura o escritura llegue pasado un cierto tiempo despus de que se haya selecciona el perifrico), nos hemos visto obligados a utilizar la direccin A15 directamente tal y como sale de la CPU (recordemos que es valida durante todo el ciclo). As al no pasar a travs del 74LS373 ganamos unos nanosegundos que nos son necesarios para cumplir los tiempos anteriormente mencionados. Esta direccin la utilizaremos, para diferenciar si realizamos un acceso de datos o de control. Antes de realizar ninguna operacin 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 operacin sobre el LCD. Hay que tener en cuenta, que este dispositivo, al contrario de los dems, funciona con lgica positiva. Por lo tanto el conexionado de las seales de control queda de la siguiente forma: * Seal 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. * Seal R/W. Cuando sta seal vale cero significa que la CPU escribe y cuando vale uno la CPU lee. Por eso utilizaremos la seal !SSO para indicar lectura/escritura. * La entrada de seleccin del dispositivo es activa por nivel alto, por lo tanto hay que invertir la salida de la lgica de seleccin de perifrico.

Captulo 15. Anlisis de sistemas digitales


5.11.1- PRCTICAS A REALIZAR 1. 2. 3. 4. 5. Seales implicados: A15, IO/!M, !SSO, !LCD y !WDOG. Disparo cuando se active la seleccin del LCD. Base de tiempos de 10 us/div. Iniciar la adquisicin. En el "prompt", escribir VER.

Pgina 56

Observar cuntos ciclos de lectura hace la CPU, antes de poder escribir un carcter. 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 propsito general compatible con el 8088. Esta formada por tres puertos: A, B y C . El puerto A, est a disposicin del alumno y tiene todas las seales a su disposicin dentro del Analizador. La direccin 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 cdigo mquina que acceda a la direccin 21 hexadecimal y luego ejecutarlo. De momento recomendamos la primera opcin. La salida del contador interno TOUT de la PIO, nos servir como base de tiempos para la comunicacin RS-232. A su salida tenemos una onda cuadrada de 19,2 KHz. La PIO, ha sido diseada para conectarla directamente a los buses y seales de control de la CPU. Y ella misma ya desmultiplexar los buses de datos y direcciones

Captulo 15. Anlisis de sistemas digitales

Pgina 57

Figura 25. Esquema de la PIO Adems esta PIO, dispone de 256 bytes de memoria interna, que no est mapeada 5.12.1- PRCTICAS A REALIZAR 1. 2. 3. 4. 6. Seales implicados: AD0, IO/!M, ALE, !PIO, !WR, PIO_A Bus. Disparo por !PIO=0 > 200 ns. Base de tiempos de 100 ns/div Iniciar la adquisicin. 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 direccin es impar, y IO/!M ndica una operacin de entrada/salida. En el momento en que la direccin es estable en el bus (ALE=1), la CPU selecciona el circuito de la PIO (!PIO=0), y enva 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 direccin 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).

Captulo 15. Anlisis de sistemas digitales

Pgina 58

Figura 26. Acceso a la PIO

5.13- ESTUDIO DE UNA COMUNICACIN RS-232


Como se puede observar en el esquema la interfcie RS-232 est formada por una USART 8251 y un MAX232.,que sirve para pasar del nivel TTL a +-12V que utiliza la transmisin serie. La conexin con el analizador se hace con un conector CANON de 9 pins. La comunicacin es bidireccional y a dos hilos: TxD y RxD. La placa del microprocesador en estudio se comunica con el Analizador a travs 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 enva un carcter XON (17 decimal) al transmisor y ste empieza la transmisin de los datos. Cuando el receptor tiene bastante, enva un carcter XOFF (19 decimal) al transmisor y este tiene que parar la transmisin hasta que reciba de nuevo un XON. La nica manera de seleccionar la RS232 es iniciar una transicin serie. Para ello se utiliza la orden del sistema operativo preparada para tal fin (ver apartado 3.1.9). Precaucin: no cargar de nuevo las etiquetas ,pues, se perdera la adquisicin actual.Una comunicacin serie tambin provoca interrupciones.

Captulo 15. Anlisis de sistemas digitales

Pgina 59

Figura 27. Esquema de la RS-232 Los relojes de transmisin (TXC) y recepcin (RXC) estn 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 comunicacin. La interrupcin que proviene del receptor es ms prioritaria que la del transmisor. As puede cortar la comunicacin cuando sea necesario.

5.13.1- PRCTICAS A REALIZAR Sabiendo que se trata de una comunicacin asncrona (figura 28) con un start bit, ocho bits de datos, un bit de paridad y un stop bit comprobar el valor de los cdigos XON y XOFF. Hay que poner una base de tiempos ms pequea 1.
2. 3. 4. 5. Seales implicados: TOUT, TXD y RXD Disparar por flanco de bajada de RXD Base de tiempos de 10 ms Preparar la adquisicin En el "prompt", escribir RS232

Las seales TxD y RxD estn vistas desde el punto de vista de la placa. Es decir, en TxD los datos viajan desde la placa haca el Analizador. Observar que realmente el Analizador para la comunicacin 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 transmisin asncrona

Captulo 15. Anlisis de sistemas digitales

Pgina 60

5.14- LOCALIZACIN 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, pg. 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 botn de reset. Los errores se han provocado sobre los elementos ms sencillos del sistema. Tales como: monoestables, multiplexores, buffers, etc. Es decir, dispositivos en los que es fcil 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 integracin tales como memorias, CPU, PIC, etc. se necesita someterlos a un examen exhaustivo. Estos dispositivos deben verificarse por separado y conectando unos estmulos determinados en sus entradas de control que nos permitan observar su funcionamiento. En un sistema como el nuestro, nos sera prcticamente imposible saber quien ha puesto un dato incorrecto en el bus de datos. Como orientacin de una bsqueda lgica 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 PROGRAMACIN EN CDIGO MQUINA


En este apartado el alumno deber realizar sus propios programas en cdigo mquina. El programa deber escribirse utilizando el editor de programas EDIT (apartado 3.2, pg. 19). A continuacin se hace una breve resumen de las instrucciones ms sencillas del 8088 y su codificacin. Instruccin:
2

CMP AL, val82

Indica un valor inmediato de 8 bits.

Captulo 15. Anlisis de sistemas digitales


Codificacin: Descripcin: Flags afectados: Instruccin: Codificacin: Descripcin: Flags afectados: Instruccin: Codificacin: Descripcin: Flags afectados: Instruccin: Codificacin: Descripcin:

Pgina 61

0x3C val8 Resta val8 del contenido del registro AL, pero no retorna resultado. La operacin afecta a los flags. Si son iguales, el flag de cero (ZF) se pone a uno. ZF DEC AX 0x48 Decrementa el contenido del registro AX ZF INC AX 0x40 Incrementa el contenido del registro AX ZF JMP desp 0xEB desp Efectua un salto incondicional. El desplazamiento debe estar comprendido entre -128 y +127 bytes de esta instruccin, es decir, desp es un valor con signo de 8 bits (complemento a dos, por lo tanto restar el nmero al valor 256 decimal). ninguno JC desp 0x72 desp Efecta un salto si se cumple la condicin CF = 1. El desplazamiento debe estar comprendido entre -128 y +127 bytes de esta instruccin. ninguno JNC desp 0x73 desp Efectua un salto si se cumple la condicin CF = 0. El desplazamiento debe estar comprendido entre -128 y +127 bytes de esta instruccin. ninguno JZ desp 0x74 desp Efectua un salto si se cumple la condicin ZF = 1. El desplazamiento debe estar comprendido entre -128 y +127 bytes de esta instruccin.

Flags afectados: Instruccin: Codificacin: Descripcin: Flags afectados: Instruccin: Codificacin : Descripcin: Flags afectados: Instruccin: Codificacin: Descripcin:

Captulo 15. Anlisis de sistemas digitales


Flags afectados: Instruccin: Codificacin: Descripcin: Flags afectados Instruccin: Codificacin: Descripcin: Flags afectados: Instruccin: Codificacin: Descripcin: Flags afectados: Instruccin: Codificacin: Descripcin: ninguno

Pgina 62

JNZ desp 0x75 desp Efectua un salto si se cumple la condicin ZF = 0. El desplazamiento debe estar comprendido entre -128 y +127 bytes de esta instruccin. ninguno MOV AL, val8 0xB0 val8 Transfiere val8 al registro AL. ninguno NOP 0x90 El procesador no hace nada. Pasa a ejecutar la instruccin siguiente. ninguno OUT puerto, AL 0xE6 puerto Transfiere el contenido del registro AL a un puerto de salida. El puerto es un valor comprendido entre 0 y 256. Los puertos de inters son: WatchDog, puerto = 0x40 Puerto A de la PIO, puerto = 0x21 ninguno RET FAR 0xCB Retorna de un procedimiento, previamente invocado mediante CALL FAR, utilizando como direccin de retorno la direccin salvada en la pila por CALL. ninguno ROL AL, 1 0xD0 0xC0 Rotar a la izquierda un bit el contenido del registro AL junto con el flag de acarreo (CF). CF ROR AL, 1 0xD0 0xC8

Flags afectados: Instruccin: Codificacin : Descripcin: Flags afectados: Instruccin: Codificacin : Descripcin: Flags afectados: Instruccin: Codificacin:

Captulo 15. Anlisis de sistemas digitales

Pgina 63

Descripcin:

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 INICI: INC AX OUT PIO, AL OUT WDOG, AL JMP INICI CODIGO MQUINA ; ; ; ; 0x40 0xE6 0x21 0xE6 0x40 0xEB 0xF9

La primera instruccin incrementa el acumulador. Es una instruccin de un slo byte. La segunda y la tercera, son un acceso de escritura a perifrico. Se codifican mediante dos bytes, el primero es el cdigo de la instruccin y el segundo es el nmero del puerto. La cuarta, es un salto relativo a la posicin actual. Se codifica mediante dos bytes, el primero es el cdigo de la instruccin 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 posicin hacia la derecha cada vez. Onda en forma de diente de sierra orientada a la izquierda. Una onda triangular (primero a la derecha y luego a la izquierda, asi sucesivamente).

2. 3.

Captulo 15. Anlisis de sistemas digitales

Pgina 64

Captulo 15. Anlisis de sistemas digitales

Pgina 65

Captulo 15. Anlisis de sistemas digitales

Pgina 66

Captulo 15. Anlisis de sistemas digitales

Pgina 67

Captulo 15. Anlisis de sistemas digitales

Pgina 68

Captulo 15. Anlisis de sistemas digitales

Pgina 69

Você também pode gostar