Вы находитесь на странице: 1из 21

CAPITULO 3 – El puerto LPT

3.1 INTRODUCCION

La mayoría de las computadoras de hoy en día están equipadas con un puerto paralelo, el
cual es comúnmente usado para conectar la computadora a una impresora paralela. Debido
a que esta presente en la mayoría de las computadoras, el puerto paralelo es la opción ideal
de conexión con otros dispositivos periféricos. Sin embargo, la comunicación con los
periféricos a través del puerto paralelo esta limitada debido a que la interfase es
tradicionalmente unidireccional y no hay un estándar especifico para su uso.
Adicionalmente, a pesar de que el desempeño de las computadoras se ha incrementado
dramáticamente, el puerto paralelo ha permanecido sin cambios. Debido a esta situación se
ha desarrollado un nuevo estándar para el puerto paralelo –IEEE standard 1284-1994. Este
estándar esta basado en la especificación original del puerto paralelo estándar Centronics
(SPP) e incluye al puerto paralelo extendido (EPP) y al puerto con capacidades extendidas
(ECP).

3.2 Puerto Paralelo Estándar (SPP) – Puerto Paralelo Centronics

El puerto paralelo estándar es también conocido como puerto paralelo centronnics.


Centronics data computer corporation desarrollo la interfase a mediados de los 60’s la cual
fue una comunicación unidireccional paralela de 8 bits de la computadora con la impresora.
La interfase fue ampliamente utilizada, sin embargo, no fue desarrollado ningún estándar o
especificación para definir la interfase.

El estándar Centronics define un conector de 36 pines para la interfase de señales en el


lado de la impresora. En el lado de la computadora hubo una gran variedad de
implementaciones hasta la introducción de la PC por IBM en 1981. La implementación del
puerto paralelo utilizada en la PC de IBM se convirtió en la interfase más usada en la
industria para el puerto paralelo. La interfase del puerto paralelo define un conector de 25
pines con 8 terminales para datos unidireccionales, cuatro líneas de control y cinco líneas
de estado. Una descripción de estas señales se muestra en la tabla 3.1

Debido a que no hay ningún estándar definido, la relación de tiempos entre el protocolo
de señales varia ampliamente de impresora a impresora y dependiendo del fabricante, sin
embargo, deben mantener todos la compatibilidad con la interfase Centronics.

El diagrama de tiempos de una transferencia básica del puerto paralelo estándar se


muestra en la figura 3.1. Cuando la impresora esta lista para recibir datos, pone la línea
BUSY a cero. El PC coloca los datos a transferir en las líneas de datos, espera un mínimo
de 500ns, después envía un pulso a STROBE de una duración mínima de 500ns. Los datos
validos deben permanecer en las líneas de datos un mínimo de 500ns después de la
activación de STROBE. La impresora recibe el dato y activa la línea BUSY para indicar
que esta procesando el dato. Cuando la impresora ha terminado la transferencia de datos,
activara la línea ACK por un mínimo de 500ns y desactivara la línea BUSY, indicando que
esta lista para el siguiente dato.

22
SPP EPP ECP Fuente Conector
Nombre de la señal Nombre de la señal Nombre de la señal
Data 8-1 AD8-1 Data 8-1 PC/ 1284A: 9-2
Líneas de datos Líneas de datos y Líneas de datos y Periférico 1284B: 9-2
unidireccionales direcciones direcciones 1284C: 13-6
unidireccionales unidireccionales
STROBE WRITE HostClk PC 1284A: 1
El dato es valido durante Esta señal esta en cero En la dirección PC a 1284B: 1
un pulso activo en bajo en durante la escritura y en periférico, esta línea de 1284C: 15
esta línea uno durante la lectura protocolo esta
interconectada con
PeriphAck y es puesta a
cero cuando el dato es
valido
AUTOFD DSTROBE HostAck PC 1284-A: 14
El uso de esta línea varia. Esta señal denota ciclos de En la dirección PC a 1284-B: 14
La mayoría de las datos: Durante una periférico, esta línea es 1284-C: 17
impresoras realizan un operación de escritura, el puesta a cero para una
avance de línea después de dato es valido cuando esta transferencia de comando
cada retorno de carro señal esta activa, mientras y puesta a uno para una
cuando esta línea esta en que para una operación de transferencia de datos, en
estado bajo, y retornos de lectura esta señal esta en la dirección periférico a PC
carro solo cuando esta estado bajo cuando la PC es una señal de protocolo
línea esta activa esta lista para recibir datos interconectada con
PeriphClk
INIT INIT ReverseRequest PC 1284-A: 16
Esta línea es puesta en Esta línea es puesta en Esta línea es puesta a cero 1284-B: 31
estado bajo por lo menos estado bajo para terminar para colocar la interfase 1284-C: 14
50us para reiniciar la el modo EPP y regresar al paralela en la dirección
impresora y borrar el modo SPP periférico a PC
buffer de impresión
Selectln ASTROBE 1284 Active PC 1284-A: 17
La PC pone a estado bajo Esta línea denota ciclos de La PC activa esta línea 1284-B: 36
esta línea para seleccionar dirección. Cuando esta mientras se encuentra en 1284-C: 16
al periférico línea esta en estado bajo, modo ECP y la pone a
AD8-1 contiene una estado bajo para el termino
dirección del modo ECP
ACK INTR PeriphClk Periférico 1284-A: 10
El periférico envía un El periférico puede El periférico envía un 1284-B: 10
pulso bajo en esta línea interrumpir al PC mediante pulso en estado bajo a esta 1284-C: 3
cuando ha recibido el dato un pulso de subida en esta línea de protocolo con
previo y esta listo para línea dirección periférico a PC
recibir otro dato. Un pulso Para indicar que el dato es
de subida en esta línea valido. PeriphClk esta
puede ser enviado para interconectada con
interrumpir al PC HostAck

