Fondo Portuario Paralelo -...

78
Asesor: Ing. Armando Rafael San Vicente

Transcript of Fondo Portuario Paralelo -...

Page 1: Fondo Portuario Paralelo - electronica.ugr.eselectronica.ugr.es/~amroldan/asignaturas/curso01-02/dis…  · Web viewDespués de leer este documento en el cual se presentan ejemplos

Asesor: Ing. Armando Rafael San Vicente

Fco. José Aguilar Nieto

Page 2: Fondo Portuario Paralelo - electronica.ugr.eselectronica.ugr.es/~amroldan/asignaturas/curso01-02/dis…  · Web viewDespués de leer este documento en el cual se presentan ejemplos

ÌNDICE

IntroducciónIntroducción a los puertos paralelosDesarrollo del puerto paralelo

Descripción del puertoPropiedades del hardwareModo de compatibildad/centronicsDirecciones del puerto

Programa para identificar el puertoTransiciones del modo de compatibilidad

Registros en el software para el puerto paralelo estándarSalidasEntradas

El ejemplo simple del LEDCircuito de prueba del puerto

Puerto BidireccionalesUsando el puerto paralelo para introducir 8 bitsModo NibbleModo ByteModo realzado del puerto paralelo

Interfaz de registro EPPModo ECP

Interfaz de registro y software ECPInterrupciones

Cambiando solamente bits seleccionadosDiferencias en puertos de impresoras

Utilizando las interrupciones del puertoPrograma de polaridad de interrupción

Forzando una interrupción en el puerto de impresiónTabla de manejo de interrupción

Modificando la tabla de manejo de interrupciónEnmascarandoRutina de Servicio de la interrupciónBit de habilitación de IRQProgramas de IRQ

Programa para detectar la aparición de interrupciónPrograma para cálculo de tiempo entre interrupciones

Etapa de negociaciónTransición de las fases de negociación

Interfaz eléctrica, el cableEnsamblaje de cables

Memorias FIFOBreve historia de las FIFO

Memorias FIFO y sus aplicacionesRamas de familias FIFOAplicaciones generales de las FIFOFIFO Temporizada

ConclusionesBibliografía

Soluciones a Interfaz por Medio del Puerto Paralelo de la PC 2

Page 3: Fondo Portuario Paralelo - electronica.ugr.eselectronica.ugr.es/~amroldan/asignaturas/curso01-02/dis…  · Web viewDespués de leer este documento en el cual se presentan ejemplos

INTRODUCCIÓN

A lo largo de nuestra vida escolar, nos hemos encontrado con nuevos dispositivos electrónicos, nuevos circuitos electrónicos, nuevos integrados, etc, pero estos siempre son obra de la creación de otras personas y solo nos limitamos a seguir sus estándares de la fabricación de dichos dispositivos para su utilización.

Hemos desarrollado nuestra imaginación para crear a lo largo de nuestra vida estudiantil aparatos o dispositivos, que tiempo después hemos visto que ya habían sido inventados o creados por otras compañías y que los integrados los podemos encontrar en el mercado haciendo creer en veces que el trabajo que habíamos realizado es obsoleto o inpráctico para lo ya existente.

Prácticamente no hemos trabajado con el puerto paralelo de nuestra computadora, por varias razones, la mayor de ellas; el desconocimiento del funcionamiento de este y la poca información que tenemos de el, lo cual lo hace un instrumento poco atractivo para nosotros y que nos parece muy difícil y complicado de manejar.

Este documento presenta una recopilación de lo que es el puerto paralelo, información necesaria para que el lector pueda crear a través de este, nuevos dispositivos y le saque el mayor provecho a un instrumento tan robusto como lo es la computadora, que en muchas ocasiones limitamos su uso a el de un simple procesador de textos o un creador de presentaciones, cuando este puede ser el instrumento mas poderoso a el alcance de todos y que no lo aprovechamos al máximo.

Después de leer este documento en el cual se presentan ejemplos ilustrativos para acercar mas al lector hacia el uso del puerto paralelo, el lector podrá hechar a andar su imaginación para poder hacer instrumentación, dispositivos de control, dispositivos electrónicos, etc. por medio del puerto paralelo y tendrá información y práctica necesaria para poder hacerlo, entre otras cosas.

Este documento está hecho con información actualizada y presenta ejemplos ilustrativos para correr desde la computadora que han sido hechos en lenguaje C, el cual no maneja la mayoría de los estudiantes de ingeniería y que resulta de vital importancia en la vida ingenieril, para la creación de nuevos dispositivos que sean manejados a través de la computadora.

Con este trabajo también dejó bien sentadas las bases para la construcción del osciloscopio virtual, proyecto del que nació la creación de este documento. Del osciloscopio virtual se tiene ya un prototipo, pero que se tiene muy poca información del funcionamiento de este y del manejo de las señales que este tiene, limitando con esto su desarrollo y perfeccionamiento para así tener un instrumento más robusto.

El principal problema en la utilización del osciloscopio virtual, fue el ancho de banda que manejaba, ya que este era muy pequeño y reducido a menos de 1khz razón por la cual se emprendió a hacer este documento. Gracias a la búsqueda del porque se tenía ese ancho de banda tan pequeño, fue que surgió la idea de crear este documento que permitiría conocer el porque del este limitado funcionamiento y se con el cual se buscarían soluciones a esto. Una de las soluciones que propone este documento es la utilización de las memorias FIFO, de las cuales se presenta una introducción de su utilización y desarrollo de estas mismas, ya que se ha visto y comprobado que el alumno tiene un escaso conocimiento de estas últimas y que las desconoce.

El desarrollo de las memorias FIFO, ha jugado un papel muy importante en la creación de dispositos que manejan una gran cantidad de datos a altas velocidades y del cual se tiene un gran uso en la electrónica actual, pero que nosotros no tenemos conocimiento de estas. En este documento se da una información general acerca de estas meorias FIF, para que las personas que sigan con este proyecto hagan uso de estas y se pueda aumentar el ancho de banda del osciloscopio virtual superando con la utilización de estas últimas 1Mhz de ancho de banda, haciendo con esto un osciloscopio mucho mas robusto y que permitirá un uso mas grande para más dispositivos y no uno limitado a unos cuantos.

Espero que sea de fácil comprensión para el lector este documento y que le sea de gran utilidad, ya que detrás de este documento están muchas horas de trabajo ininterrumpido que le ahorrarán muchas más. Soluciones a Interfaz por Medio del Puerto Paralelo de la PC 3

Page 4: Fondo Portuario Paralelo - electronica.ugr.eselectronica.ugr.es/~amroldan/asignaturas/curso01-02/dis…  · Web viewDespués de leer este documento en el cual se presentan ejemplos

INTRODUCCIÓN A LOS PUERTOS PARALELOS

El puerto paralelo es el puerto más comúnmente usado para proyectos caseros que requieren una interfaz con la computadora. Este puerto le permitirá la entrada de información de hasta 9 bits o la salida de 12 bits en cualquier tiempo dado, requiriendo con esto un mínimo de circuitos externo mínimo para implementar muchas tareas simples. El acceso se compone de 4 líneas del control, 5 líneas de estado y 8 líneas de datos. Se encuentra comúnmente en la parte posterior de la PC como un conector hembra de contacto Tipo-D 25. Puede también haber un conector macho Tipo-d 25. Este será un acceso serial RS-232 y de esta manera es un acceso totalmente incompatible.

Los puertos paralelos nuevos se estandarizan bajo estándar de IEEE 1284 primero release/versión en 1994. Este estándar define los 5 modos de operación que son como sigue,

1. Modo de Compatibilidad. 2. Modo Nibble.3. Modo byte. 4. Modo EPP (Puerto Paralelo Realzado). 5. Modo ECP (Modo de Capacidades Extendidas).

Esta aim para diseñar nuevos controladores y dispositivos que fueran compatibles con cada uno de los otros y también compatible con el puerto paralelo estándar (SPP). El modo de Compatibilidad, Modo nibble y Modo Byte solo utilizan el hardware estándar original disponible de las tarjetas del puerto paralelo original mientras que los modos EPP y ECP requieren de hardware adicional que puede correr a más alta velocidad, a la vez que sigue siendo compatible con el Puerto Paralelo Estándar.

El modo de la compatibilidad o el “Modo Centronics" como se conoce comúnmente, puede enviar solamente datos en la dirección delantera a una velocidad típica de 50 kilobytes por segundo pero puede ser tan alto como los 150+ kilobytes por segundo. Para recibir datos, uno debe cambiar el modo a cualquiera, al modo nibble o byte. El modo nibble puede introducir un nibble (4 bits) en dirección reversa, por ejemplo del dispositivo a la computadora. El modo byte utiliza la característica bidireccional del paralelo (encontrados solamente en algunas tarjetas) para meter un byte (8 bits) de datos en la dirección reversa.

Los puertos paralelos extendidos y realzados utilizan hardware adicional para generar y manejar el handshake. Para sacar un byte a una impresora (o cualquier cosa de esa estilo) usando el modo de compatibilidad, el software debe,

1. Escriba el byte al puerto de datos. 2. Examinar para ver si la impresora está ocupada (busy). Si la impresora está ocupada, no aceptará ningún

dato, así cualquier dato que se escriba será perdido. 3. Tomar el strobe (conector 1) a bajo. Esto le dice a la impresora que están los datos correctos sobre las

líneas de datos. (contactos 2-9)4. Ponen el strobe en alto de nuevo después de esperar aproximadamente 5 microsegundos después de poner

el strobe en bajo. (el paso 3)

Esto limita la velocidad en la cual el puerto puede correr. Los puertos EPP y ECP consiguen alrededor de esto dejando que el harware verifique si la impresora está ocupada y genera un strobe y/o un adecuado handshake. Esto significa que solamente una instrucción de entrada-salida necesita ser realizada, aumentando así la velocidad. Estos puertos pueden sacar aproximadamente 1-2 megabytes por segundo. El puerto ECP también tiene la ventaja de usar los canales de acceso directo de memoria (DMA) y los almacenadores (buffers) FIFO, así los datos se pueden ser puestos alrededor sin utilizar instrucciones de entrada-salida.

DESARROLLO DEL PUERTO PARALELO

Cuando IBM introdujo la PC, en 1981, el puerto paralelo de la impresora fue incluido como una alternativa al lento acceso al puerto serial como un medio para conducir las últimas impresoras del alto rendimiento por matriz de punto. El acceso paralelo tenía la capacidad de transferir 8 dígitos binarios de datos

Soluciones a Interfaz por Medio del Puerto Paralelo de la PC 4

Page 5: Fondo Portuario Paralelo - electronica.ugr.eselectronica.ugr.es/~amroldan/asignaturas/curso01-02/dis…  · Web viewDespués de leer este documento en el cual se presentan ejemplos

en el tiempo mientras que el acceso serial transmitía un dígito binario en el mismo tiempo. Cuando la PC fue introducida, las impresoras de matriz de punto eran el periférico principal que utilizaba el puerto paralelo. En tanto que la tecnología progresaba y la necesidad de una mayor conectividad externa incrementaba, el puerto paralelo se convirtió en el medios por el cual uno podía conectar periférico de más alto desempeño. Estos periférico ahora se extienden desde la impresora que comparte dispositivos, las unidades de discos portátiles y la cinta de respaldo para los adaptadores de red de área local y la unidades de CD ROM.

Los problemas encarados por los descubridores y los clientes de estos periférico se dividieron en tres categorías. El primero, aunque el funcionamiento de la PC ha aumentado dramáticamente, no ha habido cambios virtuales en el funcionamiento del puerto paralelo o en su arquitectura. La tasa máxima de transferencia de datos con esta arquitectura es de alrededor 150 kilobytes por segundo y es extremadamente intensiva en el software. En segundo lugar, no existe un estándar para la interfaz eléctrica. Esto causa muchos problemas al procurar garantizar la operación a través de varias plataformas. Finalmente, la carencia de estándares de diseño forzó una limitación de la distancia de solamente 6 pies para cables externos.

En 1991 se hizo una reunión de fabricantes de impresoras para comenzar discusiones sobre el desarrollo un nuevo estándar para el control inteligente de impresoras sobre una red. Éstos fabricantes, en los cuales estaban incluidos Lexmark, IBM, Texas Instruments y otras, formaron la alianza de impresión de red (Network Printing Alliance).

El NPA definió un conjunto de parámetros que, cuando fueran implementados en la impresora y en el ordenador principal, permitieran el control completo de las aplicaciones de la impresora y de los trabajos.

Mientras que este trabajo estaba en marcha llegó a ser evidente que poner completamente este estándar en ejecución requeriría una conexión bidireccional a la PC de alto desempeño. Los medios generales de conexión, el ordinario puerto paralelo de la PC, no tenían las capacidades requeridas para llenar los requerimientos o las capacidades de este estándar.

El NPA envió una oferta al IEEE para la creación de un comité para desarrollar un nuevo estándar para desarrollar un puerto paralelo bidireccional de alta velocidad para la PC. Era un requisito que este nuevo estándar seguiera siendo completamente compatible con el software original del puerto paralelo y los periféricos, pero que debería aumentar la capacidad de la tasa de datos mayor que 1M por segundo, ambos dentro y fuera de la computadora. Este comité se hizo el comité 1284 de la IEEE.

El estándar 1284 de la IEEE, “Método Estándar de Señalización para una Interfaz Paralela Bi-direccional para Computadoras Personales”, fue aprobado finalmente en Marzo de 1994.

Descripción.El puerto paralelo, según fue implementado en la PC, consiste en un conector de 17 líneas de señales

y 8 líneas de tierra. Las líneas de señales se dividen en tres grupos:

Control (4 líneas) Estado (5 líneas) Datos(8 líneas)

Según lo diseñado originalmente, las líneas del control son utilizadas como señales de control y de apretón de manos de la PC a la impresora. Las líneas de estado son utilizadas para las señales del apretón de manos y como indicadores de estado para cosas tales como la indicación de vaciamiento de papel, indicación de ocupada y errores de interfaz o periférico. Las líneas de datos se utilizan para proporcionar datos de la PC a la impresora, en esa dirección solamente. Implementaciones posteriores del puerto paralelo permitieron que los datos fueran conducidos del periférico a la PC.

La tabla 1 identifica cada una de estas señales y da sus definiciones del Puerto Paralelo Estándar “Standar Parallel Port” (SPP). Las señales dentro de estos grupos se les asignan bits específicos dentro de los registros que llevan a la interfaz del hardware/sofware al puerto paralelo. El acceso paralelo es asociado en el espacio de entrada-salida de la PC. Los registros consisten en un bloque contiguo de 3 registros que empiezan con las direcciones de puerto paralelo. Estos puertos son referidos comúnmente como el puerto LPT y tienen la entrada-salida familiar de 3BCh, 378h y 278h. Las nuevas implementaciones del puerto paralelo, que utilizan los modos avanzados de estándar 1284, utilizan de 8 a 16 registros y se localizan en la dirección de Soluciones a Interfaz por Medio del Puerto Paralelo de la PC 5

Page 6: Fondo Portuario Paralelo - electronica.ugr.eselectronica.ugr.es/~amroldan/asignaturas/curso01-02/dis…  · Web viewDespués de leer este documento en el cual se presentan ejemplos

entrada-salida 378h o 278h, o son re-localizables, como en el caso de un adaptador de enchufe y juegue obediente.

La tabla 1 identifica los registros para el puerto paralelo estándar. El método básico de transferencia de datos a la impresora que usa este puerto se describe mas adelante en el 'Modo de Compatibilidad'.

Grupo Señal SPP Entrada/Salida

Descripción de la señal

Control nSTROBE Salida Bajo activo. Indica la validación del dato si está en las líneas de datos.

- nAUTOALIMEN-TACIÓN

Salida Bajo activo. Manda a la impresora insertar automáticamente una línea de alimentación para cada retorno de carro.

- nSELECTIN Salida Bajo activo. Usado para indicar si la impresora es seleccionada.- nINIT Salida Bajo activo. Usado para reiniciar la impresora.Estado nRECONOCI

MIENTOEntrada Un estado bajo indica que el último carácter fue recibido

- OCUPADO Entrada Una señal en alto hecha por la impresora, indica que está ocupada y que no puede tomar datos.

- SP Entrada Sin papel- SELECCIÓN Entrada Un estado alto indica que la impresora esta en línea.- nERROR Entrada Un estado bajo indica que algunas condiciones de error existenDatos DATOS[8:1] Salida 8 Líneas de datos – salidas únicamente en los viejos SPP

(Nota 1) El uso de la señal descrito aquí y todas los tablas siguientes definen el uso en el modo de la transferencia de datos descrito. Muchas de estas señales se utilizan para el modo de las transiciones y para la información de estado adicional. Se recomienda que vea el estándar 1284-1994 de la IEEE para la definición completa del uso de estas señales. Esto se pone como una introducción solamente.

Offset del Registro (2)

Nombre Lectura/Escritura Descripción

0 Registro de datos L/E Puerto de datos para escribir o leer los mismos.

1 Registro de estado Lectura Contiene los bits de estado.2 Registro de control Escritura Usado para poner las señales de control.

3-7 Varios N/A Usado diferentemente para varias implementaciones.

PROPIEDADES DEL HARDWARE

Debajo está una tabla de los “Contactos de salida” del conector Tipo-D de 25 contactos y del conector Centronics de 34 contactos. El conector Tipo-D de 25 contactos es el conector que se encuentra más Soluciones a Interfaz por Medio del Puerto Paralelo de la PC 6

Tabla 1 -- Definiciones De Señal De SPP (Nota 1)

Tabla 2. Definición Del Registro SPP

Page 7: Fondo Portuario Paralelo - electronica.ugr.eselectronica.ugr.es/~amroldan/asignaturas/curso01-02/dis…  · Web viewDespués de leer este documento en el cual se presentan ejemplos

comúnmenete en el puerto paralelo de la computadora, mientras que el conector Centronics se encuentra comúnmente en las impresoras. Sin embargo el estándar de IEEE 1284 especifica 3 diversos conectores para el uso con el puerrto paralelo. El primero, tipo A 1284 es el conector de Tipo-D 25 encontrado en la parte posterior de la mayoría de las computadoras. El segundo es el tipo B 1284 que es el conector centronics de 36 contactos encontrado en la mayoría de las impresoras.

Sin embargo el tipo C IEEE 1284, es un conector de 36 conductores como el centronics, pero más pequeño. Este conector demanda tener un mejor latch de clip, mejores características eléctricas y es más fácil de ensamblar. También contiene dos contactos más para las señales que pueden ser utilizadas para considerar si otro dispositivo conectado, esta encendido. El conector Tipo C 1284 se recomienda para los nuevos diseños, así es que podremos ver más adelante estos nuevos conectores en un futuro muy cercano.

No. De Contacto (Tipo-D 25)

No. Contacto (Centronics)

Señal SPP Dirección Entrada/Salida

Registro Invertido por Hardware

1 1 NStrobe Entrada/Salida Control Si2 2 Dato 0 Salida Datos3 3 Dato 1 Salida Datos4 4 Dato 2 Salida Datos5 5 Dato 3 Salida Datos6 6 Dato 4 Salida Datos7 7 Dato 5 Salida Datos8 8 Dato 6 Salida Datos9 9 Dato 7 Salida Datos10 10 NReconoc Entrada Estado11 11 Ocupada Entrada Estado Si12 12 Sin papel / Fin

de papelEntrada Estado

13 13 nauto-LineaAlim

Entrada Estado

14 14 nError/nFalla Entrada/Salida Control Si15 32 NInicializar Entrada Estado16 31 Ninicializar Entrada/Salida Control17 36 nSelecc-

Impresoranselecc-Dentro

Entrada/Salida Control Si

18-25 19-30 Tierra Tierra

La anterior tabla utiliza " n " delante del nombre de la señal para denotar que la señal se activa en bajo por ejemplo nError. Si ha ocurrido un error en la impresora entonces esta línea estará en bajo. Esta línea está normalmente en alto, por lo que entonces la impresora estará funcionando correctamente. El “Hardware Invertido” significa que la señal es invertida por el hardware paralelo de la tarjeta. Un ejemplo es la línea de ocupada. Si +5v (1 lógico) fue aplicado a este contacto y el registro leído, regresaría de vuelta 0 en el bit 7 del registro de estado.

