Sunteți pe pagina 1din 18

Tema 6

Puerto Paralelo

El puerto paralelo es el interfase ms utilizado para la creacin de proyectos. Este


puerto, en su versin estndar, denominada SPP (Single Pararell Port) proporciona 9
bits de entrada y 12 bits de salida. El puerto se compone de 4 lneas de control, 5
lneas de status y 8 lneas de datos. Se localiza normalmente en la parte posterior de la
computadora, como un conector DB-25 hembra.

Propiedades hardware
A continuacin, se presenta una tabla que contiene las descripciones de los pines del
conector DB-25 del puerto paralelo y su correspondiente pareja en el conector
Centronics de 34 pines. El conector DB-25 (IEEE 1284 Tipo A) se encuentra
generalmente en la computadora, mientras el que el conector Centronics (IEEE 1284
Tipo B) se encuentra generalmente en las impresoras.

13

12

11

10

25 24 23 22 21 20 19 18 17 16 15 14

Figura 6.1 - Conector DB-25 Hembra Puerto Paralelo Estndar

134

Microprocesadores de 16 bits y tecnologa PC


Pin No
(DB-25)

Pin No
(Centronics)

1
2
3
4
5
6
7
8
9
10
11

1
2
3
4
5
6
7
8
9
10
11

Tipo de Seal

E/S

Inversin
por
Hardware
Control
Si
Data
Data
Data
Data
Data
Data
Data
Data
Status
Status
Si

Registro

_Strobe
S
Data 0
S
Data 1
S
Data 2
S
Data 3
S
Data 4
S
Data 5
S
Data 6
S
Data 7
S
_Ack
E
Busy
E
Paper-Out / Paper12
12
E
Status
End
13
13
Select
S
Status
14
14
_Auto-Linefeed
E
Control
Si
15
32
_Error / nFault
E
Status
16
31
_Initialize
S
Control
_select-Printer /
17
36
S
Control
Si
_Select-In
18 - 25
19-30
Ground
Gnd
Tabla 6.1 - Asignacin de pines para los conectores DB-25 y Centronics

En esta tabla se usa el smbolo _ para denotar que la seal es activa en nivel bajo.
Los pines invertidos por hardware significan que su valor lgico es invertido por la
tarjeta interfase de la impresora.

Direcciones de puerto
El puerto paralelo usa generalmente tres direcciones de puerto base, las cuales son
listadas en la siguiente tabla. Cada direccin base ocupa tres direcciones de puerto
consecutivas.
Direccin
3BCh - 3BFh
378h - 37Fh
278h - 27Fh

Observacin:
Usadas por puertos paralelos integrados en tarjetas de vdeo o
tarjetas IDE/IO, seleccionable por puentes (jumpers).
Direccin usual para LPT 1
Direccin usual para LPT 2
Tabla 6.2 - Direcciones de puerto

Cuando la computadora recibe energa (encendido), el BIOS (Basic Input/Output


System), determina el nmero de puerto que posee el equipo, y asigna las etiquetas de
dispositivo (LPT1, LPT2 o LPT3) a estos. El BIOS primero mira la direccin 3BCH.

Ing. Antonio Romn V. UNEXPO PUERTO ORDAZ

Puerto Paralelo

135

Si el puerto paralelo es encontrado aqu, este es asignado como LPT1, entonces busca
a continuacin en la direccin 378H. Si un puerto es encontrado aqu, se le asigna la
siguiente etiqueta de dispositivo libre. Este puede ser LPT1 si es que no se encuentra
una tarjeta de puerto paralelo en la direccin 3BCH, o LPT2 si es encontrada en dicha
posicin. El ultimo puerto a llamar es el 278H, y sigue el mismo procedimiento
anterior.
Normalmente, la asignacin de los dispositivos LPT1, LPT2 y LPT3 no preocupa
mayormente a los usuarios de computadoras. Si por alguna razn se desea encontrar
las direcciones de puerto de LPT1 o de cualquier otro puerto disponible, puede
mirarse la tabla de consulta del BIOS. Cuando el BIOS asigna las direcciones de
puerto de los dispositivos paralelos (impresora), este almacena dichas direcciones en
una tabla en la memoria, la cuales se muestran a continuacin:
Direccin de inicio
Funcin
0000:0408
Direccin base de LPT1
0000:040A
Direccin base de LPT2
0000:040C
Direccin base de LPT3
0000:040E
Direccin base de LPT4 (Nota 1)
Tabla 6.3 - Direcciones de los LPT e el rea de datos del BIOS.
Nota 1: Direcciones 0000:040E en el rea de datos del BIOS puede ser usada como rea de datos
extendida
en
equipos
PS/2
y
en
versiones
de
BIOS
ms
recientes.

El siguiente programa en C le permitir leer estas locaciones de memoria, obteniendo


as las direcciones de los puertos paralelos presentes en el equipo.
#include <stdio.h
#include <dos.h
void main(void)
{
unsigned int far *ptraddr; /* Apunta a la locacin de puertos */
unsigned int address;
/* Direccin de puerto */
int a;
ptraddr=(unsigned int far *)0x00000408;
for (a = 0; a < 3; a++)
{
address = *ptraddr;
if (address == 0)
printf("No se encuentra puerto para LPT%d \n",a+1);
else
printf("Direccin asignada a LPT%d es %Xh\n",a+1,address);
*ptraddr++;
}
}
Ing. Antonio Romn V. UNEXPO PUERTO ORDAZ

