Los puertos paralelo y serie El puerto paralelo Introducción El puerto paralelo adapta la velocidad del ordenador a la del periférico (es más lento), y establece un control de flujo hardware para que el ordenador no inunde de información al periférico. Mediante el puerto paralelo se puede establecer un mayor control por parte del ordenador sobre el periférico. En cambio, en el puerto serie la velocidad esta preestablecida y no existe tanto control como con el puerto serie. Conexión física del puerto El interfaz puerto paralelo se basa en un conector hembra de 25 pins. La tabla 1 muestra las líneas del puerto paralelo y su significado lógico en una conexión PC-impresora: Pin del ordenador Nombre Línea Significado 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18-25 STROBE D0 D1 D2 D3 D4 D5 D6 D7 ACK BUSY PE SLCT AUTO FEED ERROR INIT SLCT IN GND Indica Transmisión Línea de datos Bit 0 Línea de datos Bit 1 Línea de datos Bit 2 Línea de datos Bit 3 Línea de datos Bit 4 Línea de datos Bit 5 Línea de datos Bit 6 Línea de datos Bit 7 Ultimo carácter aceptado Impresora ocupada Impresora sin papel Impresora en ON LINE CR Automático después de LF Error en la transmisión de datos Realizar reset de la impresora Activar ON LINE en la imp. Masa Como se puede observar en la tabla existen una serie de líneas de datos las cuales son unidireccionales, es decir, solo son de salida del ordenador hacia la impresora, y una serie de líneas de control que nos permiten un intercambio de información entre el ordenador y el periférico, pero las líneas de control impresora-ordenador son sólo cinco. Aquí se nos presenta un problema, el intercambio de información entre ordenadores a través del puerto paralelo, el cual resolveremos en el siguiente artículo. Programación del puerto El puerto paralelo se puede programar mediante un acceso a la BIOS del PC o mediante la programación directa del puerto. Cualquiera de las dos opciones es totalmente correcta pero nosotros nos hemos decantado por la de más fácil implementación, la programación directa. En la programación directa del puerto, lo único que realizamos es un acceso a las direcciones de dicho puerto. Estas direcciones son las siguientes : Dirección Puerto 3BCh - 3BFh Puerto paralelo en la tarjeta MDA * 378h - 37Fh Primer puerto paralelo 278h - 27Fh Segundo puerto paralelo (*) La tarjeta MDA es una tarjeta de vídeo monocroma en la cual la lógica de vídeo poseía también un puerto paralelo. Este tipo de tarjetas prácticamente, ya no se utiliza. El acceso a las direcciones del puerto se puede realizar, por ejemplo, mediante la instrucción outportb u outport del lenguaje C. Una vez realizado el acceso a un registro del puerto podremos leerlo y/o escribirlo dependiendo lo que nos permita realizar cada puerto como se puede observar en el siguiente apartado. Los registros del puerto El puerto paralelo presenta 3 registros accesibles por el programador : Primer registro del puerto paralelo. Este primer registro es el registro de datos, solo de escritura, en el cual introducimos el byte que queremos que aparezca en las líneas de datos D0-D7 (pins 2-9). Segundo registro del puerto paralelo. Este registro corresponde al que nosotros podemos llamar registro de control de entrada, debido a que en este registro se activan los bits de ERROR, SCLT, PE, ACK y BUSY, si alguno de los pins a los cuales estan ligados esta en nivel alto (o nivel bajo dependiendo si es o no negado), esto se puede observar en la figura 2. Este registro es solo de lectura, es decir, no se puede variar este registro por software. Tercer registro del puerto paralelo. Este registro al igual que el anterior corresponde a un registro de control, pero este registro es de salida, es decir, al variar uno de estos bits, también se varía el nivel del pin del conector, un ejemplo estaría en la señal de -STROBE, si en el registro ponemos este bit a 0, en el pin 1 del conector el nivel será de 1 (5 V) ( pasa lo mismo en el caso del registro de datos). Este registro se puede leer y variar por Software. El puerto serie Introducción El puerto serie de un ordenador es un adaptador asíncrono utilizado para poder intercomunicar varios ordenadores entre sí. Un puerto serie recibe y envía información fuera del ordenador mediante un determinado software de comunicación o un driver del puerto serie. El software envía la información al puerto carácter a carácter, conviertiéndolo en una señal que puede ser enviada por un cable serie o un módem. Cuando se ha recibido un carácter, el puerto serie envía una señal por medio de una interrupción indicando que el carácter está listo. Cuando el ordenador ve la señal, los servicios del puerto serie leen el carácter. Conectores En nuestros PC's, se emplea como conector del interface serie un terminal macho al que llamaremos DTE (Data Terminal Equipment) que, a través de un cable conectamos a un periférico que posee un conector hembra al que llamaremos DCE (Data Comumunications Equipment). En nuestro terminal DTE, tenemos las siguientes conexiones (para un conector DB-25): PIN Nombre Dirección Función 1 P.G. -- Tierra de seguridad 2 TD -->DCE Salida datos DTE 3 RD -->DTE Entrada de datos DTE 4 RTS -->DCE Petición de emisión DTE 5 CTS -->DTE Listo para trasmitir DCE 6 DSR -->DTE CE listo para com. con DTE 7 GND -- Masa común del circuito 8 DCD -->DTE Detección de portadora 20 DTR -->DCE Señal de terminal disponible 23 DSRD <--> Indicador de velocidad de Tx. Direcciones El puerto serie utiliza direcciones y una línea de señales, un IRQ para llamar la atención del procesador. Además el software de control debe conocer la dirección. La mayoría de los puertos series utilizan direcciones standard predefinidas. Éstas están descritas normalmente en base hexadecimal. Cuando se instala un nuevo puerto, normalmente se mueve un jumper o switch para seleccionar un puerto (COM1, COM2, COM3, etc., con lo que se asigna una dirección y una interrupción usada por la tarjeta del puerto. Las direcciones e IRQ usadas por los puertos serie fueron definidas al diseñar el ordenador originalmente ; sin embargo, las del COM3 y COM4 no se han definido oficialmente, aunque están aceptadas por convenios. Las señales son: Dirección Interrupción (IRQ) COM1 3F8 4 COM2 2F8 3 COM3 3E8 4 COM4 2E8 3 Se pueden añadir gran cantidad de puertos serie a un PC, ya que existe gran flexibilidad a la hora de definir direcciones no standard, siempre que se encuentren entre el rango 100 y 3FF hexadecimal y siempre que no entren en conflicto con otros dispositivos. Los ordenadores IBM PS/2 usan la Microchannel Architecture, que define las direcciones e IRQs para los puertos desde COM1 a COM8: Dirección Interrupción (IRQ) COM1 3F8 4 COM2 2F8 3 COM3 3E8 4 COM4 2E8 3 COM5 COM6 4220 4228 3 3 COM7 5220 3 COM8 5228 3 Tipos de puertos serie Hay muchos tipos de puertos serie, que están definidos normalmente por el tipo de UART (Universal Asynchronous Receiver / Transmitter, Receptor/Transmisor Asíncrono Universal) usado por el puerto serie. El UART es un chip del puerto serie que convierte los datos de formato paralelo utilizados por el PC en datos de formato serie para su envío. A continuación se enumeran los diferentes tipos de UARTs existentes : UART's sin buffer: Los UARTs sin buffer fueron diseñados cuando los módem más rápidos transmitían a 1200 bps. No tienen buffer de carácter extra en el UART, por lo que dependen del procesador para borrar cada carácter enviado por el módem antes de que el siguiente carácter sea enviado. Los UARTs sin buffer comprenden las series 8250, el 16450 y el original 16550. UART's con buffer: Los UARTs con buffer han sido diseñados como apoyo a los módem rápidos de la actualidad. El UART original con buffer es el 16550A, que puede acumular 16 caracteres en un buffer antes de que el procesador lea el dato. Esto hace que el software del PC tenga una mayor facilidad para comunicarse con el módem, creándose menos errores y una mayor velocidad de transmisión. Otros tipos Pequeños puertos serie Existen algunas tarjetas diseñadas específicamente para dotar de un puerto serie de alta velocidad para comunicaciones. Estas tarjetas tienen un microprocesador en su interior que asiste al PC en las comunicaciones. Además, disponen de un modo de transferencia de datos de alta velocidad que es mucho más eficiente que el interface de puerto serie normal. Estas tarjetas necesitan unos drivers especiales para su uso, pero también disponen de un interface standard de puerto serie por motivos de compatibilidades. Hayes ESP-I y ESP-II Hayes ha introducido tres diferentes tipos de "Enhanced Serial Ports", o tarjeta ESP. La original tarjeta ESP (ESP-I) es una tarjeta "full-length 8-bit" con dos 16550A puertos serie y un procesador que tiene en cuenta las transmisiones entre el puerto original y el procesador. Esta tarjeta no es soportada por Windows ni OS/2, por lo que se hace necesario el uso del puerto standard. La tarjeta ESP-II está disponible con un o dos puertos serie. Este producto reemplazó al modelo original y dispone de drivers para diferentes entornos al mismo tiempo,, e incluso reciente Hayes ha introducido un driver para Windows 95. Practical Peripherals High Speed Serial Port HSSP Un Practical Peripheral High Speed Serial Port (HSSP) es una versión mejorada de la tarjeta Hayes ESP-II, y es idéntica en su construcción a la ESP-II. Tiene los drivers que la ESP-II. El T/Port El T/Port de Telcor Systems, Inc. es una tarjeta especial que incluye un microprocesador y es utilizada para la comunicación con un host durante un tiempo elevado. El T/Port mejora el funcionamiento del ordenador, especialmente cuando opera bajo Windows u OS/2. Presenta una emulación del interface 16450. Otros tipo de puertos serie Algunos módem internos utilizan chips con la apariencia de un 16450 UART, pero realmente son procesadores simulando ese UART. Otros módem, también disponen de un segundo buffer que aumenta la capacidad del principal y ofrece una considerable protección ante caracteres perdidos (overrun errors).