Monday, October 23, 2006

EL CONTROLADOR DE INTERRUPCIONES 8259

COMO Y POR QUE DE LAS INTERRUPCIONES

Los ordenadores se comunican con el exterior por medio de los dispositivos de entrada y salida. Estos dispositivos son normalmente lentos en comparación con la elevada velocidad de la unidad central. Un ejemplo típico puede ser el teclado: entre las pulsaciones de cada tecla hay un espacio de tiempo impredecible y dependiente del usuario. Una manera simple de gestionar los dispositivos de E/S consiste en comprobar continuamente si alguno de ellos tiene un dato disponible o lo está solicitando. Sin embargo, esto supone una importante pérdida de tiempo para el microprocesador, que mientras tanto podría estar haciendo otras cosas. En una máquina multitarea y/o multiusuario, resulta más interesante que los periféricos puedan interrumpir al microprocesador para solicitarle una operación de entrada o salida en el momento necesario, estando la CPU liberada de la misión de comprobar cuándo llega ese momento. Cuando se produce la interrupción, el microprocesador ejecuta la correspondiente rutina de servicio y después continúa con su tarea normal. Los compatibles PC poseen un hardware orientado por completo a la multitarea (otra cosa es que el 8086 y el DOS no la aprovechen) y la entrada/salida se gestiona casi por completo mediante interrupciones en todas las máquinas. Por ejemplo, en las operaciones de disco, cuando acaba la transferencia de datos se produce una interrupción de aviso y una rutina de la BIOS activa una variable que lo indica, en el segmento de memoria 40h. Las propias funciones de la BIOS para acceder al disco se limitan a chequear continuamente esa variable hasta que cambie, lo que significa un evidente desaprovechamiento de las posibilidades que la gestión por interrupciones pone a nuestra disposición.

Las interrupciones añaden cierta complejidad al diseño del hardware: en principio, es necesario jerarquizarlas de alguna manera para decidir cuál se atiende en el caso de que se produzcan dos simultáneamente. También es importante el control de prioridad para el caso de que se produzca una interrupción mientras se está procesando otra: sólo se la atenderá si es de mayor prioridad. En este capítulo sólo consideraremos las interrupciones hardware, no las de software ni las excepciones del procesador.

DESCRIPCIÓN DEL INTEGRADO 8259

Este circuito integrado está especialmente diseñado para controlar las interrupciones en sistemas basados en el 8080/8085 y en el 8086. Puede controlar hasta 8 interrupciones vectorizadas. Además, a un 8259 se le pueden conectar en cascada un máximo de 8 chips 8259 adicionales, lo que permite gestionar sistemas con hasta 64 interrupciones, como veremos. El significado e interpretación de las señales se muestra:

-CS: Habilita la comunicación con la CPU.

-WR: Permite al 8259 aceptar comandos de la CPU.

-RD: Permite al 8259 dejar la información en el bus de datos.

-D7..D0: Bus de datos bidireccional, por el que se transmite la información de control/estado y el número de vector de interrupción.

-CAS0..CAS2: Líneas de cascada, actúan como salida en el 8259 maestro y como entrada en los 8259 esclavos, en un sistema con varios 8259 interconectados, constituyendo un bus local.

-SP/-EN: Pin de doble función: en el buffered mode del 8259 actuará como -EN, para habilitar los buffers del bus; en el modo normal indicará si el 8259 es maestro o esclavo (-SP).

-INT: Conectado a la patilla INT de la CPU para producir la interrupción cuando llegue el momento.

-IR0..IR7: Líneas asíncronas de petición de interrupción. Una petición de interrupción se ejecuta manteniendo IR en alto hasta que se recibe el reconocimiento (modo por flancos) o simplemente poniendo en alto la línea IR (modo por niveles).

-INTA: Línea de reconocimiento de interrupción, por medio de esta línea se fuerza al 8259 a depositar en el bus la información del vector de interrupción. INTA es independiente de -CS.

-A0: En conjunción con -CS, -WR y -RD es empleada para enviar las palabras de comando al 8259 y para solicitar información al mismo. Suele ir conectada a la línea A0 de la CPU.

DESCRIPCIÓN FUNCIONAL

El diagrama funcional del 8259, con la estructura interna de las diversas partes que lo componen, es el siguiente:

Los principales registros internos del 8259 son el IRR (Interrupt Request Register) y el ISR (In Service Register).

El IRR almacena todas las peticiones de interrupción pendientes
El ISR almacena todas las interrupciones que están siendo atendidas en un momento dado.
La lógica de gestión de prioridad determina qué interrupción, de las solicitadas en el IRR, debe ser atendida primero: cuando lleguen las señales INTA dicha interrupción será la primera procesada y su bit correspondiente se activará en el ISR.
El buffer del bus de datos conecta el 8259 con el bus de datos de la placa principal del ordenador: su diseño en 3 estados permite desconectarlo cuando sea necesario; a través de este bus circulan las palabras de control y la información de estado.
La lógica de lectura y escritura acepta los comandos que envía la CPU: aquí hay registros para almacenar las palabras de inicialización y operación que envía el procesador; también sirve para transferir el estado del 8259 hacia el bus de datos. El buffer de cascada/comparador almacena y compara las identificaciones de todos los 8259 que posea el sistema: el 8259 maestro envía la identificación del 8259 esclavo en las líneas CAS, los 8259 esclavos la leen y el implicado en la operación coloca en el bus de datos la dirección (vector) de la rutina que atenderá la interrupción en los 2 próximos (o el próximo) ciclos INTA.

FUNCIONAMIENTO DEL 8259

El funcionamiento del 8259 varía ligeramente en función del sistema en que esté instalado, según sea este un 8086 o un 8080/8085. Veremos primero el caso del 8086:

1) Una o más líneas IR son activadas por los periféricos, lo que pone a 1 el correspondiente bit del IRR.

2) El 8259 evalúa la prioridad de estas interrupciones y solicita la interrupción a la CPU (línea INT) si es necesario.

3) Cuando la CPU reconoce la interrupción, envía la señal -INTA.

4) Nada más recibida la señal -INTA de la CPU, el 8259 activa el bit correspondiente a la interrupción de mayor prioridad (la que va a ser procesada) en el ISR y lo borra en el IRR. En este ciclo, el 8259 aún no controla el bus de datos.

5) Cuando la CPU envía un segundo ciclo -INTA, el 8259 deposita en el bus de datos un valor de 8 bits que indica el número de vector de interrupción del 8086, para que la CPU lo pueda leer.

6) En el modo AEOI del 8259, el bit de la interrupción en el ISR es borrado nada más acabar el segundo pulso -INTA; en caso contrario, ese bit permanece activo hasta que la CPU envíe el comando EOI al final de la rutina que trata la interrupción (caso más normal).

En el caso de sistemas basados en el 8080/8085, el funcionamiento es idéntico hasta el punto (3), pero a continuación sucede lo siguiente:

4) Nada más recibida la señal -INTA de la CPU, el 8259 activa el bit correspondiente a la interrupción de mayor prioridad (la que va a ser procesada) en el ISR y lo borra en el IRR. En este ciclo, el 8259 deposita en el bus de datos el valor 11001101b, correspondiente al código de operación de la instrucción CALL del 8080/85.

5) Esta instrucción CALL provoca que la CPU envíe dos pulsos -INTA.

6) El 8259 utiliza estos dos pulsos -INTA para depositar en el bus de datos, sucesivamente, la parte baja y alta de la dirección de memoria del ordenador de la rutina de servicio de la interrupción (16 bits).

7) Esto completa la instrucción CALL de 3 bytes. En el modo AEOI del 8259, el bit de la interrupción en el ISR es borrado nada más acabar el tercer pulso -INTA; en caso contrario, ese bit permanece activo hasta que la CPU envíe el comando EOI al final de la rutina que trata la interrupción.

Si en el paso (4), con ambos tipos de microprocesador, no está presente la petición de interrupción (por ejemplo, porque ha sido excesivamente corta) el 8259 envía una interrupción de nivel 7 (si hubiera un 8259 conectado en IR7, las líneas CAS permanecerían inactivas y la dirección de la rutina de servicio de interrupción sería suministrada por el 8259 maestro).

PROGRAMACIÓN DEL 8259

El 8259 acepta dos tipos de comandos generados por la CPU: los ICW (Inicialization Command Word) que inicializan el 8259, y los OCW (Operation Command Word) que permiten programar la modalidad de funcionamiento. Antes de que los 8259 de un sistema comiencen a trabajar deben recibir una secuencia de ICW que los inicialice. Los ICW y OCW constan de secuencias de 2 a 4 comandos consecutivos que el 8259 espera recibir secuencialmente, unos tras otros, a través del bus de datos, según sea necesario (el propio 8259 se encarga de contarlos midiendo los pulsos de la línea -WR). Los OCW pueden ser enviados en cualquier momento, una vez realizada la inicialización.

La comunicación con el 8259 emplea las líneas -WR y -RW, así como A0. El hecho de que exista una sola línea de direcciones implica que el 8259 sólo ocupa dos direcciones de puerto de E/S en el espacio de entrada y salida del ordenador.

ICWS (Inicialization Command Words).