23
BUSY WAIT PeriphAck Periférico 1284-A: 11
El periférico activa esta El periférico coloca esta Esta línea de protocolo esta 1284-B: 11
línea para indicar que aun línea a cero para indicar interconectada con 1284-C: 1
no esta listo para recibir que ha completado HostClk y controlada por
datos satisfactoriamente la el periférico para
transferencia de datos o reconocer datos recibidos
dirección del PC. Durante
transferencias periférico a
PC, el periférico activa
esta línea durante
transferencias de datos y la
pone a cero para
transferencias de
comandos
Perror User Defined AckReverse Periférico 1284-A: 12
El uso de esta línea varia, El periférico maneja esta 1284-B: 12
las impresoras típicamente línea para seguir el nivel 1284-C: 5
al usan para indicar que no de la línea ReverseRequest
tienen papel
Select User Defined Xflag Periférico 1284-A: 13
El periférico activa esta El periférico activa esta 1284-B: 13
línea cuando ha sido línea para indicar que 1284-C: 2
seleccionado y esta listo utiliza el modo ECP
para la transferencia de
datos
FAULT User Defined PeriphRequest Periférico 1284-A: 15
El uso de esta línea varia. El periférico manda un 1284-B: 32
Los periféricos la utilizan cero en esta línea para una 1284-C: 4
para indicar que un error transferencia periférico a
ha ocurrido PC. Esta línea puede ser
utilizada para interrumpir
al PC

Tabla 3.1 Descripción de señales del Puerto Paralelo en sus tres modos de operación

Figura 3.1 Diagrama de tiempos de transferencia de datos del SPP

24
La computadora deberá efectuar cuatro pasos para realizar una transferencia de un byte a
través del puerto paralelo:

1. Escribir el dato valido al registro de datos


2. Leer la línea BUSY y esperar a que este inactiva en caso de estarlo
3. Escribir al registro de control para activar la línea STROBE
4. Escribir al registro de control para desactivar la señal STROBE

El tiempo mínimo de activación, mantenimiento y ancho de pulso requeridos para la


transferencia de datos por el puerto paralelo SPP limita su desempeño. Teniendo en cuenta
los tiempos latentes de software, la velocidad máxima de transferencia es de
150Kbytes/sec. Las transferencias típicas de datos se encuentran alrededor de los
10Kbytes/sec.

El puerto paralelo estándar o SPP cuenta con tres registros para manipular los datos,
controlar las líneas y leer el estado de las líneas del puerto. Estas líneas y su dirección de
registro correspondiente a la dirección base del puerto paralelo se muestran en la tabla 3.2

Registro Offset 7 6 5 4 3 2 1 0
Registro
0 D7 D6 D5 D4 D3 D2 D1 D0
de Datos
Registro
1 /BUSY ACK Perror Select FAULT /IRQ Reservado Reservado
de Estado
Registro
de 2 Reservado Reservado Reservado IRQEN /SelectIn INIT /AUTOFD /STROBE
Control

Tabla 3.2 Registros del SPP y posición de las líneas.

La dirección base usualmente llamada “puerto de datos” o “registro de datos” es utilizada


para el envío solamente de datos a través de las líneas D0 a D7. Este registro es
normalmente de solo escritura, por lo cual si se lee este puerto se debe leer el ultimo valor
enviado.

El registro de estado (dirección base + 1) es un registro de solo lectura, por lo que


cualquier dato enviado a este registro será ignorado. El puerto de estado esta compuesto de
cinco líneas de entrada, una para IRQ y dos bits reservados. Debe notarse que el bit 7
(BUSY) es una línea activa en bajo, lo cual significa que para un valor leído de cero hay un
valor de +5v en el pin.