La salida del puerto paralelo es normalmente de niveles lógicos TTL. Los niveles voltaicos son la parte fácil. La corriente se puede generar o absorber varía de puerto a puerto. La mayoría de los puertos paralelos implementados en ASIC, pueden generar y absorber alrededor de 12mA. Sin embargo éstos son solo algunas de las figuras tomadas de las hojas de datos, Fuente/Absorvedor 6mA, Fuente 12mA/Sumidero 20mA, Sumidero 16mA/Fuente 4mA, Fuente/Sumidero 12mA. Como se puede ver varían un poco. La mejor alternativa es utilizar un almacenador(buffer) intermedio, de tal manera que la corriente es drenada del puerto paralelo.

Soluciones a Interfaz por Medio del Puerto Paralelo de la PC 7

Tabla 3. Las asignaciones del conector del puerto paralelo Tipo-D 25.

Page 8: Fondo Portuario Paralelo - electronica.ugr.eselectronica.ugr.es/~amroldan/asignaturas/curso01-02/dis…  · Web viewDespués de leer este documento en el cual se presentan ejemplos

Modos de Transferencia de Datos IEEE 1284

El uso de los varios modos de transferencia de datos 1284 proporciona a la capacidad para crear una conexión en un sentido hacia delante y de reversa del canal entre la computadora huésped y un periférico asociado. Debido a que hay solamente un conjunto de líneas de datos de conexión half duplex, los datos son transferidos en una dirección al mismo tiempo.

La operación del modo de Compatibilidad y el del Nibble se pueden implementar en cualquier puerto paralelo existente para crear un camino de comunicación bidireccional completo entre la computadora huésped y el periférico. Los modos de Compatibilidad y de Byte pueden ser utilizados también para crear un camino de comunicación bidireccional, pero el puerto paralelo debe soportar la capacidad del modo de Byte. El modo de byte requiere que todo un byte de datos pueda ser leído en las líneas de datos externas. Esto es generalmente implementado por la adición de un bit de dirección en el registro de Control del puerto paralelo. Este tipo de puerto generalmente se llama un puerto paralelo 'Bidireccional'.

Los modos de EPP y de ECP tienen una capacidad bidireccional como parte de su protocolo. Estos modos requieren que el hardware implemente un estado de máquina que sea capaz de generar automáticamente el strobe de control que son necesarios para estos modos de la transferencia de datos de alto desempeño.

Cada uno de los modos de funcionamiento, con excepción del de Compatibilidad, vuelve a nombrar las señales del control y de estado para tener un significado dentro del modo que es utilizado.

MODO DE COMPATIBILIDAD/CENTRONICS

Este modo define el protocolo usado por la mayoría de las PC para transferir datos a la impresora. Comúnmente se le llama el modo “Centronics” y es el método utilizado con el puerto paralelo estándar. En este modo, los datos ser ponen en la línea de datos del puerto, el estado de la impresora es verificado que no tenga ningún error y si no esta en ocupado, entonces un dato estroboscópico es generado por el software para

poner en tiempo el dato a la impresora. La figura 1 describe esta transferencia.

Los datos primero se aplican primeramente en los contactos paralelos 2 a 7 del puerto. El ordenador principal(host) entonces verifica viendo si la impresora está ocupada. es decir, si la línea de ocupado está en bajo. El programa después afirma el strobe, espera un mínimo de 1uS, y después de-afirma el strobe. Los datos son normalmente leídos por la impresora/periférico en el borde de levantamiento del strobe. La impresora indicará que está ocupada procesando de datos la línea de ocupada. Una vez que la impresora haya validado los datos, reconocerá el byte por un pulso negativo de alrededor de 5uS en la línea de nReconoc.

Soluciones a Interfaz por Medio del Puerto Paralelo de la PC 8

Línea de datos

OCUPADO

nSTROBE

nCONOCIMIENTO

FIGURA 1. Ciclo de transferencia de datos en el modo de compatibilidad

Page 9: Fondo Portuario Paralelo - electronica.ugr.eselectronica.ugr.es/~amroldan/asignaturas/curso01-02/dis…  · Web viewDespués de leer este documento en el cual se presentan ejemplos

Muy a menudo el ordenador principal(host) ignorará la línea de nReconoc para ahorrar tiempo. Mas tarde en el puerto de las capacidades extendidas (ECP), se observará un modo centronics rápido, que deja que el harware haga todo el handshake por uno. Todo lo que el programador debe hacer es escribe el byte de datos al puerto de entrada-salida. El hardware verificará si la impresora está ocupada, genera el strobe. Observe que este modo comúnmente no controla el nReconoc tampoco.

DIRECCIONES DEL PUERTO

El puerto paralelo tiene tres direcciones base comúnmente usadas. Éstos se listan en la tabla 18, abajo. La dirección base 3BCh originalmente fue introducida originalmente para ser utilizado por los puertos paralelos en las primeras tarjetas de video. Este direccionamiento desapareció por un rato, cuando más adelante a los puertos paralelos les fueron quitados las tarjetas video. Ahora han reaparecido como una opción para las placas base integradas de los puertos paralelos, sobre las cuales su configuración se puede cambiar usando BIOS.

LPT1 se asigna normalmente a la dirección base 378h, mientras que LPT2 se le asigna 278h. Sin embargo éste puede no ser siempre el caso según lo explicado más adelante. 378h y 278h se han utilizado siempre comúnmente para los puertos paralelos. La letra minúscula h denota que está en hexadecimal. Estas direcciones pueden cambiar de máquina a la máquina.

Dirección Notas:3BCh – 3BFh Usada para puertos paralelos donde las tarjetas de video

fueron incoporadas – No soporta el direccionamiento de ECP378h – 37Fh Dirección común para el LPT1278h – 27Fh Dirección común para el LPT2

Cuando la computadora es encendida por primera vez, el BIOS (sistema básico de entrada-salida, Basic Input/Output System) determinará el número de puertos que uno tiene y les asignará etiquetas de la unidad LPT1, LPT2 y LPT3 del dispositivo. El BIOS primero mira la dirección 3BCh. Si un puerto paralelo se encuentra aquí es asignado como LPT1, entonces busca en la dirección 378h. Si una tarjeta paralela se encuentra allí, él asigna la siguiente etiqueta del dispositivo libre. Éste será LPT1 si una tarjeta no fue encontrada en 3BCh o LPT2 si una tarjeta fue encontrada en 3BCh. El acceso último puerto, es 278h y se sigue el mismo procedimiento que con los otros dos puertos. Por lo tanto es posible tener un LPT2 que esté en 378h y no en la dirección prevista 278h.

Lo que puede hacer esto una confusión uniforme, es que algunos fabricantes de tarjetas de puertos paralelos, tienen puentes (jumpers) que nos permiten poner el acceso a LPT1, LPT2, LPT3. ¿Ahora qué dirección es LPT1? - En la mayoría de las tarjetas LPT1 está en 378h, y LPT2 en 278h, pero algo usarán 3BCh como LPT1, 378h como LPT1 y 278h como LPT2.

Los dispositivos asignados LPT1, LPT2 y LPT3 no deben ser una preocupación para los alumnos que desear interfazar los dispositivos a sus PC's. La mayot parte del tiempo la dirección base es utilizada para interfazar el puerto mejor que LPT1 etc. No obstante si el alumno desea encontrar el direccionamiento de LPT1 o cualquiera de los dispositivos de los dispositivos de la línea de impresora, el alumno puede utilizar una tabla de las operaciones de búsqueda proporcionada por BIOS. Cuando el BIOS asigna las direcciones a los dispositivos de la impresora, guarda la dirección en locaciones específicas en memoria, así que se pueden encontrar mediante la siguiente tabla.

Soluciones a Interfaz por Medio del Puerto Paralelo de la PC 9

Tabla 4. Locaciones del puerto de impresora

Page 10: Fondo Portuario Paralelo - electronica.ugr.eselectronica.ugr.es/~amroldan/asignaturas/curso01-02/dis…  · Web viewDespués de leer este documento en el cual se presentan ejemplos

Dirección de inicio Función0000 : 0408 Dirección base de LPT1s0000 : 040A Dirección base de LPT2s0000 : 040C Dirección base de LPT3s0000 : 040E Dirección base de LPT4s

Nota : El direccionamiento 0000:040E en el área de datos del BIOS se puede utilizar como el área de datos extendida del bios en PS/2 BIOSes mas nuevos.

La tabla anterior muestra las direcciones en las cuales podemos encontrar las direcciones del puerto de impresora en el área de datos del BIOS. Cada dirección tomará 2 bytes. El siguiente programa de muestra en C, le dirá al alumno cómo puede leer estas localidades para obtener las direcciones del puerto de impresora.

Programa para identificar el puerto#include <stdio.h>#include <dos.h>

void main(void) /*Declaración del programa principal*/{ unsigned int far *dirapunta; /*El apuntador en la direccion del puerto*/ unsigned int direccion; /*Variable para la direccion del puerto*/ int a;

dirapunta=(unsigned int far *)0x00000408;

for (a = 0; a < 3; a++) { direccion = *dirapunta; if (direccion == 0) printf("Ningun puerto fue encontrado para LPT%d \n",a+1); else printf("La direccion asignada a LPT%d es %Xh\n",a+1,direccion); *dirapunta++; } }

Transiciones de la fase del modo de compatibilidad:

1. Escribe el dato al registro de datos.2. El Programa lee el registro de estado para verificar que la impresora no está OCUPADA3. Si no esta OCUPADA, entonces escribe al registro de control para afirmar la línea de STROBE4. Escribe a el registro de control para re-afirmar la línea de STROBE

Como ser ve, para hacer salir un byte de datos se requieren cuatro instrucciones de entrada-salida y por lo menos muchas instrucciones adicionales. El efecto neto de esto es una limitante en las capacidades del ancho de banda del puerto en el orden de los 150K bytes por segundo.

Este ancho de banda es suficiente para comunicarse con la matriz de punto y con muchas impresoras laser viejas, pero una limitación al comunicarse con los adaptadores de bolsillo de LAN, las unidades de disco removibles, y la generación más nueva de las impresoras laser, por nombrar algunos. Por supuesto, este modo está para el canal hacia adelante solamente y se debe combinar con el modo del canal de reversa para tener un canal bidireccional completo.

Soluciones a Interfaz por Medio del Puerto Paralelo de la PC 10

Tabla 5. Dirección en BIOS DE LPT

Page 11: Fondo Portuario Paralelo - electronica.ugr.eselectronica.ugr.es/~amroldan/asignaturas/curso01-02/dis…  · Web viewDespués de leer este documento en el cual se presentan ejemplos

Este modo fue incluido como una manera de proveer compatibilidad hacia atrás con la enorme base de impresoras y de periféricos instalados. Los otros modos son utilizados para proporcionar el canal de reversa y ligas de comunicación del alto rendimiento.

Muchos de los controladores integrados de entrada/salida del 1284 han implementado un modo en ejecución que utiliza un almacenador (buffer) FIFO para transferir datos con el protocolo del modo de compatibilidad. Este modo es referido como ”Centronics rápido” o “Modo FIFO del puerto paralelo”'. Cuando este modo es habilitado, los datos escritos al acceso del puerto FIFO serán transferidos a la impresora usando strobes generados por hardware para el apretón de manos. Puesto que hay tiempos de espera muy pequeños entre las transferencias, y el software no tiene que estar verificando estrobes o del apretón de manos que controla, las tasas de datos de hasta de 500K bytes por segundo son realizables con algunos sistemas. Este modo, sin embargo, no es un modo definido por el 1284 de IEEE y no se describe en el estándar.

REGISTROS EN EL SOFTWARE PARA EL PUERTO PARALELO ESTÁNDAR (SPP)

Desviación(Offset)

Nombre Lectura/Escritura Bit No. Propiedades

Base + 0 Puerto de Datos Escritura (Nota 1) Bit 7 Dato 7Bit 6 Dato 6Bit 5 Dato 5Bit 4 Dato 4Bit 3 Dato 3Bit 2 Dato 2Bit 1 Dato 1Bit 0 Dato 0

Nota 1: Si el puerto es bidirecional entonces las operaciones de lectura y escritura puede ser realizadas en el registro de los datos.

La dirección base, generalmente llamada el puerto de los datos o el registro de datos se utiliza simplemente para sacar datos sobre las líneas de datos del puerto paralelo (contactos 2-9). Este registro es normalmente un puerto de escrirura solamente. Si uno lee del puerto, uno debe conseguir el último byte enviado. Sin embargo si nuestro puerto es bidireccional, uno puede recibir datos en estas direcciones. Vea los puertos bidireccionales para más detalles.

Desviación(Offset)

Nombre Lectura/Escritura Bit No. Propiedades

Base + 1 Puerto de Estado Unicamente Lectura Bit 7 OcupadoBit 6 ReconocBit 5 Sin PapelBit 4 Selecc InBit 3 ErrorBit 2 IRQ (No)Bit 1 ReservadoBit 0 Reservado

Soluciones a Interfaz por Medio del Puerto Paralelo de la PC 11

Tabla 6. Puerto de datos

Tabla 7. Puerto de Estado

Page 12: Fondo Portuario Paralelo - electronica.ugr.eselectronica.ugr.es/~amroldan/asignaturas/curso01-02/dis…  · Web viewDespués de leer este documento en el cual se presentan ejemplos

El puerto de estado (dirección base + 1) es un solamente un puerto de lectura. Cualquier dato escrito a este puerto será ignorado. El puerto de estado se compone de 5 líneas de entrada (contactos 10.11.12.13 y 15), un registro de estado de la interrupción (IRQ) y de dos bits reservados. Note que el bit 7 (Ocupado) es una entrada en bajo activo por ejemplo si el bit 7 quiere mostrar un 0 lógico, esto significa que hay +5v en el contacto 11. Asimismo con el bit 2. (nIRQ) si este bit muestra un “1” entonces una interrupción no ha ocurrido.

Desviación(Offset)

Nombre Lectura/Escritura Bit No.Propiedades

Base + 1 Puerto de Estado Lectura/Escritura Bit 7 No UsadoBit 6 No UsadoBit 5 Habilita el puerto

bidireccionalBit 4 Habilita la interrupción vía

la Línea de ReconocBit 3 Selecciona impresoraBit 2 Inicializa impresora (reset)Bit 1 Auto alimentación de líneaBit 0 Strobe

El puerto de control (dirección base + 2) fue pensado como un puerto de escritura solamente. Cuando una impresora se asocia al puerto paralelo, cuatro “controles” son utilizados Éstos son Strobe, Auto AlimLínea, Inicializar y Seleccionar Impresora, la cuales son invertidas excepto Inicializar.

La impresora no enviará una señal para inicializar la computadora, ni dirá a la computadora el utilizar Autop AlimLínea. Sin embargo estas cuatro salidas pueden ser utilizadas para entradas. Si la computadora ha puesto un contacto en alto (p.e. +5v) y su dispositivo deseó tomarlo en bajo, uno pondría en cortocircuito el puerto, causando un conflicto en ese contacto. Por lo tanto estas líneas son salidas de “colector abierto” (o drenaje abierto para los dispositivos de Cmos). Esto significa que tienen dos estados. Un estado bajo (0v) y un estado de alta impedancia (circuito abierto).

Normalmente la tarjeta de la impresora tendrá un resistor interno de empuje (pull up resistor), pero como uno esperaría, no del todo . Algunos pueden apenas tener salidas de colector abierto, mientras que otros pueden incluso tener salidas normales de poste de totem. Para hacer que su dispositivo trabaje correctamente en tantos puertos de impresora como sea posible, uno puede utilizar un resistor externo también. Si uno tiene ya un resistor interno, entonces actuará en paralelo con el, o si uno tiene salidas de poste de Totem, el resistor actuará como carga.

Un resistor externo 4.7k puede ser utilizado para empujar al conector a alto. No debe de utilizar cualquiera más bajo, solo en caso de que uno haga que un interno levante al resistor, como el resistor externo actuará en el paralelo dándolo eficazmente, un valor más bajo levantará el resistor. Cuando en alto estado de impedancia el contacto en el puerto paralelo es alto (+5v). Cuando en este estado, su dispositivo externo puede tempujar el contacto a bajo y hacer que el cambio en el puerto de control para que lea un valor diferente. De esta manera los 4 contactos del puerto de control se pueden utilizar para la transferencia de datos bidireccionales. No obstante el puerto del control se debe poner en xxxx0100 para poder leer datos, ése es que todos los contactos estén en +5v en el puerto de modo que uno pueda empujarlos hacia abajo a tierra (0 lógico).

Los bits 4 y 5 son controles internos. El cuarto bit permitirá la interrupción IRQ (véase el tema de usando las interrupciones del puerto paralelo) y el bit 5 permitirá el puerto bidireccional significando que uno puede meter 8 bits (DATOS 0-7). Este modo es solamente posible si la tarjeta lo soporta. Los bits 6 y 7 son reservados. Cualquiera cosa que se escriba a estos dos bits será ingnorada.

Soluciones a Interfaz por Medio del Puerto Paralelo de la PC 12

Tabla 6. Puerto de control

Page 13: Fondo Portuario Paralelo - electronica.ugr.eselectronica.ugr.es/~amroldan/asignaturas/curso01-02/dis…  · Web viewDespués de leer este documento en el cual se presentan ejemplos

SALIDAS

Observe que son ocho salidas en el acceso de datos (datos 7(msb) – dato 0) y cuatro salidas adicionales en el nibble bajo del Puerto de Control. nSELECC_DENTRO, INIC, nAUTOALIM y nSTROBE

[Note que con nSELECC_DENTRO, el “dentro” se refiere a la impresora. Para la operación normal de la impresora, la PC ejerce un cero lógico para indicar que la impresora esta seleccionada. La función original de INIC era inicializar la impresora, AUTO ALIMENTACIÓN para avanzar el papel. En la impresión normal, el STROBE está en alto. El carácter que se imprimirá se hace saca en el puerto de datos y el STROBE es puesto momentáneamente en bajo. ]

Todas las salidas en el puerto de datos son de lógica verdadera (true logic). Es decir, que al escribir uno a un bit hace que la salida correspondiente pase a ALTO. Sin embargo las salidas de nSELECC_DENTRO, nAUTOALIM y nSTROBE del puerto de control tienen lógica invertida. Es decir, que al poner un uno lógico a un bit causa un cero lógico en la salida correspondiente. Esto agrega una cierta complejidad al usar el puerto de impresora, pero la solución es simplemente invertir esos bits usando una función OR exclusivo antes de la salida.

[Uno se puede preguntar ¿porqué los diseñadores del puerto de impresora diseñaron el acceso de esta manera?. Asuma que uno tiene una impresora sin el cable asociado. Un estado abierto se lee generalmente como un uno lógico. Así, si un uno lógico en las terminales de nSELECC_DENTRO, de AUTOALIM y del STROBE hacen tomar la acción apropiada, una impresora desconectada asumiría que fue seleccionada, entra el modo de autoalim y asume que había datos sobre las salidas asociadas a el puerto de datos. La impresora se volvería loca cuando de hecho nada fue conectado. Por eso, los diseñadores utilizaron lógica invertida. Un cero forza la acción apropiada]

Volviendo a la discusión del puerto de control, asuma que tiene un valor val1 que será sacador en el puerto de datos y un valor val2 en el puerto de control:

#define DATOS 0x03bc #define ESTADO DATOS+1 #define CONTROL DATOS+2 ... int val1, val2; ... val1 = 0x81; /* 1000 0001 */ /*Bits de datos 7 y 0 en uno */ outportb(DATOS, val1); val2 = 0x08; /* 0000 1000 */ outportb(CONTROL, VAL2^0x0b); /* SELECC_DENTRO = 1, INIC = 0, nAUTOALIM= 0, nSTROBE = 0 */

Soluciones a Interfaz por Medio del Puerto Paralelo de la PC 13

Dato 7Dato 6Dato 5Dato 4Dato 3Dato 2Dato 1Dato 0

Puerto de datos

OCUPADOnRECONOCPESELECCnERRORnIRQReservadoReservado

Puerto de estado

ReservadoReservadoDirecciónHab IRQnSEL_DINICnAUTOALnSTROBE

Puerto de Control

Figura 2. Asignación de los puertos

Page 14: Fondo Portuario Paralelo - electronica.ugr.eselectronica.ugr.es/~amroldan/asignaturas/curso01-02/dis…  · Web viewDespués de leer este documento en el cual se presentan ejemplos

