Puertos extendidos (puerto paralelo)

 

Puerto bidireccional (compatible PS/2)

El puerto paralelo bidireccional fue una ampliación que hizo IBM a su puerto estándar original. Para ello utilizó un bit reservado del registro de control (C5). Si C5=1, el buffer de los datos de salida se pone en alta impedancia, "desconectando" dicho buffer de los pines 2 a 9 del conector del puerto (D0 a D7). Si se escribe en el registro de datos, se escribe en el buffer pero no en la salida. Esto permite que al leer el puerto se lea el estado de las entradas y no lo que hay en buffer. Cuando C5=0 el puerto retorna al modo salida, su estado por defecto. 

En las computadoras IBM PS/2, para habilitar el puerto paralelo bidireccional, además de lo antes descrito, se debe poner a 1 el bit 7 del registro del puerto 102h (opciones de configuración).

En computadoras que no sean IBM PS/2 hay que modificar uno o más bits de algún puerto específico correspondiente al chipset de la placa. A veces se habilita por Setup o por jumper en la placa del puerto.

Volver al principio de página

 

Puerto EPP (Enhanced Parallel Port)

Puede leer y escribir datos a la velocidad del bus ISA. Este tipo de puerto se define por el estándar EPP 1.7. Es tan rápido como el bus del sistema y puede alcanzar transferencias por encima de 1 Mbyte/seg.

El EPP fue desarrollado por Intel, Xircom y Zenith. Otros fabricantes comenzaron a introducir EPP no del todo compatibles con el introducido por Intel. De ahí que se formara un comité para estandarizar el puerto, formando el estándar EPP 1.7. Más tarde se mezcló con el estándar IEEE 1284, que describe puertos bidireccionales de alta velocidad para impresoras. Pero no se adoptó el EPP 1.7 original, por lo que se modificó y ahora se llama IEEE 1284 EPP, existiendo ahora dos estándar. Un puerto paralelo estilo IEEE 1284 es multimodo. Es decir, en un único puerto se tienen los modos SPP, bidireccional PS/2, EPP (versión 1.7 y/o 1284) y ECP.

El EPP se mapea por encima de las direcciones estándar, en cinco registros, desde LPT_BASE+3h hasta LPT_BASE+7h. No hay EPP en la dirección estándar 03BCh (ya que se solapa con las direcciones dedicadas a video):

LPT_BASE+     Descripción
  0        puerto de datos (como SPP)
  1        puerto de estado (como SPP)
  2        puerto de control (como SPP)
  3        address strobe
  4        data strobe 0
  5        data strobe 1
  6        data strobe 2
  7        data strobe 3

Volver al principio de página

 

Puerto ECP (Enhanced Capability Port)

Puede, como el EPP, leer y escribir a la velocidad del bus. Fue desarrollado por Microsoft y Hewlett-Packard. Se distingue por poseer capacidad de DMA, FIFO y compresión de datos RLE. La velocidad puede superar fácilmente 1 Mbyte/s, y en el futuro se ampliará. La ventaja de estos puertos es que tienen la emulación de otros modos como SPP y bidireccional PS/2. En la especificación original no está contemplado el EPP, pero los fabricantes usan algún bit no utilizado por el ECP para poder configurarlo como EPP. El uso externo del ECP está definido en IEEE 1284 como el modo ECP de 1284.

El puerto se mapea en LPT_BASE+400h. En LPT_BASE+402h tenemos el registro ECR (Extended Control Register). Con este registro podemos configurar los distintos modos. La siguiente tabla muestra el significado de cada bit:

Bit(s)   Descripción
 7-5     ECP mode
          000 ISA-compatible (SPP)
          001 PS/2-compatible (bidirectional port)
          010 ISA-compatible FIFO (fast centronics)
          011 ECP
          100 reserved (EPP)
          101 reserved
          110 test
          111 configuration
 4       disable ERROR interrupts
 3       enable DMA
          when bit 3 set and bit 2 clear, an interrupt is generated on
          the DMA terminal-count condition; this bit must be cleared to
          reset the TC interrupt
 2       disable FIFO/TerminalCount service interrupts
 1       (read-only) FIFO is full
 0       (read-only) FIFO is empty

Notas:
Si estamos en el modo 000 o 001, podemos cambiar a otro modo. Si estamos en otro modo distinto de 000 o 001, debemos cambiar al modo 000 o 001 y luego cambiar al modo deseado.
Si actualmente estamos en los modos 010- 111 y el bit de dirección está a cero, debemos esperar a que la FIFO se borre antes de cambiar a los modos 000 o 001.

En el modo 111, la dirección LPT_BASE+400h será el registro de configuración A y la dirección LPT_BASE+401h será el registro de configuración B. A continuación se describen:

Configuración A:
Bit(s)   Descripción
 7-4     (read-only) implementation identification
         bit 7: ISA-style interrupt
         bit 4: eight-bit implementation
 3-0     reserved

Configuración B:
Bit(s)   Descripción
 7       reserved (0)
 6       IRQ status (refleja el valor actual ya sea en IRQ5 o IRQ7;
         se usa para chequear conflictos de interrupciones)
5-0      reserved (0)

Nota:
C4 debe valer  0 antes de que el bit 6 muestre el estado de la interrupción.

Volver al principio de página

volver a Inicio