El registro de control (dirección base + 2) es un registro de solo escritura. Cuando una


impresora esta conectada al puerto, cuatro líneas de control son utilizadas las cuales son
STROBE, Auto Linefeed, INITIALIZE, y SelectPrinter las cuales todas son activas en bajo
excepto INIT.

25
Muchos programas de transferencia de archivos ignoran las características
unidireccionales del puerto paralelo estándar usando las cuatro líneas (SLCT, BUSY, PE,
ERROR) para enviar datos al PC de hasta cuatro bits a la vez. La línea ACK puede ser
usada para indicarle al PC que el dato esta listo para ser leído.

3.3 El Puerto Bidireccional

La computadora PS/2 de IBM mejoro la interfase del puerto paralelo estándar al agregar
drivers bidireccionales a las ocho líneas de datos. El conector y la asignación de señales
permanecieron sin cambios. Un puerto paralelo con drivers bidireccionales es a menudo
llamado puerto paralelo en modo extendido. IBM refiere al puerto paralelo bidireccional
como puerto paralelo tipo 1. IBM define también a los puertos tipo 2 y tipo 3 los cuales
utilizan un canal DMA para escribir o leer bloques de datos hacia o desde el puerto paralelo
respectivamente. El puerto paralelo en la mayoría de las computadoras esta configurado de
fabrica en el modo unidireccional y una aplicación se puede utilizar en algunas
computadoras para seleccionar el modo bidireccional.

El mapa de registros para una computadora IBM PS/2 se muestra en la tabla 3.3. Un
puerto paralelo en modo extendido (tipo 1) cuenta solo con los primeros tres registros.
Estos registros son idénticos a los del puerto paralelo estándar pero con un bit de dirección
adicional en el registro de control. Los últimos registros están presentes en los tipos 2 y 3
de puertos paralelos.

Las transferencias DMA de los tipos 2 y 3 obedecen el diagrama de tiempos del puerto
paralelo estándar descrito anteriormente. Durante los ciclos de escritura DMA, el
controlador de DMA escribe los datos en el registro de datos y un pulso en la línea
STROBE es generado automáticamente. Cuando la señal ACK es recibida por el periférico,
un requerimiento de DMA es enviado y se envía entonces el siguiente byte. El periférico
puede detener momentáneamente la transferencia mediante la línea BUSY. Durante los
ciclos de lectura, un pulso en la línea ACK genera un requerimiento de DMA e inicia la
transferencia a la memoria del sistema. El controlador de DMA lee el registro de datos y un
pulso en la línea STROBE es generado automáticamente.

Registro Offset 7 6 5 4 3 2 1 0
Registro
0 D7 D6 D5 D4 D3 D2 D1 D0
de Datos
Registro
1 /BUSY ACK PError Select FAULT /IRQ Reservado Reservado
de Estado
Registro Auto
2 Reservado Dirección IRQEN /SelectIn INIT /AUTOFD /STROBE
de Control Strobe
Control de
3 Start Reset TC/ACK Select FAULT PError Set EOD DMAEN
interfase
Registro DMA EOD IRQEN IRQEN IRQEN IRQEN
Estado de
4 Reservado EOD TC/ACK Select FAULT PError Reservado Reservado
interfase
INT INT INT INT

26
Registro
5 Reservado Reservado Reservado Reservado Reservado Reservado Reservado Reservado
reservado

Tabla 3.3 Registros del Puerto paralelo Bidireccional.

3.4 Enhanced Parallel Port (EPP)

El Puerto paralelo en el modo EPP fue desarrollado para proveer una transferencia de
datos bidireccional, a relativamente altas velocidades y que fuese compatible con los
registros existentes del puerto paralelo estándar. La especificación del puerto paralelo EPP
incorpora algunas funciones de señales que tradicionalmente se manejaban en el bus del PC
(por ejemplo address strobe y data strobe), a las líneas de la interfase para que las maneje
directamente el hardware.

Una transferencia de datos a través del puerto paralelo estándar requiere de varios pasos a
base de software. El puerto paralelo en modo EPP incorpora hardware y registros
adicionales para generar automáticamente señales de control y protocolos de comunicación
con tan solo una instrucción de entrada-salida. Con un bus ISA los rangos máximos de
transferencia de datos son de 2Mbytes/s. Rangos de 10Mbytes o mas pueden ser alcanzados
en otras plataformas.

3.4.1 Registros del EPP

El EPP cuenta con cinco registros en adición a los tres con los que cuenta el puerto
paralelo estándar. Estos registros son utilizados para colocar automáticamente la
información de datos o direcciones en las líneas del puerto paralelo y generar las señales de
control automáticamente. Los registros del puerto paralelo en modo EPP se muestran en la
tabla 3.4. Los registros de Datos, Control y Estado cuentan con las mismas características y
asignación de bits que los registros del puerto paralelo estándar.