Observe que solamente el nibble más bajo de val2 es significativo. Observe que en la última línea de código, nSELECC_DENTRO, nAUTOALIM y nSTROBE son salidas en forma invertida por el usao de la función de or-exclusivo para compensar la inversión del hardware.

Por ejemplo; si se intentara hacer salir 1 0 0 0 en el nibble más bajo y no se hiciera la inversión, el hardware invertiría el bit 3, dejaría el bit 2 como verdadero e invertiría los bits 1 y 0. El resultado, aparecido en la salida entonces sería 0 0 1 1 que está alrededor tan lejos de lo que fue deseado que un podría tener. Usando la función de or-exclusivo, 1 0 0 0 es enviado realmente como 0 0 1 1. El hardware entonces invierte los bits 3, 1 y 0 y la salida es entonces el 1 0 0 0 deseado.

ENTRADAS

Observe que en el diagrama que muestra el puerto de estado son cinco las terminales de componente de estado de la impresora. (OCUPADO, nRECONOC, PE (Sin papel), SELECC, nERROR)..

[El intento original en el nombramiento de la mayoría de éstos es intuitivo. Un alto en SELECC indica que la impresora está en línea. Un bajo en OCUPADO o el PE indica a la PC que la impresora está ocupada o sin de papel. Un peuqeño bajo en nRECONOC indica que la impresora recibió algo. Un bajo en ERROR indica que la impresora está en una condición de error.]

Estas entradas de información son traídas leyendo los cinco bits más significativos del puerto de estado.

Sin embargo, los diseñadores originales del circuito de interfaz de la impresora, invirtieron el bit asociado al OCUPADO usando el hardware. Es decir, cuando un cero está presente en la entrada de OCUPADO, el bit será leído realmente como un uno lógico. Normalmente, uno deseará utilizar lógica “verdadera”, y uno deseará así invertir este bit.

El siguiente fragmento ilustra la lectura de los cinco bits más significativos en lógica “verdadera”.

#define DATOS 0x03BC #define ESTADO DATOS+1 ... unsigned int val_entr; ... val_entr = ((inportb(ESTADO)^0x80) >> 3);

Note que el Puerto de Estado es leído y el bit mas significante correspondiente a OCUPADO es invertido usando la función de or-exclusivo. El resultado es entonces retenido de tal manera que los cinco bits superiores están en la posición de los cinco inferiores. 0 0 0 OCUPADO nRECONOC PE SELECC nERROR

En este punto, uno debe ver que por lo menos hay un mínimo de 12 salidas; ocho en el puerto de datos y cuatro en el nibble bajo del puerto de control. Hay cinco entradas, en los cinco bits mas altos del puerto de ESTADO. Tres bits de salida en el puerto de control y una entrada del puerto de ESTADO son invertidas por hardware, pero éste manejado fácilmente con el uso de la función or-exclusivo para invertir selectivamente los bits.

Soluciones a Interfaz por Medio del Puerto Paralelo de la PC 14

Page 15: Fondo Portuario Paralelo - electronica.ugr.eselectronica.ugr.es/~amroldan/asignaturas/curso01-02/dis…  · Web viewDespués de leer este documento en el cual se presentan ejemplos

EL EJEMPLO SIMPLE DEL LED

Vea la figura , es una aplicación típica que muestra un interruptor de botón normalmente abierto que es leído en la entrada de información OCUPADO (Puerto de ESTADO, bit 7) y un LED, el cuál es controlado por el Bit 0 en el puerto de datos. Un programa en lenguaje C que hace el LED parpadee cuando se presiona el boton está oprimido aparece abajo. Observe que un cero lógico en la salida causa que el LED no se encienda./* Archivo LED.C** Programa educativo para el uso simple del puerto de impresora.** Cuando un boton en presionado el LED parpadeara. Cuando el boton** no sea presionado el LED permanecera apagado*/#include <stdio.h>#include <dos.h> /*Requerido para la funcion de espera*/

#define DATOS 0x03BC /*Aquí va el numero asignado al puerto(03BC)*/#define ESTADO DATOS+1#define CONTROL DATOS+2

void main(void){int entrada;while(1){entrada = inportb(ESTADO);if (((entrada^0x80)&0x80)==0) /*Si el bit de OCUPADO esta en 0 boton apag*/{outportb(DATOS,0x00); /*Enciende el LED*/delay(100); /*Espera un tiempo con el LED prendido*/outportb(DATOS, 0x01); /*Apaga el LED*/delay(100);}else{outportb(DATOS,0x01); /*Si el boton no es presionado, el LED se apaga*/}}}

Soluciones a Interfaz por Medio del Puerto Paralelo de la PC 15

Fuente externa de +5V

Botón de encendido

Puerto de impresora

Tierra

Ocupada

Dato 0

FIGURA 3. Circuito de prueba para un LED

Page 16: Fondo Portuario Paralelo - electronica.ugr.eselectronica.ugr.es/~amroldan/asignaturas/curso01-02/dis…  · Web viewDespués de leer este documento en el cual se presentan ejemplos

Descripción Del Circuito: Un 1 lógico en la salida de DATO 0 (Puerto de datos – Bit 0) hace que el LED esté apagado. Un 0 lógico causas que el LED se encienda.

Normalmente el botón abierto causa el aparecimiento de+5V (1 lógico) en la entrada de OCUPADO (PUERTO DE ESTADO - Bit 7). Cuando es desapretado, el botón se cierra y la tierra es aplicada a la entrada de OCUPADO (0 Lógico). Observe también la fuente de 5V.

Descripción Del Programa: Cuando el botón se presiona, el LED centellea normalmente 5 pulsos por segundo, durante el tiemo en que se mantenga apretado el botón. Cuando este se deja de apretar el led deja de centellar.

CIRCUITO DE PRUEBA DEL PUERTO

Observe a la figura 4. Se trata de un circuito de prueba del puerto de la impresora. Este ilustra un arreglo de pruebas simple para permitir que uno calcule afuera qué inversiones están ocurriendo en el hardware asociado a el puerto de impresora. El programa 12SAL5.C enciende secuencialmente a cada uno de los 12 LED's apagados y después continuamente se cicla para visualizar las configuraciones en los cinco interruptores de entrada.

Soluciones a Interfaz por Medio del Puerto Paralelo de la PC 16

nSEL_D

nINIC

nAUTALIM

nSTROBE

Tierra

Dato 7

Dato 6

Dato 5

Dato 4

Dato 3

Dato 2

Dato 1

Dato 0

Bit 7

Bit 6

Bit 5

Bit 4

Bit 3

Bit 2

Bit 1

Bit 0

OCUP

nRECON

SP

SELECC

nERROR

Nota: El Bit 3, 1 y 0 son invertidos. Use el or-exclsuivo después de

meterlos.

Bit 7

Bit 6

Bit 5

Bit 4

Bit 3

Entradas del puerto de impresión

Salidas del puerto de impresión

Bit 3

Bit 2

Bit 1

Bit 0

Puer

to d

e da

tos

Puerto de estado

Puer

to d

e co

ntro

l

Nota: El Bit 3 está invertido. Despues de meterlo use el or-

exclusivo.

Page 17: Fondo Portuario Paralelo - electronica.ugr.eselectronica.ugr.es/~amroldan/asignaturas/curso01-02/dis…  · Web viewDespués de leer este documento en el cual se presentan ejemplos

/* Programa 12SAL5** ** Programa de ejercicitar 12 salidas y 5 entradas. ** ** El programa secuencialmente apaga los LEDS en los bits 7, 6, 5,...,0 de** el puerto de DATOS, luego los bits 3, 2, 1,0 del puerto de CONTROL.** Cada LED se mantiene apagado por alrededor de 1 segundo. Es muy ** importante notar que un LED es apagado con un “1” logico. Este proceso** se ejecuta una sola vez.** ** El programa luego circula, explorando los cinco bits mas grandes** del puerto de DATOS y continuamente despliega el contenido en hexadecimal.***/ #include <stdio.h> #include <dos.h> /*Requerido para la funcion de espera*/ #define DATOS 0x03BC /*Direccion del puerto de impresora*/ #define ESTADO DATOS+1 #define CONTROL DATOS+2 void main(void) { int entrada, n; outportb(DATOS,0x00); /*Prende todos los LEDs del puerto de DATOS*/ outportb(CONTROL, 0x00^0x0B); /*Hace lo mismo con el puerto de CONTROL*/ /* Ahora se apaga cada LED en el puerto de DATOS prendidos poniendo un **uno logico en cada posicion del BIT y sacandolo.*/ for (n=7; n>=0; n++) { outportb(DATOS, 0x01 << n); delay(1000); } outportb(DATOS, 0x00); /* Ahora apaga cada LED del puerto de control prendidos, **note el or-exclusivo para compensar las inversiones de hardware.*/ outportb(CONTROL, 0x08^0x0b); /* Bit 3 */ delay(1000); outportb(CONTROL, 0x04^0x0b); /* Bit 2 */ delay(1000); outportb(CONTROL, 0x02^0x0b); /* Bit 1 */ delay(1000); outportb(CONTROL, 0x01^0x0b); /* Bit 0 */ delay(1000); outportb(CONTROL, 0x00); /* Continuamente busca los encendedores e imprime el resultado en hexadecimal */

while(1) { in = (inportb(ESTADO)^0x80)&0xf8; /* Note que OCUPADO (BitMS) esta invertido y unicamente el quinto ** bit mas significante del puerto de DATOS es desplegado */ printf("%x\n", in); } }

Soluciones a Interfaz por Medio del Puerto Paralelo de la PC 17

Page 18: Fondo Portuario Paralelo - electronica.ugr.eselectronica.ugr.es/~amroldan/asignaturas/curso01-02/dis…  · Web viewDespués de leer este documento en el cual se presentan ejemplos

PUERTOS BIDIRECCIONALES

El diagrama esquemático que se presenta a continuación, muestra un punto de vista simplificado del registro de datos del puerto paralelo. La tarjeta del puerto paralelo implementó lógica 74LS. Actualmente todo esto es colocado en un ASIC, pero la teoría de la operación sigue siendo la misma.

Los puertos no bidireccionales fueron fabricados con el habilitador de salida 74LS374's atado permanente a bajo, así el puerto de datos es de salida solamente. Cuando uno lee el registro de datos del los puertos paralelos, los datos vienen del 74LS374 que también están conectados a los contactos de los datos. Ahora si uno puede manejar el '374 uno puede efectivamente tener un puerto bidireccional. (o un puerto de entrada únicamente, una vez que uno tire las salidas de los latches!)

Lo que se sabe acutalmente es que la gente ha hecho realmente esto. Se ha visto un circuito, con un scope conectado con el puerto paralelo distribuido en el Internet. El autor utiliza un ADC de un cierto tipo, pero encuentra que el ADC requiere transistores en cada línea de datos, para hacerle el trabajo! No importa por que. Otras han tenido un problema similar, el 68HC11 no puede drenar suficiente corriente (30 a 40mA!)

Los puertos bidireccionales usan el bit de control 5 conectados con el habilitador de salida 374's de modo que los manejadores (drivers) puedan ser apagados. De esta manera uno puede leer los datos presentes en los contactos de datos del puerto paralelo, sin tener conflictos del bus y drenaje de corriente excesiva.

El bit 5 del puerto de control habilita o deshabilita la función bidireccional del puerto paralelo. Esto está disponible únicamente en puertos bidireccionales verdaderos. Cuando este bit es puesto a uno, los contactos 2 al 9 entran a un estado de alta impedancia. Una vez en este estado uno puede meter datos sobre estas líneas y extraerlos del puerto de datos (dirección base). Cualquier dato que es escrito al puerto de datos será guardado pero no estará disponible en los contactos de los datos. Para apagar el modo bidireccional, se pone el bit 5 del puerto de control a ' 0 '.

Sin embargo no todos los puertos se comportan de la misma manera. Otros puertos pueden requerir poner el bit 6 del puerto de control para habilitar el modo bidireccional y poniendo el bit 5 para deshabilitar el modo bidireccional. Diversos fabricantes implementan sus puertos bidireccionales de diversas maneras. Si

Soluciones a Interfaz por Medio del Puerto Paralelo de la PC 18

FIGURA 5. Operación del estándar del puerto paralelo bidireccional

Dato0 (2)Dato1 (3)Dato2 (4)Dato3 (5)Dato4 (6)Dato5 (7)Dato6 (8)Dato7 (9)

ISA D0ISA D1ISA D2ISA D3ISA D4ISA D5ISA D6ISA D7

Bit de control 5Base IOW

Base IOR

74LS374

Page 19: Fondo Portuario Paralelo - electronica.ugr.eselectronica.ugr.es/~amroldan/asignaturas/curso01-02/dis…  · Web viewDespués de leer este documento en el cual se presentan ejemplos

uno desea utilizar el puerto bidireccional para meter datos, se tiene que probar con una punta lógica o primero con el multímetro para estar seguro que está en modo bidireccional.

USANDO EL PUERTO PARALELO PARA INTRODUCIR 8 BITS

Si el puerto paralelo no soporta el modo bidireccional, no hay porque declinar. Uno puede meter un máximo de 9 bits en cualquier tiempo. Para hacer esto uno puede utilizar las 5 líneas de entrada del puerto de estado y las 4 líneas de entrada (colector abierto) del puerto de control.

Ocupado(busy) solo pasa en el MSB (bit 7) del puerto de estado, después en orden ascendente viene el Reconoc(ack), Sin Papel(paper out) y selección (select), haciendo el nibble más significativo del puerto de control. Cabe señalar que en la figura antes descrita, la “n” antecedida significa que el bit es invertido por hardware, por ejemplo el +5V se leer como 0 en el registro, mientras que tierra se leerá como 1. El puerto de estado tiene solo una entrada invertida.

El puerto del control se utiliza para leer el nibble menos significativo. Según lo descrito antes, el puerto de control tiene salidas de colector abierto, es decir dos estados posibles, alta impedancia y tierra. Si conectamos nuestras entradas directamente con el puerto (por ejemplo un ADC0804 con salidas totem del poste), un conflicto resultará si la entrada de información está en alto y el acceso está intentando ponerlo en bajo. Por lo tanto se utilizaron los inversores de colector abierto.

Sin embargo esto no es siempre necesario. Si estuviéramos conectando apagadores de poste al puerto con un resistor de levantamiento (pull up), entoncés no hay necesidad de incomodarse con esta protección. También si su software inicializa el puerto de control con xxxx0100 de modo que todos los contactos en el puerto de control estén en alto, esto puede ser innecesario. Pero sin embargo si a uno no le importa y su dispositivo está conectado con el puerto paralelo antes de que su software tenga una oportunidad de inicializarle, entonces uno puede encontrar problemas.

Otro problema del que hay que tener cuidado en el de los resistores de levantamiento del puerto de control. El promedio de los resistores de levantamiento es de 4.7k. En preferencia para poner la línea a bajo, su dispositivo necesitará sumir 1mA, que algunos dispositivos de bajo poder lucharan para hacerlo. Ahora qué sucede si sugiero que algunos puertos tengan 1K de resistores de levantamiento? Efectivamente existen tales tarjetas. Su dispositivo ahora tendrá que sumir 5mA.Una razón más para utilizar los inversores de colector abierto.

Los inversores de colector abierto fueron elegidos sobre los almacenadores(buffers) intermediarios de colector abierto por ser más populares, y por lo tanto más fácil obtener. No hay ninguna razón, sin embargo porqué no puede utilizarlos?. Otra posibilidad es utilizar los transistores.

La entrada D3 está conectada vía el inversor para seleccionar la impresora. Seleccionar impresora solo pasa en el bit 3 del puerto de control. D2, D1 y D0 están conectados con Inic, el AlimLínea y el strobe, respectivamente para poner arriba el nibble más bajo. Ahora que esto ha sido hecho, todos lo que tenemos que

Soluciones a Interfaz por Medio del Puerto Paralelo de la PC 19

FIGURA 6. Inversor hexadecimal de colector abierto 74LS05

8 Entradas

11 nOcupado10 Reconoc

12 Sin Papel13 Selecc

17 nImpresora Selecc

16 Inic14 LíneaAlim Auto

1 nStrobe

Page 20: Fondo Portuario Paralelo - electronica.ugr.eselectronica.ugr.es/~amroldan/asignaturas/curso01-02/dis…  · Web viewDespués de leer este documento en el cual se presentan ejemplos

hacer en unir el byte usando software. La primera cosa que debemos hacer es escribir xxxx0100 al puerto de control. Esto pone todas las líneas del puerto de control en alto, así que pueden ser empujadas hacia abajo para meter datos.

outportb(CONTROL, inportb(CONTROL) & 0xF0 | 0x04);

Ahora que ha sido hecho esto, podemos leer el nibble más significativo. Éste apenas pasa a ser el nibble más significativo del puerto de estado. Mientras que estamos solamente interesados en el MSnibble que queremos pondremos un AND a los resultados con 0xF0, de modo que el LSnibble sea limpiado. Ocupado(busy) es invertido fisicamente, pero no nos preocuparemos de el. Una vez que los dos bytes son construídos, podemos matar a dos pájaros con una piedra accionando Ocupado(busy) e Inic(init) en el mismo tiempo.

a = (inportb(ESTADO) & 0xF0); /* Lee el MSnibble */

Ahora podemos leer el LSnibble. Éste apenas es el LSnibble del puerto de control. Esta vez no estamos interesados con el MSnibble del puerto, así es que le ponemos un AND a el resultado con 0x0F para borrar el MSnibble. Una vez hecho esto, es hora de combinar los dos bytes juntos. Esto es puesto al ponerle un OR a los dos bytes. Ahora nos deja con un byte, pero no se ha terminado aún. Los bits 2 y 7 se inverten. Esto es hecho poniéndoles XOR a el byte con 0x84, que acciona a los dos bits.

a = a |(inportb(CONTROL) & 0x0F); /* Lee el LSnibble */ a = a ^ 0x84; /* Acciona el Bit 2 y 7 */

Nota: Algunos puertos de control no son de colector abierto, sino tienen salidas del poste de totem. Éste es también el caso con los puertos del modo EPP y de ECP. Normalmente cuando uno coloca un puerto paralelo en modoe ECP o de EPP, el puerto de control se convierten en salidas de poste del totem unicamente. Ahora qué pasa si uno conecta su dispositivo con el puerto paralelo en este modo? Por lo tanto, en interés de la portabilidad se recomienda el usar del circuito siguiente, leyendo un nibble al mismo tiempo.

Soluciones a Interfaz por Medio del Puerto Paralelo de la PC 20

Page 21: Fondo Portuario Paralelo - electronica.ugr.eselectronica.ugr.es/~amroldan/asignaturas/curso01-02/dis…  · Web viewDespués de leer este documento en el cual se presentan ejemplos

MODO NIBBLE IEEE 1284-1994

El modo nibble es la manera más común de conseguir datos en revers del canal de una impresora o de un periférico. Este modo generalmente se combina con el modo de compatibilidad o con un modo propietario delantero para crear un canal bidireccional completo.

Todos los puertos paralelos estándares proporcionan 5 líneas del periférico a la Pc para ser usarse como indicaciones de estado externas. Usando estas líneas, un periférico puede enviar un byte de datos (8-bits) enviando 2 nibbles (4-bits) de información a la PC en dos ciclos de transferencia de datos. Desafortunadamente, puesto que la línea de nRECONOCIMIENTO (nACK) es utilizada generalmente para proporcionar una interrupción periférica, los bits usados para transferir un nibble no son convenientemente empacados en el byte definido por el registro de estado. Por esta razón, el software debe leer el byte de estado y después manipular los bits para conseguir un byte correcto.

La tabla 3 identifica los nombres de la señal para el modo de nibble. El cuadro 1 muestra el apretón de manos básico de datos para el modo del modo de nibble de transferencia del periférico al huésped.

Tabla 3 -- Señales Del Modo Del Nibble

Señal SPP Nombre en el modo Nibble

Entrada/Salida

DescripciónUso de señal esta la transferencia de datos en el

modo NibblenSTROBE nSTROBE Salida No usada para la transferencia de datos en reversanAUTOALIM Huésped

OcupadoSalida Señal de handshake del húesped en nibble Mode

Puesto en bajo para indicar que el huésped esta listo para un Nibble.Puesto en alto para indicar que el nibble fue recibido

nINIC 1284Activo Salida Puesto en alto cuando el huésped está en el modo de transferencia 1284