ICW1: Cuando un comando es enviado con A0=0 y D4=1, el 8259 lo interpreta como la primera palabra de la inicialización (ICW1) e inicia dicha secuencia de inicialización, lo que implica lo siguiente:

- Se resetea el circuito sensible a los niveles, lo que quiere decir que hasta nueva orden las líneas IR serán sensibles por flancos de transición bajo-alto.
- Se limpia el IMR.
- A la línea IR7 se le asigna un nivel de prioridad 7.
- Se desactiva el Special Mask Mode. Se queda listo para devolver IRR en la próxima lectura OCW3.
- Si IC4 (bit D0) es 0, todas las funciones seleccionadas en ICW4 serán puestas a 0 (non buffered mode, no AEOI, sistema 8080/85) e ICW4 no será necesaria.



Notas: Si SNGL es 1 significa que el 8259 es único en el sistema y no será enviada ICW3. Si IC4 es 0, tampoco será enviada ICW4. En el 8080/85, las diversas interrupciones generan CALL's a 8 direcciones adyacentes separadas 4 u 8 bytes (según indique ADI): para componer la dirección, el 8259 inserta A0..A4 (o A0..A5) convenientemente, según la interrupción que se trate. En el 8086, A7..A5 y ADI son ignoradas.
ICW2: Se envía con A0=1, para diferenciarlo de ICW0 (hacer OUT a la siguiente dirección de puerto).

Notas:En el 8080/85, A15..A8 completan la dirección de la rutina de servicio; en el 8086, T7..T3 determinan los cinco bits más significativos del número de vector de interrupción a invocar (los 3 bajos los suministra el 8259 según la interrupción que se trate).
ICW3: Se envía sólo en el caso de que haya más de un 8259 en el sistema (bit SNGL de ICW1 a cero), en caso contrario en su lugar se enviaría ICW4 (si procede).
Formato de ICW3 a enviar a un 8259 maestro:

Formato de ICW3 a enviar a un 8259 esclavo para que memorice de qué línea IR del maestro cuelga:

ICW4: Se envía sólo si IC4=1 en ICW1, con objeto de colocar el 8259 en un modo de operación distinto del establecido por defecto (que equivale a poner a cero todos los bits de ICW4).

Notas:El Special Fully Nested Mode, el buffered mode y la modalidad AEOI serán explicadas más tarde. Nótese que con el 8086 es obligatorio enviar ICW4 para seleccionar esta CPU.

OCWS (Operation Command Words).

Una vez inicializado, el 8259 está listo para procesar las interrupciones que se produzcan. Sin embargo, durante su funcionamiento normal está capacitado para recibir comandos de control por parte de la CPU.

OCW1:

Este comando activa y borra bits en el IMR (Interrupt Mask Register). Los bits M0..M7 de OCW1 se corresponden con sus correspondientes bits del IMR. Un bit a 1 significa interrupción enmascarada (inhibida) y a 0, interrupción habilitada.
OCW2:

OCW3:


TRABAJANDO CON EL 8259
En las ICW y, sobre todo, en las OCW, se han introducido un aluvión de elementos nuevos que serán explicados a continuación.

Fully Nested Mode.

Por defecto, el 8259 opera en esta modalidad (modo de anidamiento completo), a menos que se le programe de otra manera. En este modo las interrupciones quedan ordenadas, por prioridades, de 0 (máxima) a 7 (mínima). Cuando se produce un reconocimiento de interrupción por parte de la CPU, el 8259 evalúa cuál es la interrupción pendiente de mayor prioridad, coloca su número de vector en el bus y activa su bit correspondiente en el ISR. Este bit permanece activo hasta que el 8259 recibe el comando EOI (situación más normal); sin embargo, en el modo AEOI, ese bit se bajaría inmediatamente después del último -INTA. Mientras el bit del ISR esté activo, todas las interrupciones de igual o menor prioridad que lleguen permanecen inhibidas; sin embargo, las de mayor prioridad podrán interrumpir. En el caso del 8086, cuando comienza el tratamiento de la interrupción, un bit del registro de estado de la CPU mantiene inhibidas todas las interrupciones: lo normal es que el programa de control comience con STI para permitir que el 8086 envíe nuevas señales INTA al 8259, así el 8259 podrá enviar las interrupciones de mayor prioridad que le lleguen. Tras la secuencia de inicialización, las interrupciones quedan ordenadas de mayor (IR0) a menor prioridad (IR7), aunque este orden puede modificarse en la modalidad de prioridad rotatoria o con el comando de asignación de prioridad. Nótese que cuando se utiliza el modo AEOI o el Special Mask Mode no se respeta el modo Fully Nested Mode (debido a que una interrupción de menor prioridad podría interrumpir a una rutina que gestiona otra de mayor prioridad).

Special Fully Nested Mode.

Se emplea en sistemas que tienen varios 8259 conectados. Sólo el 8259 maestro es programado en este modo, lo que implica las siguientes diferencias respecto al Fully Nested Mode normal:

- Cuando se atiende una interrupción de un 8259 esclavo, si viene otra de mayor prioridad de ese mismo 8259 esclavo, se provoca una interrupción al maestro (normalmente, el 8259 esclavo estaría enmascarado mientras se procesa una de sus interrupciones).

- Cuando acaba la rutina de servicio de interrupción, hay que enviar un EOI no-específico al 8259 esclavo; además hay que leer a continuación su ISR y comprobar si es cero: en ese caso, hay que enviar además otro EOI al 8259 maestro (si no es cero significa que aún hay interrupciones en proceso en el 8259 esclavo).

Modos de EOI.

El EOI (End Of Interrupt) sirve para bajar el bit del ISR que representa la interrupción que está siendo procesada. El EOI puede producirse automáticamente (AEOI) al final de la última señal INTA que envía la CPU al 8259 para una interrupción dada (tercer ciclo INTA en el 8080/85 y segundo en el 8086); sin embargo, la mayoría de los sistemas requieren una gestión de prioridades en las interrupciones, lo que significa que es más conveniente que EOI lo envíe el propio procesador al 8259, a través de OCW2, cuando acabe la rutina de gestión de interrupción, para evitar que mientras se gestiona esa interrupción se produzcan otras de igual o menor prioridad. En un sistema con varios 8259, el EOI debe ser enviado no sólo al 8259 esclavo implicado sino también al maestro. Hay dos modalidades de EOI: la específica y la no-específica. En el EOI no específico, el 8259 limpia el bit más significativo que esté activo en el ISR, que se supone que es el correspondiente a la última interrupción producida (la de mayor prioridad y que está siendo procesada). Esto es suficiente para un sistema donde se respeta el Fully Nested Mode. En el caso en que no fuera así, el 8259 es incapaz de determinar cuál fue el último nivel de interrupción procesado, por lo que la rutina que gestiona la interrupción debe enviar un EOI específico al 8259 indicándole qué bit hay que borrar en el ISR.

Rotación de prioridades.

Hay sistemas en que varios periféricos tienen el mismo nivel de prioridad, en los que no interesa mantener un orden de prioridades en las líneas IR. En condiciones normales, nada más atender una interrupción de un periférico, podría venir otra que también se atendería, mientras los demás periféricos se cruzarían de brazos. La solución consiste en asignar el menor nivel de prioridad a la interrupción recién atendida para permitir que las demás pendientes se procesen también. Para ello se envía un EOI que rote las prioridades: si, por ejemplo, se había procesado una IR3, IR3 pasará al menor nivel de prioridad e IR4 al mayor, quedando las prioridades ordenadas (de mayor a menor): IR4, IR5, IR6, IR7, IR0, IR1, IR2, IR3. Existe también una rotación específica de prioridades, a través de OCW2, que puede realizarse en un comando EOI o independientemente del mismo (comando para asignar prioridad).

Special Mask Mode.

Hay ocasiones en las que mientras se ejecuta una rutina de servicio de interrupción es necesario permitir que se produzcan ciertas interrupciones de menor prioridad en algunos momentos, o prohibirlo en otros, sin ser quizá interesante enviar el EOI antes de tiempo. Esto implica alterar la estructura normal de prioridades. La manera de realizar esto es activando el Special Mask Mode a través de OCW3 durante la rutina de servicio de interrupción (es más que conveniente inhibirlo de nuevo al final). Una vez activado este modo, el IMR indica qué interrupciones están permitidas (bit a 0) y cuáles inhibidas (bit a 1). Por ello, suele ser conveniente activar el bit del IMR correspondiente a la IR en servicio (para evitar que se produzca de nuevo cuando aún no ha sido procesada). Al final hay que enviar un EOI específico, ya que este modo de trabajo altera el Fully Nested Mode habitual.

Comando POLL.

En esta modalidad poco habitual, habilitada a través de OCW3, no se emplea la salida INT del 8259 o bien el microprocesador trabaja con las interrupciones inhibidas. El servicio a los periféricos es realizado por software utilizando el comando POLL. Una vez enviado el comando POLL, el 8259 interpreta la próxima lectura que se realice como un reconocimiento de interrupción, actualizando el ISR y consultando el nivel de prioridad. Durante esa lectura, la CPU obtiene en el bus de datos la palabra POLL que indica (en el bit 7) si hay alguna interrupción pendiente y, en ese caso, cuál es la de mayor prioridad (bits 0-2).