136

Microprocesadores de 16 bits y tecnologa PC

Registros software del puerto paralelo


Cada direccin base de puerto paralelo, esta compuesta por tres direcciones
consecutivas de puerto. La primera direccin (Base+0) se denomina Puerto de datos.
La segunda (Base+1) se denomina Puerto de status. Finalmente, la tercera direccin
(Base+2) se denomina Puerto de control. De esta manera se puede concluir que, bajo
los estndares de asignacin del BIOS y MSDOS tenemos que:
LPT1
0378H
0379H
037AH

Offset
Base + 0

Base + 1

Base + 2

LPT2
03BCH
03BDH
03BEH

LPT3
0278H
0279H
027AH

Descripcin
Puerto de datos
Puerto de status
Puerto de control

Lectura/
Bit No.
Propiedades
Escritura
Puerto de
Escritura)
Bit 7
Data 7
datos
Bit 6
Data 6
Bit 5
Data 5
Bit 4
Data 4
Bit 3
Data 3
Bit 2
Data 2
Bit 1
Data 1
Bit 0
Data 0
Puerto de Solo lectura
Bit 7
Busy
status
Bit 6
Ack
Bit 5
Paper Out
Bit 4
Select In
Bit 3
Error
Bit 2
IRQ (Negado)
Bit 1
No usado
Bit 0
No usado
Puerto de
Lectura /
Bit 7
No usado
control
Escritura
Bit 6
No usado
Bit 5
No usado
Bit 4
Enable IRQ Via Ack
Bit 3
Select Printer
Bit 2
Initialize Printer (Reset)
Bit 1
Auto Linefeed
Bit 0
Strobe
Tabla 6.4 - Registros de software puerto paralelo

Nombre

La direccin base, usualmente denominada Puerto de datos o registro de datos, es


usada simplemente para la salida de datos hacia las lneas del puerto (pines 2 al 9).
Este puerto es normalmente de solo escritura. Si se lee este puerto, se obtendr el
ultimo byte enviado.
Ing. Antonio Romn V. UNEXPO PUERTO ORDAZ

Puerto Paralelo

137

El puerto o registro de status (Base+1) es un puerto de solo lectura. Cualquier dato


escrito en este puerto ser ignorado. Este puerto posee 5 lneas de entrada (pines 10,
11, 12, 13 y 15), el registro de status de IRQ y dos bits reservados. Ntese que el bit
7 (Busy) es una entrada activa a nivel bajo. Por ejemplo, si el bit 7 muestra el valor
0 esto significa que le entrada (pin 11 centronics) est a +5V. En forma similar, el
bit 2 (IRQ negado) si muestra un 1 entonces no ha ocurrido una interrupcin.
El puerto o registro de control (Base+2) esta definido como puerto de solo escritura.
Cuando la impresora es conectada al Puerto Paralelo, cuatro controles son
utilizados. Estos son STROBE, AUTO LINEFEED, INITIALIZE y SELECT
PRINTER, todos ellos invertidos, con excepcin de INITIALIZE. En algunas
variantes del Puerto Paralelo, estas lneas pueden usarse con lectura. Si la
computadora coloca estas lneas a estado alto (+5V) y el dispositivo conectado busca
enviar esas lneas a estado bajo (0V), podr efectivamente, enviar a corto el puerto,
causando conflicto en el bus. Dado que estas lneas son del tipo colector abierto,
poseen resistencias de pull up, permitiendo as leer el estado del dispositivo de salida,
con lneas de escritura. Se debe aclarar que esta caracterstica no esta contemplada
en todos los diseos de puerto, as que si desea probarla, asegrese primero del tipo
de diseo que tiene su puerto, o de lo contrario podr crearle daos permanentes.
Una posible manera de usar un puerto no diseado para lectura es colocar
externamente las resistencias de pull-up (de 4.7K como mnimo, pero no ms de
68K), permitiendo de esta manera usar este registro en modo bi-direccional sin daar
las lneas. Para efectuar la lectura, se debe escribir en este puerto el valor xxxx0100
para poder habilitar todos los pines de salida a 1.
Finalmente, los bits 4 y 5 son de control interno. El bit 4 habilitara las IRQ del
puerto, y el bit 5 habilitara el modo bi-direccional del registro de datos, siempre y
cuando el diseo del puerto soporte dicha caracterstica. Las escrituras hacia estos bits
no tendrn efecto en los bits de salida de este registro.

Usando el puerto paralelo para leer 8 bits


Si su puerto paralelo no soporta el modo bi-direccional, no se preocupe. Se puede
leer un mximo de 9 bits en cualquier momento dado. Esto puede hacerlo usando las
5 lneas de entrada del Puerto de Status y las 4 lneas entradas (en modo colector
abierto) del Puerto de Control. Normalmente se leern 4 bits (nibble) u 8bits (byte)
en cualquier momento. Leer 8 bits dejara una lnea vacante. Para estos casos, se
sugiere dejar el pin 10 (ACK) vacante, ya que puede usarse para generar peticiones de
interrupcin. Recurdese que debe escribirse xxxx0100 en el puerto de control para
que sea habilitado como puerto de lectura.