Registro Lectura / Escritura Offset


Data register Escritura 0
Status register Lectura 1
Control register Lectura/Escritura 2
Auto Address Strobe register Lectura/Escritura 3
Auto Data Strobe register Lectura/Escritura 4
Auto Data Strobe register Lectura/Escritura 5
Auto Data Strobe register Lectura/Escritura 6
Auto Data Strobe register Lectura/Escritura 7

Tabla 3.4 Mapa de registros del puerto paralelo en modo EPP

Si se desea establecer comunicación con un dispositivo compatible con el EPP todo lo


que se tiene que hacer es colocar el dato que se quiere enviar en el registro de datos del EPP

27
en el offset Base + 4 y el hardware generara automáticamente las señales necesarias para el
ciclo. De igual manera si se desea enviar una dirección al dispositivo, se utiliza el registro
de dirección del EPP ( Base + 3 )

Ambos registros del puerto EPP son de lectura y escritura, por lo cual, para leer datos
desde el dispositivo se utilizan los mismos registros. Sin embargo, la interfase EPP tiene
que iniciar el ciclo de lectura debido a que las líneas /Data Strobe y /Address Strobe son
salidas. El dispositivo puede enviar un requerimiento de lectura mediante el uso de la
interrupción y en la rutina de atención a la interrupción se realiza la lectura.

Debido a que el puerto EPP es muy dependiente de los tiempos utilizados en el bus ISA,
cuando un ciclo de lectura o escritura es realizado, el puerto debe respetar los protocolos de
transferencia del bus ISA y el dato debe obtenerse dentro de ese mismo ciclo. Esto no
ocurre en un solo ciclo, por lo tanto, el puerto utiliza la señal IOCHRDY (I/O Channel
Ready) para introducir ciclos de espera en el bus ISA hasta que la transferencia termina. El
Registro de estado tiene una modificación, el bit 0, el cual estaba reservado en el registro
del puerto paralelo estándar, es ahora el bit Time Out. Este bit es activado cuando la
línea /WAIT no es llevada a cero por el dispositivo en un lapso de 10us. En caso de que un
ciclo de lectura o escritura sea comenzado sin algún periférico conectado a la interfase la
computadora, el puerto nunca recibiría la señal /WAIT porque no habría dispositivo alguno
que la mandase a cero, y debido a esto el puerto se mantendría enviando requerimientos de
ciclos de espera del bus y el sistema se bloquearía. Por lo tanto el puerto EPP implementa
una especie de “watch dog” o perro guardián el cual espera solo 10us.

3.4.2 Protocolos de comunicación del EPP

Las operaciones con el puerto paralelo en modo EPP constan de ciclos de bus de 2 fases
las cuales son iniciadas por el PC. El PC primero selecciona un registro dentro del
periférico y ejecuta un ciclo de dirección, entonces el PC ejecuta una serie de lecturas o
escrituras a ese registro seleccionado. El EPP define una señal de interrupción, INTR,
habilitando al periférico con el objetivo de que este señalice al PC, es decir, que el
periférico maneje las señales de comunicación. El EPP tiene cuatro operaciones básicas:
escritura de dirección, lectura de dirección, escritura de datos y lectura de datos.

28
Figura 3.2 Protocolo de ciclo de escritura de datos del EPP

Descripción
1. El software escribe al registro de datos del EPP (base + 4)
2. Se manda un cero a /WRITE. (un cero en /WRITE indica una operación de
escritura)
3. Se escribe el dato en las líneas de datos 0 a 7
4. /Data Strobe es activada si /WAIT esta en cero
5. El PC espera a que /WAIT valla a uno, lo cual le indica que puede terminar el ciclo.
6. /Data Strobe es desactivada
7. Termina el ciclo de escritura de datos del EPP.

Figura 3.3 Protocolo de ciclo de escritura de dirección del EPP

Descripción
1. El software escribe la dirección al registro de dirección (base + 3)
2. /WRITE se manda a cero. (cero indica operación de escritura)

29
3. Se escribe la dirección en las líneas de datos 0 a 7
4. /Addr Strobe es puesta a cero si /WAIT esta a cero, lo cual indica que el ciclo puede
ser iniciado
5. El PC espera a que /WAIT valla a uno, lo cual indica que el periférico ha terminado
la operación y el ciclo puede terminarse.
6. /Addr Strobe es desactivada.
7. El ciclo de escritura de dirección del EPP termina

Figura 3.4 Protocolo de ciclo de lectura de datos del EPP

