# IEEE 1284

El estándar IEEE 1284 (Standard Signaling Method for a Bi-directional Parallel Peripheral Interface for Personal Computers, en español, «Estándar del Método de Señalización para una Interfaz Paralela Bidireccional Periférica para Computadoras Personales»), aprobado para su publicación en marzo de 1994, provee de una comunicación de alta velocidad y bidireccional entre una computadora y un dispositivo externo que puede comunicarse 50 o 100 veces más rápido que con el puerto paralelo original; además de ser totalmente compatible con los periféricos, impresoras y software que existían previamente.
Cuando IBM introdujo la computadora personal en 1981, el puerto paralelo de impresión estaba incluido como una alternativa al puerto serie, que era más lento para poder manejar las últimas impresoras de matriz de puntos de alto rendimiento. El puerto paralelo tenía la capacidad de transmitir 8 bits de datos a la vez, mientras que el puerto serie transmitía un bit a la vez. Cuando el IBM PC fue introducida, las impresoras de matriz de punto eran el periférico principal que usaba el puerto serie. Cuando la tecnología avanzó, la necesidad por una conectividad externa mayor se incrementó, y el puerto paralelo se volvió la vía por la cual conectar periféricos de alto rendimiento, tales como impresoras compartidas, lectores de discos portátiles y respaldos de cinta, adaptadores de red y reproductores de discos compactos. Los problemas enfrentados por desarrolladores y clientes de dichos dispositivos caían en 3 categorías.
* A pesar de que el funcionamiento de la PC mejoró notablemente, prácticamente no hubo cambios en la arquitectura de la PC. La tasa de transferencia máxima alcanzado con dicho arquitectura era de 150 kilobytes por segundo y era extremadamente dependiente del software.
* No había un estándar para la interfaz eléctrica. Esto causó diversos problemas cuando se intentaba garantizar la operación entre plataformas distintas.
* La falta de estándares de diseño forzó a una limitación de distancia de solo 6 pies para cables externos.
En 1991 hubo una junta de fabricantes de impresoras para comenzar la discusión sobre el diseño de un nuevo estándar para el control inteligente de impresoras sobre una red. Estos fabricantes, que incluían a Lexmark, IBM, Texas Instruments y otros, formaron la Network Printing Alliance (Alianza de Impresión en Red), y definieron una serie de parámetros que, cuando se implementaban en la impresora y el equipo anfitrión, permitirían el control completo de aplicaciones de impresión y trabajos.
Mientras dicho trabajo avanzaba, se dieron cuenta de que la implementación completa de dichos parámetros requeriría una conexión de alto rendimiento bidireccional con la computadora. La conexión ordinaria al puerto paralelo de la PC no tenía las capacidades para cumplir completamente con los requerimientos del estándar.
Entonces la NPA le propuso a la IEEE la creación de un comité que desarrollara un nuevo estándar para un puerto paralelo para PC bidireccional de alta velocidad. Era necesario además que fuera completamente compatible con el software y periféricos del puerto paralelo original, pero que incrementara la capacidad en el radio de transferencia a más de 1 megabyte por segundo, tanto de entrada como de salida de la computadora. Este comité se volvió el IEEE 1284.

## El puerto paralelo más conocido como "centronics"

