Análisis de sistemas digitales.pdf

Embed Size (px)

Citation preview

  • Captulo 15 Anlisis de sistemas digitales Indice

    15

    ANLISIS DE SISTEMAS DIGITALES

    1. TEORIA DE ANALIZADORES LGICOS

    1

    1.1. Introduccin 1

    1.2. Osciloscopios o analizadores lgicos? 2

    1.3. El Analizador lgico 3

    1.4. El Analizador de estados 6

    1.5. El disparo de los analizadores lgicos 6

    2. EL ANALIZADOR LGICO HP-1662A

    8

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

  • Captulo 15 Anlisis de sistemas digitales Indice

    2.15. Definir una secuencia de disparo 14

    3. LA UNIDAD DE PRUEBAS

    16

    3.1. El interprete de comandos 15

    3.2 El editor de programas 18

    4. EL MICROPROCESADOR 8088

    22

    4.1. Descripcin 21

    4.2. Los registros de la eu del 8088 22

    4.3. Los registros de la biu del 8088 36

    4.4. Unidad aritmtica/lgica. alu 23

    4.5. Buses 23

    4.6. MMU 23

    4.7. El patillaje de la cpu intel 8088 24

    4.8. Timings de la CPU 8088 29

    4.9. Ciclos de reposo 30

    4.10. La arquitectura pipeline 31

    5. REALIZACIN DE LA PRCTICA

    35

    5.1. Objectivos de la prctica 34

    5.2. Descripcin del sistema basado en la cpu 8088 34

    5.3. Configuracin del analizador 35

    5.4. Lneas generales a seguir 38

    5.5. El generador de reloj y el watchdog 40

    5.6. La CPU 44

    5.7. La memoria 59

    5.8. Acceso a perifrico 51

    5.9. El teclado 52

    5.11. El display 55

    5.12. La PIO 59

    5.13. Estudio de una comunicacin RS-232 59

  • Captulo 15 Anlisis de sistemas digitales Indice

    5.14. Localizacin de errores 60

    5.15. Programacin en cdigo mquina 61

    5.16 El Desensamblador 65

    Esquemas 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 MENS OPERACIONESSalvar y recuperar configuraciones

    DISK Formatear d iscosCopias d iscos

    SYSTEM EXTERNAL I/ O Selecionar la interfcie de comunicacionesConfigurar la interfcie de comunicaciones

    UTILITIES Utilidades del sistemaTEST Test del sistema

    ANALIZADOR CONFIGURATION Nombre del analizadorTipo de analizadorModo de adquisicin

    FORMAT Umbral lgicoANALYZER Asignacin de etiquetas

    Asignacin de smbolosBorrar secuencias de d isparo

    TRIGGER Definicin de trminosDefinicin de niveles de secuencia

    WAVEFORM Visualizacin de etiquetasMarkers

    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 interesen con el mando giratorio. Si el icono est sobre el campo Pods, el desplazamiento con el botn giratorio del Analizador ser horizontal a travs de las sondas del Analizador. Si el icono est sobre Labels, el desplazamiento ser vertical a travs de las etiquetas.

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

    para cambiarle el nombre, activarla o desactivarla.

    La segunda define la polaridad de la etiqueta. Dejarla en 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 Pgina 12

    5. Pulsar Insert 6. Pulsar DATOS. Pulsar Bus 7. Poner la base de tiempos a 200 ns 8. Pulsar RUN. 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"

    NOTA En la parte inferior de la pantalla, debajo de la lnea de los markers, aparece una "X" o una "O" para su mejor identificacin.

    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

    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.

  • Captulo 15. Anlisis de sistemas digitales pgina 16

    16

    3.1.3- LA ORDEN " ERROR "

    Esta orden forzar al programa a provocar un error de hardware. Se pueden generar hasta cinco errores diferentes. Generado el error, el sistema dejar de funcionar. La nica manera de recuperar las condiciones de funcionamiento normal, es pulsar el 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.

  • Captulo 15. Anlisis de sistemas digitales pgina 17

    17

    3.1.7- LA ORDEN " PCX "

    Esta orden hace un volcado de la pantalla actual del Analizador en disco. La imagen de la pantalla se grabar en formato PCX de 16 tonos de grises. Si se desea cualquier otro formato tendr que realizarse a 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.

  • Captulo 15. Anlisis de sistemas digitales pgina 18

    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.

  • Captulo 15. Anlisis de sistemas digitales pgina 19

    19

    3.2.3- " MODIFICAR " UNA POSICIN DE MEMORIA

    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.

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

    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.

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

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

    Figura 7. Crear una direccin

  • 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 El smbolo ! indica negacin, o que es activa por nivel bajo. 2Entrada/Salida 3iAPX88 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.

    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.

    !SSO DT/!R IO/!M FUNCION0 0 1 Reconocimiento de interrupcin1 0 1 Lectura perifrico de E/S0 1 1 Escritura perifrico de E/S1 1 1 Ciclo de espera0 0 0 Ciclo de lectura de instruccin1 0 0 Lectura memoria0 1 0 Escritura memoria1 1 0 Pasivo

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

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

    Figura 9. Ejecucin secuencial de un programa

  • Captulo 15. Anlisis de sistemas digitales Pgina 31

    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.

    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

    Figura 10. Unidades funcionales de la CPU

    Figura 11. La arquitectura Pipeline

  • 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. Encender el Analizador lgico. En pocos segundos aparecer una pantalla. 2. Encender la unidad de pruebas. Aparecer por pantalla el mensaje de . presentacin. 3. Entrar en el grupo SYSTEM. 4. Entrar en el men de EXTERNAL I/O. 5. En el men Controller seleccionar Connected to RS-232C. 6. Pulsar sobre RS-232 Settings. Aparecer la pantalla de especificaciones. 7. Fijar baud rate 19.2 K 8. Fijar parity Even. ( par) 9. El resto dejarlo como est. 10. Pulsar Done para finalizar.

  • 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. Volver al grupo ANALYZER. 2. 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.

    1A 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 Pgina 37

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

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

    Tabla 3. Conexiones de los canales del analizador al sistema

  • 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 7 8 9 .

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

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

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

    DT/!R!DENINTR!INTA

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

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

    Grupo 2. Son las 10 seales necesarias para estudiar el funcionamiento de la

    CPU. Es el bus de control. Grupo 3. Los tres vectores de interrupcin. Grupo 4. Las seales de seleccin de memoria.

  • Captulo 15. Anlisis de sistemas digitales Pgina 39

    Grupo 5. Las seales de seleccin de perifrico. Grupo 6. Reloj y datos del teclado. Grupo 7. Reloj y datos de la comunicacin RS-232. Grupo 8. Seales para el estudio del WatchDog. Grupo 9. 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(; ;) { // Bucle infinito

    Lee Teclado(); Escribe Pantalla(); WatchDog(); // 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); // Escribe un byte en el puerto 40 hexadecimal }

    5.5.2- PRECAUCIONES - Debe tenerse en cuenta, que aunque un sistema se haya colgado, las interrupciones pueden seguir funcionando correctamente, por lo tanto 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. - 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 Pgina 42

    5.5.3- EL GENERADOR DE RELOJ Y RESET DEL SISTEMA

    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. Entrar en el men de WAVEFORM. 2. Pulsar dos veces sobre el campo de etiquetas. Elegir la opcin de borrar todas las

    etiquetas y confirmar. 3. 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.

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

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

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

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

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

    10. Pulsar el botn de RUN. 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 olvidarse de borrar la secuencia de disparo anterior. 12. Volver al men de WAVEFORM. 13. Poner una base de tiempos generosa, de aproximadamente 100 ms/div. 14. Pulsar RUN. Vemos que el analizador est a la espera de que se cumpla la condicin de disparo. 15. En el prompt, escribir la orden RESET (apartado 3.1.8, pg 17). Como se ha explicado antes, se trata de un bucle infinito.

    Al cabo de unos instantes, en la pantalla de la unidad de pruebas, habr aparecido el mensaje de 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 DT/!R IO/!M Funcin

    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 1 1 0 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 Pgina 47

    5.6.1- PRCTICAS A REALIZAR

    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. Entrar en el men de FORMAT. 2. Seleccionar la primera etiqueta que no esta asignada (despus de PIO_A). Elegir la

    opcin de MODIFY. 3. Poner por ejemplo, el nombre CICLO. Automticamente queda activada. 4. 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 no se ha introducido ningn

    smbolo saldr New Symbol. 6. Cambiar la etiqueta por CICLO y poner la base en binario. 7. Seleccionar el smbolo. Elegir Add a Symbol (aadir un smbolo), y escribir FETCH. 8. 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. Pulsar Done para salir. 10. Entrar en el men de WAVEFORM. 11. Borrar todas las seales. 12. Aadir las nuevas seales. Se recomienda; CLOCK, !SSO, ALE, IO/!M, !RD o !WR,

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

    Una vez definida la secuencia de disparo, para estudiar el resto de ciclos 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 d