Explications sur les différents ports

URL: http://www.poirrier.be/~jean-etienne/notes/structordi/ports/parallele.php

Dernière mise à jour : 31 janvier 2005


[Vue générale de (presque) tous les ports]
Figure 0.1. Vue générale de (presque) tous les ports

2. Port parallèle

Lorsqu'IBM a lancé son Personal Computer, il lui fallait un connecteur pour se brancher sur une imprimante. A l'époque, le leader des imprimantes était Centronics et IBM voulait que ses PC fonctionnent avec ces imprimantes. Mais, au lieu de "simplement" utiliser la même interface (36 connecteurs), IBM a conçu son propre port à 25 connecteurs (DB-25). Ainsi, on a ces câbles "imprimante", "hybrides" entre un Centronics du côté imprimante et un DB-25 du côté PC.

Dans une communication parallèle, les données sont transférées de l'émetteur au receveur par groupe de 8 bits, à travers 8 lignes (ou circuits). La transmission va ainsi très vite (beaucoup plus vite qu'en série) mais les prises sont plus encombrantes et, du fait que le protocole de communication parallèle a été étendu (voir EPP et ECP ci-dessous), les périphériques peuvent contenir plus d'électronique (i.e. être plus chers) pour implémenter ce protocole.

2.1. Principe de communication

Le standard IEEE 1284 (1994) définit 5 mode d'opération pour un port parallèle :

  1. Le mode compatible (Compatibility Mode, SPP)
  2. Le mode Nibble (Nibble Mode)
  3. Le mode Byte (Byte Mode)
  4. Le mode Port Parallèle Amélioré (EPP)
  5. Le mode Port aux Capacités Etendues (ECP)

2.1.1. Port Parallèle Standard (SPP)

Le protocole standard (SPP, Standard Parallel Port) a été défini comme tel par après, lors de la définition de l'EPP (voir ci-dessous).

2.1.1.1. Mode Compatible

En SPP, lorsque le PC envoie des données par le port parallèle (mode compatible : du PC vers le périphérique), il envoie 8 bits de données à la fois (8 bits transmis en parallèle).

La vitesse élevée est également obtenue par le fait que les données circulent en parallèle dans le bus du PC et qu'elles ne doivent donc pas être ré-arrangées pour être envoyée en série.

Comme le port parallèle a été conçu pour communiquer avec une imprimante, voyons ce qui se passe quand on veut imprimer ...

L'ordinateur sait que l'imprimante est allumée parce qu'il reçoit une tension constante de 5 volts sur le connecteur 13 (online). Quand le PC veut commencer une impression, il initialise l'imprimante en diminuant la tension du connecteur 16 (Initialize). Le PC demande à l'imprimante de charger du papier en envoyant une tension (5 volts) sur le connecteur 14 (auto-feed).

Pour envoyer des données, le PC écrit ces données via les connecteurs 2 à 9 (un "1" met la tension à 5 volts ; un "0" met la tension à ... 0 volts !). Le PC vérifie si l'imprimante est occupée (connecteur 11). Si l'imprimante est prête, l'ordinateur diminue alors la tension à 0.5 volts sur le connecteur 1 (strobe, sinon la tension dans ce connecteur est maintenue entre 2.8 et 5 volts). Cela donne le signal à l'imprimante pour collecter les données sur les connecteurs 2 à 9. Le PC remonte tout de suite (après environ 5 microsecondes) la tension sur le connecteur 1 à 5 volts.

Le PC sait que les données ont été reçues car l'imprimante diminue la tension sous les 0.5 volts dans le connecteur 10 (acknowledge, normalement maintenu à 5 volts, comme le connecteur 1) lorsque les données ont été effectivement reçues.

Plusieurs problèmes peuvent se produire, certains d'entre eux sont indiqués au niveau des connecteurs. Les connecteurs restant servent pour la terre (voir connecteurs et assignation ci-dessous).

2.1.1.2. Mode Unidirectionnel