nRECONOC ApuntaReloj Entrada Puesto en bajo para indicar la validación de un nibble de datos, puesto en alto en respuesta de HuéspedOcupado cuando va a alto.

OCUPADO ApuntaOcupado Entrada Usado para el bit de datos 3, luego el 7PE ReqRecDatos Entrada Usado para el bit de datos 2, luego el 6SELECCIÓN BanderaX Entrada Usado para el bit de datos 1, luego el 5NERROr NDatoDisp Entrada Usado para el bit de datos 0, luego el 4DATOS[8:1] No Usado

Transición de la fase del modo de nibble 1284

1. Habilitación de señales del huésped para tomar datos poniendo el HuéspedOcupado en bajo.

Soluciones a Interfaz por Medio del Puerto Paralelo de la PC 21

Huésped Ocupado

Reloj Apuntador

NDatosDispBanderaX

ReqConocDatosOcupadoApunt

FIGURA 8. Ciclo de transferencia de datos en el modo Nibble

Page 22: Fondo Portuario Paralelo - electronica.ugr.eselectronica.ugr.es/~amroldan/asignaturas/curso01-02/dis…  · Web viewDespués de leer este documento en el cual se presentan ejemplos

2. Respuesta del periférico poniendo el primer nibble en las líneas de estado.3. Nibble válido de señales periféricas por la colocación del ApuntReloj en bajo.4. El huésped pone en alto HuépedOcupado para indicar que ha recibido el nibble y no esta todavía listo para otro nibble. 5. Conjuntos periféricos pone ApuntaReloj en alto para reconocer al huésped (host).6. Estados 1 a 5 se repiten para el segundo nibble.

El modo del nibble, como el modo compatible, requiere que el software maneje el protocolo fijando y leyendo las líneas en el acceso paralelo. El modo del nibble es el modo de software más intensivo para la comunicación de datos en reversa por el canal. Por esta razón, hay una gran limitación de los bytes de aproximadamente 50Kbytes por esegundo para este tipo de transferencia de datos. La mayor ventaja de esta combinación de modos es la capacidad de funcionar en todas las PC que tengan un puerto paralelo. Las limitaciones del funcionamiento incurridas por la operación del modo del nibble no tienen un efecto muy visible en los periférico que tienen requisitos de canal reverso muy bajos, tales como las impresoras, pero pueden ser casi intolerables cuando son utilizadas por los adaptadores de LAN, unidades de disco o las unidades cd rom.

MODO BYTE IEEE 1284-1994

Con las implementaciones posteriores de la interfaz del puerto paralelo, algunos fabricantes, guiados por IBM en el puerto paralelo PS/2, agregaron la capacidad a deshabilitar las unidades usadas para conducir las líneas de datos, y permitió convertirse al puerto de datos convertirse en una entrada de lectura para el puerto de datos. Esto permite al periférico enviar un byte entero de datos a la PC en un ciclo de la transferencia de datos usando las 8 líneas de datos, mejor que los dos ciclos requeridos usados en el modo nibble.

Esta capacidad permite un modo de byte para la transferencia de datos para el canal de reversa que puede ser utilizado para proporcionar tasas de datos en la PC que se acercan a las del modo de Compatibilidad de la PC. Este tipo de puerto es referido en veces como acceso puerto “Realzado bidireccional “, y ha causado una cierta confusión cuando es tomado como puerto paralelo realzado (EPP).

El siguiente tabla identifica los nombres de la señal del modo byte, y la figura 4 muestra el apretón de manos para una transferencia de datos del modo de byte.

Señal SPP Nombre del modo Byte

Entrada/Salida

DescripciónSeñal usada en el modo de transferencia Byte

nSTROBE RelojHuésped Salida Pulsado en bajo al final de cada transferencia del modo Byte indica que el byte fue recibido. Señal de reconocimiento.

nAUTOALIM OcupHuésped Salida Puesto en bajo indica que el huésped está listo para el byte. Puesto en alto para indicar que el byte fue recibido. Señal Handshake.

nSELECCIÓN 1284Activo Salida Puesto en alto cuando está en un modo de transferencia 1284.

nRECONOC RelojApunt Entrada Puesto en bajo para indicar la validación de datos en las líneas de datos, puesto en alto es respuesta del HuéspedOcup cuando va a alto.

OCUPADO OcupApunt Entrada Canal hacia adelante estado Ocupado.PE ReqRecDatos Entrada Sigue la disponibilidad del nDATOS.SELECCIÓN BanderaX Entrada Bandera extensiva. No usada en el modo Byte.nERROR NDatosDisp Entrada Puesto en bajo por el periférico para indicar que los datos

en reversa están disponibles.DATOS[8:1] DATOS[8:1] Bi-Di Usado para disponer datos del periférico al huésped (host).

Soluciones a Interfaz por Medio del Puerto Paralelo de la PC 22

Tabla 9. Señales del modo Byte

Page 23: Fondo Portuario Paralelo - electronica.ugr.eselectronica.ugr.es/~amroldan/asignaturas/curso01-02/dis…  · Web viewDespués de leer este documento en el cual se presentan ejemplos

Transiciones de la señal del modo byte:

1. Habilitación de señales del huésped para tomar datos por afirmación del HuespedOcupdo en bajo.2. Respuesta del periférico por la colocación del prime byte en líneas de datos.3. Byte válido de señales del periférico por afirmación de RelojApunt en bajo.4. El huésped pone HuéspedOcup en alto para indicar que lo ha recibido y no está todavía listo para otro

byte.5. El periférico pone el RelojApunt en alto para reconocer al huésped (host). El huésped (host) pulsa el

ApuntReloj como un reconocimiento de periférico.6. El estado 1 al 5 se repiten para bytes adicionales.

MODO REALZADO DEL PUERTO PARALELO EPP IEEE 1284

El protocolo realzado del puerto paralelo fue desarrollado originalmente por Intel®, y los sistemas de los datos Xircom y Zenith, como los medios de proporcionar a una conexión del acceso del puerto paralelo del alto rendimiento que todavía sería compatible con el puerto paralelo estándar. Esta capacidad del protocolo fue puesta en ejecución por Intel® en el chipset 386SL (chip de entrada-salida 82360). Esto estaba antes del establecimiento del comité de IEEE 1284 y de los trabajos de los estándares asociados.

El protocolo de EPP ofreció muchas ventajas para los fabricantes del periférico de puerto paralelo y fue adoptado rápidamente por muchos como un método opcional de la transferencia de datos. Una asociación pequeña de alrededor de 80 fabricantes interesados fue formada para desarrollar y para promover el protocolo de EPP. Esta asociación llegó a ser el comité de EPP y fue básica en ayudar a conseguir la adopción de este protocolo como uno de los modos avanzados de IEEE 1284 .

Desde que el puerto paralelo EPP estuvo disponible antes de deliberarse el estándar 1284, hubo una pequeña desviación entre los puertos pre-1284 EPP y el protocolo 1284 EPP. Esto se aclarará más adelante.

El protocolo de EPP proporciona cuatro tipos de ciclos de transferencia de datos:

1. Ciclo de escritura de datos2. Ciclo de lectura de datos 3. Ciclo de escritura de datos en la dirección4. Ciclo de lectura de datos de la dirección

Soluciones a Interfaz por Medio del Puerto Paralelo de la PC 23

FIGURA 9. Ciclo de transferencia de datos en el Modo Byte

HuéspedOcup

RelojApunt

Línea de Datos

RelojHuésped

Page 24: Fondo Portuario Paralelo - electronica.ugr.eselectronica.ugr.es/~amroldan/asignaturas/curso01-02/dis…  · Web viewDespués de leer este documento en el cual se presentan ejemplos

Los ciclos de los datos intentan ser utilizados para transferir datos entre el huésped (host) y el periférico. Los ciclos de direccionamiento pueden ser utilizados para pasar transferir direcciones, canales, o información de control y comandos. Estos ciclos pueden ser vistos como solo dos ciclos de datos diferentes. El creador puede utilizar y analizar la información de direcciones/datos en cualquier método que tenga sentido para un diseño determinado. En la tabla 5 se describe las señales de EPP y sus señales SPP asociadas.

Señal SPP Nombre de la

Señal EPPEntrada/

SalidaDescripción de la señal EPP

nSTROBE nESCRITURA Salida Activa en bajo.Indica una operación de escritura.

nAUTOALIM nSTBDATOS Salida Activo en bajo. Indica que la operación de Lectura_Datos o Escritura_Datos está en proceso.

nSEL_ENTR nSTBDIRECC Salida Activa en bajo. Indica que la operación de Lectura_Dirección o Escritura_Dirección está en proceso.

nINIC nRESET Salida Activo en bajo. Reinicio (reset) del periférico.nRECONOC nINTERRUP Entrada Interrupción del periférico.OCUPADO nESPERA Entrada Señal de handshake. Cuando está en bajo indica que está

lista para comenzar un ciclo (assert un strobe), cuando está en alto indica que esta lista para terminar el ciclo (de-assert un strobe)

D[8:1] DD[8:1] Bi-Di Líneas de datos/direcciones bidireccionalesPE Definida por el

usuarioEntrada Puede ser utilizada diferentemente por cada periférico.

SELECCIÓN Definida por el usuario

Entrada Puede ser utilizada diferentemente por cada periférico.

nERROR Definida por el usuario

Entrada Puede ser utilizada diferentemente por cada periférico.

La figura 10 es un ejemplo de un ciclo de Escritura_Datos. La señal nIOW de la CPU se muestra solo para enfatizar que todo el apretón de manos entero ocurre en un solo ciclo de entrada-salida.

Transiciones de la fase del ciclo de escritura de datos.

1. El programa ejecuta un ciclo de escritura de entrada-salida al puerto 4 (Puerto de datos EPP).2. La línea de nESCRITURA es afirmada y el dato ser hace salir al puerto paralelo. 3. El dato de STROBE ser afirma, puesto que nESPERA esta en bajo.

Soluciones a Interfaz por Medio del Puerto Paralelo de la PC 24

nIOW

nESCRITURA

nSTROBEDATOS

nESPERA

Datos 8:1

FIGURA 10. Ciclo de Escritura_Datos en EPP

Tabla 10. Definiciones de las señales EPP

Page 25: Fondo Portuario Paralelo - electronica.ugr.eselectronica.ugr.es/~amroldan/asignaturas/curso01-02/dis…  · Web viewDespués de leer este documento en el cual se presentan ejemplos

4. El puerto espera para reconocimiento del periférico (nESPERA deasserted).5. El dato STROBE es deasserted y el ciclo EPP finaliza.6. El ciclo de entrada-salida de ISA finaliza. 7. nESPERA se afirma en bajo para indicar que el siguiente ciclo puede comenzar.

Una de las características más importantes de observar aquí es que la transferencia de datos entera ocurre dentro de un ciclo de entrada-salida de ISA. El efecto es que usando el protocolo de EPP para la transferencia de datos, un sistema puede alcanzar tasas de transferencia de 500K hasta los 2M bytes por segundo. En esta manera, los periféricos de puertos paralelos pueden funcionar cerca de los mismos niveles equivalentes de funcionamiento de una tarjeta enchufable ISA. La habilidad de conseguir este nivel del funcionamiento de un dispositivo asociado de puerto paralelo es una de las características principales del protocolo de EPP. Con los apretones de manos enclavijados, la transferencia de datos sucederá a la velocidad de la más lenta de las interfaces, del adaptador del huésped (host) principal o del dispositivo periférico. Esta característica “adaptación a la velocidad” es transparente para ambos, el ordenador principal (huésped o host) y el periférico. Los modos de la transferencia 1284 son implementados con el aseguramiento de los handshakes.

El aseguramiento se refiere a los criterios de cada reconocimiento de la transición de señal de control por la cara opuesta de la interfaz. En el diagrama que se muestra abajo, el nStrobeDatos puede ser afirmado porque nESPERA está en bajo, nESPERA deasserts en respuesta de la fijación de nStrobeDatos, los deasserts de nStrobeDatos es respuesta del deasssert de nESPERA, y finalmente nESPERA se fija en repuesta del deassert del nStrobeDatos. De esta manera el periférico puede controlar el tiempo de la disposición requerido para su operación. Esto se hace de la manera siguiente: el tiempo de la disposición es el tiempo de la aserción del nStrobeDatos al deassertion de nESPERA, los periféricos controlan este tiempo. El aseguramiento también tiene la ventaja de hacer el ciclo de la transferencia independiente de la longitud de cable. Los modos todos nibble, byte, EPP y de ECP tienen protocolos de aseguramiento.

Según lo mencionado previamente, los dispositivos de pre-1284 EPP se desviaron del protocolo 1284. En el comienzo del ciclo, el nStrobeDatos o el nStrobeDirección afirmaría sin importar el estado de la señal de nESPERA. Esto significa que el periférico no podría mantener apagado el comienzo de un ciclo teniendo nESPERA deasserted. Esto se refiere a veces como EPP 1.7, en referencia a una versión propuesta de Xircom 1.7. Ésta es la versión que Intel® implementó en controlador original de entrada-salida 82360. Un periférico compatible con 1284 EPP funcionará correctamente con un adaptador del ordenador principal (host) de la versión de EPP 1.7, pero un periférico de EPP 1.7 no puede funcionar correctamente con un ordenador principal obediente 1284. La figura 6 es un ejemplo de el ciclo de Lectura_Dirección.

Interfaz de registro EPP

El punto de vista de software mas simple de EPP es el de una extensión a las definiciones del registro para el puerto paralelo estándar. Según lo mostrado anteriormente, los SPP consisten en tres registros, Soluciones a Interfaz por Medio del Puerto Paralelo de la PC 25

nIOR

nESCRITURA

nSTROBEDIR

nESPERA

DATOS

FIGURA 11. Ciclo de lectura de dirección EPP

Page 26: Fondo Portuario Paralelo - electronica.ugr.eselectronica.ugr.es/~amroldan/asignaturas/curso01-02/dis…  · Web viewDespués de leer este documento en el cual se presentan ejemplos

desplazamiento de las direcciones de la base del puerto: Puerto de datos, y puerto de control. Las implementaciones más comunes de EPP amplían esto para utilizar los puertos no definidos por los SPP. Vea la tabla 7.

Nombre del puerto Desplazamiento Modo Lectura/ escritura

Descripción

Puerto de datos SPP +0 SPP/EPP Escritura Puerto estándar SPP. Sin autostrobing.Puerto de estado SPP

+1 SPP/EPP Lectura Lee las entradas de las líneas de estado en la interfaz.

Puerto de control SPP

+2 SPP/EPP Escritura Coloca el estado de las líneas de control de salida.

Puerto de direcciones EPP

+3 EPP Lectura/Escritura

Genera una dirección asegurada en el ciclo de escritura o lectura

Puerto de datos EPP +4 EPP R/W Genera el aseguramiento de datos en el ciclo de escritura o lectura.

No definido +5 a +7 EPP N/A Usado diferentemente para varias implementaciones

Generando una sola instrucción de escritura de entrada-salida en “Dirección_Base +4”, el controlador EPP generará las señales handshake necesarias y los strobes para transferir datos usando un ciclo de EPP de Escritura_Datos. Las instrucciones de entrada-salida a la dirección base, puertos 0 a 2, causarán un comportamiento exactamente como el del puerto paralelo estándar. Esto garantiza la compatibilidad con los puertos paralelos estándar periféricos y las impresoras. Los ciclos de direcciones son generados cuando las operaciones de entrada-salida se leen o se escriben a la “Dirección_base +3”.

Los puertos 5 a 7 son utilizados diferentemente por varias implementaciones del hardware. Éstos se pueden utilizar para poner interfaces de software de 16 o 32 bits, o utilizados por los registros de configuración, o no utilizados por completo. Por ejemplo, la comunicaciones FarPoint a la tarjeta F/PortPlus tiene solamente una interfaz de 8-bits de datos, pero puede ser accesada usando la entrada-salida de 32-bits, para las operaciones de datos EPP. El controlador de ISA interceptará las entradas-salidas de 32-bits y generará realmente 4 ciclos rápidos de 8-bits . El primer ciclo será direccionado por el puerto de entrada-salida usando el byte 0 (bits 0-7), el segundo ciclo será al puerto+1 usando el byte 1, luego el puerto+2 usando el byte 2 y finalmente el puerto+3 usando el byte 3. Estos ciclos adicionales son generados por el harware y son transparantes para el software. El tiempo total para estos cuatro ciclos será menor de 4 ciclos independientes de 8 bits. Por ejemplo, la tarjeta de F/PortPlus (de las comunicaciones de FarPoint) asocia 4 puertos de entrada-salida (desplazo de 4 a 7) al registro interno de los datos EPP. Esto permite utilizar al software usar operaciones de entrada-salida de 32-bits para la transferencia de datos EPP. Los ciclos de dirección siguen limitados a 8 bits de entrada-salida.

La habilidad de transferir datos a de o desde la PC por el uso de una sola instrucción es lo qué permite a el puerto paralelo del modo EPP transferir datos a las velocidades del bus de ISA. Mejor que teniendo implementación de software con entrada-salida de un bucle de software intensivo, un bloque de datos puede ser transferido con una sola instrucción de REP_IO. Dependiendo del puerto del adaptador del ordenador principal (host) y la capacidad del periférico, un puerto EPP puede transferir datos de 500K bytes a cerca de 2M bytes por segundo. Esta tasa de transferencia de datos es más que suficiente para permitir a los adaptadores de la red, CD ROM, a la cinta de respaldo y a otros periféricos funcionar cerca de los niveles de funcionamiento del bus ISA.

El protocolo EPP y las implementaciones de corriente proporcionan un alto grado de acoplamiento entre la unidad periférica y el periférico. Lo que esto significa es que la unidad de software permite determinar y controlar el estado de comunicaciones al periférico a cualquier hora. El entremezclar las operaciones de lectura y escritura tan bien como las transferencias de bloque son hechas prontamente. Este tipo de acoplamiento es ideal para muchos periféricos controlados de registro-orientado y tiempo-real tales como adaptadores de la red, adquisición de datos, discos duros portátiles, y otros dispositivos.Soluciones a Interfaz por Medio del Puerto Paralelo de la PC 26

Tabla 11. Definiciones del Registro EPP

Page 27: Fondo Portuario Paralelo - electronica.ugr.eselectronica.ugr.es/~amroldan/asignaturas/curso01-02/dis…  · Web viewDespués de leer este documento en el cual se presentan ejemplos

Soluciones a Interfaz por Medio del Puerto Paralelo de la PC 27

Page 28: Fondo Portuario Paralelo - electronica.ugr.eselectronica.ugr.es/~amroldan/asignaturas/curso01-02/dis…  · Web viewDespués de leer este documento en el cual se presentan ejemplos

MODO ECP IEEE 1284

El protocolo del puerto extendido de capacidad o ECP, fue propuesto por Hewlett Packard y Microsoft como un modo avanzado para la comunicación con la impresora y los periféricos del tipo de scanners. Como el protocolo de EPP, ECP proporciona un camino de comunicación bidireccional del alto rendimiento entre el adaptador del ordenador principal (host) y el periférico.

El protocolo de ECP proporciona al los siguientes tipos de ciclo en direcciones delanteras y reversas:

1. Ciclos de datos.2. Ciclos de comando.

Los ciclos de comando se dividen en 2 tipos, cuenta de Run-Length y dirección de canal.

No como EPP, cuando el protocolo de ECP fue propuesto, una implementación estándar del registro también fue propuesta. Esto se puede encontrar en el documento de Microsoft “El protocolo del puerto de capacidades extendidas IEEE 1284 y estándar de interfaz de IS”' disponible por Microsoft Corp. Este documento define las características que son específicas que el estándar de IEEE 1284 no podía direccionar. Estas características incluyen la compresión de datos de Run_Length_Encoding (RLE) para los adaptadores del ordenador principal (host), FIFOs para ambos canales delanteros y reversos, el DMA (acceso directo a memoria) así como la entrada-salida programada para el interfaz del registro del ordenador principal (host).

La característica de RLE permite la compresión de datos en tiempo real que puede alcanzar relaciones de compresión de hasta 64:1. Esto es particularmente útil para las impresoras y los scanners que están transfiriendo imágenes de tramas grandes que tienen grandes strings o datos idénticos. En el orden para que el modo de RLE sea permitido ambos, el ordenador principal (host) y el periférico deben soportarlo.