Ing. Antonio Romn V. UNEXPO PUERTO ORDAZ

138

Microprocesadores de 16 bits y tecnologa PC

Usando la IRQ del puerto paralelo


Las peticiones de interrupcin de puerto paralelo no son usadas para imprimir bajo
DOS, pero si bajo Windows. Esta lnea de interrupcin es til para monitorear
dispositivos en los cuales no se sabe cuando van a generar algn evento que requiera
por parte de ellos atencin del procesador.
La lnea de peticin de interrupcin (IRQ) del puerto paralelo normalmente es la
IRQ7 o la IRQ5, segn la direccin base. Existe la posibilidad de que las IRQ estn
totalmente deshabilitadas en la tarjeta de puerto paralelo, ya que esta es solo usada
para imprimir sin control sobre el dispositivo, y no tiene el hardware necesario para
apoyar esta funcin.
Para poder usar esta caracterstica, la lnea de IRQ asignada debe ser habilitada en el
PIC (Programmable Interrupt controller) 8259. Este punto lo veremos con mayor
detalle ms adelante, cuando se toque el tema de la programacin del 8259.

Programacin del puerto paralelo


Al contrario de lo que podra pensarse, programar el puerto paralelo es una tarea
bastante simple. Lo primero que debemos tener en claro es la direccin base del
puerto. Supongamos que la direccin base es 0378H, entonces, si deseamos escribir
en el registro de datos, simplemente hacemos lo siguiente:
MOV DX, 0378H
MOV AL, DATO
OUT DX, AL

;Almacena en DX la direccin del registro de datos


;Almacena en AL el dato a escribir
;Escribe el dato en registro de datos

Si deseamos leer del registro de status:


MOV DX, 0379H
IN
AL, DX
MOV DATO, AL

;Almacena en DX la direccin del registro de status


;Lee el dato del registro de status
;Almacena el dato ledo en una variable de memoria

Si deseamos escribir en el registro de control


MOV DX, 037AH
MOV AL, DATO
OUT DX, AL

;Almacena en DX la direccin del registro de control


;Almacena en AL el dato a escribir
;Escribe el dato en registro de control

Se puede concluir que el Puerto Paralelo no solo es til para usar impresoras. Este es
un dispositivo muy flexible de usar, que permite controlar de una manera sencilla
cualquier tipo de equipo o dispositivo externo que pueda adaptarse a los
requerimientos de operacin del puerto, con un esquema de programacin bastante
sencillo.
Ing. Antonio Romn V. UNEXPO PUERTO ORDAZ

Puerto Paralelo

139

La evolucin del puerto paralelo


La definicin original del puerto paralelo se le conoce hoy da como SPP (single
Pararell Port) y es el estndar base. A pesar de su sencillez, esta configuracin
original no es apta para transferencias masivas de datos, en parte, por necesitar que el
procesador este continuamente interactuando con el, y por otro lado, por el
desafortunado esquema de lneas no totalmente bidireccional. En vista de ello, y dado
actualmente el gran auge que tiene los nuevos dispositivos de impresin a color, los
cuales necesitan transferir como mnimo tres veces la cantidad de datos desde el
computador, adems de requerir un control mas sofisticado, fue la razn por la cual se
hizo necesario revisar la norma y expandirla.

Puerto Paralelo Expandido (EPP)


Este puerto fue diseado en conjunto con Intel, Xircom y Zenith. Esta incluido en la
especificacin de al IEEE 1284 como EPP 1.7 estndar y EPP 1.9 estndar. Las
diferencias entre estos ser discutida posteriormente.
El EPP posee una capacidad de transferencia tpica del orden de los 500 Kbyte/seg
hasta los 2Mbytes/seg. Esto se logra con electrnica adicional que permite generar las
seales de handshaking, strobing etc, en vez de delegar esas funciones al software.
Propiedades hardware del EPP
Cuando se usa el modo EPP, un conjunto diferente de funciones y nombres son
asignados a cada lnea del mismo.
Pin

SPP

EPP

Strobe

2-9
10

Data 0-7
ACK

11

Busy

12
Paper Out/End
13
Select
14
Auto LF
15
Error
16
Initialize
17
Select Printer
18-25
Ground

Write

E/S

FUNCION

Esta bajo: Escritura


Estado Alto: Lectura
Data 0-7
E/S
Bus de datos, bidireccional
Interrupt
E
Linea de interrupcion. Valida en flanco positivo
(rising edge)
Write
E
Usada por handshaking. El ciclo EPP puede
empezar en bajo, y terminar en alto.
Spare
E
Libre No usada en EPP Handshake
Spare
E
Libre No usada en EPP Handshake
Data Strobe
S
En nivel bajo, transferencia de datos
Spare
E
Libre No usada en EPP Handshake
Reset
O
Reset, activo bajo
Address Strobe
O
En nivel bajo, transferencia de direcciones
Ground
GND
Tierra (Ground)
Tabla 6.5 - Asignacin de pines del puerto EPP

Ing. Antonio Romn V. UNEXPO PUERTO ORDAZ

140

Microprocesadores de 16 bits y tecnologa PC

Manejo del EPP


