Anda di halaman 1dari 9

Introduccin

Hace aos, IBM dise el puerto paralelo para manejar impresoras desde su gama de microcomputadores PC/XT/AT. Un conector estndar macho de 25 pines apareca en la parte trasera del PC con el solo propsito de servir de interfaz con la impresora. El sistema operativo DOS cargado en dichos PC soporta hasta tres puertos paralelos asignados a los identificadores LPT1, LPT2 y LPT3, y cada puerto requiere tres direcciones consecutivas del espacio de E/S (entrada-salida) del procesador para seleccionar todas sus posibilidades. Desde el punto de vista del hardware, el puerto consta de un conector hembra DB25 con doce salidas latch (poseen memoria/buffer intermedio) y cinco entradas, con ocho lneas de tierra. Desde el punto de vista del software, el puerto paralelo consta de tres registros (datos, estado y control) de 8 bits cada uno, que ocupan tres direcciones de E/S (I/O) consecutivas de la arquitectura x86.

La funcin normal del puerto consiste en transferir datos a una impresora mediante 8 lneas de salida de datos, usando las seales restantes como control de flujo. Sin embrago, puede ser usado como un puerto E/S de propsito general por cualquier dispositivo o aplicacin que se ajuste a sus posibilidades de entrada/salida.

Descripcin del conector fsico


La conexin del puerto paralelo al mundo exterior se realiza mediante un conector hembra DB25. Observando el conector de frente y con la parte que tiene mayor nmero de pines hacia arriba, se numera de derecha a izquierda y de arriba a abajo, del 1 al 13 (arriba) y del 14 al 25 (abajo).

En este conector:

8 lneas (pines) son para salida de datos (bits de DATOS). Sus valores son nicamente modificables a travs de software, y van del pin 2 (dato 0, D0) al pin 9 (dato 7, D7). 5 lneas son de entrada de datos (bits de ESTADO), nicamente modificables a travs del hardware externo. Estos pines son: 11, 10, 12, 13 y 15, del ms al menos significativo.

4 lneas son de control (bits de CONTROL), numerados del ms significativo al menos: 17, 16, 14 y 1. Habitualmente son salidas, aunque se pueden utilizar tambin como entradas y, por tanto, se pueden modificar tanto por software como por hardware. las lneas de la 18 a la 25 son la tierra.

En la siguiente tabla se detallan la nomenclatura y descripcin de cada lnea. La columna "Centronics pin" se refiere a las lneas del conector tipo Centronics usado en las impresoras. La columna E/S se refiere al dato visto desde el lado del PC. DB25 Centronics Tipo pin pin (E/S)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1825 1825 1825 1 2 3 4 5 6 7 8 9 10 11 12 13 14 32 31 36 19-30,33 16 17 S S S S S S S S S E E E E S E S S

Seal
Strobe D0 D1 D2 D3 D4 D5 D6 D7 Ack Busy

Descripcin
Si est bajo ms de 0.5 s, habilita a la impresora para que reciba los datos enviados. Bit 0 de datos, bit menos significativo (LSB) Bit 1 de datos Bit 2 de datos Bit 3 de datos Bit 4 de datos Bit 5 de datos Bit 6 de datos Bit 7 de datos, bit ms significativo (MSB) Un pulso bajo de ~11s indica que se han recibido datos en la impresora y que la misma est preparada para recibir ms datos. En alto indica que la impresora est ocupada.

PaperEnd En alto indica que no hay papel. SelectIn En alto para impresora seleccionada. AutoFeed Si est bajo, el papel se mueve una lnea tras la impresin. Error Init Select GND En bajo indica error (no hay papel, est fuera de lnea, error no det.). Si se enva un pulso en bajo > 50 s la impresora se reinicia. En bajo selecciona impresora (en gral. no se usa, ya que SelectIn se fija a alto). Masa retorno del par trenzado. Masa lgica Masa chasis

El nombre de cada seal corresponde a la misin que cumple cada lnea con relacin a la impresora, el perifrico para el que fue diseado el puerto paralelo. Las seales activas a nivel bajo aparecen con la barra de negacin (por ejemplo, Strobe). Cuando se indica alto o bajo se refiere a la tensin en el pin del conector. Alto equivale a ~5V en TTL y bajo a ~0V en TTL.

Acceso al puerto
El puerto paralelo se identifica por su direccin de E/S (entrada/salida, I/O) base y se reconoce en sistemas MS-DOS por el nmero LPT (lp en Unix/Linux). Cuando arranca la mquina, la BIOS (Basic Input Output System) chequea direcciones especficas de E/S en busca de puertos paralelos y construye una tabla de las direcciones halladas en la posicin de memoria 40h:8h (o 0h:0408h) (vase direccionamiento segmentado). Esta tabla contiene hasta tres palabras de 16 bits, cada palabra con el byte bajo primero seguido por el byte alto. Cada palabra es la direccin de E/S base del puerto paralelo (que denominaremos LPT_BASE en lo sucesivo). La primera corresponde a LPT1, la segunda a LPT2 y la tercera a LPT3. Hay que agregar que, en MS-DOS tenemos el dispositivo PRN que es un alias a uno de los dispositivos LPT (generalmente es LPT1, pero se puede cambiar con la orden MODE). Las direcciones base estndar para los puertos paralelos son:

03BCh 0378h 0278h

chequeadas en este orden. La siguiente tabla muestra, como ejemplo, la memoria en un PC con dos puertos paralelo instalados en las direcciones hexadecimales 378 y 278. Identificador DOS
LPT1 LPT2 LPT3 (no instalado)

Direccin
0000:0408/9 0000:040A/B 0000:040C/D

Byte bajo
78 78 00

Byte alto
03 02 00

Hexadecimal Decimal
378 278 0 888 632 0

Registros
El puerto paralelo estndar (SPP) consta, como se mencion antes, de tres registros de 8 bits localizados en direcciones adyacentes del espacio de E/S del PC. Los registros se definen relativos a la direccin de E/S base (LPT_BASE) y son:

LPT_BASE + 0: registro de DATOS LPT_BASE + 1: registro de ESTADO LPT_BASE + 2: registro de CONTROL REGISTROS DATOS ESTADO CONTROL Nombre habitual

Puerto

378h 278h 3BCh

379h 279h 3BDh

37Ah 27Ah 3BEh

LPT1 LPT2 MDA con p. paralelo

DIRECCIN Puerto E/S


Puerto

Se har referencia a cada bit de los registros como una inicial que identifica el registro seguido de un nmero que identifica el nmero de bit, siendo 0 el LSB (bit menos significativo) y 7 el MSB (bit ms significativo). Por ejemplo, D0 es el bit 0 del reg. de datos, S7 es el bit 7 del reg. de estado y C2 es el bit 2 del reg. de control. Se indican con una barra de negacin los bits que utilizan lgica negativa. En lgica positiva un 1 lgico equivale a alto (~5 V TTL) y un 0 lgico a bajo (~0 V TTL). En lgica negativa 1 equivale a bajo (~0 V) y 0 equivale a alto (~5 V).

Es preciso no confundir la lgica que sigue el puerto con la lgica que mantiene la impresora. Por ejemplo, la impresora pone a alto Busy (pin 11) para indicar que est ocupada. Pero en realidad, al leer el registro de estado, Busy la interpretamos como 0 (puesto que el pin 11 se corresponde con S7). Es decir, es como si fuera activa en bajo (Busy). Registro de datos (D) El registro de estado se halla en LPT_BASE. Se puede leer y escribir. Escribir un dato en el registro causa que dicho dato aparezca en los pines 2 a 9 del conector del puerto. Al leer el registro, se lee el ltimo dato escrito (NO lee el estado de los pines; para ello hay que usar un puerto bidireccional).

El estndar es que las salidas sean LS TTL (low schottky TTL), aunque las hay que son de tipo OC (colector abierto). La corriente que pueden entregar (modo source) es de 2,6 mA mximo y pueden absorber (modo sink) un mximo de 24 mA. n el puerto original de IBM hay condensadores de 2,2 nF a masa. Las tensiones para el nivel bajo son entre 0 y 0,8V y el nivel alto entre 2,4V y 5V.

Registro de estado (S) El registro de estado est en LPT_BASE+1. Es de slo lectura (las escrituras sern ignoradas). La lectura da el estado de los cinco pines de entrada al momento de la lectura. En la tabla siguiente los nombres de los pines se dejaron en ingls porque es como generalmente se identifican.

La lnea Busy tiene, generalmente, una resistencia de pull-up interna. El estndar es que sean entradas tipo LS TTL.

Registro de control (C)

El registro de control se encuentra en LPT_BASE+2. Es de lectura/escritura.

Los cuatro bits inferiores son salidas. La lectura devuelve lo ltimo que se escribi a dichos bits. Son TTL a colector abierto con resistencias de pull-up de 4.7 k, por lo que un dispositivo externo puede forzar el estado de los pines sin daar el driver. Esto permite utilizar estas cuatro lneas como entradas. Para ello, se ponen en alto las cuatro salidas (escribiendo 0100b, es decir, 4h, en LPT_BASE+2) lo que hace que las salidas "floten". Ahora, un dispositivo externo puede forzar a bajo alguna de las salidas con lo que, leyendo el puerto, sabemos si esto sucedi o no. Es posible realizar esta tcnica en salidas totem-pole (como D0-D7) pero no se recomienda su uso porque habra que tener un conocimiento preciso de la corriente, ya que se puede sobrecargar los transistores de salida y daar el driver (especialmente en puertos integrados LSI). Bit de puerto bidireccional (compatible PS/2) El bit C5, est disponible slo si se trata de un puerto bidireccional; en los puertos comunes no se utiliza, al igual que los bits C6 y C7. 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 al registro de datos, se escribe al buffer pero no a 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, adems de lo antes descrito, se debe poner a 1 el bit 7 del registro del puerto 102h (opciones de configuracin). En computadoras que no tengan puerto paralelo bidireccional compatible PS/2 hay que modificar uno o ms bits de algn puerto especfico correspondiente al chipset de la placa. A veces se habilita por el Setup o por jumper en la placa del puerto. Bit de interrupcin En trabajos normales de impresin ni el BIOS ni el DOS hacen uso de la interrupcin. El hecho de poseer una lnea de interrupcin que est conectada directamente al PIC (Programmable Interrupt Controller), lo hace muy til para experimentacin en data-loggers por ejemplo. El bit de interrupcin est conectado al control de un buffer de tres estados. Cuando C4=1, se activa el buffer y su entrada, S6, se conecta a la lnea IRQ (en

general es IRQ7 o IRQ5). La lectura del bit, nos devuelve el estado del mismo (es decir si el buffer est en alta impedancia o no). Se producir una interrupcin, cuando haya un flanco descendente en el pin correspondiente a S6. A continuacin, se describen los pasos para poder utilizar interrupciones.