Descripción
1. El software lee el registro de datos (base + 4)
2. /Data Strobe es activada en cero se /WAIT esta a cero
3. El PC espera a que /WAIT valla a uno lo cual indica que el ciclo puede continuar
4. El dato es leído desde los pines del Puerto paralelo
5. /Data Strobe es desactivado llevándolo a uno
6. El ciclo de lectura de datos finaliza

30
Figura 3.5 Protocolo de ciclo de lectura de dirección del EPP

Descripción
1. El software lee el registro de dirección (base + 3)
2. /Addr Strobe es activada llevándola a cero si /WAIT esta en cero.
3. El PC espera a que /WAIT valla a uno, lo cual indica que el ciclo puede continuar
4. El dato es leído desde los pines del Puerto paralelo
5. /Addr Strobe es desactivada llevándola a uno.
6. El ciclo de lectura de dirección termina

3.5 Extended Capabilities Port (ECP)

El modo “capacidades extendidas” fue diseñado por Microsoft y Hewlett Packard para su
implementación como protocolo de puerto de capacidades extendidas y estándar de la
interfase ISA. Este protocolo utiliza hardware adicional para generar las señales de
comunicación necesarias de manera parecida al modo EPP, por esta razón, la velocidad del
modo ECP es muy parecida a la del modo EPP. En este modo, sin embargo, tiene un mejor
desempeño bajo windows debido a que se pueden utilizar los canales DMA para mover
datos y utiliza buffers FIFO para enviar o recibir datos.

Otra de las características del ECP es la de compresión de datos en tiempo real. Utiliza el
concepto de Run Lenght Encoding o codificación de largo de repetición (RLE) para
alcanzar compresiones de datos de hasta 64:1. Esto es útil en dispositivos como Scanner e
impresoras donde una gran parte de los datos consta de largas cadenas las cuales son
repetitivas.

31
El modo ECP soporta un método de direccionamiento de canales. El propósito de este
método no es direccionar una cadena de dispositivos, si no direccionar múltiples
dispositivos dentro de un mismo periférico o dispositivo. Por ejemplo esto puede suceder
con algunas maquinas de fax las cuales cuentan con una interfase paralela para la conexión
con la computadora e incorporan funciones de scanner, impresión y modem/fax, las cuales
pueden ser separadas dentro del mismo dispositivo y ser direccionadas individualmente,
aun si el buffer de alguna de las funciones esta lleno.

3.5.1 Protocolos de comunicación del ECP

El protocolo de señales del modo ECP es diferente del del modo SPP. La deferencia más
obvia es la capacidad de transmisión de datos en cualquier dirección, por esto, señales
adicionales son requeridas. A continuación se muestran los protocolos para la transmisión
en ambas direcciones.

Figura 3.6 Ciclo de datos con dirección PC a dispositivo del ECP

Descripción.
1. El dato es colocado en las líneas de datos por el PC.
2. El PC indica que se trata de un ciclo de datos activando la señal HostAck.
3. El PC indica que hay un dato valido enviando HostClk a cero.
4. El periférico envía su reconocimiento de dato valido activando PeriphAck
5. El PC desactiva la señal HostClk poniéndola a uno y el flanco de subida de esta
señal es usado para introducir el dato al periférico.
6. El periférico envía su confirmación de recepción del byte mandando a cero la línea
PeriphAck.

32
Figura 3.7 Ciclo de comando con dirección PC a dispositivo del ECP

Descripción.
1. El dato es colocado en las líneas de datos por el PC
2. El PC indica que se trata de un comando llevando a cero la línea HostAck
3. El PC indica que hay un dato valido enviando HostClk a cero.
4. El periférico envía su confirmación de dato valido llevando a uno la línea
PeriphAck.
5. El PC desactiva la señal HostClk poniéndola a uno y el flanco de subida de esta
señal es usado para introducir el dato al periférico.
6. El periférico envía su confirmación de recepción del byte mandando a cero la línea
PeriphAck.

Figura 3.8 Ciclo de datos con dirección Dispositivo a PC del modo ECP

33
Descripción.
1. El PC pone a cero la línea /Reverse Request para solicitar el cambio de dirección
del canal.
2. El periférico confirma el cambio de dirección de canal enviando a cero /AckReverse
3. El dato es colocado en las líneas de datos por el periférico.
4. El ciclo de dato es entonces seleccionado por el periférico llevando a uno la línea
PeriphAck.
5. El dato valido es indicado por el periférico llevando a cero la línea PeriphClk.
6. El PC envía su confirmación llevando a uno la línea HostAck.
7. El periférico envía a uno la línea PeriphClk y el flanco de subida de esta es utilizado
para la introducción del dato en el PC
8. El PC envía su confirmación de byte recibido desactivando la línea HostAck.