La dirección del canal es, conceptualmente, un poco diferente que el direccionamiento de EPP. El direccionamiento del canal se piensa ser utilizada para accesar los múltiples dispositivos lógicos dentro de un solo dispositivo físico. Piense esto en términos de un nuevo dispositivo de funcionamiento múltiple tales como FAX/Impresora/Modem. Dentro de un paquete físico, teniendo solo un acceso al puerto paralelo asociado, hay impresora, un fax y un módem. Cada una de estas funciones separadas pueden ser pensadas como dispositivos lógicos separados dentro del mismo paquete. Usando direccionamiento de el canal de ECP para tratar de tener acceso a cada uno de estos dispositivos, uno puede recibir datos del dispositivo de datos módem mientras que el canal de datos de la impresora está ocupado procesando la impresión de una imagen. Con el protocolo del modo de compatibilidad, si la impresora está ocupada entonces no más comunicaciónes pueden efectuarse hasta que el canal de datos de la impresora esté libre. Con ECP, el la unidad de software simplemente direcciona otro canal y la comunicación puede continuar.

Como con los otros modos 1284, el protocolo de ECP redefine las señales del SPP para ser más consistente con el apretón de manos de ECP. La tabla 8 describe estas señales.

Soluciones a Interfaz por Medio del Puerto Paralelo de la PC 28

Page 29: Fondo Portuario Paralelo - electronica.ugr.eselectronica.ugr.es/~amroldan/asignaturas/curso01-02/dis…  · Web viewDespués de leer este documento en el cual se presentan ejemplos

Señal SPP Nombre del Modo ECP

Entrada/Salida

DescripciónSeñal usada mientras tanto en el modo de

transferencia de datos ECPnSTTROBE RelojHuésped Salida Usada con el ReconPerif para transferir datos o

información de direcciones en dirección delantera.nAUTOAL ReconHuésped Salida Provee los estados de Comandos/Datos en la

dirección delantera. Usado con el RelojPerif para transferir datos en sentido reverso.

nSELECC nReqRev Salida Puesto en bajo para poner el canal en dirección reversa.

nRECON RelojPerif Entrada Usada con el ReconHuésped para transferir datos en sentido reverso.

OCUPADO ReconPerif Entrada Usada con el RelojHuésped para transferir datos o direcciones de información en dirección delantera. Provee el estado de Comandos/Datos en la dirección reversa.

PE nReconRever Entrada Puesto en bajo para reconocer el nPedidoReverSELECC BanderaX Entrada Bandera de extensibilidad.nERROR nPedidoPerif Entrada Puesto en bajo por el periférico para indicar que el

dato en reversa esta disponible.Datos [8:1] Datos [8:1] Bi-Di Usados para proporcionar datos entre el periférico y

el huésped. (host)

La figura 12 muestra dos ciclos de transferencia de datos hacia adelante. Cuando el ReconocHuésped esta en alto indica que está ocurriendo un ciclo de datos. Cuando ReconocHuésped se pone en bajo, un ciclo del comando está ocurriendo y los datos representan cualquiera de los dos, la cuenta de RLE o un direccionamiento del canal. El bit 8, del byte de datos se utiliza para indicar RLE contra el direccionamiento de canal. Si el bit 8 es 0, entonces los bits 1-7 representan una cuenta de Run_Length de (0-127). Si el bit 8 es 1, entonces los bits 1-7 representan una dirección del canal (0-127). La figura 9 muestra un ciclo de los datos seguido por un ciclo de comando.

La figura 10 muestra un ciclo de comando de canal reverso seguido por un ciclo de datos de canal reverso. Los strobes de escritura y lectura en la entrada-salida no se muestra en estas figuras. Esto es porque los FIFOs ECP son utilizadas para desemparejar las transferencias de datos de ISA, también la DMA o la entrada-salida programada, de las transferencias de datos actuales de huésped/periférico. Es este desemparejamiento de los estados de transferencia que hacen que del protocolo de ECP un protocolo “libremente juntado”. La unidad de software no sabe el estado exacto de las transferencias de datos. Si un bloque grande se está siendo transferido vía DMA (acceso directo de memoria), la unidad no sabe si se está transfiriendo el 123avo byte o el 342,201ro byte. Como es el caso de las impresoras, a el software no le importa. La única preocupación es si la transferencia fue terminada o no.

Soluciones a Interfaz por Medio del Puerto Paralelo de la PC 29

RelojHuésped

ReconocPerif

Datos 8:1

ReconoHuésped

Tabla 12. Señales del modo ECP

FIGURA 12. Comando de ciclos y datos delanteros ECP

Page 30: Fondo Portuario Paralelo - electronica.ugr.eselectronica.ugr.es/~amroldan/asignaturas/curso01-02/dis…  · Web viewDespués de leer este documento en el cual se presentan ejemplos

Transiciones de la transferencia de datos delantera

1. El ordenador principal (host) pone datos en las líneas de datos e indica un ciclo de datos fijando ReconocHuésped en alto.

2. El ordenador principal RelojHuéspd en bajo indica la validación de datos.3. Reconocimiento periférico del ordenador principal fijando en alto el ReconoPerif. 4. El ordenador principal pone en alto el RelojHuésped. Éste es el límite que se debe utilizar para registrar

los datos al periférico. 5. El periférico fija ReconocPerif en bajo para indicar que es listo para el siguiente byte. 6. El ciclo se repite, pero esta vez es un ciclo de comando porque ReconocHuésped está en bajo.

NOTA: Puesto que las transferencias de ECP se juntan libremente, con un FIFO posiblemente en ambas caras del interfaz, es importante observar en qué paso el dato es considerado “transferido”. Este punto ocurre en el paso 4, cuando pasa a ALTO el RelojHuésped. En este tiempo, los datos se deben a registrar dentro del periférico, y cualquier contador de los datos debe ser actualizado. Hay una condición en el protocolo de ECP que podría causar el aborto de la transferencia entre los pasos 3 y 4. En este caso los datos no se deben considerarse para haber sido transferidos.

La figura 11 muestra otras de las diferencias entre los protocolos de ECP y de EPP. Con EPP, la unidad de software puede entremezclarse con operaciones de lectura y escritura sin ningún protocolo de apretón de manos u overhead. Con el protocolo ECP, los cambios en la dirección de los datos deben ser negociados. El ordenador principal (host) debe solicitar una transferencia reversa del canal afirmando una nRequerReverso. y después esperar a el periférico para reconocer la petición afirmando el nReconocReverso. Solo entonces una transferencia de datos reversa del canal ocurre. Además, puesto que la transferencia anterior pudo haber sido conducido por DMA, el software del ordenador principal (host) debe esperar el DMA para completar, o interrumpir el DMA (direct memory access),el backflush del FIFO para determinar la exacta cuenta de bytes transferida, y después solicitar el canal reverso. Esto agrega una cantidad justa de overhead con los periféricos que requieren mucha lectura y escritura entremezclada y escritura de registros con pequeños almacenadores (buffers).

Transiciones reversas de la fase de la transferencia.

1. El ordenador principal solicita una transferencia reversa del canal fijando nReqRev a bajo. 2. Las señales periféricas que están correctas para proceder fijando nReconoRever a bajo.3. El periférico pone datos en las líneas de datos e indican un ciclo de datos poniendo ReconPerif en alto. 4. El periférico afirma el RelojPerif en bajo para indicar la validación de los datos 5. Reconoce el ordenador principal poniendo ReconHuésped en alto.6. El periféricos pone el RelojPerif en alto. Éste es el límite que se debe utilizar para registrar los datos

dentro del ordenador principal (host). 7. El ordenador principal fija ReconHuésped en bajo para indicar que está listo para el siguiente byte.Soluciones a Interfaz por Medio del Puerto Paralelo de la PC 30

FIGURA 13. Ciclo de comando y datos reversos ECP

RelojPerif

ReconocHuésped

Datos 8:1

ReconocPerif

NRequisRev

nReconocReversa

Page 31: Fondo Portuario Paralelo - electronica.ugr.eselectronica.ugr.es/~amroldan/asignaturas/curso01-02/dis…  · Web viewDespués de leer este documento en el cual se presentan ejemplos

8. El ciclo se repite, pero esta vez es un ciclo de comando porque ReconPerif está en bajo.

Interfaz de registro y software de ECP

La especificación de Microsoft, “Capacidades extendidas del protocolo del puerto e interfaz estándar ISA IEEE 1284”, define una interfaz común de registro para basados en 1284 adaptadores de ISA con ECP. Esta especificación también define un número de modos operacionales con bajo el que el adaptador puede funcionar. La tabla 12 identifica estos modos.

Modo Descripción.000 Modo SPP.001 Modo bidireccional (Modo Byte).010 Centronics rápido.011 Modo del puerto paralelo ECP.100 Modo del puerto paralelo EPP (nota 1)101 Reservado.110 Modo de pruebas.111 Modo de configuración.

(Nota 1) Este modo es implementado por el controlador de SMC FDC37C665/666 y no está definida por la especificación ECP. La mayoría de los controladores de entrada-salida 1284, implementan el modo de EPP en una ejecución de manera similar.

El modelo de registro para un puerto ECP es similar a la del puerto paralelo estándar, pero aprovecha singularidad del diseño significativo de la arquitectura del bus de ISA. En la arquitectura de la PC compatible con IBM, solamente son utilizados los primeros puertos de entrada-salida 1024 o sus direcciones. Éste es el espacio básico de la entrada-salida de 0x000h a 0x3FFh. Para direccionar este rango de direcciones, solo 10 direcciones de bits son necesitados (AD0-9). Para minimizar costos, las viejas PCs solo condujeron y decodificaron estas direcciones de datos en el bus de ISA y por lo tanto limitaron la disponibilidad de espacio de entrada-salida a estos registros 1024. Las nuevas PCs, actualmente manejan y decodifican más bits de direcciones, permitiendo un espacio disponible más grande de entrada-salida. Esto crea, en efecto, las múltiples “paginas” de los primeros puertos de entrada-salida de 1K. Una unidad de software puede accesar a estas paginas agregando 1024 (notación hexadecimal 0x400h) a la dirección base que está siendo accesada. Por lo tanto, el direccionamiento de la direcciones 0x378h y 0x778h puede accesar a 2 registros en dos paginas separadas, pero garantize no interferir con cualquier otro dispositivo instalado de ISA. La ventaja es que usando este efecto del “asociamiento”, las nuevas tarjetas pueden tener registros “ocultos”, además de ampliar el número disponible de registros disponibles, y todavía mantienen compatibilidad con tarjetas ISA viejas que solo decodifican 10 bits de datos.

El registro ECP aprovecha esto y define 6 registros que solo requieren 3 puertos reales de entrada-salida. La tabla 13 identifica estos registros. Observe que la definición del registro puede ser dependiente sobre el modo de operación actual. El registro del ECR es el aspecto más importante de esta configuración del registro. Éste es el registro que es utilizado para fijar el modo operacional actual. Además, este registro se puede utilizar por el software para determinar si un puerto de capáz-ECP está instalado en la PC. Las direcciones de software pueden intentar accesar a cualquier registro del ECR agregando 0x402h a la dirección base del puerto LPT identificados en el tabla de puertos del BIOS LPT.

Soluciones a Interfaz por Medio del Puerto Paralelo de la PC 31

Tabla 13. Modos de registro ECR

Page 32: Fondo Portuario Paralelo - electronica.ugr.eselectronica.ugr.es/~amroldan/asignaturas/curso01-02/dis…  · Web viewDespués de leer este documento en el cual se presentan ejemplos

Desviación Nombre Lectura/Escritura

Modo ECP Función

000 Datos L/E 000-001 Registro de datos000 ecpAfifo L/E 011 Direcciones ECP a FIFO001 dsr L/E Todas Registro de estado002 dcr L/E Todas Registro de control400 cFifo L/E 010 Puerto paralelo de datos FIFO400 ecpDfifo L/E 011 Datos ECP a FIFO400 tfifo L/E 110 Pruebas de FIFO400 cnfgA L 111 Configuración del registro A401 cnfgB L/E 111 Configuración del registro B402 ecr L/E Todas Registro de Control Extendido

Este documento no procura describir todas las funciones de los registros ECP. Para la información con respecto las definiciones del uso de registros y definiciones de bits, consulte el documento de Microsoft o la hoja de datos del controlado de entrada-salida (I/Ocontroller data sheet).

Debe de observarse que en si se está en el modo del puerto paralelo estándar o el modo bidireccional, entonces los primeros 3 registros se comportan exactamente como puertos paralelos estándar. De esta manera, la compatibilidad con otros dispositivos mas viejos y las unidades del dispositivo se mantienen.

El uso de este puerto es similar a el del puerto EPP. Un modo operacional es escrito al registro del ecr, y entonces la transferencia de datos es lograda escribiendo o leyendo del puerto de entrada-salida apropiado. Todo el apretón de manos es generado automáticamente por el controlador de interfaz. La diferencia principal es que el puerto de ECP está designado para ser conducido por DMA mejor que las operaciones explícitas de entrada-salida. Una vez más éste acoplamiento libre de interfaz se apunta principalmente sobre los periféricos que intercambian grandes bloques de datos.

INTERRUPCIONES

Vea otra vez la figura de asignaciones del puerto. Observe que el bit 4 en el bit de control está identificado como habilitador de interrupciones (IRQ enable). Normalmente este bit se pone en cero.

Sin embargo, hay tiempos en que las interrupciones son de gran valor. Una interrupción no es nada más que un evento del hardware que causa que su programa momentáneamente se detenga de lo qué está haciendo, y salta a una función para hacer lo que uno desea. Cuando esto es completado, el programa vuelve a donde se fue interrumpido.

Al usar el puerto de impresora, si los habilitadores de interrupción se poenen a uno lógico, una interrupción ocurrirá cuando la entrada de información RECONOC va de un uno lógico a un cero lógico. Por ejemplo, puede ser que uno utilice la entrada de información RECONOC para una alarma de intrusos. Puede ser que uno tenga en funcionamiento un programa que está monitoreando continuamente la temperatura. Pero, cuando la entrada de RECONOC pasa a bajo, interrumpe el monitoreo de temperatura y va a un cierto código que uno ha escrito para manejar la alarma. Quizás, para tener el tiempo y la fecha del reloj del sistema y escribir esto a un archivo de intrusión. Cuando está hecho esto, su programa continúa monitoreando la temperatura.

CAMBIANDO SOLAMENTE BITS SELECCIONADOS

Frecuentemente, en la salida de datos, el programador está interesado solo en una porción de un byte y es una carga el recordar para que son el resto de los bits. Vea el siguiente texto donde el bit 2 se pone en alto para 100ms y luego se pone en bajo.

Soluciones a Interfaz por Medio del Puerto Paralelo de la PC 32

Tabla 14 -- Descripción del registro ECP

Page 33: Fondo Portuario Paralelo - electronica.ugr.eselectronica.ugr.es/~amroldan/asignaturas/curso01-02/dis…  · Web viewDespués de leer este documento en el cual se presentan ejemplos

int DATOS; ... DATOS=DATOS | 0x04; /*Pone el Bit 2 en alto*/ outportb(DATOS,DATOS); delay(100); /*Espera 100 ms aproximadamente*/DATOS=DATOS & 0xfb; /*Pone el Bit 2 en bajo*/ outportb(DATOS,DATOS);

Observe que los datos variables no pierden de vista el estado actual en el puerto de salida. Cada manipulación de bit se realiza en los datos y los datos variables son entonces sacados.

Para traer un bit específico a un uno lógico, utilice la función OR para hacer OR a ese bit con un uno lógico (y todos los otras con un cero lógico.)

Para traer un bit específico a cero lógico, ponga un AND a ese bit con un cero (y todos los otros con un uno lógico.) Calcular este valor puede ser tedioso. Considere este alternativa:

DATOS=DATOS & 0xfb; /*Difícil de calcular*/ DATOS=DATOS & (~0x04); /*Lo mismo pero mucho mas facil*/

Esto es realmente difícil. Asuma que tiene actualmente XXXX XXXX y desea XX01 X100 DATOS=DATOS & (~0x20) | 0x10 | 0x04 & (~0x02) & (~0x01);

DIFERENCIAS EN PUERTOS DE IMPRESORAS

Usted puedepreguntarse, “porqué serán diferentes. Después de todo, los programas tales como Word deben trabajar en todas las máquinas.” La respuesta es que los programadores que escriben los programas tales que Word no se limitan a este bajo nivel bajo de detalles del hardware . Ellos escriben en la interfaz con el BIOS de la PC.

El BIOS (sistema básico de la entrada-salida) es una ROM construida dentro de la PC que hace parecer a todos las PC’s iguales. Esto es una manera “bonita” para que cada vendedor implemente su diseño con un cierto grado de flexibilidad.

Un ejemplo claro son las asignaciones del puerto discutidas anteriormente. Estos datos se leen de la ROM del BIOS cuando los cargadores del programa inicial de la PC suben y son escritos a las locaciones de memoria que comienzan en 0040:0008. Así, los diseñadores de Word o cualquier otro programa no se preocupan de las asignaciones del puerto. Mejor, leen la posición de memoria apropiada.

De la misma manera, se interfazan con el BIOS para imprimir. Por ejemplo, si los diseñadores desean imprimir un carácter, el registro AH se pone en cero, el carácter que se imprimirá se carga en AL, el puerto (LPT1, LPT2, etc) se carga en el registro DX. Entonces ejecutan un BIOS INTERNO 17h.El programa de control entonces se pasa al BIOS el cual realiza en el nivel bajo del diseño de hardware en el que estamos intentando trabajar. El BIOS varía de un diseño de hardware a otro; su propósito es trabajar con el hardware. Si una inversión es necesaria, esta es hecha por el BIOS. Cuando el BIOS ha completado cualquier secuencia de bit es requerido escribir el carácter a la impresora, el control es pasado de vuelta a el programa con infromación de estado en el registro AH.

Se han visto en las PC’s donde esta el bit DIRECCIÓN, que se puede fijar a un “uno” lógico que está en torno del puerto de datos tales que todas los terminales del componente de datos son entradas. También se han visto PC’s donde esto trabaja solamente para el nibble bajo del puerto de datos y de otras PC’s donde no se hizo nada. Probablemente es lo mejor el no utilizar esta característica. Mejor, deje el Bit de DIRECCIÓN fijado a un “cero” lógico.

Soluciones a Interfaz por Medio del Puerto Paralelo de la PC 33

Page 34: Fondo Portuario Paralelo - electronica.ugr.eselectronica.ugr.es/~amroldan/asignaturas/curso01-02/dis…  · Web viewDespués de leer este documento en el cual se presentan ejemplos

UTILIZANDO LAS INTERRUPCIONES(IRQ) DEL PUERTO PARALELO.

La petición de interrupción del puerto paralelo no se utiliza para imprimir bajo el DOS o Windows. Las primeras versiones de OS-2 lo utilizaron, pero no lo hicieron más. Las interrupciones son buenas cuando se interfazan dispositivos de monitoreo tales como alarmas de alta temperatura, alarmas de sobre flujo, verificadores que manden señales de alarma, etc. que uno no sabe cuándo van a ser activadas. Es más eficiente tener una petición de interrupción en vez de hacer que el software polee los puertos regularmente para ver si algo ha cambiado. Esto es aún más notable si se está utilizando la computadora para otras tareas, por ejemplo con un sistema operativo de multitareas.

La petición de interrupción del puerto paralelo es normalmente IRQ5 o IRQ7 pero pueden ser otras si éstas están en uso. Puede ser posible también que las interrupciones sean totalmente deshabilitadas de la tarjeta, si la tarjeta fue utilizada unicamente para imprimir. La interrupción del puerto paralelo puede ser habilitada y deshabilitada usando el bit 4 del registro de control, habilitando la interrupción IRQ por vía de la línea de Reconoc. Una vez habilitada, una interrupción ocurrirá sobre una transición de bajo a alto (en el borde del levantamiento) del nReconoc. Sin embargo como siempre, algunas tarjetas pueden accionar la interrupción en la transición de alto a bajo.

A continuación se presenta el código de un comprobador de polaridad de la interrupción, que sirve para dos cosas. Determinará qué polaridad tiene la interrupción del puerto paralelo, mientras que también dará un ejemplo de cómo utilizar la interrupción del puerto paralelo. Verifica si su interrupción se genera en el borde del levantamiento o de caída de la línea de nRECONOC. Para utilizar el programa simplemente cablee una de las líneas de datos (contactos 2 a 9) al contacto de Reconoc (Contacto 10). La manera más fácil de hacer esto es puentear con algo de soldadura del DATO7 (contacto 9) a RECONOC (contacto 10) en un conector macho DB25.