El manejo, o handshake del puerto EPP, permite un control y manejo validos del
intercambio de datos. Esto lo hace totalmente el hardware, y no por software como es
por lo general en SPP. Para inicializar un ciclo EPP, es necesario que el software
realice algunas operaciones en los registros software de EPP.
Registros software del EPP
El puerto EPP posee un nuevo juego de registros, adicionales al SPP, de los cuales
hereda los tres originales de este ultimo
DIRECCION
Base+0
Base+1
Base+2
Base+3
Base+4
Base+5
Base+6
Base+7

PUERTO
LECTURA/ESCRITURA
Puerto de datos (SPP)
Escritura
Puerto de estatus (SPP)
Lectura
Puerto de control (SPP)
Escritura
Puerto de direcciones (EPP)
Lectura/Escritura
Puerto de datos (EPP)
Lectura/Escritura
No definido (Transf. 16/32 bits)
No definido (Transf.. 32 bits)
No definido (Transf. 32 bits)
Tabla 6.6 - Registros EPP

Puede observar que las tres primeras direcciones son exactamente los mismos
registros del puerto SPP y poseen el mismo comportamiento. Esto permite usar el
puerto EPP en modo compatible con SPP, en otras palabras, el software de control de
impresoras (u otros alternos) funcionaran sin problemas.
Si lo que desea es comunicarse con un dispositivo compatible con EPP, lo nico que
hay que hacer es colocar los datos a enviar en el Puerto de Datos (Base+4) y el puerto
generara los pulso de control (handshake) necesarios. Por otro lado, si lo que desea es
enviar una direccin a su dispositivo, entonces use el Puerto de Direcciones (Base+3).
Ambos registros son bidireccionales, entonces, es posible leer y escribir sobre ellos.
El hardware del puerto EPP se encargara de generar los ciclos correspondientes en las
lneas Address Strobe y Data Strobe, y su dispositivo puede hacer solicitudes de
lectura usando interrupciones.
El Puerto de estatus tiene una pequea modificacin. El bit 0, fue reservado para el
juego de registros de SPP, en EPP se usa como Time-Out (Tiempo Agotado). Esto
ocurre por lo general cuando la lnea Wait (Espera) no es validada en un tiempo de
aproximadamente 10uS. Tmese en cuenta que el puerto EPP depende mucho de la
temporizacin del bus ISA.

Ing. Antonio Romn V. UNEXPO PUERTO ORDAZ

Puerto Paralelo

141

Finalmente, los tres registros, Base+5, Base+6 y Base+7, pueden ser utilizados para
operaciones de lectura y escritura de 16 y 32 bits, solo si su puerto las soporta. El
puerto paralelo puede transportar solamente 8 bits a la vez, por lo que cualquier
acceso a lectura o escritura en 16 o 32 bits debe ser separado en bloques de 8 bits, a
fin de que puedan ser enviados por las 8 lneas de datos de puerto.
Temporizacin del EPP
En la siguiente tabla se puede observar los ciclos de lectura y escritura del puerto
EPP, tanto para datos como para direcciones.
Ciclo de escritura de datos

1. Escritura en Puerto de datos (Base + 4).


2. Se coloca pulso de escritura (nivel bajo).
3. El dato se coloca en las lneas 0-7.
4. Data Strobe es colocado si Wait esta a nivel bajo.
5. Anfitrin espera por respuesta (Wait pasa a nivel alto)
6. Data Strobe se descoloca (nivel alto)
7. Ciclo de escritura de datos terminado

Ciclo de escritura de direcciones

1. Escritura en Puerto de direcciones (Base + 3).


2. Se coloca pulso de escritura (nivel bajo).
3. El dato se coloca en las lneas 0-7.
4. Addr Strobe es colocado si Wait esta a nivel bajo.
5. Anfitrin espera por respuesta (Wait pasa a nivel alto)
6. Addr Strobe se descoloca (nivel alto)
7. Ciclo de escritura de direcciones terminado

Ciclo de lectura de datos

1. Lectura en Puerto de datos (Base + 4).


2. Data Strobe es colocado si Wait esta a nivel bajo.
3. Anfitrin espera por respuesta (Wait pasa a nivel alto)
4. El dato es ledo desde el puerto paralelo
5. Data Strobe se descoloca (nivel alto)
6. Ciclo de lectura de datos terminado

Lectura de datos
1. Lectura en Puerto de direcciones (Base + 3).
Ciclo de lectura de direcciones
2. Addr Strobe es colocado si Wait esta a nivel bajo.
3. Anfitrin espera por respuesta (Wait pasa a nivel alto)
4. La direccin es leda desde el puerto paralelo
5. Addr Strobe se descoloca (nivel alto)
6. Ciclo de lectura de direcciones terminado

Lectura de direcciones
Figura 6.1
Ing. Antonio Romn V. UNEXPO PUERTO ORDAZ

142

Microprocesadores de 16 bits y tecnologa PC

Consideraciones de programacin del EPP


Antes de proceder a utilizar el puerto EPP, este debe ser configurado correctamente.
Es estado ocioso, el puerto EPP puede no tener activas las lneas Address Strobe,
Data Strobe, Write y Reset. Algunos puertos necesitan que estas lneas sean
inicializadas antes de proceder a los ciclos de lectura y escritura.
Entonces, nuestra primera tarea ser la inicializacin manual de estas lneas, usando
los registros SPP. Escribiendo en el puerto de control el valor XXXX0100, se
inicializaran las lneas anteriormente mencionadas. En algunas tarjetas, el puerto EPP
esta colocado en modo reverso, lo cual no permitir ciclos de escritura. Para colocar
el puerto EPP es modo directo, es necesario poner a cero el bit 5 del puerto de
control.