Lectura de información del 8259.

El IMR puede ser leído a través de OCW0; para leer el contenido del IRR y el ISR hay que emplear OCW3. Para estos dos últimos registros hay que enviar una OCW3 que elija el IRR o el ISR; a continuación se puede leer el bus de datos (A0=0) sin necesidad de enviar más OCW3 (el 8259 es capaz de recordar si tiene que leer el IRR o el ISR). Esto último no es así, evidentemente, en el caso de utilizar el comando POLL (tras enviarlo, la próxima lectura se interpreta como un INTA). Tras inicializarse, el 8259 queda preparado por defecto para devolver IRR a la primera lectura.

Buffered Mode.

Al emplear el 8259 en grandes sistemas, donde se requieren buffers en los buses de datos, si se va a emplear el modo cascada existe el problema de la habilitación de los buffers. Cuando se programa el modo buffer, la patilla -SP/-EN del 8259 actúa automáticamente como señal de habilitación del los buffers cada vez que se deposita algo en el bus de datos. Si se programa de esta manera el 8259 (bit BUF de ICW4) será preciso distinguir por software si se trata de un 8259 maestro o esclavo (bit M/S de ICW4).

LABORATORIO # 5

OPERACIONES CON LA MEMORIA EEPROM 2816

INTRODUCCIÓN

El circuito integrado EEPROM 2816 es una memoria reprogramable y borrable que contiene 2048 localidades de memoria con 8 bits cada una, (2K X 8) y opera con una sola fuente de alimentación de + 5 Volts, con tiempos similares a los de una RAM estática en modo de lectura, tiene dos modos de programación una de +5 Volts y otra de alto voltaje.

El modo de programación de +5 Volts se inicia con un pulso de escritura con una transición alto/bajo de nivel TTL con una duración de 200 nseg, el circuito automáticamente borra el byte seleccionado antes de escribir otro dato nuevo, se completa un ciclo de borrado/escritura en un tiempo máximo de 10 mseg, el tiempo de acceso a lectura es de 250 nseg, todas sus salidas son compatibles con la tecnología TTL.

OBJETIVOS

Experimentar la escritura y lectura manuales en la memoria EEROM 2816, utilizando los interruptores y circuitos indicadores montados en el entrenador de microprocesadores 8085 al mismo tiempo de verificar la no volatilidad de este tipo de memorias.

Parte 1

Lea detenidamente el marco teórico de la LECCIÓN 6 ROM y realice la experiencia indicada en la sección de PROCEDIMIENTO.

LECCIÓN 6

MEMORIA ROM


En la lección 3 hemos escrito y leído la memoria de acceso aleatorio(RAM) 8156.
Cuando la alimentación fue cortada, se perdieron los datos de la memoria. Se perdería
mucho tiempo si los programas de la computadora fueran almacenados en una RAM y
tendrían que ser recargados manualmente cada vez que se corte la alimentación. Sin
embargo, es necesario que por lo menos un programa (denominado programa monitor)
resida en una memoria no volátil de solo lectura (ROM). En la ROM, los datos serán
retenidos cuando se corte la alimentación. Las memorias de solo lectura se pueden
dividir en dos grandes tipos; ROMs borrables y no borrables. Las ROMs borrables
tienen algún método de retirar el programa almacenado en ellas (tal como la exposición a luz ultravioleta). Las ROMs no borrables son programadas una sola vez y no pueden ser cambiadas después de su programación. La Memoria de Solo Lectura utilizada en el sistema MM-8000 es la 2816 Memoria Borrable Eléctricamente y Programable de Solo Lectura (E2 PROM). Como su nombre implica, el 2816 es eléctricamente reprogramable casi de la misma manera que la RAM 8156. Debido a la manera en que los datos son almacenados en la 2816, se requieren 10 ms para completar la operación de escritura.

El 2816 contiene mas de 2000 posiciones de memoria cada una capaz de almacenar 1
byte de 8 bits (Toda la pastilla puede almacenar aproximadamente 16.000 o 16K bits,
por lo que su nombre es 2816). Como se muestra en la figura 6-1, las líneas de entrada y salida del 2816 son las siguientes:

LINEAS DE DIRECCIONAMIENTO (A0 a A10)

Estas 11 líneas de direccionamiento dicen en que posición de memoria de las 2000 del
2816 se va ha escribir o leer.

LINEAS DE ENTRAD/SALIDA (I/O0 a I/O7)

Durante la operación de escritura, los datos en estas líneas se almacenan en la posición de memoria de la dirección (A0 a A11). A diferencia del 8156, este CI utiliza líneas distintas para el direccionamiento y los datos. Durante la operación de lectura, los datos especificados por las líneas de dirección, son colocados en las líneas de I/O.

HABILITACION DE CHIP (/C/E)

Es una línea de nivel activo bajo. Un nivel bajo sobre esta línea dice al 2816 que los comandos presentes en las líneas de habilitación de escritura (⎯W⎯E) y habilitación de salida (/O/E) son para este circuito y no para otro.

HABILITACION DE SALIDA (/C/E)

Esta línea sirve para el mismo propósito que la línea /R/D del 8156. Un nivel bajo en
/O/E conjuntamente con un nivel bajo en /C/E y un nivel alto en /W/E dejan pasar
los datos almacenados en la dirección especificada en las líneas de Entrada/Salida..

HABILITACION DE ESCRITURA (/W/E)

Esta línea sirve para el mismo propósito que la señal /W/R en el 8156. Un nivel bajo
en la línea /W/E y un nivel alto en la línea /O/E almacena, los datos presentes en las líneas de Entrada/Salida, en la dirección especificada.

En la lección 3 el bus de datos fue utilizado tanto para bytes de direcciones como para datos. Primero, el Byte Menos Significativo (LSB) de la dirección fue colocado en el bus de datos y registrado en el registro de direcciones interior del 8156.

Seguidamente, el bus de datos fue utilizado para transmitir datos de y a memoria. El direccionamiento del 2816 difiere en dos aspectos significativos. Primero, como el 2816 no tiene un registro interno de direcciones, se le debe proporcionar externamente. El MM-8000 usa el registro octal transparente tipo D 74HCT573 para este propósito. Segundo, tres líneas adicionales A8, A9 y A10 del Byte Más Significativo (MSB) de la dirección son ligados al 2816. Estas son necesarias para manipular la mayor capacidad de memoria. Con estas excepciones la lectura y escritura del 2816 es similar al 8156. El siguiente experimento demostrará este hecho.

DESCRIPCIÓN DEL CIRCUITO

La figura 6-3 muestra los componentes adicionados en la lección 6. El registro octal
transparente tipo D que consta de 8 registros independientes controlados por una entrada de control( C). Cuando C está en nivel alto, los registros son transparentes. Un nivel alto en las entradas D determinarán un nivel alto en las salidas Q respectivas. Un nivel bajo en las entradas D determinarán un nivel bajo en las salidas Q respectivas. Cuando C pasa a nivel bajo, los datos que estaban presentes en los registros son retenidos en las salidas Q sin importar cualquier cambio posterior en las entradas D. La señal ALE es conectada a la entrada C del 74HCT573. Cuando se presiona la tecla ALE. La línea ALE pasa a nivel alto y el Byte Menos Significativo de la dirección en el bus de datos/dirección es pasado a través de los registros transparentes a las entradas de dirección A0 a A7 del 2816. Cuando se suelta el botón ALE, la dirección es retenida en las entradas A0 a A7. El bus de datos/direcciones se libera entonces para pasar datos a y desde los pines I/O del 2816. Las líneas de dirección A8, A9, y A10 están conectadas a los pines apropiados del 2816. En una posterior lección éstas también se conectarán al microprocesador 8085-A. En ésta lección, A9 y A10 están polarizadas a nivel bajo (0) a través de las resistencias R67 y R68. La línea A8 está conectada al borne central del interruptor A8. Cuando el interruptor esta arriba, se aplica un nivel alto a A8 por medio
de la resistencia R41. Cuando el interruptor esta abajo, se aplica un nivel bajo a A8 por medio de la resistencia R42. La línea de lectura (RD) está conectada al pin /O/E y es utilizada para el paso de los datos del 2816 al bus de datos. La entrada /W/E del 2816 está ligada a la parte superior del interruptor WEN. Con el interruptor WEN en la posición superior, la entrada /W/E esta conectada a la línea de escritura como se muestra en la figura 3-3. El botón WR puede ser utilizado para escribir datos en la memoria del 2816. Presionando el botón WR liga la entrada /W/E a nivel bajo a través de las resistencias R10, R11 y R12.

Liberando el botón WR liga la entrada /W/E a nivel alto a través de las resistencias
R10 y R11. Si el interruptor WEN esta en la posición baja, el botón WR se desconecta
de la entrada /W/E. La entrada /W/E es ligada al nivel alto a través de la resistencia R11 y se inhibe la escritura. Para prevenir borrados accidentales del 2816, el interruptor WEN deberá estar siempre en la posición de abajo cuando se encienda o apague la energía.