Programa para probar la polaridad de la interrupción

/* Probador de polaridad de la interrupcion del puerto paralelo */

#include <dos.h>

#define DIRECCIONPUERTO 0x378 /*Coloque la dirección de su puerto aquí*/#define IRQ 7 /*El número de la interrupción aquí*/

#define DATOS DIRECCIONPUERTO+0#define ESTADO DIRECCIONPUERTO+1#define CONTROL DIRECCIONPUERTO+2

#define PIC1 0x20#define PIC2 0xA0

int bandinterrup;/*Declaración de la bandera de Interrupción como entero*/int cipdir; /*Controlador de interrupciones programable(CIP) Dirección Base */

void interrupcion (*oldhandler)();

void interrupcion parisr() /*Rutina de servicio de la interrupción (RSI)*/{ bandinterrup = 1; /*La bandera de interrupción se pone en uno*/ outportb(cipdir,0x20); /*Fin de la interrupcion (EOI)*/ }

void main(void){ int c; int numinte; /*Numero del vector de interrupcion*/ int masccip; /* Mascara del CIP*/

/*Calculo del vector de interrupcion, direccion CIP y Mascara. */

Soluciones a Interfaz por Medio del Puerto Paralelo de la PC 34

Page 35: Fondo Portuario Paralelo - electronica.ugr.eselectronica.ugr.es/~amroldan/asignaturas/curso01-02/dis…  · Web viewDespués de leer este documento en el cual se presentan ejemplos

if (IRQ >= 2 && IRQ <= 7) { numinte = IRQ + 0x08; cipdir = PIC1; masccip = 1; masccip = masccip << IRQ; }

if (IRQ >= 8 && IRQ <= 15) { numinte = IRQ + 0x68; cipdir = PIC2; masccip = 1; masccip = masccip << (IRQ-8); }

if (IRQ < 2 || IRQ > 15) {printf("Interrupcion IRQ Fuera de rango\n");exit();}

outportb(CONTROL, inportb(CONTROL) & 0xDF); /*Asegurese de que el puerto esta en Direccion delantera*/outportb(DATOS,0xFF);oldhandler = getvect(numinte); /*Guarda el vector de interrupcion anterior*/setvect(numinte, parisr); /*Coloca una nueva entrada para el vector de int*/outportb(cipdir+1,inportb(cipdir+1) & (0xFF - masccip)); /*Des-Mascara CIP */outportb(CONTROL, inportb(CONTROL) | 0x10); /*Habilita las interrupciones (IRQ´s) del puerto paralelo*/

clrscr();printf("Probador de polaridad de la interrupcion del puerto paralelo \n");printf("Interrupcion %d : NUMINTE %02X : Direccion del CIP 0x%X : Mascara 0x%02X\n",IRQ,numinte,cipdir,masccip);bandinterrup = 0; /*Resetea la bandera de interrupcion*/delay(10); /*Pone un retardo*/outportb(DATOS,0x00); /*Transicion de alto a bajo */delay(10); /*Espera*/if (bandinterrup == 1) printf("La interrupcion ocurre en la transicion de alto a bajo del RECONOC\n");else

{ outportb(DATOS,0xFF); /*Transicion de bajo a alto*/ delay(10); /*Coloca una espera*/ if (bandinterrup == 1) printf("La interrupcio ocurre en la transicion de bajo a alto del RECONOC\n"); else printf("No ocurrio ninguna actividad de interrupcion. \nVerifique el numero de la interrupcion, direccion

del puerto y el cableado."); }

outportb(CONTROL, inportb(CONTROL) & 0xEF); /*Deshabilita las interrupciones del puerto paralelo*/ outportb(cipdir+1,inportb(cipdir+1) | masccip); /*Mascara del CIP*/ setvect(numinte, oldhandler); /*Restaura el viejo vector de interrupciones antes de salir*/ }

Al tiempo de compilar, la fuente antedrior puede generar algunas alerta (warnings), condiciones siempre verdaderas, condiciones siempre falsas, código inalcanzable (unreachable code) etc. Esto esta perfectamente BIEN. Se generan como algunas de las pruebas de condiciones de estructuras de la interrupción (IRQ) que se están utilizando, y mientras la interrupción (IRQ) está definida como una constant,e algunos resultados nunca cambiarán. Mientras que pueden ser mejor implementadas como directiva del preprocesador, se ha hecho que el alumno puede cortar y copiara el código fuente en sus propios programas que pueden utilizar comandos de argumento de línea, entrada de usuario etc. en vez de una interrupción (IRQ) definida.

Para entender cómo trabaja este ejemplo, el alumno debe tener un conocimiento y un entendimiento s de interrupciones y de las rutinas del servicio de la interrupción (ISR).

La primera parte de la rutina principal calcula el vector de la interrupción, dirección del CIP y la máscara para utilizar el recurso de la interrupción del puerto paralelo. Después de que se haya instalado la rutina del servicio de la interrupción (ISR) y el controlador de interrupción programable (CIP) este colocado, debemos permitir la interrupción del puerto paralelo. Esto se hace fijando el bit 4 del registro de control del puerto paralelo.

outportb(CONTROL,inportb(CONTROL) | 0x10);Soluciones a Interfaz por Medio del Puerto Paralelo de la PC 35

Page 36: Fondo Portuario Paralelo - electronica.ugr.eselectronica.ugr.es/~amroldan/asignaturas/curso01-02/dis…  · Web viewDespués de leer este documento en el cual se presentan ejemplos

Antes de permitir las interrupciones, escribimos 0xFF al puerto paralelo para permitir las 8 líneas de datos en un estado conocido. En este punto del programa, todas las líneas de datos deben de estar en alto. La rutina del servicio de la interrupción simplemente coloca una bandera (bandintern), así podemos determinar cuando ocurre una interrupción (IRQ). Ahora estamos en posición de escribir 0x00 al puerto de datos, que causa una transición de alto a bajo en la línea de reconocimiento del puerto paralelo como si estuviera conectada a una de las líneas de datos.

Si la interrupción ocurre en la transición de alto a bajo, la bandera de interrupción (bandinterrup) debe ser puesta. Ahora se prueba esto, y si es esto es así el programa informará al usuario. Sin embargo si no se pone, entonces la interrupción no ha ocurrido todavía. Ahora escribimos 0xFF al puerto de datos, que causará una transición de bajo a alto en la línea de nReconoc y verificará la bandera de interrupción otra vez. Si está puesta, entonces la interrupción ocurre en la transición de bajo a alto.

Sin embargo si la bandera de interrupción se mantiene inmóvil, entonces ésto nos dice que las interrupciones no están trabajando. Asegúrese de que su interrupción (IRQ) y las direcciones base estan correctas y también verifique el cableado del enchufe.

FORZANDO UNA INTERRUPCIÓN EN EL PUERTO DE LA IMPRESORA.

Una interrupción de hardware es una capacidad donde un acontecimiento de hardware hace que el software detenga lo que está haciendo y se rediriga a una función para manejar la interrupción. Cuando está hecho esto, el programa vuelve donde se fue apagado. Haciendo a un lado el tiempo de ejecutamiento de la rutina de servicoi, la operación del programa principal permanece sin ser afectado por la interrupción.

Esto es absolutamente poderoso y aunque al principio, el proceso entero puede aparecer difícil de manejar, es de hecho muy simple.

Aunque esta documento se centra en usar la interrupción asociada al puerto de impresora, la misma técnica se puede adaptar a ejercer interrupciones directamente en el bus de ISA.

TABLA DE MANEJO DE INTERRUPCIONESCuando ocurre una interrupción, la PC debe saber adónde ir a manejar la interrupción.

El diseño original de la PC 8088 dió hasta 256 interrupciones (0x00 - 0xFF). Esto incluye ambas interrupciones, hardware y software. Cada uno de estos 256 tipos de interrupciones tiene cuatro bytes en una tabla que comienza en la locación de memoria 0x00000. Así, la INT 0 utiliza la locación de memoria 0x00000, 0x00001, 0x00002, 0x00003, INT 2 utilza los siguientes cuatro bytes de la tabla, etc. Observe que la INT 8 entonces utiliza los cuatro bytes en 0x0020, INT 9 comienza en 0x0024, etc. Estos 1024 bytes (256x4) se llaman tabla del vector de interrupciones.

Estos cuatro bytes contienen la dirección donde la PC irá cuando ocurra una interrupción. La mayoría de las tablas son cargadas cuando se carga la maquina. La tabla puede ser aumentada a, o modificada cuando se corren varias aplicaciones.

IBM reservó ocho interrupciones por hardware que comenzando en INT 0x08 para la extensión de la

interrupción. Éstos se conocen comúnmente como IRQ0 - IRQ7, el IRQ que corresponde a llevar a las designaciones asociadas a Intel 8259 que fue utilizado para controlar estas interrupciones. Así, IRQ 0 corresponde a INT 8, IRQ 1 corresponde a INT 9, etc.

Ejercicio. Use el debug para examinar la tabla de el vector de interrupción que es asignado de IRQ 0 a IRQ 7.

-d 00000:0020 20 B3 10 3B 0B 73 2C 3B 0B-57 00 70 03 8B 3B 3B 0B ED 3B 3B 0B AC 3A 3B 0B-B7 00 70 03 F4 06 70 00

(Recuerde que la tabla de locaciones para INT 8 comienza en 0x0020).

Soluciones a Interfaz por Medio del Puerto Paralelo de la PC 36

Page 37: Fondo Portuario Paralelo - electronica.ugr.eselectronica.ugr.es/~amroldan/asignaturas/curso01-02/dis…  · Web viewDespués de leer este documento en el cual se presentan ejemplos

De esto se puede ver que la dirección para la rutina de servicio de la interrupción asociado con IRQ 0 es 0B3B:10B3. Para IRQ 7, 0070:06f4. Usted debe poder ver el algoritmo que se usó para obtener esto.

Así, cuando ocurre una interrupción IRQ 7, sabrá que ésta corresponde a INT 0x0F y la dirección de la rutina de servicio de la interrupción está situado en 0070:06F4.

Ejercicio. Utilice el debugger para examinar la tabla del vector de la interrupción. Después utilice el Microsoft Diagnostics (MSD) y examinelas direcciones de IRQ y compare ambos.

MODIFICANDO LA TABLA DE MANEJO DE INTERRUPCIÓN

Asuma, usted van a utilizar la IRQ 7. Asuma que cuando ocurre una interrupción IRQ 7, usted desea que su programa para proceder a la función serv_int_irq7, una función que usted escribió. Para hacer esto, uno debe modificar primero la tabla piloto de interrupción. Por supuesto, usted puede desear tomar cuidadosamente cuál está ya ahí en la tabla y guardarlo en alguna parte, entonces luego, cuando uno deja su programa, se ponga el viejo valor de vuelta.

Borland Turbo C proporciona funciones para hacer esto.

int nivelint=0x0F; oldfunc = getvect (nivelint); /* El contenido de 0X0F es fetched y guardado para el futuro.*/

setvect (nivelint, serv_int_irq7); /* La nueva dirección es colocada en la tabla. */ /* serv_int_irq7 es el nombre de la rutina y es del tipo interrupcion far*/

Esto puede parecer malo, pero de hecho no lo es. Simplemente toma el vector ahora asociado a INT 0x0F y guárdelo en una variable llamada oldfunc. Entonces ponga la entrada asociada a INT 0x0F para ser la dirección de su rutina del servicio de interrupción.

La buena programación dicta que una vez que esté hecho esto con su programa, uno restablecerá la entrada a la que era;

setvect(nivelint, oldfunc);

Después de todo, qué pensaría uno en Word, si después de ejecutarla, uno no pueda utilizar su módem sin la reiniciarla.

ENMASCARANDO

El programador puede enmascarar interrupciones. Si una interrupción es enmascarada uno está diciendo a la PC, “por el momento no haga caso de cualquier interrupción del tipo IRQ 7”. Normalmente, uno no hace esto. Mejor se desea fijar la máscara de la interrupción tal que IRQ 7 sea habilitada.

El puerto 0x21 se asocia con la máscara de interrupción. Para habilitar una IRQ determinada, escriba un cero a esa localización de bit. Sin embargo, usted no desea molestar a cualquiera de los otros bits.

mascara=inportb(0x21) & ~0x80; /*Consigue la máscara actual. Pone el bit 7 a 0. Deje a los otros ** **bits sin molestar */

outportb(0x21, mascara);

Soluciones a Interfaz por Medio del Puerto Paralelo de la PC 37

Page 38: Fondo Portuario Paralelo - electronica.ugr.eselectronica.ugr.es/~amroldan/asignaturas/curso01-02/dis…  · Web viewDespués de leer este documento en el cual se presentan ejemplos

El usuario ahora está listo ahora para las interrupciones IRQ 7. Observe que cada vez que cada tiempo hay una interrupción de IRQ 7, el programa incondicionalmente se redirige a la función serv_int_irq7. El usuario está libre hacer lo que él quiera pero debe decirle a la PC que la interrupción ha sido procesada;

outportb(0x20, 0x20);

Antes de salir del programa, el usuario debe volver el sistema a su estado original; fijando el bit 7 de la máscara de interrupción a un uno lógico y restablecer el vector de interrupción.

mascara=inportb(0x21) | 0x80;outportb(0x21, mascara);

setvect(nivelint, oldfunc);

RUTINA DE SERVICIO DE LA INTERRUPCIÓN

En teoría, usted debe poder hacer cualquier cosa en su rutina de servicio de la interrupción (ISR). Por ejemplo, una interrupción puede ser forzada por hardware externo detectando a un intruso. El ISR puede traer el tiempo del reloj del sistema, abrir un archivo y escribir el tiempo y otra información al archivo, cerrar el archivo y después volver al programa principal.

De hecho, el autor no tiene buena suerte en hacer esto y usted observará que mis rutinas de servicio de la interrupción son limitadas;

Invalida interrupciones lejanas. Fija una variable tal que al volver al programa principal hay una indicación de que ocurrió una

interrupción. Indica a la PC que esta interrupción fue procesada; outportb(0x20,0x20); Habilita las interrupciones.

Se pienso que el problema es que las interrupciones están apagadas durante todo el ISR lo cual puede mandar imposibilitar una función de C que pueda utilizar interrupciones. Por ejemplo, cuando se abre un archivo, asumo que las interrupciones son utilizadas por Turbo C para tener una interfaz con el disco duro. Desemejante del IRQ que se estam discutiendo, la actual implementación de cómo C maneja estas interrupciones necesarias para implementar funciones en C no serán “escuchadas por la PC” y el programa parecerá que explota.

Una sugerencia personal es que usted utilice inicialmente la técnica que he utilizado en escribir su rutina de servicio de la interrupción. Esto es muy simple; fijando o incrementando una variable. Sin embargo, reconozca que esto puede rasguñar la superficie.

Entonces usted puede intentar un ISR más complejo de la siguiente forma. A la hora de esta escritura no se ha intentado esto.

Invalide todas las interrupciones. Fije la máscara para invalidar interrupciones de IRQ 7. outportb(0x20,0x20). Permita todas las interrupciones. Haga lo que sea necesario hacer. Deshabilite todas las interrupciones. Fije la máscara para habilitar interrupciones de IRQ 7. Habilite las interrupciones.

Observe la diferencia del anterior. Cualquier interrupción IRQ 7 es bloqueada mientras en el ISR, pero en el centro del ISR, todas las otras interrupciones son habilitadas . Esto debe permitir que todas las funciones de C trabajen.

Soluciones a Interfaz por Medio del Puerto Paralelo de la PC 38

Page 39: Fondo Portuario Paralelo - electronica.ugr.eselectronica.ugr.es/~amroldan/asignaturas/curso01-02/dis…  · Web viewDespués de leer este documento en el cual se presentan ejemplos

BIT DE HABILITACIÓN DE IRQ

Recuerde que hay tres puertos asociados al control del puerto de impresora; Datos, Estado y Control. El bit 4 del puerto de control es una salida de la PC; habilitador de IRQ. Observe que el bit 2 del puerto de estado es una entrada de la PC; nIRQ. Ni unos ni otro de estos bits se asocian al conector DB-25. Ellos controlan la lógica en la tarjeta de la impresora o la placa base (motherboard) de la PC.

Si las salidas del Habilitador IRQ están un uno lógico, una interrupción ocurre en una transición que va a negativo en la entrada nRECONOC.

Así, además para poner la máscara para entretener a las interrupciones de IRQ 7 según lo discutido anteriormente, uno poner el Habilitador IRQ a un uno lógico.

mascara=inportb(0x21) & ~0x80; outportb(0x21,mask); /*Como se discutió anteriormente*/ outportb(CONTROL, inportb(CONTROL) | 0x10);

Note que en esta implementación todos los bits aparte del Bit 4 del Puerto de Control son dejados como estaban. Antes de salir del programa, es buena practica el dejar las cosas bien hechas. Esto es, poner el Bit 4 a cero. outportb(CONTROL, inportb(CONTROL) & ~0x10);

Soluciones a Interfaz por Medio del Puerto Paralelo de la PC 39

Capacidad de interrupción vía el puerto de impresión es habilitada poniendo el Bit 4 de el puerto de control a “1” lógico.

La interrupción ocurre en la transición que va a negativo (cierre del interruptor) en la entrada de nRECONOC

Tabla del vector reverso. Guarda la actual entrada en una variable vieja y modifica el punto a nuestra rutina de servicio de interrupción.

Pone el bit 4 del puerto de control a “1” lógico.

Manejando las interrupciones

Estado

nIRQ (Bit 2) en el Puerto de Estado. Su uso es conocido

Pone el bit apropiado de la máscara a un “0” lógico

En el programa, el flujo del programa será transferido a su rutina de servicio de interrupción.

Deja a la PC conocer que interrupción ha sido procesada escribiendo un “1” lógico al bit 5 del puerto 0x0020

Rutina de servicio de interrupciónViejo

En el programa restaura la tabla de vectore a el original y reinicia la máscara en el puerto 0x0021

Tabla de vector abreviada

Tierra

nRECONO

FIGURA 14. Uso del Puerto Paralelo de Impresora para Interrupciones

Page 40: Fondo Portuario Paralelo - electronica.ugr.eselectronica.ugr.es/~amroldan/asignaturas/curso01-02/dis…  · Web viewDespués de leer este documento en el cual se presentan ejemplos

PROGRAMAS DE IRQ

El programa INTOCURR.C hace simplemente un mensaje en la pantalla para indicar que ha ocurrido una interrupción. Observe que la variable global “int_ocurrida” está puesta en falso en la declaración. En la interrupción, esto se pone en verdadero. Así, el código en el principal con el if(int_occurrida) se ejecuta solamente si realmente ocurrió una interrupción de hardware.

El programa TIMEIRQ.C es igual a excepción de el principal. Cuando ocurre la primera interrupción, el tiempo es tomado del reloj del sistema. De otra manera el tiempo nuevo es traido y se calcula la diferencia para desplegarla.

Programa para detectar la aparición de una interrupción

/* ** Programa INTOCURR.C ** ** Utiliza la rutina de servicio de interrupcion del puerto de impresión.** La interrupcion es causada por una entrada negativa en nRECONOC en el ** puerto de impresión. Esto puede ser adaptado a un detector de intrusos** o a un limitador de temperatura.**** Note que el puerto de la impresora esta localizado en 0X0378 – 0X037A** y esta asociado con la interrupcion 7. Uno debe de correr el programa** que se hizo en los primeros temas o el Microsoft Diagnostics (MSD) para** saber exactamente los asignamiento en su PC.

** Nombre Dirección de la tabla ** ** IRQ2 0x0A ** IRQ4 0x0C ** IRQ5 0x0D ** IRQ7 0x0F ** */ #include <stdio.h> #include <bios.h> #include <dos.h> #define DATOS 0x0378 #define ESTADO DATOS+1 #define CONTROL DATOS+2 #define VERDADERO 1 #define FALSO 0 void servint_abierto(void); void servint_cerrado(void); void int_procesada(void); void interrupcion far servint(void); int nivelint=0x0F; /*Nivel de interrupcion asociado con IRQ7 */ void interrupcion far (*funcvieja)(); int int_occurrida = FALSO; /* Nota: Definiciones globales */ int main(void) { servint_abierto(); outportb(CONTROL, inportb(CONTROL) | 0x10); /*Pone el bit 4 del puerto de control el uno logico*/ while(1) { if (int_occurrida)

Soluciones a Interfaz por Medio del Puerto Paralelo de la PC 40

Page 41: Fondo Portuario Paralelo - electronica.ugr.eselectronica.ugr.es/~amroldan/asignaturas/curso01-02/dis…  · Web viewDespués de leer este documento en el cual se presentan ejemplos

{ printf("Interrupcion Occurrida\n"); int_occurrida=FALSO; } } servint_cerrado(); return(0); } void interrupcion far servint(void) /* Esto es escrito por el usuario. Note que la fuente de la interrupcion ** debe ser limpiada y por lo tanto el PC 8259 limpiado (int_procesada) ** debe ser incluida en esta funcion. */ { deshabilita(); int_procesada(); int_occurred=VERDADERO; habilita(); } void servint_abierto(void) /* Habilita la interrupcion 7 (IRQ7). En la interrupcion (bajo en nRECONOC)** todas la interrupciones se deshabilitan durante esta funcion; habilitado ** en la salida.*/ { int masc_int; deshabilita(); /*Deshabilita todas las interrupciones*/ funcvieja=getvect(nivelint); /* Guarda el viejo vector */ setvect (nivelint, servint); /* Actualiza para un serv int nuevo */ masc_int=inportb(0x21); /* 1101 1111 */ outportb(0x21, masc_int & ~0x80); /* Pone el bit 7 a cero */ /*Deja a los otros en paz*/ habilita(); } void servint_cerrado(void) /* Deshabilita la interrupcion IRQ7 */ { int masc_int; deshabilita(); setvect(nivelint, funcvieja); masc_int=inportb (0x21) | 0x80; /* Bit 7 a uno*/ outportb(0x21, masc_int); habilita(); } void int_procesada(void) /* Señala al 8259 en la PC que la interrupcion ha sido procesada */ { outportb(0x20,0x20); }