Finalmente, se muestra una tabla que rene las caractersticas hardware y software del puerto paralelo. DB25 Centronics Tipo Registro bit Activo pin pin (E/S)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1825 1825 1825 1 2 3 4 5 6 7 8 9 10 11 12 13 14 32 31 36 19-30,33 16 17 C0 DO D1 D2 D3 D4 D5 D6 D7 Control 0 Dato 0 Dato 1 Dato 2 Dato 3 Dato 4 Dato 5 Dato 6 Dato 7 S S S S S S S S S E E E E S E S S bajo alto alto alto alto alto alto alto alto alto bajo

Seal
Strobe D0 D1 D2 D3 D4 D5 D6 D7 Ack Busy

Descripcin
Si est bajo ms de 0.5 s, habilita a la impresora para que reciba los datos enviados. Bit 0 de datos, bit menos significativo (LSB) Bit 1 de datos Bit 2 de datos Bit 3 de datos Bit 4 de datos Bit 5 de datos Bit 6 de datos Bit 7 de datos, bit ms significativo (MSB) Un pulso bajo de ~11s indica que se han recibido datos en la impresora y que la misma est preparada para recibir ms datos. En alto indica que la impresora est ocupada.

S6 Estado IRQ 6 S7 S5 S4 C1 S3 C2 C3 Estado 7 Estado 5 Estado 4 Control 1 Estado 3 Control 2 Control 3

alto PaperEnd En alto indica que no hay papel. alto SelectIn En alto para impresora seleccionada. bajo AutoFeed alto alto bajo Error Init Select GND Si est bajo, el papel se mueve una lnea tras la impresin. En bajo indica error (no hay papel, est fuera de lnea, error no det.). Si se enva un pulso en bajo > 50 s la impresora se reinicia. En bajo selecciona impresora (en gral. no se usa, ya que SelectIn se fija a alto). Masa retorno del par trenzado. Masa lgica Masa chasis

Miscelnea
Protocolo del puerto con la impresora El handshaking ("apretn de manos" o protocolo) es un conjunto de reglas que ambos extremos de un sistema de comunicacin tienen que seguir para que la comunicacin sea correcta. El puerto paralelo, usado con una impresora, transmite datos y transmite/recibe las seales de protocolo. Las principales son Strobe, Ack y Busy. La secuencia a seguir para enviar datos sera: 1. 2. 3. 4. 5. 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 enva un pulso de aceptacin indicando que se recibieron los datos y que se puede volver al paso 1 (Ack = bajo, S6 = 0, pulso de entre 5 s y 15 s segn impresora).

Las otras seales sirven para verificar el estado de la impresora (Error, PaperEnd), para reiniciarla (Init) y para configurarla (AutoFeed, Select). En los nuevos puertos, estas seales adquieren otra funcin, a veces parecida y otras totalmente distintas. Interrupciones con el puerto paralelo En primer lugar, se debe habilitar el buffer que conecta la lnea ACK con la lnea IRQ. Esto lo hacemos poniendo a 1 el bit 4 del registro de control (LPT_BASE+2). Luego se debe preparar una ISR (Interrupt Service Routine) que atienda la interrupcin recordando enviar la seal EOI (20h) al registro de control del PIC (puerto 20h) al salir de la rutina. La interrupcin software corresponde a la nmero 0Dh para IRQ5 y 0Fh para IRQ7. Finalmente se habilita con 0 la interrupcin IRQ5 (o IRQ7) escribiendo al bit 5 (o 7) del registro de interrupciones del PIC (puerto 21h). Para desinstalar la ISR, se deshabilita la IRQ5 (o IRQ7) escribiendo un 1 al bit 5 (o 7) del registro de interrupciones del PIC (puerto 21h). Luego se hace que C4=0. Velocidad Un puerto paralelo ISA normal toma un ciclo-ISA para leer o escribir. En un sistema cuya velocidad de bus sea 1,3 Mhz, se puede decir que la lectura se puede hacer cada 1 s (idealmente, ya que siempre existen otras instrucciones software, etc; En la prctica pueden ser desde 1.2 s a 2 s). Algunos puertos soportan un modo "turbo" que elimina los 3 estados de espera de la CPU, con lo que la velocidad de lectura/escritura del puerto se duplica (2,7 MHz).