El borne central del interruptor de habilitación de la ROM (ENROM) esta conectado, a
través del puente J1, a la entrada /C/E del 2816. Con el interruptor en la posición
superior la entrada /C/E se liga a nivel bajo. Entonces el 2816 responderá a las órdenes de las líneas W/E y /O/E. Con el interruptor en la posición inferior la entrada /C/E se liga a nivel alto a través de la resistencia R44 y el 2816 es inhibido de responder las órdenes de las líneas W/E y /O/E. En una lección posterior, el micro procesador 8085 utilizará la línea A15 para habilitar y deshabilitar el 2816.

PROCEDIMIENTO

1. Poner en la posición inferior los interruptores ENROM y ENRAM, para
deshabilitar tanto la ROM como la RAM.

2. Poner el interruptor WEN en la posición inferior para asegurar que el 2816 no
será escrito durante el proceso de encendido.

3. Conectar la fuente de alimentación y encenderla.

4. Poner el interruptor ENROM en la posición superior para habilitar el CI 2816.

5. Poner el interruptor WEN en la posición superior para permitir la escritura en el
CI 2816.

6. Poner el interruptor A8 en la posición inferior para escribir datos a la posición
de memoria 000H a 0FFH.

7. Poner los interruptores de datos a 0000 0000.

8. Presionar el botón ALE para registrar en el registro 74HCT573 la dirección
colocada en los interruptores de datos.

9. Poner los interruptores de datos a 0000 0011.

10. Presionar el botón WR para escribir este dato en el 2816.

11. Repetir los pasos 7 al 10 cambiando la dirección del paso 7 y los datos del paso
9 para escribir en las posiciones de memoria direccionadas del 2816 los datos
mostrados en la tabla 6-1.

12. Verificar los datos almacenados en cada dirección repitiendo los pasos 7 y 8
para retornar a cada dirección y presionar el botón RD para leer los datos
almacenados.

13. Poner el interruptor WEN en la posición inferior para prevenir más escrituras en
el 2816 y asegurarse que al 2816 no se le dará un comando de escritura no
deseado durante el apagado y encendido.

14. Apagar la alimentación.

15. Encenderla nuevamente.

16. Repetir el paso 12 para verificar que los datos almacenados en el 2816 no se
perdieron cuando se le quitó la alimentación.

17. Poner el interruptor A8 en la posición superior para cambiar la línea A8 a 1 y
como A9 y A10 están en 0, El rango de memoria direccionable para escritura y
lectura es de la posición 100H a 1FFH.

18. Poner el interruptor WEN en la posición superior para permitir la escritura en el
2816.

19. Repetir los pasos 7 al 10 cambiando la dirección en el paso 10 y los datos en el
paso 9 para escribir los datos de la tabla 6-2 al 2816.

20. Repetir el paso 13.

21. Verificar los datos almacenados en cada dirección repitiendo los pasos 7 y 8
para regresar a cada dirección y luego presionando el botón RD.

22. Poner el interruptor A8 en la posición inferior para regresar a las direcciones
000H a 0FFH y repetir el paso 12 para verificar que los datos en la tabla 6-1 están aún almacenados en esas posiciones de memoria.

23. Apagar el equipo.

CONCLUSIONES

En este laboratorio pudimos ver como se hace la lectura y escritura manual en la memoria EEROM 2816 y para eto utilizamos interruptores y circuitosindicadores que ya vienen montado en el microtrainer 8085.

Se pudo sacar la conclusión de que esta memoria es no volatil ya que cuando desconectamos la fuente de alimentación y la volvimos a conectar la información no se perdió y seguía almacenada.

Vimos que esta memoria tiene seis modos de operación, los modos de programación están diseñados para proporcionar compatibilidad máxima con los microprocesadores, el chip EEPROM 2816 es una memoria no volátil como ya dije anteriormente, y todas las tensiones que usa son compatibles, con la tecnología TTL con la excepción del modo de borrado total de la memoria, en este modo el voltaje se debe subir arriba de +9 Volts, en las otras formas se debe sostener a + 5 Volts durante la escritura y la lectura.

Un dato es leído de la memoria EEPROM 2816 mediante la aplicación de un nivel alto en Vpp, (voltaje de programación conectada a Vcc), un nivel bajo en /C/E y un nivel bajo en /O/E, con estas condiciones se obtiene información de terminales E/S estarán en estado de alta impedancia siempre y cuando /O/E o /C/E están en un nivel alto, o también que los 2 estén en nivel alto.

Una de nuestra conclusiones o más bien de la que aprendimos fué que el el ciclo de escritura es iniciado por la aplicación de un nivel bajo en Vpp, 200 nseg mientras que /O/E debe estar en estado alto y /C/E en estado bajo, la dirección es doblemente almacenada a la caída y a la salida de Vpp, una vez realizado esto en su arquitectura interna de la memoria borrara automáticamente el dato seleccionado y va a proceder a escribir el nuevo dato en un tiempo de l0 mseg, mientras tanto las terminales E/S o E/S; permanecerán en estado de alta impedancia durante un tiempo igual al de la operación del proceso de escritura.

LABORATORIO # 4


OPERACIONES CON LA MEMORIA RAM 8156

I. INTRODUCCIÓN
Como sabemos una memoria RAM es una memoria que una vez desconectada la fuente de alimentación, ésta pierde toda la información, pero en este caso veremos la RAM 8156:

La 8156 es una RAM que se usa en sistema 8085AH MPU. la porción de RAM es designado por 2k bits de celdas estáticas organizadas como 256 x 8. tienen un máximo acceso de tiempo de 400 nseg que permite el uso en 8085AH CPU. La 8156H-2 tiene un tiempo máximo de acceso de 330 nseg para el uso con el 8085AH. La porción de I/O consiste en 3 partes generales I/O puertos. Uno de los 3 puertos puede ser programado para pins de estado, los otros 2 puertos son programados para operar en el modo handshake.Los 14 bits contadores (timers) programables estan incluidos solamente en un chip que provee una terminal de contador de pulso para el CPU dependiente del modo del timer.

II. OBJETIVOS

- Experimentar la escritura y lectura manuales en la memoria RAM 8156, utilizando los interruptores y circuitos indicadores montados en el entrenador de microprocesadores 8085 al mismo tiempo de verificar la volatilidad de este tipo de memorias.

- Desplegar información en el display de 7 segmentos por medio de los puertos I/O del 8056 mediante los interruptores de control y datos proporcionados en el entrenador.

- Demostrar la formación de números y letras.

- Operar manualmente, mediante la operación de un interrutor el temporizador incluido en el 8156.

- Demostrar la operación del temporizador en sus 4 modos de salida.

III.RESUMEN

Advertencia:


Dado que el sistema se halla montado en su configuración final, para realizar las experiencias de los laboratorios seguir los siguientes pasos:

1. Para iniciar cualquier experiencia, el interruptor RESET deberá estar en la posición superior y todos los demás interruptores en la posición inferior, a menos que se instruya específicamente cambiar dicha condición.

2. Para todas las experiencias de esta guía de laboratorio deberá instalar el puente J10 y retirar cuidadosamente el CI 8085. Solo para la experiencia relacionada con la lección 5, retirar el puente J12 e instalar el puente J11.

3. Al concluir los experimentos de esta guía debe reponer el entrenador a su configuración final.

Parte 1

Lea detenidamente el marco teórico de la LECCIÓN 3 ALMACENAR Y LEER DATOS y realice la experiencia indicada en la sección de PROCEDIMIENTO.

Parte 2

Lea detenidamente el marco teórico de la LECCIÓN 4 REGISTROS Y PUERTOS y realice la experiencia indicada en las secciones de PROCEDIMIENTO DE PRUEBA Y LECTURA Y SALIDA DEL PUERTO.

Parte 3

Lea detenidamente el marco teórico de la LECCIÓN 5 EL TEMPORIZADOR y realice la experiencia indicada en la sección de PROCEDIMIENTO.

LECCION 3

ALMACENANDO Y LEYENDO DATOS


Hay diferentes maneras de almacenar datos en los circuitos electrónicos, pero los dos métodos encontrados en la mayoría de las computadoras son en las memorias de acceso aleatorio (RAM) y el las memorias de solo lectura (ROM).

La mayor diferencia entre estos dos tipos de memoria es el hecho de que la RAM perderá los datos almacenados si se corta la alimentación y la ROM no. El circuito integrado 8156 contiene 256 posiciones de memoria. Cada posición es capaz de almacenar 1 byte o 8 bits de datos.

Como este circuito puede almacenar 256 x 8 o 2048 bits de datos, se la denomina memoria de 2K.

Igual que cada casa en una ciudad tiene una dirección que permite encontrar la casa,
cada byte de datos en el 8056 también tiene una dirección con el objeto de que recordar ese dato posteriormente.

Los datos pueden ser almacenados en cualquier dirección con el siguiente
procedimiento:

1. Ir a la dirección apropiada.
2. Poner el byte en el bus de datos.
3. Decirle al circuito de memoria que acepte el dato.
4. Moverse a la siguiente dirección.

El circuito integrado 8156 utiliza las mismas 8 entradas tanto para los datos como para las direcciones.