Programa para calcular el tiempo entre interrupciones

/* ** Programa TIMEIRQ.C **** Utiliza una rutina de servicio de interrupcion para notar la interrupcion** del puerto de impresora. La interrupcion es causada por un negativo en ** la entrada nRECONOC en el puerto de impresora.** Calcula el tiempo y lo despliega en mseg entre las interrupciones**

Soluciones a Interfaz por Medio del Puerto Paralelo de la PC 41

Page 42: Fondo Portuario Paralelo - electronica.ugr.eselectronica.ugr.es/~amroldan/asignaturas/curso01-02/dis…  · Web viewDespués de leer este documento en el cual se presentan ejemplos

*/ #include <stdio.h> #include <bios.h> #include <dos.h> #include <sys\timeb.h> #define DATOS 0x0378 #define ESTADO DATOS+1 #define CONTROL DATOS+2 #define VERDADERO 1 #define FALSO 0 void servint_abierto(void); void servint_cerrado(void); void int_procesada(void); void interrupcion far servint(void); int nivelint=0x0f; /* Nivel de interrupcion asociada con IRQ7 */ void interrupcion far (*funcvieja)(); int int_ocurrida=FALSO; /* Definiciones globales */ int main(void) { int primera=FALSO; int segs, msegs; struct timeb t1, t2; servint_abierto(); outportb(CONTROL, inportb(CONTROL) | 0x10); /* Pone el bit 4 del puerto de control (Abilitacion IRQ) en uno logico */while(1) { if (int_occurrida) { int_occurrida=FALSO; if (primera==FALSO) /* Si esta en la primera interrupcion, solo fetch el tiempo */{ ftime(&t2); primera=VERDADERO; } else { t1=t2; /* De otra manera, fetch el nuevo */ ftime(&t2); /* Y calcula la diferencia */ segs=t2.time - t1.time; msegs=t2.millitm - t1.millitm; if (msegs 0) { --segs; msegs=msegs+1000; } printf("El tiempo de duracion es de %d\n",1000*segs+msegs); } } } servint_cerrado(); return(0); } void interrupcion far servint(void) /* Esto es escrito por el usuario. Note que la fuente de la interrupcion ** debe ser limpiada y por lo tanto el PC 8259 limpiado (int_procesada) ** debe ser incluida en esta funcion. */{ Soluciones a Interfaz por Medio del Puerto Paralelo de la PC 42

Page 43: Fondo Portuario Paralelo - electronica.ugr.eselectronica.ugr.es/~amroldan/asignaturas/curso01-02/dis…  · Web viewDespués de leer este documento en el cual se presentan ejemplos

deshabilita(); int_procesada(); int_occurred=VERDADERO; habilita(); } void servint_abierto(void) /* Habilita la interrupcion 7. En interrupcion (bajo encendido nRECONOC ** brinca a servint. Todas las interrupciones se deshabilitan en esta ** funcion; habilitadas en la salida. */ { int masc_int; deshabilita(); /*Deshabilita todas las funciones */ funcvieja=getvect(nivelint); /*Guarda cualquier viejo vector*/ setvect(nivelint, servint); /*Se prepara para el nuevo serv int*/ masc_int=inportb(0x21); /* 1101 1111 */ outportb(0x21, masc_int & ~0x80); /*Pone el bit 7 a cero*/ /*Deja a los otros en paz*/ habilita(); } void servint_cerrado(void) /*Deshabilita la interrupcion 7 (IRQ7) */ { int masc_int; deshabilita(); setvect(nivelint, funcvieja); masc_int=inportb(0x21) | 0x80; /*Bit 7 a uno*/ outportb(0x21,masc_int); habilita(); } void int_procesada(void) /* Señala al 8259 en la PC que la interrupcion ha sido procesada */{ outportb(0x20, 0x20); }

ETAPA DE NEGOCIACIÓN IEEE 1284-1994

En las secciones anteriores se han identificado todos los modos de interfaz posibles IEEE 1284. Los periférico no se requieren para implementar todos modos. Por este caso, un método es necesario para una plataforma del ordenador principal (host) que determine cuáles son las capacidades del periférico asociado, y para tener un método controlado por el cual fijar la interfaz en uno de los modos.

El concepto de la negociación fue desarrollado para llenar esta necesidad. La negociación es una secuencia de eventos en la interfaz del puerto paralelo que no afectaría a los dispositivo viejos de la “herencia” pero que proporcionará la identificación de un periférico 1284. El concepto es que un dispositivo viejo no responderá a la secuencia de la negociación y por lo tanto seguiría manteniendo el ordenador principal (host) un modo compatible del estado, mientras que un periférico 1284 respondería a la secuencia y se podría entonces poner a cualquier del periférico y modos osportado por el ordenador principal(host).

Durante la fase de la negociación, el ordenador principal pone una petición en las líneas de datos y después inicia la secuencia de la negociación. La petición puede ser poner la interfaz en un modo particular, o solicitar una identificación del dispositivo del periférico. La identificación del dispositivo será discutida más adelante. La figura 14 muestra la secuencia básica de la negociación.

Soluciones a Interfaz por Medio del Puerto Paralelo de la PC 43

Page 44: Fondo Portuario Paralelo - electronica.ugr.eselectronica.ugr.es/~amroldan/asignaturas/curso01-02/dis…  · Web viewDespués de leer este documento en el cual se presentan ejemplos

El byte de extensibilidad se utiliza durante la negociación para solicitar que el periférico entre en un modo específico de transferencia, o para solicitar que el periférico envíe una identificación del dispositivo que permita al ordenador principal identificar el tipo de periférico asociado. La identificación del dispositivo puede ser devuelta en cualquier modo reverso del canal, con excepción de EPP. La tabla 14, describe el byte extensivo y los valores permisibles. La banderaX es utilizada por el periférico para el reconocimiento de que el modo solicitado está disponible. La banderaX será fijada siempre a uno (# 6 en la figura 14) como un reconocimiento positivo para todas las peticiones a excepción del canal reverso del modo nibble. Todos los dispositivos complacientes 1284 son requeridos para soportar el modo nibble para la operación reversa del canal. El bit de petición de la conexión de extensibilidad es utilizado para proporcionar un mecanismo para una extensión futura y la adición nuevos modos operacionales y características.

La identificación del dispositivo y la negociación son características claves para la capacidad futura de las plataformas de PC para determinar la configuración del sistema y para incluir los accesos a los puertos paralelos periféricos en esta determinación.

Bit Descripción Valores válidos de bits(8765 4321)

8 Petición de conexión de extensibilidad. 1000 00007 Petición del modo EPP 0100 00006 Petición del modo ECP con RLE 0011 00005 Petición del modo ECP sin RLE 0001 00004 Reservado 0000 10003 Petición de la identificación del dispositivo Retorno del dato usando el modo:

0000 0100 – Modo nibble0000 0101 – Modo byte0001 0100 – Modo ECP sin RLE0011 0100 Modo ECP con RLE

2 Reservado 0000 00101 Modo byte 0000 0001

Ninguno Modo nibble 0000 0000

Soluciones a Interfaz por Medio del Puerto Paralelo de la PC 44

FIGURA 15. Secuencia de negociación básica

nselectin(1284 Activo)

nAutoAlim(HuéspedOcup)

Datos 8:1

nStrobe(RelojHuésped)

nReconoc(RelojApuntador)

nError(nDatosDisp)

PE(ReconocDatosReq)

Selecc(Bandera X)

Tabla 15. Valores de bit en extensibilidad de byte.

Page 45: Fondo Portuario Paralelo - electronica.ugr.eselectronica.ugr.es/~amroldan/asignaturas/curso01-02/dis…  · Web viewDespués de leer este documento en el cual se presentan ejemplos

Transición de las fases de la negociación:

1. El ordenador principal pone el byte de extensibilidad solicitado en las líneas de datos.2. El ordenador principal entonces fija nSelecDentro y nAutoAlimen en bajo para indicar una secuencia de

negociación. 3. Un periférico 1284 responderá fijando nRecon en bajo, y nError, PE y Selección en alto. Un periférico

no-1284 no responderá. 4. El ordenador principal fija nStrobe en bajo. Esto es utilizado para strobe el byte de extensibilidad dentro

del periférico. 5. El ordenador principal entonces fija nStrobe y nAutoAliment en alto para señalar al periférico que lo

reconoce como dispositivo 1284.6. El periférico responde fijando el PE en bajo, nError en bajo si el periférico tiene datos de canal reverso

disponibles, o Selección en alto si los modos solicitados están disponibles, Selección en bajo sin el modo solicitado no está disponible.

7. El periférico ahora pone nReconoc en alto para señalar que la secuencia de negociación es excedente y las líneas de señales están en un estado compatible con el modo solicitado.

INTERFAZ ELÉCTRICA, EL CABLE IEEE 1284

El puerto paralelo original no tenía una especificación eléctrica definida que identificara la unidad, el receptor, la terminación y los requerimientos de capacitancia para garantizar cualquier compatibilidad entre los dispositivos. Los adaptadores del ordenador principal y los periféricos fueron construidos con cualquier número de valores de pull-up en las líneas del control, el colector abierto o unidades del poste totem (totem pole) para los datos y las líneas del control, y la más ofensiva de todas, hasta condensadores de 10,000pF en los datos y líneas de strobe. Esta variación del tipo de diseño hace imposible crear un nuevo protocolo de interfaz sin definir explícitamente los parámetros eléctricos requeridos con los cuales garantizar la operación.

El estándar 1284 define dos niveles de compatibilidad de interfaz, el nivel I y el nivel II. La interfaz del nivel I se define para los productos que no van a funcionar en modos avanzados de alta velocidad, pero necesita aprovecharse del estándar de las capacidades reversas del canal. La interfaz del nivel II está para los dispositivos que funcionarán en los modos avanzados, con cables largos, y en las tasas de datos más altas. Esta discusión se ocupará sobre todo de las interfaces del nivel II. Verifique por favor al estándar para los requisitos completos para una interfaz de nivel I de nivel II.

Los requisitos para las unidades en el nivel II y los receptores se definen como interfaz del conector. Los requisitos la unidad son:

1. El voltaje de alto nivel de la salida en circuito abierto no excederá +5.5V. 2. El voltaje de bajo nivel de la salida en circuito abierto deberá no ser menor que -0.5V. 3. El estado constante de CD., voltaje de alto nivel de la salida deberá ser por lo menos +2.4V con una

fuente de corriente de 14mA. 4. El estado constante de CD., voltaje de bajo nivel de la salida no excederá +0.4V en un sumidero de

corriente de 14mA. 5. La impedancia de salida de la unidad (Ro), medida en el conector, deberá ser de 50 +/- 5 ohmios a 1/2

een la unidad de Voh menos el voltaje del Vol.6. La tarifa ciénaga de la unidad deberá ser de 0,05-0,40 V/nS.

Como los requisitos de la unidad (driver), los requisitos del receptor se definen en la interfaz del conector. Los requisitos del receptor son:

Soluciones a Interfaz por Medio del Puerto Paralelo de la PC 45

Page 46: Fondo Portuario Paralelo - electronica.ugr.eselectronica.ugr.es/~amroldan/asignaturas/curso01-02/dis…  · Web viewDespués de leer este documento en el cual se presentan ejemplos

1. El receptor deberá soportar picos de transientes de voltaje de entrada entre -2.0V y +7.0V sin daño o una operación incorrecta.

2. El umbral de alto nivel de la entrada del receptor no deberá exceder 2.0V 3. El umbral de bajo nivel de la entrada del receptor deberá ser por lo menos 0.8V. 4. El receptor proporcionará por lo menos 0.2V de histéresis de entrada , pero no más que 1.2V. 5. La corriente de alto nivel del sumidero del receptor no excederá 20uA en +2.0V.6. La corriente de bajo nivel de la fuente de la entrada del receptor no excederá 20uA en +0.8V. 7. El circuito y la capacitancia perdida no deberá exceder 50pF.

La figura 15 muestra la terminación de la recomendación para un par de controlador/receptor. Ro representa la impedancia de la salida en el conector. Se piensa que esta impedancia empareje la impedancia del cable para reducir el ruido causado por impedancias mal unidas. Dependiendo del tipo de controlador (driver) usado, un resistor en serie, Rs se puede requerir para obtener la impedancia correcta.

La figura 16 muestra la terminación recomendada para un par de transceiver de nivel II, tal como las líneas de datos.

Hay productos que estan siendo introducidos por algunas compañías que proporcionan soluciones integradas para un interfaz 1284 de nivelII. Éstos incluyen controladores y receptores así como redes del resistor de sip.

NOTA: Cuando el ECP introducido por primera vez, Microsoft hizo una recomendación para requerimientos eléctricos y terminación que no era consistente con la especificación 1284. Esto incluyó terminaciones de CA para cada una de las líneas. Esta sugerencia ha estado retractada y la recomendación actual es utilizar la interfaz definido en la especificación IEEE 1284.

Ensamblajes de Cables IEEE 1284

Para garantizar la operación del alto rendimiento, las longitudes de cable de 10M, y la interoperatibilidad entre varias plataformas y los periféricos, el estándar 1284 define las características para los ensamblajes de cable.

Soluciones a Interfaz por Medio del Puerto Paralelo de la PC 46

FIGURA 11. Ejemplo de terminación par Controlador/Receptor de Nivel II

FIGURA 16. Ejemplo de terminación del tranceiver de Nivel II

FIGURA 16. Ejemplo de terminación par Controlador /receptor de nivel II

FIGURA 15. Ejemplo de un par de Controlador/Receptor

Page 47: Fondo Portuario Paralelo - electronica.ugr.eselectronica.ugr.es/~amroldan/asignaturas/curso01-02/dis…  · Web viewDespués de leer este documento en el cual se presentan ejemplos

Contraria a la creencia popular, no hay ninguna cosa tal como un “estándar” del cable paralelo de la impresora. Esto se refiere típicamente a un ensamblaje del cable con un macho DB25 en un extremo y un enchufe conector Champ de 36 contactos en el otro extremo. Internamente, los cables pueden tener de 18 a 25 conductores, con 1 a 8 alambres a tierra, pueden tener hoja de blindaje y/o trenza, y posiblemente un alambre del drenaje. Con este tipo de ensamblaje no hay manera de controlar la impedancia del cable, la interferencia, la capacitancia y el funcionamiento del cable. Este tipo de ensamblaje es buena para la operación a los 10K bytes por segundo en 6 pies, pero no trabajará confiablemente a los 2M bytes por segundo en las longitudes de 30 pies de cable.

Algunos de los parámetros para el obediente ensamblaje de cable 1284 incluye:

1. Todas las señales son par trenzado con una señal y un regreso a tierra. 2. Cada señal y el regreso a tierra tiene una impedancia desequilibrada característica de 62 +/- 6 ohmios

sobre la banda de frecuencia de 4 a 16 MHz.3. La interferencia del alambre-a-alambre no deber ser mayor que 10%. 4. El cable tendrá un mínimo de 85% de hoja de cobertura óptica trenzada. 5. El blindaje del cable será conectado con el backshell usando un método concéntrico de 360 grados. Una

conexión de la coleta no es aceptable. 6. Los ensamblajes de cable obedientes deberán ser marcados con: “ IEEE Std 1284-1994 Complian”

(obedece al estándar IEEE 1284-1994).

Las longitudes de cable estándares están disponibles en 10 pies, 20 pies y 30 pies de algunos fabricantes. Puesto que este cable tiene tal buen funcionamiento no hay necesidad de ser limitado a un ensamblaje de cable de 6 pies.

MEMORIAS FIFO

INTRODUCCIÓN

El constante incremento en las frecuencias de operación de los nuevos instrumentos electrónicos y los anchos de los buses en los años recientes, han creado un reto para los diseñadores superándolo con las memorias FIFO para cubrir sus necesidades. Para asistir al diseñador, las nuevas memorias FIFO están disponibles en diferentes funciones que complementan estas tendencias en los nuevos instrumentos electrónicos.

Las tasas de muestreo más altas han dictado la necesidad de las FIFO’s en donde se desarrolla una arquitectura temporizada , donde el dato es movido dentro y fuera del dispositivo con controles asíncronos. Cada control asíncrono de la FIFO temporizada utiliza el habilitador de señal que sincroniza en intercambio de datos a un reloj de libre corrimiento (contínuo).

Por lo que los relojes continuos en cada puerto de la FIFO temporizada operan asíncronamente de cada otro, señales de estado interno indican cuando la FIFO está vacía o llena para poder cambiar con respecto a su reloj. Para usar una señal de estado para el puerto de control, es sincronizado a el reloj del puerto de la FIFO temporizada. La sincronización de estas señales con flip-flops introduce errores de metaestabilidad que incrementan con la frecuencia de reloj. Algunos dispositivos utilizan banderas de sincronización de dos estados para mejorar enormemente la confiabilidad.

Las frecuencias de reloj mas altas aumenta la velocidad sin procesar, pero anchos de banda mayores tambien son alcanzados por el incremento del ancho de los datos. Un ancho de datos mayor pueden tener asociados un costo por la gran área de placa con el incremento del tamaño del dispositivo. Los nuevos dispositivos han reducido su costo.

BREVE HISTORIA DE LAS FIFOS

En los comienzos de los años 80, las FIFO’s no eran más que un banco de registros paralelo, con un wide de 4 a 5 bits y una profundidad de 8 a 64 nibbles. Entre estas FIFO’s, los ripples de datos de un registro al siguiente, y las FIFO’s estaban entre una latencia de datos grande.Soluciones a Interfaz por Medio del Puerto Paralelo de la PC 47

Page 48: Fondo Portuario Paralelo - electronica.ugr.eselectronica.ugr.es/~amroldan/asignaturas/curso01-02/dis…  · Web viewDespués de leer este documento en el cual se presentan ejemplos

Remplazando los registros con un puerto-dual de celdas de memoria, las densidades de vendors boossted y redujo las latencias de la FIFO. Los contadores internos de las FIFO’s mantuvieron el camino de la locación que había sido escrito a y de la locación que estaba lista para ser leída. El control lógico de la FIFO uso el estado de los contadores para proporcionar información de la bandera. Con este acercamiento, el dato escrito a la FIFO estuvo disponible para la lectura casi inmediatamente, y el tamaño del arreglo de memoria fue independiente de la salida a través de la FIFO.

Los diseñadores encontraron que cuando se utilizaban estos dispositivos rápidos, era difícil tener toda la ventaja de la capacidad de la memoria porque la FIFO ofrecía solo banderas de lleno y vacío. La adición de la función de banderas programables permitió a los diseñadores poner los puntos exactos de lleno/vacío necesarios para compensar los retrasos de canal del sistema. Si un sistema requiere de tres retrasos de ciclo de reloj para reconocer una bandera, por ejemplo, la bandera puede ser programada para llenarse en menos 3 o vaciarse en mas 3. Las banderas programables por lo tanto incrementaron el funcionamiento y simplificaron el sistema.

Para acomodar una variedad mas amplia de aplicación, ahora las arquitecturas de las FIFO ofrecen características como el emparejamiento de bus, marcar y retransmitir, puesta de banderas programables en la carga serial, reinicio(reset) parcial. Para ahorrar espacio en la tarjeta, también se encuentran FIFO’s bidireccionales poniendo dos FIFO’s espalda a espalda en un solo empaque.

El incremento en las velocidades de los sistemas han requerido cambios en la arquitectura mas dramáticos. Por ejemplo, una interfaz síncrona mueve el dato dentro o fuera en un tope de reloj en vez de una señal de habilitación de lectura o escritura asíncrona. La interfaz síncrona facilita el tiempo de interfaz y los requerimiento de señalización, así como también mejora el tiempo de ciclo del dispositivo.

El incremento de velocidades del sistema y la necesidad de interconectar sistemas que corren a diferentes velocidades radicales también han resultado en la necesidad de una capacidad más alta en las FIFO’s. Debido al uso de un puerto dual de 6- u 8- transistores de células de memoria, limita la capacidad de la FIFO, algunas FIFO’s se han movido a un puerto sencillo de 4- transistores de célular SRAM. Conocidos como los dispositivos SuperSync, estas FIFO’s funcionan hacia delante como cualquier otra FIFO pero ofrece capacidades tan altas como 4Mbits. Internamente, las FIFO’s SuperSync siguen usando pequeños bancos de memoria puerto-dual para deacoplar las salidas y las entradas del banco principal de los bancos de bloques SRAM de puerto-sencillo. Estas FIFO´s utilizan maquinas complejas de estado interno a los contadores del monitor para múltiples fronteras de memoria, dos fronteras de relojes variables (lectura y escritura), el estado de la lógica de la bandera , y apuntadores de la función de retransmisión, las cuales son trasparentes para los usuarios.

Muchas mas arquitecturas conplejas FIFO mejorarán la velocidad, latencia, y capacidad sin tener incrementos mayores de costos. Una de estas arquitecturas, conocida como SuperSync II, emplea tres-puertos de memoria para implementar la entrada y salida tadicional de la FIFO.

MEMORIAS FIFO Y SUS APLICACIONES

Una memoria FIFO es usada como un almacen de memoria (buffer) entre dos sistemas asíncronos con accesos suimultáneos de escritura y lectura para y de la FIFO, estos accesos son independientes de cualquier otro. Los datos escritos en la FIFO son secuencialmente leidos fuera en una manera canalizada, de tal manera el primer dato escrito en la memoria FIFO será el leído fuera de la memoria FIFO. Así pues, la arquitectura fundamental de una FIFO tenga un puerto de entrada (escritura), y un puerto de salida (lectura). Cada puerto tiene sus apuntadores asociados propios que apuntan a la locación de la memoria, después de reiniciar (resetear) ambos apuntadore el de escritura y el de lectura de la FIFO estarán en la primera posición de memoria de la FIFO. Cada operación de escritura causará al apuntador de escritura incrementar a la siguiente localización en memoria, similarmente cada operación de lectura causará un incremento en el apuntador de lectura a la siguiente locación en memoria. Las operaciones de escritura y lectura FIFO se colocarán en una manera circular, de la pasada posición de memoria a la primera posición de memoria sin la necesidad de cualquier clase de reset en el apuntador de lectura o escritua.

Soluciones a Interfaz por Medio del Puerto Paralelo de la PC 48

Page 49: Fondo Portuario Paralelo - electronica.ugr.eselectronica.ugr.es/~amroldan/asignaturas/curso01-02/dis…  · Web viewDespués de leer este documento en el cual se presentan ejemplos

Las banderas de salida de estado FIFO son una función de la comparación de los apuntadores respectivos de escritura y lectura. Una FIFO tendrá siempre algunas banderas de estado de salida; por lo menos una bandera que indica la condición vacía y una bandera que indica la condición de llenado. Esto es generado por la comparación de los apuntadores de escritura y de lectura y de los resultados en el número de las posiciones de memoria entre ellas para ser cero, (es decir cuando están en la misma posición de memoria). Se coloca una bandera de llenado cuando la memoria FIFO esta llena. Esto es generada por los resultados de la comparación de los apuntadores de escritura y lectura en el número entre ellos para llegar al tope máximo de la FIFO, el apuntador esta ' D ' locaciones sobre el apuntador de lectura, donde “D” es la profundidad de la FIFO. Note, que una FIFO que esta llena no se le puede escribir y que una FIFO que está llena no puede ser leída.

Las memorias FIFOs pueden ser o síncronas o asíncronas, la diferencia fundamental entre las dos que son la presencia de las entradas de reloj en el FIFÓs síncrono, el FIFÓs asíncrono no tiene ninguna entrada de información de reloj. La operación completa de una FIFO síncrona es dependiente de la aplicación de cualquiera, una señal del reloj del escritura o una señal del reloj de lectura. Se pueden encontrar en el mercado una amplia variedad de FIFÓs disponible en muchas presentacionas que proporcionan a varias anchos y profundidades. El ancho del bus de datos varía de 1 bit a 72 bits y las profundidades de la FIFO varía de 64 a 512.000. El rango de las FIFÓs también incluye diversos grados de de funcionamiento y de funcionamiento. Las FIFÓs son disponibles como dispositivos unidireccionales (donde los datos que fluyen a través de la FIFO están en una dirección solamente), o bidireccionales (los datos pueden fluir en ambas direcciones a través de la FIFO. Se pueden encontrar FIFO’s que incluyen la característica de “Paralelo a Serial” y “Serial a paralelo”. En estas, la entrada de información de datos, o la salida de datos de la FIFO puede ser en un bus de datos paralelo o en una secuencia serial de bits.

RAMAS DE FAMILIAS DE FIFO

Las FIFO’s tiene tres familias principales, FIFÓs asíncronas, FIFÓs síncrona (ambas familias son unidireccionales) y FIFÓs síncronas bidireccionales. Las FIFÓs asíncronas no tienen ninguna entrada de reloj para cualquiera de las operaciones de lectura o de escritura. El dato es escrito o leído en la FIFO basado en una entrada accionada en el borde asíncrono. Las FIFÓs asíncronas no ofrecen el mismo nivel del funcionamiento o de la características puestas en las familias síncronas de las FIFO’s, sino debido a su simplicidad que las hacen ser utilizadas comúnmente. Tienen densidades hasta de 512Kbits. Las FIFÓs asíncronas son unidireccionales.

A loa familia síncrona de las FIFO’s se le han visto un gran número de progreso sobre los años. La primera familia síncrona de la FIFO, SyncFIFO, ha mejorado funcionamiento y le ha añadido algunas características cuando está se comparada a las FIFÓs asíncronas, pero tiene la principal diferencia en los relojes de entrada de lectura y escritura. Las SyncFIFÓs tienen máximas velocidades de reloj de 100MHz y una densidad máxima de 64Kbits. El SuperSync FIFO, ofrece un mejor funcionamiento y características agregadas. La FIFO SuperSync está disponible en velocidades de hasta 100MHz y con densidades de hasta 4Mbits. Hasta hace poco salió la familia de la FIFO SuperSync II que ha mejorado el funcionamiento y le ha agregado más características cuando está es comparada a la FIFO SuperSyncs. Las FIFO’s Supersync II ofrece velocidades de hasta 133MHz, densidades de hasta 4Mbit y al conjunto más completo de características del FIFO hasta la fecha. Esta familia tiene una arquitectura y una selección de empaquetado que permitirá que se desarrollen la familia más a fondo en términos de la velocidad, de la densidad y de las características. En el futuro se espera alcanzar una velocidad de hasta 200MHz y a 18Mbit de capacidad con el desarrollo continuado del SuperSync II FIFÓs. Estas FIFÓs son todas unidireccionales.

La última familia de FIFÓs son las bidireccionales. Éstas son capaces de un ancho de bus de 36 bits con opciones que corresponden a el del bus. Esta familia también incluye la FIFO TripleBus, que conecta dos puertos unidireccionales de un ancho de 36 bits (uno es un puerto de entrada, el otro es un puerto de salida), a un acceso bidireccional de 36 bits de ancho.

Como se mencionó arriba, la última familia FIFO es la industria que conduce SuperSync II. Esta familia de FIFÓs ofrece tres grupos, los “Bus estrechos” (anchura de bus de x9 / x18), “Bus mediano” (x36) y “Bus extendido”(x72) SuperSync ofrece el mejor funcionamiento de la memoria FIFO y también ofrece

Soluciones a Interfaz por Medio del Puerto Paralelo de la PC 49

Page 50: Fondo Portuario Paralelo - electronica.ugr.eselectronica.ugr.es/~amroldan/asignaturas/curso01-02/dis…  · Web viewDespués de leer este documento en el cual se presentan ejemplos

muchas características que son comunes a todos los grupos. Las nuevas características agregadas en el SuperSync II TM FIFÓs incluyen:

a) Bus correspondido (Bus Matching) los anchos del bus de salida de la FIFO pueden ser diferentes;

b) Control de Endian, para determinar el arreglo del byte durante la correspondencia del bus; c) Ocho valores de banderas programables por default, se seleccionan durante la restauración