Au début, les données ne pouvaient aller que dans un seul sens : du PC vers le périphérique. On dit que le protocole est unidirectionnel. Mais, très vite, le protocole a ajouté la possibilité d'envoyer les données dans les deux sens (PC <-> périphérique) : il est devenu bi-directionnel. Afin d'envoyer des données du périphérique vers le PC, il faut changer de mode (pour rappel, du PC vers le périphérique, c'est le mode compatible).

2.1.1.3. Modes Bi-directionnel : Nibble et Byte

Au début du bi-directionnel, les données allaient dans les 2 sens mais sur les mêmes connecteurs (2 à 9). La communication ne pouvait se faire que dans un seul sens à la fois (half-duplex). Pour envoyer des données vers le PC en half-duplex, le protocole change pour le mode Nibble, où il envoie un nibble (4 bits) en sens inverse.

Par la suite, on a utilisé les connecteurs 18 à 25 comme second canal de communication. Ainsi, on pouvait envoyer des données dans un sens sur les connecteurs 2 à 9 et, en même temps, dans l'autre sens, sur les connecteurs 18 à 25 (communication full-duplex). Pour envoyer des données vers le PC en full-duplex, le protocole change pour le mode Byte, où il envoie un byte (8 bits) en sens inverse.

2.1.1.4. Vitesse

En SPP, le port peut envoyer de 50 à 100 kilobytes de données par seconde.

2.1.2. Port Parallèle Amélioré (EPP)

Devant les limitations du SPP, Intel, Xircom et Zenith ont développé l'EPP (Enhanced Parallel Port, 1991). La principale amélioration a été le débit : on est maintenant à 500 kbytes à 2 Mb par seconde. La cible est principalement les périphériques autres que les imprimantes, comme les périphériques de stockage qui nécessitent des taux de transfert les plus haut possible.

EPP augmente sa vitesse en laissant au matériel le soin de vérifier si l'imprimante est occupée et de générer le strobe adéquat ou le handshaking (accordage des paramètres entre les 2 machines). Ainsi, en sortant ces étapes du protocole, une seule instruction a besoin d'être envoyée.

Le protocole EPP est compatible avec le protocole standard (backwards compatible) : on pourra utiliser un périphérique ne comprenant que le protocole standard en lui donnant une partie des instructions du protocole EPP.

2.1.3. Port aux Capacités Etendues (ECP)

Pas encore contents du EPP, Microsoft et Hewlett Packard ont créé l'ECP (Extended Capabilities Port, 1992) pour donner encore plus de vitesse et de fonctionnalités aux imprimantes, cette fois. ECP utilise deux modes de communication : un mode bi-directionnel rapide et un mode bi-directionnel encore plus rapide (en compressant les données). Le protocole ECP est compatible avec le protocole standard (backwards compatible).

La vitesse est augmentée de plusieurs manières :

  • en prenant avantage des canaux DMA (accès direct à la mémoire) et des tampons FIFO.
  • en compressant les données à transmettre avec la méthode RLE (Run Length Encoding)
La compression RLE est un système de compression simple des données, au niveau des bytes. Elle va compresser de manière efficace les longues séquences du même byte en utilisant un code à 2 bytes : le byte répété et un byte pour le nombre de répétition. Ces 2 bytes sont transmis via le port parallèle. Le nombre de répétition est de maximum 128 bytes (pour que ce nombre puisse tenir dans le byte transmis). Cela signifie que la compression maximum est de 64:1. Cette méthode est bonne pour les images qui contiennent souvent de longues séries des mêmes bytes mais cette méthode est assez mauvaise pour un texte.

De plus, un seul port ECP peut accepter plusieur périphériques (maximum 128). Pour accomplir cette tâche, le port utilise son propre schéma d'adressage, il envoie la commande d'adresse de canal (channel address command) sur les connecteurs de données. En faisant cela, le port dit à tous les périphériques sauf celui à qui est destiné les données d'ignorer les données qui vont suivre. Si aucune commande d'adresse de canal n'est envoyée avant les données, celles-ci sont destinées au périphérique à l'adresse 0, par défaut.

2.1.4. Et comment on choisi son mode ?

Les modes SPP, EPP et ECP ont été officialisé dans une norme IEEE (1284, en 1994). Ainsi, pour fonctionner avec une norme, autant l'ordinateur que le périphérique doivent supporter les spécifications de cette norme. Cà paraît évident mais, avant, tous les systèmes d'exploitation ne le permettait pas. Maintenant, tous les systèmes détectent quel mode doit être utilisé. Ainsi, si on veut spécifiquement choisir un mode, on peut le faire aussi via le BIOS.

2.2 Matériel

Derrière les ordinateurs, le port parallèle contient 25 connecteurs.

[Port parallèle derrière un PC]
Figure 2.1. Port parallèle (femelle) derrière un PC

2.2.1. Connecteurs et assignation

[Port parallèle femelle, derrière un PC]
Figure 2.2. Port parallèle femelle, derrière un PC

[Port parallèle mâle, côté câble vers imprimante]
Figure 2.3. Port parallèle mâle, côté câble vers imprimante

Ce qui suit est l'assignation SPP :

db25centronic 36 pin
connecteurnom du signalconnecteurnom du signal
1strobe-1strobe
2data 0-2data 0
3data 1-3data 1
4data 2-4data 2
5data 3-5data 3
6data 4-6data 4
7data 5-7data 5
8data 6-8data 6
9data 7-9data 7
10acknowledge-10acknowledge
11busy-11busy
12paper end-12paper end
13select-13select
14auto feed-14auto feed
15error-15nc
16init-16nc
17select in-17nc
18ground-18nc
19ground-19ground
20ground-20ground
21ground-21ground
22ground-22ground
23ground-23ground
24ground-24ground
25ground-25ground
26ground
27ground
28ground
29ground
30ground
31init
32error
33ground
34nc
35nc
36select in

Outre les connecteurs déjà cités (voir port parallèle standard ci-dessus), voici la signification des quelques connecteurs qui restent :

  • connecteur 11 (busy) : si l'imprimante est occupée, elle va mettre 5 volts sur ce connecteurs. Quand elle sera prête, elle va diminuer la tension à 0.5 volts
  • connecteur 12 (out of paper) : s'il n'y a plus de papier dans l'imprimante, elle enverra 5 volts sur ce connecteur (aussi longtemps qu'il n'y a plus de papier)
  • connecteur 15 (problems) : tout problème à l'imprimante diminue la tension à 0.5 volts, pour indiquer à l'ordinateur que quelque chose ne va pas
  • connecteur 17 (offline) : tant que le PC enverra 5 volts sur ce connecteur, l'imprimante sera éteinte (à distance, donc)
  • connecteurs 18 à 25 sont reliés à la terre (cas communication uni-directionnelle) et servent de références pour la basse tension (0.5 volts) ; dans le cas des communication bi-directionnelle, ces connecteurs servent à envoyer des données

[Signal absence de papier sous MS-Windows XP]
Figure 2.4. C'est le connecteur 12 qui va indiquer au système d'exploitation qu'il n'y a plus de papier dans l'imprimante.

En EPP, les connecteurs diffèrent peu :

connecteurnom du signalconnecteurnom du signalconnecteurnom du signal
1write10interrupt19ground
2data 111wait20ground
3data 212spare21ground
4data 313spare22ground
5data 414data strobe23ground
6data 515spare24ground
7data 616reset25ground
8data 717address strobe
9data 818ground

En ECP, par contre, les connecteurs changent de nom (et donc de fonction) :

connecteurnom du signalconnecteurnom du signalconnecteurnom du signal
1HostCLK10PeriphCLK19ground
2data 111PeriphACK20ground
3data 212nAckReverse21ground
4data 313X-Flag22ground
5data 414Host Ack23ground
6data 515PeriphRequest24ground
7data 616nReverseRequest25ground
8data 7171284 Active
9data 818ground

2.3. Jouons avec notre PC

2.3.1. Avec MS-Windows

Sous MS-Windows, les ports parallèles sont nommés LPT1, LPT2, LPT3, etc.

Pour découvrir les ports parallèle qu'on a sous MS-Windows, il faut aller dans le panneau de contrôle, cliquer sur l'icône "Système" et y trouver le "Gestionnaire de périphériques". Dedans, il faut trouver l'entrée "Ports (COM & LPT) et l'étendre. Cela devrait donner à peu près ceci ...

[Ports parallèle sous MS-Windows]
Figure 2.5. Liste de ports parallèle sous MS-Windows (ici, un seul, capable d'ECP)

Pour connaître (et éventuellement modifier) les paramètres d'un port parallèle, il suffit de cliquer sur son item.

2.3.2. Avec GNU/Linux

Sous GNU/Linux, les ports parallèles font partie du répertoire /dev et sont nommés lp0, lp1, lp3, etc.

Références et liens pour approfondir