Como sabe el 8156 cuando es un dato o una dirección? Usted le dice que en el bus esta una dirección de datos activando el pulsador de la señal “ALE”(Address Latch Enable). Esto pone el pin ALE a nivel alto, y la dirección es almacenada en un registro especial de dirección en el interior del 8156.

Cuando se pulsa el botón “WR” (Escribir) los datos que se encuentran en el bus de datos se almacenarán en la dirección de memoria previamente almacenada en el Registro de direcciones.

Presionando el botón “RD” (Lectura) hará que el 8156 busque el dato en la posición de
memoria apuntada por el registro especial de dirección y lo envíe al bus de datos. El
siguiente experimento demostrará estos principios.

DESCRIPCIÓN DEL CIRCUITO

En esta lección fue instalado el circuito integrado 8156 en el bus de datos proporcionado en la lección 2. Como se muestra en la figura 3-3, también fue instalada la red de interruptores necesarios para la operación manual de la memoria 8156.


HABILITACION DL REGISTRO DE DIRECCIONES (ALE)

La línea ALE normalmente se mantiene en nivel bajo (0V) a través de la resistencia R7
y el puente J10. Cuando se presiona el botón ALE la línea es llevada a nivel alto a
través del divisor de voltaje R6 y R7. En una posterior lección, el puente J10 será
retirado para permitir que el microprocesador 8085-A maneje la línea ALE a través de
la resistencia R7.

LECTURA DE LA MEMORIA (RD)

El pin .R.D en el 8156 se mantiene en nivel alto por medio de la resistencia R8. La
línea sobre RD indica que este pin se activa con un nivel de voltaje bajo o 0V. Cuando se presiona la tecla RD, el pin .R.D del CI 8156 es llevado a nivel bajo por medio del divisor de tensión R8 y R9. Los datos en la posición de memoria en la dirección previamente registrada ahora se reproduce en las 8 líneas de datos. La información en esa posición de memoria sin embargo no cambia. Los datos en cada posición de memoria permanecerán inalterables hasta que se sobrescriban o se retire la alimentación al CI 8156. El interruptor IO/.M deberá estar en la posición .M para leer la memoria.

ESCRITURA DE MEMORIA (WR)

La señal WR trabaja más o menos como la RD excepto que cuando se presiona esta
tecla lo que se encuentre en la línea de datos será escrito en la dirección de memoria previamente registrada. Los datos en esa dirección al momento en que se pulsa la tecla WR serán sobrescritos y se perderán definitivamente. Los nuevos datos permanecerán en esa dirección hasta que se sobrescriba o se retire la alimentación al CI 8156. El interruptor IO/.M deberá estar en la posición .M para escribir la memoria.

ENTRADA SALIDA O MEMORIA (IO/.M)

El interruptor IO/.M le dice al CI 8156 si el puerto de entrada salida(ver lección 4) o la memoria obtendrá los datos. Este interruptor opera eléctricamente de manera similar a los interruptores de direcciones-datos.

HABILITACION DE LA RAM (ENRAM)

Este interruptor esta conectado al pin habilitación de chip (CE) del CI 8156 a través del puente J2. Cuando el interruptor esta abajo (hacia el borde de la tarjeta) el pin CE es puesto a nivel bajo a través de la resistencia R45. En este estado el CI 8156 esta deshabilitado e ignorará los datos de entrada en todos sus demás pines. Cuando el interruptor esta en la posición superior, se coloca un nivel alto en el pin CE a través de la resistencia R43. En este estado el CI 8156 esta habilitado y responderá a las entradas de sus otros pines. En una lección posterior se utilizará el interruptor de reset para permitir que la línea A15 controle la entrada CE.

RESET (RS)

La tecla de reset opera eléctricamente de forma similar al interruptor ALE. Esta tecla será utilizada en una lección posterior.

PROCEDIMIENTO

1. Conectar la fuente de alimentación y activar el interruptor (SW16) en ON. El
LED verde iluminará indicando que la fuente está encendida.

2. Colocar el interruptor ENRAM en la posición on para habilitar el CI 8156.
Colocar el interruptor IO/.M en la posición off para acceder a la porción de
memoria del CI 8156.

3. Iniciar en la dirección 0000 0000 poniendo todos los interruptores de datos en la
posición “0” (abajo).

4. Presionar el interruptor ALE para “registrar” la dirección en el registro especial
de dirección.

5. Cambiar los interruptores de datos a 1000 0001.

6. Presionar el interruptor WR para escribir este dato en la posición direccionada
que justamente se ha abierto.

7. Usted puede cambiar la dirección repitiendo los pasos 3 y 4. Los datos pueden
ser almacenados repitiendo los pasos 5 y 6. Utilice el siguiente procedimiento
para almacenar los siguiente bytes de datos en las primeras cuatro posiciones de
memoria.

DECIMAL DIRECCION DATO

8. Verificar los datos almacenados en cada dirección repitiendo los pasos 3 y 4
para retornar a cada dirección.

9. Leer los datos de cada dirección presionando el botón RD.

10. Poner el interruptor de alimentación (SW16) en la posición inferior para retirar
la alimentación.

11. Encender nuevamente la alimentación.

12. Repetir los pasos 8 y 9. Se perdieron los datos?

LECCION 4

REGISTROS Y PUERTOS


En la lección 3, la dirección de una posición de memoria fue “registrada” en el CI 8156 antes que se coloquen los datos al bus de datos.

Los interruptores de lectura o escritura fueron entonces pulsados para realizar la operación deseada. El interruptor IO/.M (Entrada Salida/ .Memoria) fue colocado en la posición .M durante este proceso, poniendo un voltaje bajo en el pin IO/.M del CI 8156. Poniendo este interruptor en la posición IO le dice al CI 8156 que pase los datos del bus de datos a los puertos de Entrada/Salida, controlador de temporización, o Comando de Registro de Estado.

Antes que los datos sean transmitidos o recibidos a través de los puertos al CI 8156 se tiene que indicar que puerto será de entrada y que puerto será de salida. También se le debe dar al CI 8156 instrucciones para el temporizador si se pretende utilizar el temporizador.(El temporizador será visto en otra lección).

Las instrucciones al CI 8156 se dan ajustando los “bits” a 0 ó 1 en el registro de estado de comando (COMMAND STATUS REGISTER). Este registro esta localizado en la dirección 0000 0000 (con el interruptor IO/.M en la posición IO).

EJEMPLO
Si el número binario 1000 110 es escrito en la dirección 0000 0000 cuando el
interruptor IO/.M está en la posición IO, entonces el CI 8156 funcionará de la siguiente forma:


Después de establecidos los puertos, los datos son transmitidos a través de ellos yendo primero a la dirección del puerto deseado. A continuación, los datos son colocados en el bus de datos si el puerto fue configurado como puerto de salida. Los datos son colocados en los pines del puerto si el puerto fue configurado como puerto de entrada. El direccionamiento de cada puerto se puede encontrar en la figura 4-2.

Ambos displays 1 y 2 están conectados al puerto B, como se ilustra en la figura 4-3.
Solo un diplay o dígito es manejado a la vez. El manejo del display esta controlado por el bit 0 del puerto C. Un 1 en este bit selecciona el display 1, un 0 selecciona el display 2. Para que ilumine cualquier segmento en el display, se debe colocar un cero en el bit correspondiente del puerto B ( ver figura 4– 4).

DESCRIPCIÓN DEL CIRCUITO

La figura 4-3 muestra el display de 7 segmentos y el circuito de manejo asociado
agregado en la lección 4. Para encender un segmento del diplay en particular, primero
debemos habilitar dicho dispositivo encendiendo el transistor correspondiente Q1 o Q2, los cuales conectan el punto de ánodo común del display a aproximadamente 5V.

A continuación debemos conmutar el bit del puerto B conectado a aquel segmento a un
voltaje de nivel bajo. Esto permitirá que la corriente fluya desde el punto de ánodo
común a través del LED apropiado y una resistencia de 150 ohms al puerto B y a tierra.

Para habilitar el display 1, el bit 0 del puerto C es puesto a 1. El nivel lógico alto que sale del bit 0 es acoplado a través del puente J12 y pone aproximadamente 5VDC en la base del Q1, poniéndolo en corte. Esto deshabilita el display 2 y permite que fluya corriente desde el emisor a la base de Q2 a través de R48 y R49 a tierra. Q2 se activa y habilita al display 1.

Para habilitar el display 2, el bit 0 del puerto C debe ser puesto a 0.

La salida de nivel bajo desde el bit 0 permite el flujo de corriente desde el emisor a la base de Q1, a través de R50 y el puente J12 en el bit 0 del puerto C a tierra. Esto activa Q1 habilitando el display 2. Los 5 V en el colector de Q1 es acoplado a través de R48 a la base de Q2 poniéndolo en corte. Esto deshabilita el display 1.

PROCEDIMIENTO DE PRUEBA

1. Conectar la fuente de alimentación y encender la fuente. Poner el interruptor
IO/.M en la posición de IO (arriba). Esto le dice al CI 8156 que se va ha enviar
datos a los registros internos y no a la memoria. Presionar la tecla RS para
inicializar el CI 8156. Poner el interruptor ENRAM en la posición ON.

2. Ajustar los interruptores de datos a 0000 0000. Esta es la dirección del registro
de estado de comando.

