Estructura del BUS
ISA 8/16 bits
El BUS clásico de un PC (ISA BUS) se compone de dos partes:
La clásica de 8 bits, perteneciente a los PC, XT y AT. La extensión de 16 bits de los AT.
Entre ambos forman el bus ISA que todos los ordenadores PC actuales
poseen (no confundir con VESA o PCI, siendo el primero una tercera
ampliación del bus ISA de 8 bits y el PCI un bus totalmente diferente).
Estructura del BUS de 8 bits PC, XT y AT: --------
Tierra -|B1 A1|- -I/O CH CHK (NMI)
+Reset DRV -|B2 A2|- +D7
+5V -|B3 A3|- +D6
+IRQ2 -|B4 A4|- +D5
-5V -|B5 A5|- +D4
+DRQ2 -|B6 A6|- +D3
-12V -|B7 A7|- +D2
-CARD SLCTD -|B8 A8|- +D1
+12V -|B9 A9|- +D0
Tierra -|B10 A10|- +I/O CH RDY
-MEMW -|B11 A11|- +AEN
-MEMR -|B12 A12|- +A19
-IOW -|B13 A13|- +A18
-IOR -|B14 A14|- +A17
-DACK3 -|B15 A15|- +A16
+DRQ3 -|B16 A16|- +A15
-DACK1 -|B17 A17|- +A14
+DRQ1 -|B18 A18|- +A13
-DACK0 (MREF) -|B19 A19|- +A12
CLK -|B20 A20|- +A11
+IRQ7 -|B21 A21|- +A10
+IRQ6 -|B22 A22|- +A9
+IRQ5 -|B23 A23|- +A8
+IRQ4 -|B24 A24|- +A7
+IRQ3 -|B25 A25|- +A6
-DACK2 -|B26 A26|- +A5
+TC -|B27 A27|- +A4
+ALE -|B28 A28|- +A3
+5V -|B29 A29|- +A2
+OSC -|B30 A30|- +A1
Tierra -|B31 A31|- +A0
--------
Extensión AT de 16 Bit:
--------
-MEM CS16 -|D1 C1|- SBHE
-I/O CS16 -|D2 C2|- A23
IRQ10 -|D3 C3|- A22
IRQ11 -|D4 C4|- A21
IRQ12 -|D5 C2|- A20
IRQ15 -|D6 C6|- A19
IRQ14 -|D7 C7|- A18
-DACK0 -|D8 C8|- A17
DRQ0 -|D9 C9|- -MEMR
-DACK5 -|D10 C10|- -MEMW
DRQ5 -|D11 C11|- D8
-DACK6 -|D12 C12|- D9
DRQ6 -|D13 C13|- D10
-DACK7 -|D14 C24|- D11
DRQ7 -|D15 C15|- D12
+5V -|D16 C16|- D13
-Master -|D17 C17|- D14
Tierra -|D18 C18|- D15
--------
La numeración empieza desde la parte posterior de la máquina.