Puerto de Capacidad Expandida (ECP)


El protocolo de puerto de capacidad extendida o ECP, fue propuesto por Hewlett
Packard y Microsoft como un modo avanzado para la comunicacin de perifricos del
tipo de los scanners y las impresoras. Como el protocolo EPP, el ECP proporciona
una alta resolucin en la comunicacin bi-direccional entre el adaptador del
computador y el dispositivo perifrico.
El protocolo ECP proporciona los siguientes ciclos, en ambas direcciones :

Ciclos de Datos
Ciclos de Comandos

Las caractersticas principales del ECP incluyen la RLE (Run Length Encoding) o
compresin de datos en los computadores, FIFO para los canales directo e inverso y
DMA. La caracterstica RLE mejora la compresin de datos en tiempo real y puede
lograr una compresin de datos superior 64:1. Esto es particularmente til para las
impresoras y scanners que transfieren gran cantidad de imgenes y tienen largas
cadenas de datos idnticos.
El canal de direcciones contiene una pequea diferencia con el del EPP. El canal de
direccin se intenta que se use para sistemas lgicos mltiples de direccin con un
sistema fsico nico. Piense en esta idea como un nuevo sistema multi-funcin como
por ejemplo un Fax/Impresora/Mdem. Con este protocolo se puede estar enviado
datos a la impresora y al Mdem a la vez.
Propiedades hardware del puerto ECP
Mientras el puerto ECP usa exactamente el mismo conector DB25, ECP asigna
diferentes tareas a cada uno de los pines, la igual que EPP. Esto significa que existe
un mtodo de manejo (o handshake) diferente.

Ing. Antonio Romn V. UNEXPO PUERTO ORDAZ

Puerto Paralelo

143

El puerto ECP es compatible hacia atrs con las normas SPP y EPP. Cuando opera en
el modo SPP, las lneas individuales operan exactamente igual a la norma original, y
todas conservan sus respectivos nombres. Cuando opera en la modalidad EPP, la
funciona de los pines es acorde al protocolo EPP anteriormente descrito. Cuando el
puerto funciona en la modalidad ECP, las siguientes denominaciones son asignadas a
cada pin.
Pin

SPP

ECP

E/S

Funcin

En estado bajo indidca que hay un dato valido


del anfitrion. Cuando el pin es deseleccionado, el
1
Strobe
HostCLK
S
flanco positivo del reloj es usado para almacenar
el dato en el dispositivo perifrico.
2-9
Data 0-7
Data 0-7
E/S Bus de datos. Bi-direccional
En estado bajo indica que hay un dato valido del
dispositivo perifrico. Cuando el pin es
10
Ack
PeriphCLK
E
deseleccionado, el flanco positivo del reloj se
usa para almacenar el dato en el anfitrin.
En modo reverso, el estado alto indica datos,
mientras que el estado bajo indica ciclo de
11
Busy
Periph Ack
E
comandos. En modo directo, funciona como
PeriphAck (Reconocimiento de dispositivo).
Paper Out /
En estado bajo, el dispositivo reconoce peticin
12
_Ack Reverse
E
End
inversa.
13
Select
X-Flag
E Banderas de extensin.
En modo directo, el estado alto indica datos,
mientras que en estado bajo indica ciclo de
Auto
14
Host Ack
S
Linefeed
comandos. En modo reverso funciona como
Host Ack (Reconocimiento de anfitrin).
Error /
Si el dispositivo lo ajusta a nivel bajo, indica que
15
Periph Request
E el modo reverso hay datos disponibles
Fault
16
Initialize _Reverse Request S Un estado bajo indica datos en modo reverso.
En modo alto indica que el anfitrin esta en
Select
modo de transferencia 1284. Tomndola en
17
1284 Active
S
Printer
modo bajo termina la operacin
18-25 Ground
Ground
GND Tiera (Ground)
Tabla 6.7 - Asignacin de pines puerto ECP

Las lneas HostAck y PeriphAck indican si las seales en las lneas de datos son datos
o comandos. Si esas lneas estn a nivel alto, entonces hay datos colocados en las
lneas de datos (pines 2-7). Si un ciclo de comandos esta tomando lugar entonces la
lnea apropiada ser activa baja, por ejemplo, si el anfitrin enva un comando,
entonces HostAck ser baja o si el dispositivo esta enviando un comando la lnea
PeriphAck ser baja.
Un ciclo de comandos puede hacer una de dos cosas, hace un conteo RLE o una
direccin. Esto lo determina el bit 7 (MSB) de las lneas de datos, por ejemplo, el pin

Ing. Antonio Romn V. UNEXPO PUERTO ORDAZ

144

Microprocesadores de 16 bits y tecnologa PC

9. Si el bit 7 es 0, entonces el resto de los datos (bits 0-6) es un conteo RLE


utilizado junto un esquema para compresin de datos. Por otro lado, si el bit 7 es 1,
entonces los datos presentes en los bits 0 al 6 es un canal de direcciones. Con un bit
menos, esto permite valores desde 0 al 127.
Temporizacin del ECP
El manejo en ECP es muy diferente al de SPP. La diferencia mas obvia es que ECP
tiene la habilidad de, en cualquier momento, transmitir datos en cualquier direccin,
adems de la sealizacin requerida.