3. Presionar la tecla ALE para registrar la dirección en el CI 8156.

4. Ajustar los interruptores de datos a 1000 1110.

5. Presionar la tecla WR para escribir los datos en el registro de comando. Como
en el anterior ejemplo, esto pone al puerto A como entrada y los puertos B y C
como salidas. Como los puertos de salida estaban inicialmente en 0, hace que
iluminen todos los segmentos incluyendo el punto decimal del display 2.

6. Cambiar los interruptores de datos a 0000 0010. A la dirección del puerto B.

7. Presionar el interruptor ALE para registrar la dirección del puerto B en el
registro de dirección interior del CI 8156.

8. Colocar los datos ha ser transmitidos en el bus de datos. Comenzar con 011
0001.

9. Presionar la tecla WR para transferir los datos al puerto B. Como se muestra en
la figura 4-4, los ceros en los bits 1,2,3,4 y 7 harán que aparezca un 3 en el
display 2.

10. Cambiar los interruptores de datos todo a cero. Cambiaron los datos en el puerto
B? El puerto B solo cambiará cuando los nuevos datos se escriban en el registro
en la dirección 0000 0010.

11. Repetir los pasos 8 y 9 para verificar los símbolos del display de 7 segmentos de
la figura 4-6.


12. Ajustar los interruptores de datos a 0000 0011. Esta es la dirección del puerto C.

13. Presionar la tecla ALE para registrar la dirección en el CI 8156.

14. Ajustar los interruptores de datos a 0000 0001. Cuando este dato es enviado al
puerto C, se deshabilitará el display 2 y se habilitará el display 1.

15. Presionar la tecla WR y el patrón en el display 2 saltará al display 1.

16. Repetir los pasos 6 y 7 para ajustar la dirección del puerto B en el CI 8156.

17. Repetir los pasos 8 y 9 para verificar que los datos enviados al puerto B
aparecerán ahora en el display 1.

LECTURA Y SALIDA DEL PUERTO

Aunque los puertos A, B o C estén configurados como puertos de salida, sus contenidos
pueden ser leídos de la misma forma que los puertos de entrada.

18. Ajustar los interruptores de datos a 0000 0011 para direccionar el puerto C.

19. Presionar la tecla ALE para registrar la dirección en el CI 8156.

20. Presionar el botón RD para leer los contenidos del puerto C. Los datos leídos
son 1100 0001. Los unos en los bits 6 y 7 se deben al hecho de que el puerto C es un registro de 6 bits conteniendo solamente los bits del 0–5. El 00 0001 en los bits 0–5 son los datos almacenados en los pasos 14 y 15.

21. Ajustar los interruptores de datos a 1111 1011. Esta es también la dirección del
puerto C. Como se muestra en la figura 4-2, los bits 3-7 pueden estar en 1 o 0.
Solamente los bits 0-2 son decodificados por el CI 8156.

22. Presionar el botón ALE para registrar la dirección en el CI 8156.

23. Ajustar los interruptores de datos a 0000 0000.

24. Presionar el botón WR para escribir este dato en el puerto C. El 0 en el bit 0
deshabilita el display 1 y habilita el display 2. El patrón desplegado en el display
1 saltará al display 2.

25. Apagar el equipo.


LECCION 5

EL TEMPORIZADOR


El circuito temporizador del CI 8156 es un contador programable de 14 bits. El contador es programado ajustando los dos bytes del registro de longitud de cuenta como se muestra en la figura 5-1.

Los bits T0 a T13 del registro de longitud de cuenta, sondescontados por los pulsos TIMER IN. Cuando se alcanza la cuenta terminal, secompleta el ciclo y se presenta un pulso o una onda cuadrada en el pin de salida.T.I.M.E.R .O.U.T del CI 8156.

Los bits M1 y M2 del registro de longitud de cuenta especifican el modo del temporizador como se muestra en la figura 5-2.

El registro de longitud de cuenta puede ser ajustado a cualquier valor entre 0002H a
3FFFH.



El LSB (ByteMenos Significativo) del registro de longitud de cuenta esta en la
dirección de I/O 04H.

El MSB (Byte Más Significativo) del registro de longitud de cuenta esta en la dirección de I/O 05H. El registro de longitud de cuenta es ajustado exactamente de la misma forma que para la salida a un puerto de I/O.

Los bits 6 y 7 (TM2 y TM1) del Registro de Comando de Estado es utilizado para parar
y arrancar la cuenta tal como se muestra en la figura 5-3.



Si el temporizador no esta corriendo cuando el Registrode Longitud de Cuenta es
cargado, permanecerá parado hasta que se emita un nuevo comando de arranque. Si el
temporizador esta corriendo cuando se corga un nuevo modo o longitud de cuenta se
carga en el Registro de Longitud de Cuenta, el temporizador continuará corriendo en el modo anterior o longitud de cuenta hasta que se emita un nuevo comando de arranque a través del Registro de Estado de Comando.

DESCRIPCIÓN DEL CIRCUITO

Para temporizar el temporizador, se debe aplicar una transición de nivel bajo a alto al pin TIMER IN del CI 8156. En esta lección se realizará con el interruptor de
temporización. Como cualquier interruptor, cuanto el interruptor TIM es conmutado de
la posición inferior a la superior es como que el contacto entre la parte central y el pin superior se cierra y abre varias veces antes de que el interruptor finalmente se pare. Este fenómeno se denomina rebote del interruptor.

Si la salida del interruptor fuera aplicado directamente al pin TIMER IN, las variadas transiciones de bajo a alto serían recibidas y contadas cada vez que el interruptor es actuado.

Como nosotros deseamos una sola transición cada vez que el interruptor es actuado, el interruptor debe ser amortiguado.



El amortiguamiento es realizado ligando el interruptor TIM a un circuito flip flop como el mostrado en la figura 5-5. Ambos pines 12 y 13 del CI 5 deben estar en nivel alto para hacer que el pin 11 vaya a nivel bajo. Con el interruptor TIM en la posición abajo, un nivel bajo (tierra) es aplicado al pin 13 provocando que los pines 11 y 10 pasen a nivel alto. El pin 9 es anclado a nivel alto con la resistencia R39. Con ambos pines 9 y 10 en nivel alto, el pin 8 estará en nivel bajo. Esto aplica un nivel bajo al pin 12 y al TIMER IN a través del puente J3. El nivel bajo en el pin 12 mantiene al pin 11 en nivel alto aun cuando se retire el nivel bajo del pin 13. El flip flop ahora estará en el estado cero.

Para temporizar el temporizador, el interruptor TIM es movido a la posición superior.
Esto interrumpe la conexión a tierra del pin 13 provocando que sea anclado a nivel alto mediante la resistencia R40.

A continuación, el pin 9 es conectado a tierra provocandoque los pines 8 y 12 pasen a nivel alto. Como el pin 13 esta aún en nivel alto, los pines 11 y 10 pasan a nivel bajo, obligando al pin 8 a permanecer en nivel alto aunque el pin 9 pase de nivel alto a bajo varias veces por el efecto de rebote del interruptor.

El flip flor esta ahora en el estado uno y la transición de bajo a alto ha sido enviada al pin TIMER IN del CI 8156 a través de puente J3 para temporizar el TEMPORIZADOR.

De la misma forma la acción descrita del flip flop asegura una clara transición en la entrada de temporizador cuando en interruptor es movido de arriba abajo y el flip flor va del estado uno al estado cero.

Para percibir el estado del .T.I.M.E.R .O.U.T se debe retirar el puente J12 e instalar el puente J11. La línea .T.I.M.E.R .O.U.T habilita el display en lugar del bit 0 del puerto C, como se muestra en la figura 4-3.

Cuando la .T.I.M.E.R .O.U.T esta activa (nivel bajo), se activa el display 2. Cuando el .T.I.M.E.R .O.U.T esta inactivo (nivel alto), se activa el display 1.

PROCEDIMIENTO

AJUSTE


1. Conectar la fuente de alimentación y encender. Presionar el botón RS para
inicializar el CI 8156.

2. Poner el interruptor TIM abajo.

3. Poner el interruptor ENRAM arriba. Esto le dice al CI 8156 que los comandos
que se envíen por las líneas de datos son para el y no para otro circuito.

4. Poner arriba el interruptor IO/.M. Esto direcciona al comando a la sección IO
del CI 8156.

ONDA CUADRADA CONTINUA:

1. Poner los interruptores de datos a 0000 0000. Esta es la dirección del Registro
de Estado de Comando.

2. Presionar el interruptor ALE para cargar la dirección en el CI 8156.

3. Poner los interruptores de datos a 0100 0010. Esto emitirá un comando de parada del temporizador y pondrá en salida el puerto B.

4. Presionar el botón WR para enviar datos al Registro de Estado de Comando.

5. Poner los interruptores de datos a 0000 0100. Esta es la dirección del byte menos significativo (LSB) del Registro de Longitud de Cuenta.

6. Presionar el botón ALE para registrar la dirección en el CI 8156.

7. Poner los interruptores de datos a 0000 0110. Esto pondrá el byte menos significativo (LSB) del Registro de Longitud de Cuenta a 6.

8. Almacenar el 6 presionando el botón WR.