(reset)principal; d) Retransmite con el tiempo de espera cero; e) Operación programable de la bandera síncrona o asíncronaor;f) Carga serial o paralela de los desplazamientos de la bandera. Los valores por defecto están

también disponibles. También, la FIFO de “Bus Extendido” introducirá algunas nuevas características a los dispositivos

del FIFO, éstos incluyen:

I) Entrada de reloj separada para la carga de desplazamiento (offset) de la bandera serial; II) JTAG - proporciona a la “Exploración del límite” (boundary scan) de la FIFO; III) Habilitador de salida síncrona, sincroniza al reloj de lectura; IV) Paquetes de BGA finos de 256 conectores.

Los tipos de empaquetado que se pueden encontrar en el mercado incluyen a los plásticos estándares DIP y a CERDIP, cerámica de montaje en la superficie LCC , PLCC, SOIC, TQFP y a STQFP.

Los desarrollos del empaquetado estás enfocados al el ahorro de espacio en los empaquetados, esto es lo que se ha remarcado en la familia SuperSync II, donde los empaquetados TQPF de 80 y 128 conectores son usados. Esta familia también incluyen empaquetados fnBGA (fine pitch BGA) de 256 conectores para sus dispositivos de 72 bits de ancho, por primera vez en una FIFO, este dispositivo incluye JTAG, esto permite la implementeación de la exploración de frontera. Empaquetados duales también están disponibles en las FIFO´s. En estas, dos FIFO’s están empaquetadas juntas para ahorrar espacio en la tarjeta. Las FIFO’s están disponibles con fuentes de poder estándares de 3.3V y 5V, econtrándose también versiones para temperaturas industriales, militares y comerciales.

APLICACIONES GENERALES DE LAS FIFO’S

La operación secuencial de las FIFO’s es particularmente útil para el desarrollo de funciones de cualquier número de niveles de sistema que incluyen, Almacenamiento empacado, Acoplamiento de Frecuencia, y Matching del Bus.

Almacenamiento empaquetado (packet buffering) – El dato es escrito en la FIFO puede ser almacenado hasta que el sistema en la salida de la FIFO está listo para aceptar el dato. Aquí la entrada del dato a la FIFO de una fuente digital es almacenado hasta que la recepción de la conexión está lista para leer el dato. Esto es particularmente útil para el cambio de conexión o los arreglos de ruteo donde muchas FIFO´s tienen buses de entrada discretos, pero todas las salidas de la FIFO son conectadas a un Bus común. Las salidas de la FIFO son “poleadas” por los datos por el sistema de recibimiento.

Acoplamiento de frecuencia – Los datos pueden necesitar ser transferidos de un dominio de frecuencia a otro. Esto es, los datos pueden ser transmitidos de un sistema digital que está corriendo a una frecuencia particular del reloj y recibida por un sistema digital que esta corriendo a una frecuencia diferente. Aquí la FIFO provee el acoplamiento de frecuencia, tomando el dato en un tasa y poniéndolo en la salida en otra. La tasa de datos de salida y entrada de la FIFO son controlados por las señales del reloj de Lectura y Escritura discretos.

Emparejamiento de bus – La transferencia de datos pueden necesitar estar entre dominios digitales separados con anchos de bus diferentes. Aquí la FIFO actúa como un puente entre los dominios, canalizando los datos de la entrada en un bus de un ancho particular, con la salida de un bus con otro ancho. El emparejamiento de bus es un característica que es fácilmente configurado en la familia SuperSync II de las Soluciones a Interfaz por Medio del Puerto Paralelo de la PC 50

Page 51: Fondo Portuario Paralelo - electronica.ugr.eselectronica.ugr.es/~amroldan/asignaturas/curso01-02/dis…  · Web viewDespués de leer este documento en el cual se presentan ejemplos

FIFO’s. Todas las FIFO’s pueden ser puestas fácilmente puestas en cascada para producir una mayor capacidad y expandida en su ancho para dar buses de datos mas amplios.

Soluciones a Interfaz por Medio del Puerto Paralelo de la PC 51

Page 52: Fondo Portuario Paralelo - electronica.ugr.eselectronica.ugr.es/~amroldan/asignaturas/curso01-02/dis…  · Web viewDespués de leer este documento en el cual se presentan ejemplos

FIFOS TEMPORIZADAS

Las FIFO’s temporizadas han llegado a ser populares por haber relevado a los cuellos de botella en el tráfico e datos de alta velocidad. La transferencia de datos par muchos sitemas son sincronizados a el reloj central con los habilitadores de lectura y escritura. Estos relojes de libre corrimiento pueden ser introducidos directamente a la FIFO temporizada con el mismo control de habilitamiento de su transferencia de datos en la transición de bajo a alto del reloj.

La reducción de el número de relojes mantiene una interface simple y fácil de manejar. Lógica extra es necesaria para producir un pulso enganchado cuando se usa un FIFO que acepta un reloj solo para el requerimiento de transferencia de datos. La señal generada es una derivación del reloj maestro con un margen de temporización incierta. A frecuencias de reloj grandes, esta temporización incierta no es tolerable y costosos ajustes son necesarios.

Lógica adicional se conserva implementando una bandera de sincronización en la fifo temporizada. La exploración es hecha para generar banderas que indican cuando la memoria está vacía o llena. En muchas apliaciones, la entrada y salida de la FIFO son asínnccronas y la señal de bansera debe ser sincronizada par sus uso como control. Una lectura no es completada en la FIFO si un dato no está listo, por lo que la señal de nVacío es sincronizada al reloj de lectura. Esta bandrera listo-para-salida síncrona es muy útil para controlar operaciones de lectura. Así mismo, la señal de nLLENO es sincronizada al reloj de escritura, produciendo la bandera de entrada-lista.

CONCLUSIONES

En este documento se han podido ver varias cosas referentes al puerto paralelo. Se ha mostrado una recopilación y una investigación exhaustiva por conocer todo lo referente al puerto paralelo de la computadora, para con esto poder crear nuevos dispositivos que ayuden en la vida del estudiante de ingeniería a su desarrollo dentro de la etapa estudiantil.

Hemos dejado sentadas las bases del conocimiento del puerto paralelo con este documento para futuras generaciones que estoy seguro que utilizarán de una gran manera el puerto paralelo, porque como se vió a lo largo del documento, es el instrumento ideal para poder manejar datos tanto de entrada a la computadora así como también a la salida de la misma.

Se ha dado al lector, algunos programa en lenguaje C para que se empiece a familiarizar con este mismo, ya que resulta de vital importancia para la creación de dispositivos que sean controlados por medio de la computadora y que sin el conocimiento de este, resultaría prácticamente imposible su realización de estos dispositivos.

Para la etapa de instrumentación, podemos ver que el puerto paralelo ofrece muchas ventajas para su correcto aprovechamiento, pero se observó que las interrupciones juegan un papel fundamental para el uso y manejo del puerto paralelo. El crear instrumentación a partir del puerto paralelo es una opción bastante fiable y económica, ya que si se pensara en utilizar el puerto PCMCIA este sería bastante robusto y nos ofrecería bastantes ventajas para su utilización, pero tendría una ventaja muy grande para el estudiante, y esta sería el costo de esta tarjeta.

Se ha dado una introducción a las memorias FIFO que como se vió en el artículo es de gran utilidad cuando estamos trabajando con dispositivos que requieren el manejo de una gran cantidad de datos y el almacenamiento de estas para poder pasarlas posteriormente a otro dispositivo que este tomando estos datos a una velocidad distinta de la que fue adquirida. Es decir, que las memorias FIFO son un aspecto fundamental para el procesado de señales, ya que estas nos sirve de almancén (buffer) mientras trabajamos en otras tareas mientras se adquieren datos o se envían estos y con la gran ventaja, de que pueden ser a diferente tiempo y no se necesita decir que localidad de memoria es la que necesitamos extraer, logrando extraer los datos en la secuencia en que fueron tomados, pero en un tiempo distinto al que fue tomados para ser almacenados.

Soluciones a Interfaz por Medio del Puerto Paralelo de la PC 52

Page 53: Fondo Portuario Paralelo - electronica.ugr.eselectronica.ugr.es/~amroldan/asignaturas/curso01-02/dis…  · Web viewDespués de leer este documento en el cual se presentan ejemplos

El incremento de la utilización de las memorias FIFO es cada vez mayo y por lo mismo, cada vez podemos contar con dispositivos de mayor calidad, rapidez, menor tamaño y mejor desempeño que nos permiten manejar las señales digitales a nuestro antojo. Una aplicación que podemos ver de gran utilidad con esta última, es el procesado de imágenes, ya que estas cuentan con una gran cantidad de datos y los dispositivos de almacenamiento no cuentan todavía con las velocidades adecuadas para su rápido procesamiento.

La utilización del puerto paralelo siempre había sido un misterio para los estudiantes, ya que la información de este es demasiada limitada y difícil de encontrar. Con este documento se marca la pauta para que se siga desarrollando mas el conocimiento y la creación de nuevos dispositivos manejando las señales por medio de la computadora.

Es así que la unión de ambos temas, tanto el de las memorias FIFO, como el de el manejo de el puerto paralelo de la computadora, dan una herramienta sumamente poderosa para el alumno que logre desarrollar su creatividad e ingenio al máximo para poder explotar la infinidad de recursos que su computadora le puede proporcionar, y no solo limitarla a ser un simple procesador de textos o un videojuego, sino que llegará mas allá.

Soluciones a Interfaz por Medio del Puerto Paralelo de la PC 53

Page 54: Fondo Portuario Paralelo - electronica.ugr.eselectronica.ugr.es/~amroldan/asignaturas/curso01-02/dis…  · Web viewDespués de leer este documento en el cual se presentan ejemplos

BIBLIOGRAFÍA

Shchildt Herbert “C THE COMPLETE REFERENCE”Mc. Graw Hill, USA 1990

Detzel P.J. “C HOW TO PROGRAM”Prentice Hall, USA 1992

Prozdek “DATA STRUCTURES IN C”PWS Publishing Company , 1995

Mata Antonio “C/C++”Parainto Editorial, 1994

http://www.ni.com/

http://www.ti.com/

http://et.nmsu.edu/~etti/fall96/computer/printer/printer.html

http://home.rmi.net/~hisys/parport.html

http://www.ibm.com

http://www.ieee.com/

http://www.ucl.ac.uk/~ucapwas/

http://www.idt.com

http://support.intel.com/support/processor/pentiumII/identify.htm

http://www.geocities.com/SiliconValley/Bay/8302/parallel.htm

http://servicepac.mainz.ibm.com/eprmhtml/eprma/727.htm

http://senet.com.au/~cpeacock

http://www.lvr.com/parport.html

http://www.national.com

Soluciones a Interfaz por Medio del Puerto Paralelo de la PC 54