Ciclo de datos directo

1. Dato colocado por el anfitrin en las lneas de datos.


2. Anfitrin indica que procede un ciclo de datos pasando a nivel
alto HostAck.
3. Anfitrin indica datos valido pasando a nivel bajo HostClk.
4. Dispositivo enva reconocimiento de dato valido pasando a
nivel alto PeriphAck.
5. Anfitrin pasa a nivel alto, usando el flanco para enviar el
dato al dispositivo.
6. Dispositivo enva reconocimiento del dato recibido pasando a
nivel bajo PeriphAck.

Ciclo de comandos directo

1. El dato es colocado por el anfitrin en las lneas de datos.


2. Anfitrin indica un ciclo de comandos pasando a nivel bajo
HostAck.
3. Anfitrin indica datos valido pasando a nivel bajo HostClk.
4. Dispositivo enva reconocimiento de dato valido pasando a
nivel alto PeriphAck.
5. Anfitrin pasa a nivel alto HostClk y usa flanco positivo para
enviar dato al dispositivo.
6. Dispositivo enva reconocimiento del dato pasando a nivel
bajo PeriphAck.

Ciclo de datos reverso

1. Anfitrin coloca nReverseRequest en nivel bajo para peticin


de canal reverso.
2. Dispositivo reconoce peticin de canal reverso pasando
nAckReverse a nivel bajo.
3. Dato es colocado en la lneas de datos por el dispositivo..
4. Ciclo de datos es seleccionado por el dispositivo pasando
PeriphAck a nivel alto.
5. El dispositivo indica dato valido ajustando a nivel bajo
PeriphClk.
6. Anfitrin enva reconocimiento de dato valido pasando
HostAck a nivel alto.
7. Dispositivo ajusta PeriphClk a nivel alto, usando flanco
positivo para recibir dato desde el anfitrin.
8. Anfitrin envia reconocimiento del dato enviado pasando
HostAck a nivel bajo.

Ing. Antonio Romn V. UNEXPO PUERTO ORDAZ

Puerto Paralelo

Ciclo de comandos reverso

145

1. Anfitrin ajusta nReverseRequest a nivel bajo para peticin de


canal reverso.
2. Dispositivo reconoce peticin de canal reverso pasando a
nivel bajo nAckReverse low.
3. Dato es colocado en las lneas de datos por el dispositivo..
4. Ciclo de comandos es seleccionado por el dispositivo pasando
a nivel bajo PeriphAck.
5. Dispositivo indica dato valido pasando PeriphClk a nivel bajo.
6. Anfitrin enva reconocimiento de dato valido pasando
HostAck a nivel alto.
7. Dispositivo ajusta PeriphClk a nivel alto, usando flanco
positivo para enviar dato hacia el anfitrin.
8. anfitrion envia reconocimiento del dato pasando HostAck a
nivel bajo.
Figura 6.2

Manejo EPC Vs. Manejo SPP


Si volvemos atras y miramos el manejo usado en la modalidad SPP, podemos ver que
esta se hace en 5 pasos
1. Escribe el byte en el puerto de datos
2. Verifica si la impresora esta ocupada. Si la impresora esta ocupada, no
aceptara ningn dato, entonces cualquier otro dato escrito se perder.
3. Pasa Strobe (pin 1) a nivel bajo. Esto le dice a la impresora que hay un dato
correcto en las lneas de datos (pines 2-9)
4. Coloca Strobe a nivel alto nuevamente despus de esperar 5 uS
aproximadamente despus de haberlo colocado en estado bajo (paso 3)
5. Verifica por peticiones (Ack) del dispositivo
Puede verse que el manejo de ECP posee muchos pasos mas. Esto podra sugerir que
ECP podra ser mas lento que SPP. Por supuesto, este no es el caso. Todos los pasos
efectuados por ECP son controlados por hardware. Si este manejo se hiciera por
software, tal como lo hace SPP, el control de ECP efectivamente seria muy lento
comparado con SPP.

Registros de software ECP


La siguiente tabla muestra los registros del puerto ECP. Los tres primeros registros
son exactamente los mismos del puerto SPP. Note que puede ser tomado el bit 5 del
puerto de control para habilitar los puertos bidireccionales. Este bit refleja la
direccin de datos seleccionada por ECP, puede afectar los bits de cola FIFO llena o
cola FIFO vaca, del registro ECR, el cual ser explicado posteriormente.

Ing. Antonio Romn V. UNEXPO PUERTO ORDAZ

146

Microprocesadores de 16 bits y tecnologa PC

Direccin
Base + 0
Base + 1
Base + 2
Base + 400h

Base + 401h
Base + 402h

Nombre de puerto
Puerto de datos (SPP)
Direccin de cola FIFO ECP (MODO ECP)
Puerto de estatus (todos los modos)
Puerto de control (todos los modos)
Datos cola FIFO (Modo FIFO Puerto Paralelo)
Datos FIFO (Modo ECP)
Test FIFO (Modo Test)
Registro configuracin A (Modo configuracin)
Registro configuracin B (Modo configuracin)
Registro control extendido (Usado por todas las modalidades)
Tabla 6.8 - Registros ECP