|
SEÑAL |
DESCRIPCIÓN |
|
A0-A19 |
Bits de dirección 0-19, permiten direccionar 1Mb de memoria y
64K de puertos de e/s. |
|
A17-A23 |
Bits de dirección 17-23, permiten direccionar desde 256Kb de
memoria a 16Mb. |
|
AEN |
Address Enable; Cuando está activa el controlador DMA posee el
control de las lineas de dirección y del BUS de datos, conforme se
indique en MEMR/MEMW. Cuando está inactiva la CPU tiene el control
de estas lineas. |
|
ALE |
Address Latch Enable (salida); se emplea para que la CPU esté
aislada de las líneas de dirección (triestado). Es forzado activado
durante los ciclos DMA. |
|
CARD SLCTD |
Card Selected; indica que una tarjeta ha sido activada en el
slot XT de 8 bits. |
|
CLK |
Señal de reloj del sistema (actual velocidad del BUS). |
|
D0-D7 |
Bits de datos 0-7 para e/s a memoria o puertos de e/s. |
|
DACK0-DACK3 |
Reconocimiento DMA para los canales 0 al 3; empleada por el
controlador para reconocer una petición DMA (validación de acceso
DMA). DACK0 es empleada para el refresco de memoria (MREF). |
|
DRQ0-DRQ3 |
Petición DMA 0-3; empleada por periféricos que desean los
servicios del controlador DMA; Se mantiene activa hasta que la
correspondiente señal DACKx se hace activa. |
|
I/O CH CHK |
I/O Channel Check; Genera una interrupción no enmascarable.
|
|
I/O CH RDY |
I/O Channel Ready; es puesta inactiva por memoria o dispositivos
de e/s para retardar el acceso a memoria o los ciclos de e/s.
Normalmente es empleada por dispositivos lentos para añadir estados
de espera. No debe ser inactiva durante más de 17 ciclos. |
|
I/O CS16 |
I/O Chip Select 16 Bit; indica ciclo de e/s de 16 bits |
|
IOR |
I/O Read; indica a un dispositivo de e/s que coloque su dato en
el BUS del sistema. |
|
IOW |
I/O Write; indica a un dispositivo de e/s a leer un dato del BUS
del sistema. |
|
IRQ2-IRQ7 |
Petición de interrupción 2-7; indica a la CPU que un dispositivo
de e/s necesita servicio. |
|
MASTER |
Empleado por DRQ para ganar el control del sistema. |
|
MEM CS16 |
Memory Chip Select 16 bit; indica ciclo de memoria de 16 bits.
|
|
MEMR |
Memory Read; esta señal es producida por la CPU o el controlador
DMA e indica a la memoria que debe introducir el dato direccionado
en el BUS del sistema. Presente tanto en el BUS PC como en la
extensión AT. |
|
MEMW |
Memory Write; esta señal es producida por la CPU o el
controlador DMA e indica a la memoria que debe leer y almacenar el
dato presente en el BUS. Presente tanto en el BUS PC como en la
extensión AT. |
|
OSC |
Oscilador; Señal de reloj de 14.31818 MHZ (periodo de 70ns); 50%
del ciclo de servicio. |
|
RESET DRV |
Reset Drive; empleada para resetear la lógica del sistema.
|
|
SBHE |
System BUS High Enable; activa los bits de datos 8-15 de la
extensión AT del BUS. |
|
TC |
Terminal Count; produce un impulso cuando la cuenta final de un
canal DMA es alcanzado. |
Todas las señales del BUS ISA emplean niveles TTL estándar.
La entrada y la salida es con respecto a la CPU.
E/S significa entrada/salida.
Tabla de
interrupciones hardware
Las interrupciones están ordenadas por orden de prioridad.
|
IRQ# |
INTERRUPCIÓN |
FUNCIÓN |
|
IRQ 0 |
8 |
Reloj (55ms de intervalo, 18.2 por segundo). |
|
IRQ 1 |
9 |
Requerimiento de los servicios del teclado. |
|
IRQ 2 |
A |
Esclavo 8259 o retrazo vertical de la EGA/VGA. |
|
IRQ 8 |
70 |
reloj en tiempo real (AT, XT286, PS50+). |
|
IRQ 9 |
71 |
Software redireccionado a IRQ2 (AT, XT286, PS50+). |
|
IRQ 10 |
72 |
Reservado (AT, XT286, PS50+). |
|
IRQ 11 |
73 |
Reservado (AT, XT286, PS50+). |
|
IRQ 12 |
74 |
Interrupción del ratón (PS50+). |
|
IRQ 13 |
75 |
Error en coprocesador numérico (AT, XT286, PS50+). |
|
IRQ 14 |
76 |
controlador del disco duro (AT, XT286, PS50+). |
|
IRQ 15 |
77 |
Reservado (AT, XT286, PS50+). |
|
IRQ 3 |
B |
Petición de servicio a COM2 o COM4, (COM3-COM8 en el MCA PS/2).
|
|
IRQ 4 |
C |
Petición de servicio a COM1 o COM3. |
|
IRQ 5 |
D |
Disco duro o petición de datos desde LPT2. |
|
IRQ 6 |
E |
Petición de servicio al disco flexible. |
|
IRQ 7 |
F |
Petición de datos desde LPT1 (sin relación en el IBM mono).
|
Puerto paralelo
(impresora)
Conector (en el PC):