Figura 3.9 Ciclo de comando con dirección Dispositivo a PC del modo ECP

Descripción.
1. El PC pone a cero la línea /Reverse Request para solicitar el cambio de dirección
del canal.
2. El periférico confirma el cambio de dirección de canal enviando a cero /AckReverse
3. El dato es colocado en las líneas de datos por el periférico.
4. El ciclo de comando es entonces seleccionado por el periférico llevando a cero la
línea PeriphAck.
5. El dato valido es indicado por el periférico llevando a cero la línea PeriphClk.
6. El PC envía su confirmación llevando a uno la línea HostAck.
7. El periférico envía a uno la línea PeriphClk y el flanco de subida de esta es utilizado
para la introducción del dato en el PC
8. El PC envía su confirmación de byte recibido desactivando la línea HostAck.

34
3.5.2 Run Length Encoding (RLE)

La codificación de longitud de repetición o RLE (Run Lenght Encoding) es un esquema


de compresión el cual puede alcanzar una razón de hasta 64 a 1, y funciona mediante el
envío de bytes como contadores y una copia del byte, es decir, el contador determina el
numero de repeticiones del byte.

Por ejemplo, si una cadena de 25 ‘A’ fuese a ser enviada, entonces un contador de 24
seria enviado primero seguido inmediatamente por el byte ‘A’. El periférico, al recibir el
contador expandirá o repetirá el siguiente byte el numero de veces determinado por el
contador de longitud. El byte contador de longitud es distinguido de otros bytes enviados ya
que es enviado como comando al puerto de direcciones FIFO del puerto paralelo ECP. Los
bytes enviados a este puerto pueden ser de dos tipos, contadores de longitud o direcciones.
Estos son distinguidos mediante el bit más significativo. Si el bit 7 esta a uno, entonces los
demás bits del 0 al 6 corresponden a una dirección de canal. Si el bit 7 esta a cero, entonces
los demás bits corresponden al contador de longitud.

3.5.3 Registros del ECP

La tabla 3.5 muestra los registros del puerto paralelo ECP. Los primeros tres registros son
exactamente los mismos que con el SPP. Sin embargo el registro de control cuenta con un
bit llamado Enable bidirectional Port (bit 5 del registro de control) el cual refleja la
dirección en la cual se encuentra actualmente el puerto ECP y causara efectos en los bits
FIFO Full y FIFO empty del registro ECR, el cual se vera mas adelante.

Dirección Nombre del registro Lectura/Escritura


Registro de datos (SPP) Escritura
Base + 0
Direcciones FIFO ECP (modo ECP) Lectura/Escritura
Base + 1 Registro de estado (todos los modos) Lectura/Escritura
Base + 2 Registro de control (todos los modos) Lectura/Escritura
Datos FIFO (Puerto paralelo modo FIFO) Lectura/Escritura
Datos FIFO (modo ECP) Lectura/Escritura
Base + 400h
Prueba FIFO (modo Prueba) Lectura/Escritura
Registro de configuración A (modo de configuración) Lectura/Escritura
Base + 401h Registro de configuración B (modo de configuración) Lectura/Escritura
Base + 402h Registro de control extendido ECR (todos los modos) Lectura/Escritura

Tabla 3.5 Registros del ECP

3.5.4 El registro de control extendido ECR

El registro más importante en el puerto paralelo ECP es el registro de control extendido


ECR. Este registro establece el modo de operación del puerto ECP, además proporciona el
estado del FIFO del ECP entre otras cosas. La tabla 3.6 muestra el contenido del registro
ECR.

35
Bit Función
7:5 Selecciona el modo de operación actual
000 Modo estándar
001 Modo byte
010 Puerto paralelo en modo FIFO
011 ECP modo FIFO
100 Modo EPP
101 Reservado
110 FIFO en modo prueba
111 Modo de configuración
4 BIT de interrupción del ECP
3 Bit de habilitación de DMA
2 Bit de servicio de ECP
1 FIFO full
0 FIFO empty

Tabla 3.6 Registro de control extendido del ECP

Los tres bits más significativos del registro ECR seleccionan el modo de operación. Hay 7
posibles modos de operación, sin embargo no todos los puertos los soportan. El modo EPP
es un ejemplo, no estando disponible en todos los puertos. A continuación se muestra una
tabla de los modos de operación.

Modos de operación
Modo estándar La selección de este modo provocara que el puerto se comporte como
un puerto paralelo estándar y sin funcionalidad bidireccional.

Modo Byte / Modo Funciona igual que el SPP en modo bidireccional


PS/2