El puerto paralelo, como se implementó en la PC, consiste de un conector con 17 líneas de señal y 8 líneas de tierra (GND). Las líneas de señal se dividen en 3 grupos.
* Control (4 líneas)
* Estado (5 líneas)
* Datos (8 líneas)
Como se diseñó originalmente, las Líneas de Control son usadas como control de la interfaz y señalización de establecimiento de comunicación (Hand Shaking) de la PC a la impresora. Las Líneas de Estado (Status) se usan para la señalización de establecimiento de conexión y como indicador de estado para cosas tales como no tener papel, indicador de ocupado y errores de la interfaz o del periférico. Las Líneas de datos son usadas para proveer la información desde la PC a la impresora, en esa única dirección. Implementaciones posteriores del puerto paralelo permiten que los datos fluyan en sentido inverso.
La siguiente tabla identifica cada una de esas señales y da su definición de acuerdo al Puerto Paralelo Estándar (SPP). Las señales dentro de estos grupos asignadas a bits específicos dentro de los registros hacen la interfaz de hardware/software del Puerto Paralelo. El puerto está ubicado dentro del espacio de entradas y salidas de la PC. El Registro consiste en un bloque contiguo de 3 registros comenzando desde la dirección base del puerto paralelo. Estos puertos son comúnmente referidos como los puertos LPT (Line Print Terminal) y tienen su dirección base típicamente en 3BCh, 378h y 278h (valores hexadecimales). Implementaciones recientes que soportan modos avanzados del estándar IEEE 1284 usan entre 8 16 registros y están localizados en las direcciones de entrada y salida (I/O address) 378h o 278h o son “reubicables”, como es el caso del adaptador compatible paralelo Plug and Play.
Definición de las señales del Puerto Paralelo :
| Grupo | Señal SPP | Entrada / Salida | Descripción de la señal |
| Control | STROBE | Salida | Indica que hay datos válidos en la línea de datos |
| Control | AUTOFEED | Salida | Hace que la impresora automáticamente inserte una línea por cada retorno de carro |
| Control | SELECTIN | Salida | Le indica a la impresora que está seleccionada |
| Control | INIT | Salida | Usado para aplicar un reset a la impresora |
| Estado | ACK | Entrada | Indica que el último carácter fue recibido |
| Estado | BUSY | Entrada | Indica que la impresora está ocupada y no puede aceptar datos |
| Estado | PE | Entrada | Sin papel |
| Estado | SELECT | Entrada | Indica que la impresora está en línea |
| Estado | nERROR | Entrada | Indica que existe una condición de error |
| Data | DATA (8:1) | Salida | 8 líneas de datos, en el antigua puerto paralelo estándar son solo de salida |
El uso de las señales descritas anteriormente y la siguiente tabla son para describir el modo de transferencia. Muchas otras señales son usadas para modos de transición y para información adicional sobre el estado.
La tabla siguiente identifica los registros para el puerto paralelo estándar. El método básico de transferencia de datos hacia la impresora usando el puerto es descrito en la sección Modo de Compatibilidad. La posición del Registro se cuenta a partir de la dirección de memoria del puerto.
Definición del Registro del Puerto Paralelo Estándar (SPP) :
| Posición del Registro | Nombre | Lectura / Escritura | Descripción |
| 0 | Registro de Datos | Lectura y Escritura | Puerto de datos para leer o escribir datos |
| 1 | Registro de Estado | Lectura | Contiene los bits indicadores del estado |
| 2 | Registro de Control | Escritura | Usado para establecer señales de control |
| 3-7 | Varios | - | Usado para distintas implementaciones |

## Modos de transferencia

El uso de distintos modos de transferencia nos da la capacidad de crear un canal de dos sentidos entre la computadora anfitrión y el periférico conectado. Como solo hay un juego de líneas de datos la comunicación es Half Duplex, o sea se transmiten datos en una dirección a la vez.
El modo de operación de la compatibilidad y de Nibble se puede poner en ejecución en cualquier puerto paralelo existente para crear una trayectoria de comunicación bidireccional completa entre el anfitrión y el periférico. Los modos de la compatibilidad y de octeto (byte) se pueden también utilizar para crear una trayectoria de comunicación bidireccional, pero el puerto paralelo debe soportar la capacidad del modo de octeto. El modo de octeto requiere que un octeto entero de datos se pueda leer en las líneas de datos externas. Esto es implementado generalmente 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 capacidad bidireccional como parte de su protocolo. Estos modos requieren que el hardware cree un estado de máquina que sea capaz automáticamente de generar los pulsos de control que son necesarios para estos modos de transferencia de datos del alto rendimiento.
Cada uno de los modos de funcionamiento, con excepción de la compatibilidad, renombra las señales del control y del estado para tener significado dentro del modo que es utilizado. Las discusiones para cada modo utilizarán los nombres constantes con el modo que es discutido.