R/W
R
R/W
R/W
R/W
R/W
RW
R/W
R/W
R/W
R/W

Registro de control extendido (ECR)


Este es el registro mas importante del puerto ECP. Este registro es el primero a usar
antes de efectuar cualquier operacin, ya que permite ajustar la modalidad de trabajo
del puerto, proporciona los estatus de las colas FIFO, entre otras cosas.

Funcion
Bit
7:5 Selecciona el modo de operacin
000 Modo Estandard
001 Modo Byte
010 Modo FIFO Puerto Paralelo
011 Modo FIFO ECP
100 Modo EPP
101 Reservado
110 Modo Test FIFO
111 Modo Configuracion
4 Bit de interrupcin ECP
3 Bit habilitacin DMA
2 Bit Servicio ECP
1 Cola FIFO llena
0 Cola FIFO vaca
Tabla 6.9 - Registros de control extendido

Los tres bits mas significativos del ECR seleccionan el modo de operacin. Existen 7
posibles modos de operacin, pero no todos los puertos pueden soportar todos los
modos. El modo EPP es uno de ellos, por ejemplo, no esta disponible en algunos
puertos.

Ing. Antonio Romn V. UNEXPO PUERTO ORDAZ

Puerto Paralelo

147

Modos de Operacin
Modo
Estandar
Modo Byte /
Modo PS/2
Modo FIFO
Puerto
Paralelo

Seleccionando este modo permitir que el puerto ECP se comporte como un


puerto SPP estndar, sin la funcionalidad bidireccional.
Se comporta como un puerto SPP en modo bidireccional (Reverso)

En este modo, cualquier dato escrito en la cola de datos FIFO ser enviado a
dispositivo usando el manejo (handshake) SPP. El hardware generara las
seales de manejo requeridas. Es til con dispositivos no-ECP. Puede tener
algunas de las caractersticas de ECP, tales como los buffers FIFO y el
hardware generador de seales de manejo y control, pero solo las existentes
para SPP.
Modo FIFO Modo estndar para uso de ECP. Se usa el manejo (Handshake) ECP
ECP
anteriormente descrito.
Modo EPP / En algunos chipsets, este modo permite usar EPP, mientras que en otros, este
Reservado
modo es reservado.
Reservado
Normalmente reservado
Modo Test
En este modo, cualquier dato escrito al registro Test FIFO ser colocado en la
FIFO
cola FIFO y cualquier dato ledo de dicho registro ser ledo del buffer FIFO.
Los bits de estatus de FIFO lleno/vaci reflejaran el verdadero valor.
Modo
En este modo, los dos registros de configuracin, cnfgA y cnfgB estarn
Configuracin disponibles para el registro de direcciones designado.
Tabla 6.10

Cuando el puerto es ajustado a operar en Modo Estndar, este se comportara


exactamente como un puerto SPP, si transferencia de datos bidireccional. Si se
necesita esta caracterstica, entonces debe habilitar el Modo Byte. Las modalidades
FIFO Puerto Paralelo y FIFO ECP usan hardware para generar las seales de control
necesarias. La nica diferencia entre cada modo es que la primera modalidad usa
control SPP, permitiendo as usar impresoras. La otra modalidad usa control ECP.
El Modo Test FIFO puede ser usado para comprobar la capacidad de los buffers FIFO
y verificar si hacen correctamente su funcin. En este modo, cualquier byte que sea
escrito a TEST FIFO (Base+400H) es colocado en el buffer FIFO y cualquier byte
que sea ledo de este registro ser tomado de dicho buffer. Puede usarse en conjunto
con FIFO lleno/vaci para determinar la capacidad del buffer, que normalmente es de
16 bytes.
Los otros bits del ECR pueden jugar un rol importante en la operacin del puerto
ECP. El Bit de Interrupcin ECP (bit 4) habilita el uso de interrupciones, mientras
que el Bit Habilitar DMA (bit 3) permite el uso del acceso directo a la memoria. El
Servicio ECP (bit 2) muestra si una peticin de interrupcin ha sido iniciada. Si es
as, este bit ser activado.
El bit FIFO lleno (bit 1) y FIFO vaci (bit 0) muestran el estatus del buffer FIFO.
Estos bit son dependientes de la direccin, ya que son tomados del bit 5 del Puerto de
Ing. Antonio Romn V. UNEXPO PUERTO ORDAZ

148

Microprocesadores de 16 bits y tecnologa PC

Control. Si el bit 0 (FIFO vaci) esta activo, entonces el buffer FIFO esta
completamente vaci. Si el bit 1 esta activo, entonces el buffer FIFO esta lleno.
Entonces, si los bits 0 o 1 no estn activos, existen datos en el buffer FIFO, pero este
ultimo no esta lleno. Estos bits pueden ser usados por el Modo Test FIFO para
determinar la capacidad del buffer.

Registro de configuracin A (cnfgA)


El registro de configuracin A es uno de los dos registros de configuracin del puerto
ECP. Dichos registros son solamente accesibles cuando el Puerto ECP esta en Modo
configuracin. CnfgA puede ser accedido en Base+400H.

Bit
7
6:4

3
2

1:0