Puerto paralelo En este modo cualquier dato escrito al FIFO de datos será enviado al
modo FIFO periférico utilizando el protocolo del puerto paralelo estándar. El
hardware generara las señales necesarias. Útil en dispositivos que no
requieran del uso del ECP como las impresoras. Se tendrán algunas
de las características del ECP como los buffers FIFO y generación de
señales por el hardware pero con el protocolo SPP en vez del ECP.

ECP modo FIFO Es el modo estándar de uso del ECP. Este modo utiliza los protocolos
del ECP anteriormente descritos

Modo EPP / En algunos chipsets, este modo habilitaría el EPP para ser usado.
reservado Mientras que en otros este modo sigue reservado.

36
Reservado Reservado

FIFO en modo de Estando en este modo cualquier dato escrito al registro de prueba
prueba FIFO será colocado en el FIFO y cualquier dato leído del registro
FIFO será leído del buffer FIFO. Los bits de estado FIFO full/empty
reflejaran su verdadero valor, así, la capacidad del FIFO entre otras
cosas puede ser determinado en este modo

Modo de En este modo los dos registros de configuración cnfigA y cnfigB


configuración están disponibles es sus respectivos registros.

Como se vio en la tabla cuando el puerto es configurado para trabajar en modo estándar,
se comportara como el SPP sin transferencia de datos bidireccional. Si se requiere
transferencia bidireccional entonces se selecciona el modo de byte. En el modo de puerto
paralelo FIFO y en el modo ECP FIFO, las señales necesarias se generan automáticamente
por hardware. La única diferencia entre cada uno de los modos es que el modo puerto
paralelo FIFO utiliza los protocolos del SPP y el modo ECP FIFO utiliza los protocolos
ECP.

El modo de prueba FIFO puede ser utilizado para comprobar la capacidad de los buffer
FIFO y para asegurarse que estos funcionan correctamente. Cuando se esta en el modo de
prueba FIFO, cualquier byte que sea escrito en el FIFO de prueba (base + 400h) es
colocado en el buffer FIFO y cualquier dato que es leído de este registro es tomado del
buffer FIFO. Esto puede usarse en conjunción con los bits FIFO full y FIFO empty del
ECR para determinar la capacidad del buffer FIFO, el cual es normalmente de 16 bytes.

Otros bits también juegan un papel importante en el funcionamiento del ECP. El bit de
interrupción del ECP (bit 4) permite el uso de interrupciones, mientras que el bit de
habilitación de DMA (bit 3) permite el uso de acceso directo a memoria. El bit de servicio
del ECP (bit 2) muestra si una petición de interrupción ha sido inicializada, si así fuese este
bit se activa.

El bit FIFO full (bit 1) y el bit FIFO empty (bit 0) muestra el estado del buffer FIFO.
Estos bits son dependientes de la dirección en que se lleve a cabo la comunicación, por ello,
deberá tomarse en cuenta del bit 5 (Dirección) del registro de control. Si el bit 0 (empty)
esta activado, entonces el buffer FIFO esta completamente vació. Si el bit 1 esta activado
entonces el buffer FIFO esta lleno. Estos bits pueden ser utilizados en FIFO modo de
prueba para determinar la capacidad del buffer FIFO.

3.5.5 El registro de configuración A

37
El registro de configuración A es uno de los dos registros de configuración con los que
cuenta el ECP. Estos registros de configuración son accesibles solo cuando el ECP se
encuentra en el modo de configuración. Cnfg A puede ser accesado en la dirección base +
400h.
Bit Función
7 1 Interrupciones activadas por nivel
0 Interrupciones activadas por flanco
6:4 00h Acepta máximo palabras de 16 bits
01h Acepta máximo palabras de 8 bits
02h Acepta máximo palabras de 32 bits
03h:07h Reservado
3 Reservado
2 Host recovery
0 En dirección PC a dispositivo 1 byte en
el pipeline del transmisor no afecta a
FIFO full
1 En dirección PC a dispositivo 1 byte en
el pipeline del transmisor no es incluido
como parte de FIFO full
1:0 Host recovery: bytes sin enviar dejados en el FIFO
00 Palabra de Puerto completa
01 1 byte valido
10 2 bytes validos
11 3 bytes validos

Tabla 3.7Registro de configuración A – ECR

El registro de configuración A puede ser leído para saber un poco mas del puerto ECP.
El bit más significativo muestra si las interrupciones están configuradas para activarse por
nivel o por flanco. Esto depende del tipo de bus que se este utilizando. Los bits del 4 al 6
muestran la capacidad de los buses en la interfase algunas interfases solo tienen 8 bits de
capacidad, mientras que otras pueden tener 16 o hasta 32 bits de capacidad. Para obtener la
máxima eficiencia el software puede leer el estado de estos bits y determinar el tamaño
máximo de la palabra de salida.