9. Poner los interruptores de datos a 0000 0101. Esta es la dirección del byte más
significativo (MSB) del registro de Longitud de Cuenta.

10. Presionar el botón ALE para registrar la dirección en el CI 8156.

11. Poner los interruptores de datos a 0100 0000. Esto pondrá el byte más
significativo (MSB) de registro de estado de cuenta a cero y el modo del
temporizador a Onda Cuadrada Continua.

12. Presionar l botón WR para almacenar los datos.

13. Poner los interruptores de datos a 0000 0000. Esta es la dirección del Registro
de Estado de Comando.

14. Registrar la dirección presionando ALE.

15. Poner los interruptores de datos a 1100 0010. Esto mantiene el puerto B como
puerto de salida y arranca el temporizador.

16. Almacenar los datos presionando el botón WR.

17. Temporizar el temporizador moviendo el interruptor TIM arriba y abajo.

18. Repetir el paso 17 y observar que la señal .T.I.M.E.R .O.U.T conmuta de
nivel alto (display 1 activado) a bajo (display 2 activado) en cada tercer paso. El
primer cambio requiere 4 pasos del interruptor debido al estado interno del
temporizador.

19. Poner los interruptores de datos a 0000 0000. Esta es la dirección del Registro
de Estado de Comando.

20. Registrar la dirección presionando ALE.

21. Poner los interruptores de datos a 0100 0010. Esto emitirá un comando de
parada del temporizador.

22. Almacenar el comando de parada presionando el botón WR. Si la línea
T.I.M.E.R .O.U.T esta en nivel bajo y el interruptor TIM arriba, la línea
T.I.M.E.R .O.U.T pasará inmediatamente a nivel alto (display 1 activado).

23. Repetir el paso 17. la línea T.I.M.E.R .O.U.T, si aún no esta en nivel alto,
pasará a nivel alto (display 1 activado) la primera vez que el interruptor TIM
esta en la posición superior. Entonces permanecerá en nivel alto. El temporizador esta ahora inactivo siguiendo el comando de parada.

PULSOS CONTINUOS

1. Poner los interruptores de datos a 0000 0101. Esta es la dirección del MSB del
Registro de Longitud de Cuenta.

2. Registrar la dirección presionando el botón ALE.

3. Poner los interruptores de datos en 1100 0000. Esto cambiará el modo del temporizador a pulsos continuos.

4. Almacenar los datos presionando el botón WR.

5. Temporizar el temporizador moviendo el interruptor TIM arriba y abajo varias
veces. Cambiará la salida? No, porque se debe emitir un comando de arranque
primero.

6. Poner los interruptores de datos a 0000 0000, la dirección del Registro de Estado
de Comando.

7. Registrar la dirección presionando el botón ALE.

8. Emitir el comando de arranque poniendo los interruptores de datos a 1100 0010
y presionando el botón WR.

9. Temporizar el temporizador moviendo el interruptor TIM arriba y abajo varias
veces. Observe que la señal T.I.M.E.R .O.U.T pasa a nivel bajo (display 2
activado) en el sexto paso y a nivel alto (display 1 activado) en el séptimo paso.
Este pulso se repite cada sexto paso.

10. Temporizar el temporizador hasta que la línea T.I.M.E.R .O.U.T justamente
cambie a nivel alto (display 1 activado), luego proceder con la siguiente sección.

PARAR DESPUÉS DE LA CUENTA TERMINAL:

1. Poner los interruptores de datos a 0000 0000, el Registro de Estado de
Comando, y presionar el botón ALE para registrar la dirección.

2. Poner los interruptores de datos a 1000 0010. Esto emitirá el comando de
PARAR DESPUÉS DE LA CUENTA TERMINAL (TC) del temporizador.

3. Presionar el botón WR para almacenar el comando.

4. Temporizar el temporizador moviendo el interruptor TIM arriba y abajo y
observe que solo una vez más sale el pulso por la línea T.I.M.E.R .O.U.T.
Después de lo cual la señal T.I.M.E.R .O.U.T permanecerá en nivel alto.

UNA SOLA ONDA CUADRADA:

1. Poner los interruptores de datos en 0000 0101. Esta es la dirección del MSB del
Registro de Longitud de Cuenta. Registrar la dirección presionando el botón
ALE.

2. Poner los interruptores de datos en 0000 0000. Esto cambiará el modo del
temporizador a Una sola Onda Cuadrada. Almacenar el comando presionando el
botón WR.

3. Poner los interruptores de datos a 0000 0000, la dirección del Registro de Estado
de Comando y registrar esta dirección presionando el botón ALE.

4. Emitir un comando de arranque para el temporizador poniendo los interruptores
de datos en 1100 0010 y presionando el botón WR.

5. Temporizar el temporizador moviendo el interruptor TIM arriba y abajo.
Observe que la línea T.I.M.E.R .O.U.T pasa a nivel bajo (ilumina el display 2) en el cuarto paso y a nivel alto (ilumina el display 1) en el séptimo paso. Después de lo cual la línea T.I.M.E.R .O.U.T permanece en nivel alto.

UN SOLO PULSO:

1. Repetir los anteriores cuatro pasos utilizando 1000 0000 en el paso 2. Esto
pondrá el modo del temporizador en el modo de Un Solo Pulso

2. Temporizar el temporizador moviendo el interruptor TIM arriba y abajo. Observe que aparece un pulso el la línea T.I.M.E.R .O.U.T entre el sexto y séptimo paso. Después de lo cual, la línea T.I.M.E.R .O.U.T permanece en nivel alto (ilumina el display 1).

CAMBIO DE LONGITUD DE CICLO (FRECUENCIA):

1. Repetir el procedimiento de Onda Cuadrada Continua pero cambiar el LSB del
Registro de Longitud de Cuenta en el paso 7 ( asegúrese de mantener el Registro
de Longitud de Cuenta en dos o más). Note que la salida de onda cuadrada ahora
corresponde a la longitud emitida en el paso 7, excepto para el primer ciclo el
cual tiene un paso más. Si se emite un número impar en el paso 7, la longitud a
nivel alto de T.I.M.E.R .O.U.T (display 1 iluminado) será de un paso mayor
que la longitud de T.I.M.E.R .O.U.T en nivel bajo.

2. Apagar la alimentación.

CONCLUSIONES

Bueno con esta práctica aprendimos a inicializar el microtrainer ya que el sistema se hallaba montado en una configuración muy distinta a la que necesitabamos.

Aprendimos a experimentar la escritura y lecturas manuales en la memoria RAM 8156, utilizando los interruptores y circuitos indicadores montados en el microtrainer 8085

También pudimos ver la voltilidad de este tipo de memorias es decir que cuando se le quita la fuente de alimentación se pierde toda la información y cuando se vuelve a conectar la fuente de alimentación se borró completamente toda la información.

En la lección 4 pudimos desplegar la información en el display de 7 segmentos es decir la formación de números y letras por medio de los puertos I/O del 8056 mediante los interruptores de control y datos proporcionados en la hoja de laboratorio y en el microtrainer.

En la lección 5 pudimos operar manualmente el microtrainer y mediante esos pasos a seguir pudimos realizar distintos modos detemporización con la RAM 8156.

Como ser el de la ONDA CUADRADA CONTÍNUA que observamos que la señal T.I.M.E.R .O.U.T conmuta de nivel alto (display 1 activado) a bajo (display 2 activado) en cada tercer paso. El primer cambio requiere 4 pasos del interruptor debido al estado interno del temporizador.

También el modo de PULSOS CONTÍNUOS que moviendo el interruptor TIM arriba y abajo varias veces observamos que la señal T.I.M.E.R .O.U.T pasa a nivel bajo osea el display 2 se activa en el sexto paso y a nivel alto el display 1 se activa en el séptimo paso. Este pulso se repite cada sexto paso.

En PARAR DESPUÉS DE LA CUENTA TERMINAL se notó que moviendo el interruptor TIM arriba y abajo observamos que solo una vez más sale el pulso por la línea T.I.M.E.R .O.U.T. Después de lo cual la señal T.I.M.E.R .O.U.T permanecerá en nivel alto.

En el modo UNA SOLA ONDA CUADRADA moviendo el interruptor TIM arriba y abajo observamos que la línea T.I.M.E.R .O.U.T pasa a nivel bajo osea ilumina el display 2 en el cuarto paso y a nivel alto ilumina el display 1 en el séptimo paso. Después de lo cual la línea T.I.M.E.R .O.U.T permanece en nivel alto.

Cuando es UN SOLO PULSO moviendo el interruptor TIM arriba y abajo observamos que aparece un pulso el la línea T.I.M.E.R .O.U.T entre el sexto y séptimo paso, después de lo cual, la línea T.I.M.E.R .O.U.T permanece en nivel alto (ilumina el display 1).

Y por último CAMBIO DE LONGITUD DE CICLO (FRECUENCIA) vimos que la salida de onda cuadrada ahora correspondía a la longitud emitida en los modos anteriores, excepto para el primer ciclo el cual tiene un paso más. Si se emite un número impar la longitud a nivel alto de T.I.M.E.R .O.U.T (display 1 iluminado) será de un paso mayor que la longitud de T.I.M.E.R .O.U.T en nivel bajo.