|
PIN |
DENOMINACIÓN |
DESCRIPCIÓN |
|
Patilla 1 |
OUTPUT DATA |
Impulso para transmitir 1 octeto de datos (strobe). |
|
Patilla 2 |
DATA 0 |
Bit de datos nº 0 ('LSB') del octeto de datos. |
|
Patilla 3 |
DATA 1 |
Bit de datos nº 1. |
|
Patilla 4 |
DATA 2 |
Bit de datos nº 2. |
|
Patilla 5 |
DATA 3 |
Bit de datos nº 3. |
|
Patilla 6 |
DATA 4 |
Bit de datos nº 4. |
|
Patilla 7 |
DATA 5 |
Bit de datos nº 5. |
|
Patilla 8 |
DATA 6 |
Bit de datos nº 6. |
|
Patilla 9 |
DATA 7 |
Bit de datos nº 7 ('MSB') del octeto de datos. |
|
Patilla 10 |
ACKNLG |
Acknowledgement. Aceptación de la recepción de datos. |
|
Patilla 11 |
BUSY |
Ocupado. La recepción de datos no está operativa. |
|
Patilla 12 |
PE |
Paper Empty/No hay papel. |
|
Patilla 13 |
ON-LINE |
Estado de la impresora: activada/desactivada (on line/off line).
|
|
Patilla 14 |
AUTOFEED XT |
Avanzar línea después de imprimir cada línea. |
|
Patilla 15 |
ERROR |
Ha ocurrido un error. |
|
Patilla 16 |
INIT |
Ordenador o impresora reinicializado. |
|
Patilla 17 |
SLCT IN |
Select in / Selección de entrada. Aceptación de la transmisión
de datos. |
|
Patilla 18 |
NC |
Ground / Tierra |
|
Patilla 19 |
GND |
Ground / Tierra |
|
Patilla 20 |
GND |
Ground / Tierra |
|
Patilla 21 |
GND |
Ground / Tierra |
|
Patilla 22 |
GND |
Ground / Tierra |
|
Patilla 23 |
GND |
Ground / Tierra |
|
Patilla 24 |
GND |
Ground / Tierra |
|
Patilla 25 |
GND |
Ground / Tierra |
Características básicas de los puertos paralelos estándares:
|
Nº puerto |
Denominación |
IRQ |
Dirección |
|
1 |
LPT1: |
7 |
378h |
|
2 |
LPT2: |
5 |
278h |
Puertos de impresora empleados:
¦7¦6¦5¦4¦3¦2¦1¦0¦ puertos 278, 378, 3BC
¦ ¦ ¦ ¦ ¦ ¦ ¦ +---- dato bit 0, hardware pin 2
¦ ¦ ¦ ¦ ¦ ¦ +----- dato bit 1, hardware pin 3
¦ ¦ ¦ ¦ ¦ +------ dato bit 2, hardware pin 4
¦ ¦ ¦ ¦ +------- dato bit 3, hardware pin 5
¦ ¦ ¦ +-------- dato bit 4, hardware pin 6
¦ ¦ +--------- dato bit 5, hardware pin 7
¦ +---------- dato bit 6, hardware pin 8
+----------- dato bit 7, hardware pin 9
¦7¦6¦5¦4¦3¦2¦1¦0¦
puertos 279, 379, 3BD
¦ ¦ ¦ ¦ ¦ ¦ ¦ +---- 1 = time-out
¦ ¦ ¦ ¦ ¦ +------- no empleado
¦ ¦ ¦ ¦ +-------- 1 = error, pin 15
¦ ¦ ¦ +--------- 1 = en linea (on-line), pin 13
¦ ¦ +---------- 1 = sin papel, pin 12
¦ +----------- 0 = datos recibidos, pin 10
+------------ 0 = ocupado, pin 11
¦7¦6¦5¦4¦3¦2¦1¦0¦ puertos 27A, 37A, 3BE
¦ ¦ ¦ ¦ ¦ ¦ ¦ +---- 1 = impulso de transmisión de datos, (pin 1)
¦ ¦ ¦ ¦ ¦ ¦ +----- 1 = avanzar línea tras imprimir una, (pin 14)
¦ ¦ ¦ ¦ ¦ +------ 0 = inicializar impresora, (pin 16)
¦ ¦ ¦ ¦ +------- 1 = aceptación de datos transmitidos, (pin 17)
¦ ¦ ¦ +-------- 0 = IRQ deshabilitado,1=IRQ habilitado para ACK
+------------- no empleado
Puerto
Serie Conector de 25 pin (en el PC):

Conector de 9 pin (en el PC):