Funcin
1
Interrupciones disparadas por nivel
0
Interrupciones disparadas por flanco
00h Acepta mximo palabras de 16 bit de ancho
01h Acepta mximo palabras de 8 bit de ancho
02h Acepta mximo palabras de 32 bit de ancho
03h:07h Reservado para expansin futura
Reservado
Recuperacin de Anfitrin: Byte por transmitir esta en la cola FIFO?
En modo directo, 1 byte en la cola de transmisin no afecta a la
0
cola FIFO lleno.
En modo directo, 1 byte en la cola de transmisin es incluido
1
como parte de la cola FIFO llena.
Recuperacin de Anfitrin: Byte no enviados en la cola FIFO
00 Completar Port Word
01 1 byte valido
10 2 bytes validos
11 3 bytes validos
Tabla 6.11 - Configuracin del Registro A

El registro de configuracin A puede ser ledo para conocer un poco mas del Puerto
ECP. El MSP muestra si el hardware genera disparos de interrupcin por nivel o por
flanco. Los bits 4 al 6 muestran el ancho del bus. Por lo general, el software lee estos
bits para obtener la mxima eficiencia del puerto.
Los 3 LSBs son usados para la recuperacin del Anfitrin. Con el fin de recuperarse
de un error, el software deber saber cuantos bytes fueron enviados, determinando si
quedan algunos de estos bytes en la cola FIFO.

Ing. Antonio Romn V. UNEXPO PUERTO ORDAZ

Puerto Paralelo

149

Otro problema es que la salida del Puerto Paralelo es solo de 8 bits de ancho, y es
posible que se necesiten usar instrucciones de E/S de 16 o 32 bit de ancho. Si ese es
el caso, entonces parte del Port Word puede ser enviado. Los bits 0 y 1 dan indicacin
del numero de bytes validos que permanecen en la cola FIFO, y cuales pueden
retransmitirse.

Registro de configuracin B (cnfgB)


Este registro, al igual que el anterior, solamente esta disponible cuando el Puerto ECP
esta en Modo Configuracin. Cuando esta en ese modo, cnfgB reside en Base+401H.

Bit(s)
7

Funcin
1 Comprime datos de salida usando RLE
0 No comprima datos
6 Estatus de Interrupcin: Muestra el estatus del pin IRQ
5:3 Selecciona o muestra el estatus de la lnea de peticin de
interrupcin.
000 Interrupcin seleccionada va puente (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 muestra el estatus del canal DMA usado
000 Usa canal DMA de 8 bits puenteado (jumpered)
001 Canal DMA #1
010 Canal DMA #2
011 Canal DMA #3
100 Usa canal DMA de 16 bits puenteado
101 Canal DMA #5
110 Canal DMA #6
111 Canal DMA #7
Tabla 6.12 - Configuracin del registro B

Este registro puede ser una combinacin de acceso lectura/escritura. Algunos puertos
pueden ser configurados por software, permitiendo la posibilidad de seleccionar los
recursos IRQ y DMA desde el registro. Otros pueden ser ajustados desde el BIOS o
usando puentes (jumpers) en la tarjeta madre (motherboard).
Ing. Antonio Romn V. UNEXPO PUERTO ORDAZ

150

Microprocesadores de 16 bits y tecnologa PC

El bit 7 selecciona si se usa o no compresin RLE (Run Length Encoding). Cuando


esta seleccionado, el anfitrin comprime los datos antes de enviarlos. Cuando no esta
activo, los datos se envan al dispositivo sin comprimir. El bit 6 retorna el estatus del
pin de IRQ. Esto puede ser usado como diagnostico de conflictos y puede que no
refleje el estatus del IRQ del Puerto Paralelo, pero si el de otros dispositivos que usen
esta IRQ.
Los bits 5 a 3 proporcionan el estatus de las asignaciones de IRQ a los puertos.
Igualmente, los bits 2 al 0 proporcionan el estatus de las asignaciones de los canales
DMA . Hay que mencionar que estos campos son de lectura y escritura.

Ejercicios Propuestos

Haga un diseo hardware y software que permita emular una ruleta usando 16
leds. Esta ruleta empezara a rotar a alta velocidad, haciendo gradualmente mas
lenta hasta que al cabo de 30 segundos se detenga completamente. Solo utilice
el puerto paralelo en modo SPP y con la cantidad mnima de componentes.

Disee un interfaz hardware que conectndose al puerto paralelo, permita


emular un procesador bsico de 8 bit de bus E/S y 16 bits de direcciones.
Haga un diseo hardware que se adapte a las modalidades SPP y ECP, y su
respectivo software de control. Este software usara un macro lenguaje de
instrucciones bsicas, tales como: LEER_DATO, ESCRIBIR_DATO,
ESCRIBIR_DIRECCIN.

Haga un diseo hardware y software que permita accionar un conjunto de 8


reles, de acuerdo al estado de un sensor de entrada digital de 8 bits.

Usando un DAC, disee el hardware y software necesarios para hacer un


generador de seales que permita obtener formas de onda triangular, diente de
sierra, senoidal, cuadrada y ancho de pulso variable. La frecuencia mxima
debe ser 5KHz.

Disee el hardware y software necesarios para hacer un ADC/DAC, que


permita capturar 30 segundos de una seal de audio y permita reproducir la
misma. El diseo debe ser capaz de hacer 10000 muestras por segundo.
Utilice la modalidad ECP.

Ing. Antonio Romn V. UNEXPO PUERTO ORDAZ

S-ar putea să vă placă și