LABORATORIO # 3

LOGICA DE TRES ESTADOS, OPERACIÓN DEL BUS, DISPOSITIVOS DE MEMORIA


I. INTRODUCCIÓN

Su nombre vienen del inglés Read Only Memory que significa Memoria de Solo Lectura ya que la información que contiene puede ser leída pero no modificada. En ella se encuentra toda la información que el sistema necesita para poder funcionar correctamente ya que los fabricantes guardan allí las instrucciones de arranque y el funcionamiento coordinado de la computadora. no son volátiles, pero se pueden deteriorar a causa de campos magnéticos demasiados potentes.

Al encender nuestra computadora automáticamente comienza a funcionar la memoria ROM. por supuesto, aunque se apague, esta memoria no se borra.

El BIOS de una PC (Basic Input Operative System) es una memoria ROM, pero con la facultad de configurarse según las características particulares de cada máquina. esta configuración se guarda en la zona de memoria RAM que posee este BIOS y se mantiene sin borrar cuando se apaga la PC gracias a una pila que hay en la placa principal.

Cuando la pila se agota se borra la configuración provocando, en algunos equipos, que la máquina no arranque

Algunas PC tienen la pila soldada a la placa principal por lo que el cambio de la misma lo debe realizar personal técnico, ya que sino se corre el riesgo de arruinar otros componentes.

Su Memoria basada en semiconductores que contiene instrucciones o datos que se pueden leer pero no modificar. En las computadoras IBM PC y compatibles, las memorias ROM suelen contener el software necesario para el funcionamiento del sistema. Para crear un chip ROM, el diseñador facilita a un fabricante de semiconductores la información o las instrucciones que se van a almacenar. El fabricante produce entonces uno o más chips que contienen esas instrucciones o datos. Como crear chips ROM implica un proceso de fabricación, esta creación es viable económicamente sólo si se producen grandes cantidades de chips. Los diseños experimentales o los pequeños volúmenes son más asequibles usando PROM o EPROM. El término ROM se suele referir a cualquier dispositivo de sólo lectura, incluyendo PROM y EPROM.

II. OBJETIVOS

1. OBJETIVOS GENERALES


Obtener conocimiento sobre los integrados 74125 – 126, su modo de operar y el uso de las memorias ROM, que son volátiles, es decir que no llegan a perder la información una vez retirada la fuente de alimentación como lo hacen la memorias RAM.

2. OBJETIVOS ESPECIFICOS

•Verificar la operación y funcionamiento de los dispositivos de tres estados y su aplicación en la conformación de buses de datos.

•Demostrar la operación de una memoria ROM montando y probando una ROM de matriz de diodos.

III. PROCEDIMIENTO

Parte 1

En la siguiente práctica se montara el circuito los siguientes CI.s 74125 y 74126 como buffers cuádruples con salidas de tres estados. Teniendo en cuenta que a la salida de cada buffer en el 74125 es igual a su entrada cuando la línea de habilitación se encuentra en nivel BAJO. Mientras que la salida del 74126 es igual a su entrada cuando la línea de habilitación se encuentra en nivel ALTO. En ambos casos, cuando la línea de habilitación no esta en su estado de habilitación, sus salidas se encuentra en estado de alta impedancia, lo que significa que están eléctricamente desconectadas, por lo tanto no transmite ninguna información.

En este circuito vamos a tomar en cuenta un conmutador de entrada, que nos servirá de control de cada uno de los buses, y que la información de entrada estará fijada con el respectivo banco de interruptores, verificar, que colocando conmutador de control para forzar los buses de un CI. A la vez a la condición de alta impedancia. Posteriormente, ajuste los interruptores de datos de ambos buses a diferentes valores y compruebe que activando el interruptor de control adecuado, los LEDs indicadores mostrarán la información ajustada en el bus correspondiente.

Parte 2

En esta segunda parte se montara una matriz de diodos con capacidad de contener 10 nibles de información, que luego utilizando un circuito decodificador BCD a 7 segmentos y un display de siete segmentos, mostrará la información almacenada en la memoria ROM conformada por la matriz de diodos.

Habrá que verificar la compatibilidad de el decodificador de BCD o binario a 7 segmentos con el display de 7 segmentos, que puede ser de ánodo o cátodo común.
Basándose en la relación de los códigos BCD y 7 segmentos, programe en su módulo de ROM el número de su teléfono para que sea visualizado en el display dígito por dígito.
Anote los resultados para reflejarlos y comentarlos en su informe.

IV. MARCO TEORICO

Circuito Integrado 74125

Un buffer triestado, es un CI. 74125, que traslada la información del registro A al bus interno de datos, cuando desde la entrada es activado (por nivel bajo), entonces la señal es mostrado a la salida. Por lo tanto el 74125 solo transmite lo que recibe por su entrada, al activarse
por la entrada de habilitación.

Circuito Integrado 74126

Al igual que el 74125 es un Buffers tree-state, pero con la excepción que es de activo ALTO.

Diagrama de pines

Ambos CI´s tienen las mismas características:

Características Eléctricas:



Circuito integrado 7490

El circuito 7490 es muy corriente y esta constituido por una serie de biestables y lógica de control integrada, todo en el mismo circuito. Hay que conocer la frecuencia máxima a la que trabaja, la Función de cuenta a la que están diseñados, así también como las patillas de entrada, salida y control a las cuales tenemos acceso desde el exterior.

Este circuito esta diseñado como un contador de décadas, también tiene la función de divisor de frecuencia por dos y por cinco; sin necesidad de utilizar la entrada asíncrona.

Características internas

Tiene cuatro biestables los primeros 3 denominado A, B, C son del tipo J-K, el ultimo D se denomina R-S, también tiene entradas asíncronas de puestas a cero y de puesta a nueve. El primero de los biestables es dependiente de los otros 3. Entonces se puede decir que tiene tres de funcionamientos y son los siguientes:

Modo 1: Que se realiza conectando el terminal 1 (entrada B) con el (QA) y a la entrada impulsos a contar con el terminal 14 (entrada BD), debido a esta conexión el biestable A que es de menor peso en el código binario que realizan los biestables obtenemos un contador BCD decimal.

Modo 2: Consiste en conectar la entrada de la señal de reloj (entrada A) del biestable A (pin 14) son la salida (QD) del último biestable convirtiéndose en QA en el mayor bit del contador entonces los impulsos a contar se introducen por (entrada BD). De este modo el biestable A cambia de estado cuando se produce una transición de nivel ALTO a BAJO del biestable D por lo tanto la terminal (QA) esta en nivel ALTO durante 5 impulsos y luego a nivel BAJO durante otros 5 impulsos entonces obtenemos un divisor de frecuencia por 10.

Circuito Integrado 7442

Es un Decodificador/excitador BCD a 7 segmentos y su tabla de funcionamiento es la siguiente:



Circuito Integrado 7448

Es un decodificador de lógica positiva (7448). Es un convertidor de BCD (de 4 bits) a decimal de 7 segmentos, que luego sera mostrado en un diplay de cátodo común.



V. LISTADO DE MATERIALES

• 1 Entrenador digital
• 1 CI 74125
• 1 CI 74126
• 1 CI 7490
• 1 CI 7442
• 1 CI 7448
• 12 LED
• 1 Display de 7 segmentos
• Resistencias de 220Ohm 1/2W
• Resistencias de 1K 1/2W
• Resistencias de 4.7K 1/2W
• Interruptores de 8 bits tipo DIP

VI. LABORATORIO

Parte 1: Tri-estado (alta impedancia) controlado con una entrada de habilitacion.



Parte 2: Memoria ROM y su visualización en display.



VII. CONCLUSIONES

Bueno con este laboratorio procedimos de la misma manera que los anteriores con referencia a la simulación en el Proteus y a la implementación en el Protoboard.

Además obtuvimos conocimiento sobre los Circuitos Integrados 74125 y 74126 que su modo de operar se detalla en el marco teórico y el uso de las memorias ROM que son memorias volátiles, es decir que no llegan a perder la información una vez retirada la fuente de alimentación como lo hacen la memorias RAM.

También aprendimos el modo de operación y el funcionamiento de los dispositivos de tres estados como el 74125 y 74126 que como su nombre lo dice tienen 3 estados pero con la excepción de que el 74126 es de activo ALTO. Por lo tanto el 74125 solo transmite lo que recibe por su entrada, al activarse por la entrada de habilitación. Pero sus caracteristicas de E/S y eléctricas son las mismas

Por parte del 7490 esta diseñado como un contador de décadas, también tiene la función de divisor de frecuencia por dos y por cinco; sin necesidad de utilizar la entrada asíncrona.

Por último demostramos la operación de una memoria ROM montando y probando una ROM de matriz de diodos y grabando el número de teléfono de algún compañero del grupo.

VIII. Fe de erratas

No tuvimos muchos problemas en el armado del circuito ya que se conoce muy bien el programa Proteus pero lo que si fué un poco dificultoso para mi fué la interpretación de la Parte 2 que no entendía muy bien lo que habia que hacer o mejor dicho el funcionamiento del circuito para cumplir con lo requerido en la hoja de Laboratorio, pero gracias a la explicación del docente logré entender.