|
PIN-9 |
PIN-25 |
DESCRIPCIÓN |
|
1 |
8 |
Carrier Detect (DCD/CD); Detección de portadora. |
|
2 |
3 |
Receive Data (RXD/RD); Entrada de datos. |
|
3 |
2 |
Transmit Data (TXD/TD); Salida de datos. |
|
4 |
20 |
Data Terminal Ready (DTR); Indica que el puerto está preparado.
|
|
5 |
7 |
Signal Ground (GND/SG); Proporciona la referencia cero de
voltaje. |
|
6 |
6 |
Data Set Ready (DSR); Datos preparados, listo para recibir.
|
|
7 |
4 |
Request to Send (RTS); Petición de envío de datos. |
|
8 |
5 |
Clear to Send (CTS); Indica que se desea transmitir. |
|
9 |
22 |
Ring Indicator (RI); Anuncia una llamada al otro dispositivo.
|
|
- |
9-19 |
No empleadas |
|
- |
1 |
Masa del chasis (GND) |
-
Voltajes máximos entre -15V y +15V.
-
Salidas binarias entre +5V a +15V y -5V a -15V.
-
Entradas binarias entre +3V a +15V y -3V a -15V.
-
Voltajes de entrada entre -3V a +3V y voltajes de salida entre -5V a
+5V son indefinidos.
-
Voltajes positivos indican ON o ESPACIO, voltajes negativos indican
OFF o MARCA.
Puerto de juegos
(joystick)
Conector en el PC: 
|
PIN |
DESCRIPCIÓN |
|
1 |
+5v |
|
2 |
Joystick A, Botón 1 |
|
3 |
Joystick A, eje X |
|
4 |
Tierra |
|
5 |
Tierra |
|
6 |
Joystick A, eje Y |
|
7 |
Joystick A, Botón 2 |
|
8 |
+5v |
|
9 |
+5v |
|
10 |
Joystick B, Botón 1 |
|
11 |
Joystick B, eje X |
|
12 |
Tierra |
|
13 |
Joystick B, eje Y |
|
14 |
Joystick B, Botón 2 |
|
15 |
+5v |
Acceso a través del puerto 201h:
¦7¦6¦5¦4¦3¦2¦1¦0¦ Puerto 201h
¦ ¦ ¦ ¦ ¦ ¦ ¦ +---- joystick a, coord x (0 = temporización activa)
¦ ¦ ¦ ¦ ¦ ¦ +----- joystick a, coord y (0 = temporización activa)
¦ ¦ ¦ ¦ ¦ +------ joystick b, coord x (0 = temporización activa)
¦ ¦ ¦ ¦ +------- joystick b, coord y (0 = temporización activa)
¦ ¦ ¦ +-------- joystick a, botón 1 (0=pulsado)
¦ ¦ +--------- joystick a, botón 2 (0=pulsado)
¦ +---------- joystick b, botón 1 (0=pulsado)
+----------- joystick b, botón 2 (0=pulsado)
tiempo = 24.2u + ( 0.011u * resistencia ) o resistencia = (
tiempo - 24.2 ) / 0.011
Introducción al
estándar IEE 1284-1994
Este estándar proporciona una comunicación bidireccional de alta
velocidad entre un PC y un periférico externo, estableciendo una
comunicación entre 50 y 100 veces más rápida que el original puerto
paralelo. Por supuesto es totalmente compatible con todos los periféricos
existentes para puertos paralelos.
El estándar 1284 define 5 modos de transferencia de datos. Cada modo
proporciona un método de transferencia de datos hacia el exterior (PC a
periférico), hacia el interior (periférico a PC) o bidireccional (dúplex).
Los modos definidos son:
-
Sólo hacia el exterior: modo de compatibilidad "centronics" o modo
estándar.
-
Sólo hacia el interior:
-
Modo nibble, 4 bits a un tiempo empleando las líneas de estado para
datos.
-
Modo byte, 8 bits a un tiempo empleando líneas de datos, a veces
referido como puerto bidireccional. Este modo sólo lo soportan los
ordenadores de IBM (PS/2).
-
Bidireccional:
-
EPP (Enhaced Parallel Port), empleado por periféricos como CD-ROM,
cintas, discos duros, adaptadores de red, etc.
-
ECP (Extended Capability Port), empleado por la nueva generación de
impresoras y scanners.
Todos los puertos paralelos pueden implementar un enlace bidireccional
empleando los modos "compatible" y "nibble" para transferencia de datos.
El modo byte puede ser empleado por el 25% de los puertos paralelos
(aproximadamente). Estos tres modos hacen uso intensivo del software para
la transferencia y limitan ésta a ratios de 50 a 100 Kbytes por segundo.
Los modos EPP y ECP están siendo implementados en la mayoría de los
últimos controladores de E/S. Estos modos emplean hardware para asistir la
transferencia de datos. Por ejemplo, en el modo EPP un byte de datos puede
ser transferido al periférico con una simple instrucción OUT. El
controlador de E/S se encarga de gestionar toda la transferencia.
En conjunto, el estándar 1284 proporciona lo siguiente:
-
5 modos de operación para transferencia de datos.
-
Un método para determinar por parte del periférico y el controlador
los modos soportados y negociar el modo requerido.
-
Las interfaces físicas (cables y conectores).
-
La interfaz eléctrica (conductores, receptores, terminaciones e
impedancia).
Modo EPP
El protocolo de puerto paralelo mejorado (EPP) fue originalmente
desarrollado por Intel, Xircom y Zenith Data Systems, como una forma de
proporcionar un enlace por puerto paralelo de alto rendimiento que pudiera
seguir siendo compatible con el puerto paralelo estándar.
Este protocolo compatible fue implementado por Intel en el chipset
386SL (chip I/O 82360). Esto sucedió antes del establecimiento del comité
IEE 1284 y que los estándar asociados funcionasen.
El protocolo EPP ofrece muchas ventajas a los periféricos que lo
utilicen y fue rápidamente adoptado por muchos como un método opcional de
transferencia de datos. Una gran asociación de 80 empresas interesadas fue
formada para desarrollar y promover el protocolo EPP. Esta asociación se
denominó el comité EPP y fue el instrumento empleado para adoptar este
protocolo como uno de los modos avanzados del IEE 1284.
Desde que los primeros puertos con capacidad EPP estuvieron disponibles
antes del lanzamiento del estándar 1284, hay una pequeña desviación entre
las primeras versiones (pre-1284 EPP) y el protocolo definitivo. Esto será
aclarado más tarde.
El protocolo EPP proporciona cuatro tipos de ciclos de transferencia:
-
Ciclo de escritura de datos.
-
Ciclo de lectura de datos.
-
Ciclo de escritura de dirección.
-
Ciclo de lectura de dirección.
Los ciclos de datos pretenden ser empleados para transferir datos entre
el ordenador y el periférico. Los ciclos de dirección deben ser empleados
para pasar direcciones, canales, o comandos e información de control.
Estos ciclos pueden verse como dos ciclos diferentes de datos. El
desarrollador debe emplear y manejar las direcciones/datos de forma que el
método tenga sentido para el diseño en particular. La siguiente tabla
describe las señales EPP y sus asociadas señales SPP:
Tabla 1 – Definición de señales EPP
|
SPP Señal |
EPP Nombre de señal |
In/Out |
Descripción de señal EPP |
|
NSTROBE |
nWRITE |
Out |
Activa a nivel bajo indica una operación de escritura, a nivel
alto indica un ciclo de lectura. |
|
NAUTOFEED |
nDATASTB |
Out |
Activa a nivel bajo indica que hay una operación de
lectura/escritura de datos en proceso. |
|
nSELECTIN |
nADDRSTB |
Out |
Activa a nivel bajo indica que hay una operación de
lectura/escritura de dirección en proceso. |
|
nINIT |
nRESET |
Out |
Activa a nivel bajo indica inicialización (reset) del
periférico. |
|
nACK |
nINTR |
In |
Periférico interrumpido. Empleada para generar una interrupción
al ordenador. |
|
BUSY |
nWAIT |
In |
Señal de espera. Cuando esta a nivel bajo indica que se está
preparado para comenzar un ciclo, cuando está a nivel alto indica
que se está preparado para finalizar un ciclo. |
|
D[8:1] |
AD[8:1] |
Bi-Di |
Líneas bidireccionales de dirección/datos. |
|
PE |
Definido por usuario |
In |
Puede ser empleada de forma diferente por cada
periférico. |
|
SELECT |
Definido por usuario |
In |
Puede ser empleada de forma diferente por cada
periférico. |
|
NERROR |
Definido por usuario |
In |
Puede ser empleada de forma diferente por cada
periférico. |
Fases de un ciclo de escritura de datos:
-
El programa ejecuta un ciclo de escritura de e/s al puerto 4 (Puerto
de datos EPP).
-
La línea nWrite es activada y los datos son sacados al puerto
paralelo.
-
El dato strobe es activado, mientras que nWAIT es desactivado.
-
El puerto espera el reconocimiento del periférico (nWAIT
desactivado).
-
El dato strobe es desactivado y el ciclo EPP finaliza.
-
El ciclo de E/S ISA finaliza.
-
NWAIT es desactivado para indicar que el próximo ciclo puede
comenzar.
Una de las más importantes características a resaltar es que la
transferencia de datos ocurre sin el ciclo ISA de e/s. La consecuencia es
que empleando el protocolo EPP un sistema puede alcanzar ratios desde 500K
a 2M bytes por segundo. En estas condiciones, un periférico por puerto
paralelo puede operar a los mismos niveles de rendimiento que una tarjeta
ISA equivalente. La habilidad para alcanzar este nivel de rendimiento de
un puerto paralelo es una de las mayores ventajas del protocolo EPP.
Con señales de control, la transferencia puede suceder a la velocidad
más lenta de las interfaces, los adaptadores de red o los dispositivos
periféricos. Esta propiedad de adaptación a la velocidad es transparente
tanto para el ordenador como para el periférico. Todos los modos de
transferencia del 1284 están implementados con señales de control.
Como se mencionó anteriormente, los dispositivos EPP pre-12844 se
desviaron del protocolo 1284. Al principio del ciclo, nDataStrobe o
nAddrStrobe deberían conceder prioridad al estado de la señal nWAIT. Esto
significa que el periférico no puede mantener cerrado el comienzo del
ciclo manteniendo nWAIT desactivado. Esto es denominado en la mayoría de
las ocasiones como EPP 1.7, en referencia a la versión 1.7 de Xircom. Esta
es la versión que Intel implementó en el original controlador de e/s
82360. Un periférico compatible 1284 EPP trabajará correctamente con un
adaptador EPP 1.7, pero un periférico EPP 1.7 puede no operar
correctamente con una interfaz 1284.
Composición del
registro EPP
La visión más simple a nivel de software del EPP es que es una
extensión de las definiciones del registro estándar para puerto paralelo.
A grosso modo el SPP consiste en tres registros, que parten de la
dirección del puerto base estándar: Puerto de datos, puerto de estado, y
puerto de control. La mayoría de las implementaciones EPP expanden esto
para emplear puertos no definidos por el SPP. Vea la tabla 2.
Tabla 2 Composición de Registros EPP
|
Nombre del puerto |
Offset |
Modo |
Lectura / Escritura |
Descripción |
|
SPP Puerto de datos |
+0 |
SPP / EPP |
E |
Puerto estándar SPP. Sin autocontrol. |
|
SPP Puerto de estado |
+1 |
SPP / EPP |
L |
Lectura de las líneas de estado procedentes del
interfaz. |
|
SPP Puerto de control |
+2 |
SPP / EPP |
E |
Posiciona el estado de las líneas de control de salida. |
|
EPP Puerto de dirección |
+3 |
EPP |
L/E |
Genera un ciclo de lectura o escritura de dirección
controlada. |
|
EPP Puerto de datos |
+4 |
EPP |
L/E |
Genera un ciclo de lectura o escritura de datos
controlada. |
|
No definido |
+5 a +7 |
EPP |
N/A |
Empleado de forma diferente según la implementación. Puede ser
usada para E/S de 16 o 32 bits. |
Generando una simple instrucción de escritura a E/S hacia "dirección
base + 4", el controlador EPP generará las señales de control necesarias y
esperas para transferir el dato empleando un ciclo de escritura EPP. Las
instrucciones de E/S a las direcciones base, puertos 0 a 2, causarán el
mismo efecto que en un puerto estándar paralelo. Esto garantiza
compatibilidad con el puerto paralelo estándar y sus periféricos. Los
ciclos de dirección son generados cuando las operaciones de lectura o
escritura a E/S son a "dirección base + 3".
Modo ECP Este modo es muy similar al EPP. La mayor diferencia es que emplea
compresión de datos mediante algoritmo RLE, por lo que se hace ideal para
la comunicación con impresoras láser y scanners.
No entraremos a detallar este modo, ya que no es muy empleado salvo en
los mencionados periféricos.
Negociación del
modo 1284 a emplear
Los periféricos no tienen porqué implementar todos los modos de
transferencia. Por tanto, se necesita un método para determinar las
posibilidades del periférico conectado y una forma de situarlo en uno de
esos modos.
El concepto de negociación fue desarrollado para esta necesidad. La
negociación es una secuencia de eventos en la interfaz del puerto paralelo
que no influyen en antiguos dispositivos, pero proporcionan la posibilidad
de identificar un periférico 1284 y que este responda para poder situarlo
en un modo soportado.
Durante la fase de negociación, el ordenador hace una llamada en las
líneas de datos y comienza la secuencia de negociación. La llamada puede
ser para colocar el interfaz en un modo particular, o para preguntar al
dispositivo su identificación. Los identificativos serán tratados más
tarde.
El byte de extensión es empleado durante la negociación para situar al
periférico en un determinado modo de transferencia, o para pedir que el
periférico mande su identificativo y así permitir identificar el tipo de
periférico conectado. El identificativo puede ser retornado en cualquier
modo de canal inverso que no sea el EPP. La tabla 3 describe el byte de
extensión y sus posibles valores. Un nivel alto (Xflag) es empleado por el
periférico para dar conocimiento de que el modo solicitado está
disponible. El nivel debe estar siempre alto como conocimiento afirmativo
para todas las peticiones salvo para el modo Nibble de canal inverso.
Todos los dispositivos compatibles 1284 deben soportar el modo Nibble de
canal inverso. La petición de enlace extendido es empleada para
proporcionar una forma de futura expansión y adicionales nuevos modos de
operación y características.
Tabla 3 – Valores del byte de extensión
|
Bit |
Descripción |
Valores válidos de Bit (8765 4321) |
|
8 |
Petición de enlace extendido |
1000 0000 |
|
7 |
Petición de modo EPP |
0100 0000 |
|
6 |
Petición de modo ECP con RLE |
0011 0000 |
|
5 |
Petición de modo ECP sin RLE |
0001 0000 |
|
4 |
Reservado |
0000 1000 |
|
3 |
Petición de identificativo |
Retorno de datos empleando:
|
Modo Nibble |
0000 0100 |
|
Modo Byte |
0000 0101 |
|
Modo ECP sin RLE |
0001 0100 |
|
Modo ECP con RLE |
0011 0100 | |
|
2 |
Reservado |
0000 0010 |
|
1 |
Modo Byte |
0000 0001 |
|
- |
Modo Nibble |
0000 0000 |
Fases de la negociación 1284:
-
El ordenador sitúa el byte de extensión pedido en las líneas de
datos.
-
El ordenador entonces sitúa nSelectIn a nivel alto y nAutoFeed bajo
para indicar una secuencia de negociación.
-
Un periférico 1284 responde situando nAck bajo, y nError, PE y
Select alto. Un periférico no-1284 no respondería.
-
El ordenador situa nStrobe bajo. Esto es empleado para introducir el
byte de extensión en el periférico.
-
El ordenador entonces coloca nStrobe y nAutoFeed a nivel alto para
señalar al periférico que lo reconoce como un dispositivo 1284.
-
El periférico responde situando PE a nivel bajo, nError bajo si
posee un canal de datos reversible disponble, y Select alto si el modo
pedido está disponible, o Select bajo si el modo requerido no está
disponible.
-
El periférico ahora activa nAck a nivel alto para indicar que la
secuencia de negociación ha finalizado y las líneas de señal están
situadas de forma compatible con el modo requerido.
Conectores
El estándar identifica tres tipos de conectores para el interfaz 1284:
-
1284 Tipo A: 25 pin DB25.
-
1284 Tipo B: 36 conductor, .085 (conector champ).
-
1284 Tipo C: 36 conductor, .050 (conector mini).
Asignación de puertos
de e/s en el PC
NOTA: sólo las primeras 10 líneas de dirección son empleadas para
operaciones de e/s. Esto nos limita el espacio direccionable para e/s
desde la dirección 000 (hexadecimal) hasta la 3FF. Algunos sistemas
permiten emplear 16 bits para direccionar e/s, pero están limitados debido
a que algunas tarjetas sólo decodifican 10 de esos 16 bits.
|
Puerto (hex) |
Asignación |
|
000-00F |
Controlador DMA |
|
010-01F |
Controlador DMA (PS/2) |
|
020-02F |
Controlador maestro programable de interrupciones (PIC) |
|
030-03F |
PIC esclavo |
|
040-05F |
Temporizador programable de intervalos (PIT) |
|
060-06F |
Controlador del teclado |
|
070-071 |
Reloj en tiempo real |
|
080-083 |
Registro de página DMA |
|
090-097 |
Seleccionador programable de opciones (PS/2) |
|
0A0-0AF |
PIC #2 |
|
0C0-0CF |
DMAC #2 |
|
0E0-0EF |
reservado |
|
0F0-0FF |
Coprocesador matemático, controlador de disco PCJr |
|
100-10F |
Seleccionador programable de opciones (PS/2) |
|
110-16F |
LIBRE |
|
170-17F |
Disco duro 1 (AT) |
|
180-1EF |
LIBRE |
|
1F0-1FF |
Disco duro 0 (AT) |
|
200-20F |
Adaptador de juegos (Joystick) |
|
210-217 |
Puertos de trajetas de expansión |
|
220-26F |
LIBRE |
|
278-27F |
Puerto paralelo 3 |
|
280-2A1 |
LIBRE |
|
2A2-2A3 |
Reloj |
|
2B0-2DF |
EGA/Video |
|
2E2-2E3 |
Adaptador de adquisición de datos (AT) |
|
2E8-2EF |
Puerto serie COM4 |
|
2F0-2F7 |
Reservado |
|
2F8-2FF |
Puerto serie COM2 |
|
300-31F |
Adaptador de prototipos, periscopio para depurar hardware
(Debugger) |
|
320-32F |
LIBRE |
|
330-33F |
Reservado para XT/370 |
|
340-35F |
LIBRE |
|
360-36F |
Red (network) |
|
370-377 |
Controlador de disco flexible |
|
378-37F |
Puerto paralelo 2 |
|
380-38F |
Adaptador SDLC |
|
390-39F |
Adaptador de Cluster |
|
3A0-3AF |
reservado |
|
3B0-3BF |
Adaptador monocromo |
|
3BC-3BF |
Puerto paralelo 1 |
|
3C0-3CF |
EGA/VGA |
|
3D0-3DF |
Adaptador Gráfico en Color (CGA) |
|
3E0-3EF |
Puerto serie COM3 |
|
3F0-3F7 |
Controlador de disco flexible |
|
3F8-3FF |
Puerto serie COM1 |
Las tarjetas Soundblaster suelen emplear los puertos de e/s
220-22F. Las tarjetas de adquisición de datos emplean frecuentemente
las direcciones 300-31F.
Diagrama de
tiempos de acceso a memoria o e/s de 8 bits
Se muestran 4 ciclos de espera (W1 a W4):
__ __ __ __ __ __ __
CLK ___| |___| |___| |__| |___| |___| |___| |__
W1 W2 W3 W4
__
ALE _______| |_______________________________________
AEN __________________________________________________
______________________________________
A0-A19 ---------<______________________________________>-
_____________ _____
Línea de comando |______________________________|
(IOR,IOW,
MEMR, o MEMW)
_____
D0-D7 ---------------------------------------<_____>----
(Lectura)
___________________________________
D0-D7 ---------<___________________________________>----
(Escritura)
ALE se pone a nivel lógico alto (1) y la dirección aparece en A0 a A19.
El dispositivo esclavo debe leer la dirección durante el flanco de bajada
de ALE, y la dirección en A0 a A19 permanece válida hasta el final del
ciclo de transferencia. Notar que AEN permanece a nivel bajo durante todo
el ciclo de transferencia.
La línea de comando es puesta a nivel bajo (IOR o IOW para e/s, MEMR p
MEMW para memoria, lectura y escritura respectivamente). Para operaciones
de escritura, los datos permanecen en D0 a D7 hasta el resto del ciclo de
transferencia. Para operaciones de lectura, los datos deben ser válidos en
el flanco de bajada del último ciclo.
CARD SLCTD se emplea en la mitad de cada ciclo de espera. Si está a
nivel bajo, el ciclo de transferencia termina sin más ciclos de espera.
I/O CHRDY se emplea en la primera mitad de cada ciclo de espera. Si está a
nivel bajo, más ciclos de espera serán introducidos.
Por defecto el ciclo de transferencia de 8 bits posee 4 ciclos de
espera. La mayoría de las BIOS del ordenador pueden cambiar el número de
ciclos de espera.
Diagrama de
tiempos de acceso a memoria o e/s de 16 bits
Se muestra 1 ciclo de espera:
__ __ __ __ __ __
CLK ___| |___| |___| |__| |___| |___| |_
AEN [2] __________________________________________
_____________
A17-A23 -------<_____________>-[1]-----------------
__
ALE ______________| |________________________
________________ _______
SBHE |__________________|
__________________
A0-A19 ---------------<__________________>-------
_________________ ____________________
MEM CS16 |____|
* * [4]
_________________ ___________
I/O CS16 [3] |_____________|
*
_________________ ___________
Linea de comando |____________|
(IOR,IOW,
MEMR, o MEMW)
____
D0-D7 ---------------------------<____>---------
(Lectura)
______________
D0-D7 -----------------<______________>---------
(Escritura)
Un asterisco (*) indica el punto donde la señal es tomada.
[1] La porción de direccionamiento del bus de extensión de 16 bits para
el siguiente ciclo puede ser puesto ahora en el bus. Esto se emplea para
que las tarjetas puedan comenzar a decidificar la dirección más
rápidamente. Para ello el este tipo de acceso debe estar activado
(pipeline).
[2] AEN se mantiene bajo durante todo el ciclo de transferencia,
indicando que un ciclo normal (no DMA) está produciéndose.
[3] Algunos controladores de bus presentan esta señal durante el mismo
ciclo de reloj que MEM CS16, en vez de durante el primer ciclo de espera,
como se muestra en el diagrama. En este caso, I/O CS16 necesita ser puesto
a nivel bajo tan pronto como la dirección ha sido decodificada, lo sual
sucede antes que la activación de las líneas de comando.
[4] MEM CS16 es tomada una segunda vez, en caso que el adaptador no
active la señal a tiempo durante la primera vez (normalmente debido a que
el dispositivo no está monitorizando el bus de 16 bits para tomar el
direccionamieto rápido, o está esperando al flanco de bajada de la señal
ALE).
Las transferencias de 16 bits siguen los mismos tiempos básicos que las
transferencias de 8 bits. Un direccionamiento válido debe aparecer en el
bus de extensión de 16 bits antes del comienzo del ciclo de transferencia,
De lo contrario el bus extendido de 16 bits no es direccionado, y no es
válido para el resto del ciclo de transferencia (en la mayoría de los
ordenadores). El bus extendido de 16 bits debería ser direccionado en el
flanco de bajada de ALE. Hay que mencionar que en algunos sistemas, el bus
extendido de 16 bits sigue los mismos tiempos que el bus de 8 bits. En
ambos sistemas, una dirección válida debe estar presente en el bus en el
flanco de bajada de ALE.
Las tarjetas de expansión de e/s no necesitan monitorizar el bus
extendido de 16 bits o ALE, ya que el espacio de direccionamiento de e/s
siempre está dentro del rango del bus de 8 bits.
SBHE será puesta a nivel bajo por la placa base, y la tarjeta de
expansión debe responder con I/O CS16 o MEM CS16 en el momento apropiado,
o realizar dos transferencias separadas de 8 bits. Muchos sistemas esperan
a I/O CS16 o MEM CS16 antes que las líneas de comandos sean válidas. Esto
requiere que I/O CS16 o MEM CS16 sean puestas a nivel bajo tan pronto como
la dirección sea decodificada (antes que se sepa si el ciclo es de e/s o
memoria). Si el sistema comienza un ciclo de memoria, ignorará I/O CS16 (y
viceversa para ciclos de e/s con MEM CS16).
Para operaciones de lectura, los datos son tomados en el flanco de
subida del último ciclo de reloj. Para operaciones de escritura, los datos
válidos aparecen en el bus antes del final del ciclo, como es mostrado en
el diagrama de tiempos. Mientras que el diagrama indica que los datos
necesitan ser tomados en el flanco de subida, en la mayoría de los
sistemas permanecen válidos durante todo el ciclo de reloj.
Para transferencias de 16 bits se toma por defecto un tiempo de espera
de 1 ciclo de reloj. Esto puede ser acortado o alargado de la misma forma
que las transferencias de 8 bits, mediante las señales CARD SLCTD y I/O
CHRDY. Mucho sistemas solo permiten dispositivos de memoria de 16 bits (y
no dispositivos de e/s) para transferir empleando 0 ciclos de espera (CARD
SLCTD no tiene efecto en los ciclos de e/s de 16 bits).
Las señales MEMR/MEMW presentes en el bus de 16 bits siguen los mismos
tiempos que las presentes en el bus de 8 bits cuando el direccionamiento
está dentro del primer megabyte de memoria. Si el direccionamiento es
mayor (por encima del primer megabyte), las señales MEMR/MEMW del bus de 8
bits permanecen a nivel alto durante el resto del ciclo. |