## Introducción al estándar IEEE 1284-1994

Este estándar define 5 modos de transferencia de datos. Cada uno provee un método de pasar datos entre la PC y el periférico (directa) y entre el periférico y la PC (inversa); o de manera bidireccional (half duplex). Los modos definidos son:
* Sólo en sentido directo:
** Modo de Compatibilidad (modo estándar o “Centronics”)
* Modo de dirección inversa:
** Modo Nibble: 4 bits a la vez usando las líneas de estado (status) para datos (Hewlett Packard Bi-tronics)
* Modo de Octeto (Byte Mode): 8 bits a la vez usando las líneas de datos, a veces nombrado puerto bidireccional
* Bidireccional:
** EPP (Enhanced Parallel Port): Puerto Paralelo Extendido, usado principalmente para periféricos que no son impresoras, como CD-ROM, Adaptadores de Red, etc.
* ECP (Extended Capability Port): Puerto de Capacidades Extendidas, usado principalmente por impresoras recientes y escáneres.
Todos los puertos paralelos pueden implementar un enlace bidireccional usando los modos Compatible y Nibble para transferir datos. El Modo de Octeto puede ser usado por cerca del 25% de los puertos básicos instalados; y los 3 modos anteriores transmiten los datos controlados por software. El manejador tiene que escribir los datos, revisar las líneas que establecen la conexión (handshake), por ejemplo que no haya una señal de ocupado, determinar las señales apropiadas de control, y entonces ir al siguiente byte. Esto es muy demandante y limita la efectividad del radio de transferencia de 50 a 100 Kbytes por segundo.
Además de esos 3 modos previos, EPP y ECP están implementados en los controladores más nuevos de entrada y salida (I/O) por la mayoría de los fabricantes. Estos modos usan un control por hardware para asistir la transferencia de datos. Por ejemplo, en el modo EPP, un byte de datos puede ser transmitido a un periférico por una simple instrucción de salida. El controlador maneja todo el establecimiento de conexión y la transferencia de datos al periférico.
Además de todo, el estándar provee lo siguiente:
* Cinco modos de operación para transferir datos
* Un método para que la PC y el periférico determinen los modos soportados y negocien cual será usado.
* Define la Interfaz Física
* Cables
* Conectores
* Define la Interfaz Eléctrica
* Manejadores/Receptores
* Terminación
* Impedancia
En conclusión, el puerto paralelo definido por el estándar IEEE 1284-1994 nos proporciona una interfaz fácil de usar y de alto rendimiento para periféricos diversos e impresoras.
Protocolo del puerto con la impresora
El handshaking ("apretón de manos" o protocolo) es un conjunto de reglas que ambos extremos de un sistema de comunicación tienen que seguir para que la comunicación sea correcta. El puerto paralelo, usado con una impresora, transmite datos y transmite/recibe las señales de protocolo. Las principales son Strobe, Ack y Busy. La secuencia a seguir para enviar datos sería:
* Colocar el byte a enviar en el registro de datos.
* Verificar que la impresora no esté ocupada (Busy = bajo, S7 = 1).
* Indicarle a la impresora que acepte los datos (Strobe = bajo , C0 = 1, pulso >5us).
* En ese instante la impresora indica que está ocupada recibiendo los datos (Busy = alto, S7 = 0).
* Finalmente, la impresora envía un pulso de aceptación indicando que se recibieron los datos y que se puede volver al paso 1 (Ack = bajo, S6 = 0, pulso de entre 5 ms y 15 ms según impresora).
Las otras señales sirven para verificar el estado de la impresora (Error, PaperEnd), para reiniciarla (Init) y para configurarla (AutoFeed, Select).
En los nuevos puertos, estas señales adquieren otra función, a veces parecida y otras totalmente distintas.