Los tres bits menos significativos son usados para el recuperamiento del PC. Para
recuperarse de un error el software debe saber cuantos bytes fueron enviados comprobando
si hay algunos bytes en el FIFO. Otro de los problemas es que la salida de los puertos
paralelos es de solo 8 bits y podrían estarse utilizando instrucciones de entrada salida de 16
o hasta 32 bits. Si este es el caso, entonces parte de la palabra que se envía al puerto podría
ser enviada. Los bits 0 y 1 dan una indicación del numero de bits validos restantes en el
FIFO para su reenvío.

3.5.6 El registro de configuración B

El registro de configuración B, al igual que el registro de configuración A, esta solamente


disponible en el modo de configuración del ECP. El registro de configuración B reside en la

38
dirección base + 401h. La siguiente tabla muestra la estructura del registro de configuración
B.
Bits Función
7 1 Compresión de datos salientes utilizando RLE
0 No hay compresión de datos
6 Muestra el estado actual del pin de interrupción
5:3 Despliega el estado de la línea de petición de interrupción
000 Selección de interrupción vía jumper
001 IRQ 7
010 IRQ 9
011 IRQ 10
100 IRQ 11
101 IRQ 14
110 IRQ 15
111 IRQ 5
2:0 Selecciona o despliega el estado del canal DMA que la interfase de
impresora utiliza
000 Utiliza canal DMA de 8 bit seleccionado por jumper
001 Canal DMA 1
010 Canal DMA 2
011 Canal DMA 3
100 Utiliza canal DMA de 16 bit seleccionado por jumper
101 Canal DMA 5
110 Canal DMA 6
111 Canal DMA 7

Tabla 3.8 registro de configuración B del ECR

El registro de configuración B (Cnfg B) puede ser una combinación de acceso de lectura


o escritura. Algunos puertos pueden ser configurados mediante software, en los cuales los
canales DMA así como las interrupciones IRQ’s pueden ser determinados desde el registro,
mientras que otros deben ser configurados a través del BIOS o utilizando jumpers en las
tarjetas, siendo estos últimos de lectura.

El bit 7 del registro de configuración B selecciona si los datos de salida serán


comprimidos utilizando RLE. Cuando esta activado el PC comprimirá los datos antes de ser
enviados. Si esta desactivado los datos serán enviados al periférico sin compresión alguna.
El bit 6 refleja el estado del pin de interrupción IRQ, pudiendo esto ser utilizado para el
diagnostico de conflictos ya que no solo refleja el estado de la IRQ del puerto paralelo, sino
la posibilidad de que otro dispositivo este utilizando la misma IRQ.

Los bits 5 a 3 dan un estado de las asignaciones de IRQ’s del puerto, así como los bits 2 a
0 proporcionan el estado de las asignaciones de los canales DMA. Como se menciono estos
campos pueden ser de lectura o escritura.

3.6 Conectores

39
El estándar IEEE 1284 define tres tipos de conectores para la interfase paralela: 1284-A,
1284-B y 1284-C. El 1284-A es el equivalente al conector DB25 comúnmente utilizado en
la computadora. El conector 1284-B es el equivalente al conector centronics de 36 pines
utilizado en el periférico. El 1284-C es un conector nuevo de 36 pines y abertura de 0.050”.
El estándar recomienda este ultimo conector en ambos, el PC y el periférico. En la tabla 3.9
se muestran los conectores así como su distribución de pines.

Pin 1284-A 1284-B 1284-C


Number 25-pin Dsub 36-pin Centronics 36-pin de Alta densidad

1 /STROBE /STROBE BUSY


2 Data1 Data1 Select
3 Data2 Data2 /ACK
4 Data3 Data3 /FAULT
5 Data4 Data4 PError
6 Data5 Data5 Data1
7 Data6 Data6 Data2
8 Data7 Data7 Data3
9 Data8 Data8 Data4
10 /ACK /ACK Data5
11 BUSY BUSY Data6
12 PError PError Data7
13 Select Select Data8
14 /AUTOFD /AUTOFD /INIT
15 /FAULT Not Defined /STROBE
16 /INIT Logic Ground /SelectIn

40
17 /SelectIn Chassis Ground /AUTOFD
18 Ground Peripheral Logic High Host Logic High
19 Ground Ground Ground
20 Ground Ground Ground
21 Ground Ground Ground
22 Ground Ground Ground
23 Ground Ground Ground
24 Ground Ground Ground
25 Ground Ground Ground
26 Ground Ground
28 Ground Ground
29 Ground Ground
30 Ground Ground
31 /INIT Ground
32 /FAULT Ground
33 Not Defined Ground
34 Not Defined Ground
35 Not Defined Ground
36 /SelectIn Peripheral Logic High

Tabla 3.9 Conectores y definición de pines del Puerto paralelo

41

Вам также может понравиться