Introduction
La première interface parallèle a été définie par IBM et était destinée à connecter une imprimante ou un affichage monochrome. Elle est maintenant aussi utilisée dans certains montages simples se branchant sur un PC, et dans sa version la plus évoluée (ECP ou EPP), pour brancher des périphériques plus évolués, comme des scanner.
Le support physique utilisé
Le port parallèle des PC et compatibles se présente sous la forme d'un prise DB25 femelle, alors que côté
imprimante, un connecteur de type Centronics à 36 broches est généralement utilisé.
Ce port ayant été avant tout pensé pour communiquer avec une imprimante, la plupart de ses
signaux ont un rapport avec ce périphérique. Il possède 17 broches utilisables, les broches restantes
étant reliées à la masse.
Broche | Nom | Type | Description | |
---|---|---|---|---|
DB25 | Centronics | |||
1 | 1 | STROBE | S | Un 0 logique (impulsion) doit être envoyé sur cette ligne pour signaler à l'imprimante que des données valides sont présentes sur les lignes D0 à D7. Le signal doit normalement durer au moins 0,5 µs. |
2 | 2 | D0 | S/(E) | C'est le bus de données sur lequel véhicule la valeur à imprimer. On ne peut écrire sur ce port, à moins d'avoir un port parallèle étendu (ECP/EPP). |
3 | 3 | D1 | S/(E) | |
4 | 4 | D2 | S/(E) | |
5 | 5 | D3 | S/(E) | |
6 | 6 | D4 | S/(E) | |
7 | 7 | D5 | S/(E) | |
8 | 8 | D6 | S/(E) | |
9 | 9 | D7 | S/(E) | |
10 | 10 | ACK | E | L'imprimante envoie une impulsion negative sur cette ligne pour indiquer qu'elle a bien reçu le caractère transmis et que la transmission peut continuer. |
11 | 11 | BUSY | E | Cette ligne est mise à 0 par l'imprimante lorsque son buffer de réception est plein. L'ordinateur est ainsi averti que celle-ci ne peut plus recevoir de données. Il doit attendre que cette ligne revienne à 1 pour recommencer à émettre. |
12 | 12 | PE | E | Signifie "Paper End". L'imprimante indique par cette ligne que l'alimentation en papier a été interrompue. |
13 | 13 | SELECT | E | Cette ligne indique à l'ordinateur est "on line" ou "off line". |
14 | 14 | AUTOFEED | S | Lorsque ce signal est à 0, l'imprimante effectue un saut de ligne à chaque caractère CR (Carrier Return = #13) reçu. Dans le cas contraire, le saut de ligne doit être envoyé explicitement par l'ordinateur via le caractère LF (Line Feed = #10). |
15 | 32 | ERROR | E | Cette ligne indique à l'ordinateur que l'imprimante a rencontré une erreur. |
16 | 31 | INIT | S | Un 0 logique (impulsion) peut être envoyé sur cette ligne pour réinitialiser l'imprimante. |
17 | 36 | SELECT IN | S | L'ordinateur peut mettre l'imprimante hors ligne en plaçant un 0 sur cette ligne. Il peut aussi servir à sélectionner un deuxième périphérique si le port parallèle est partagé entre deux péripherique (cas d'un scanner par exemple). |
18-25 | 16, 17, 19-30, 33 |
GND | - | C'est la masse du PC. |
- | 35 | - | - | Mis au +5V par l'imprimante, par l'intermédiaire d'une résistance de 4,7 kohms. |
Attention ! Il s'agit là des signaux envoyés sur les broches du connecteur. L'état d'imprimante est évalué différement lorsqu'il est retourné par l'interruption 17h et lorsqu'il est lu dans les ports d'entrée/sortie. Par exemple, quelques lignes sont inversées par le contrôleur.
L'interruption 17H du BIOS (Port parallèle standard - SPP)
L'interruption 17h du BIOS peut-être utilisée pour contrôler l'interface parallèle. Elle dispose pour celà de trois fonctions :
- 0 : Envoie le caractère contenu dans le registre AL
- 1 : Initialise une imprimante
- 2 : Retourne l'état d'une imprimante
Pour ces trois fonctions, les registres AH et DX sont utilisés de la même manière :
- Entrée :
- AH = numéro de la fonction
- DX = numéro de l'imprimante
- Sortie :
- AH = état de l'imprimante
La première imprimante porte ne numéro 0, la seconde le numéro 1, etc ...
Les trois fonctions retournent l'état de l'imprimante dans le registre AH, dont les indicateurs sont alors les suivants :
Bit | Indicateur d'erreur |
---|---|
0 | 1 = Dépassement de temps imparti ou TIME OUT |
1 | Inutilisé (0) |
2 | Inutilisé (0) |
3 | 1 = Erreur d'E/S (Error) |
4 |
0 = Imprimante OFF-LINE (SELECT)
1 = Imprimante ON-LINE (SELECT) |
5 | 1 = Défaut de papier (PE) |
6 | 1 = Signal de confirmation de réception (ACK) |
7 | 0 =Imprimante occupée (BUSY) |
Lorsqu'aucune erreur n'est détectée, le registre AH retourne la valeur 90h (les bits 4 et 7 sont à 1).
Le bit 0 fournit une information particulière qui n'est pas associée à une ligne de communication. En effet si une erreur est détectée, l'interruption 17h exécute un certain nombre de nouvelles tentatives avant de randre son véritable verdict. Si toutes les tentatives échouent, l'état de l'imprimante est alors retourné dans AH, dont le bit 0 est mis à 1 pour signaler que le temps imparti est dépassé.
Remarquez que l'état des indicateurs ne correspond pas nécessairement à l'état des lignes de communications. En effet, certaines lignes sont inversées par le controleur.
Remarque : Cette interruption est maintenant dépassée, il faut l'utiliser uniquement dans le cadre d'une programmation sous DOS. Dans le cas contraire, il est conseillé d'utiliser la fonction d'impression du système d'exploitation utilisé ou un accès direct à l'interface parallèle via les ports d'entrée/sortie.
Les ports d'entrée/sortie des interfaces parallèles (port parallèle standard - SPP)
Dans beaucoupe de cas, l'interruption 17h ne sera pas suffisante pour piloter un périphérique connecté à l'interface parallèle. Il faut alors gérer directement les ports d'E/S.
Cette interface se programme heureusement de manière très simple : trois registres seulement sont nécessaire au contrôle total des signaux. Si le PC possède plusieurs ports parallèles, il y aura autant de groupe de trois registres que de nombre de port. Le premier port est le port d'émission de donnée. Le second port est un port d'état utilisable uniquement en lecture, et le troisième port est un port de contrôle.
En général, la première imprimante est associée au ports 378h à 37Ah, la seconde aux ports 278h à 27Ah et la troisième au ports 3BCh à 3BEh. Néanmoins, ces valeurs ne sont pas universelles. Pour en connaître la valeur, le BIOS possède une table à l'adresse 0040h:0008h comportant les adresse de base des trois interface parallèles :
- 0040h:0008h : port de base du port parallèle n°1 (zéro si inexistant)
- 0040h:000Ah : port de base du port parallèle n°2 (zéro si inexistant)
- 0040h:000Ch : port de base du port parallèle n°3 (zéro si inexistant)
En supposant que le port d'émission de donnée du premier port parallèle est 378h, alors le port 379h correspondra au port d'état et 37Ah au port de controle.
Les adresses ci-dessus sont remplies par le POST (Power On Self Test) au démarrage de l'ordinateur. Le POST ne laisse jamais d'intervalle. Les numéros des ports parallèles peuvent être redéfinis en changeant ces valeurs.
Le port d'émission de donnée
L'octet à envoyer vers l'imprimante ou le périphérique est placé dans ce port. Il est alors immédiatement placé sur les lignes D0 à D7 du port parallèle. Ce port est accessible en écriture seulement dans le cas du port parallèle standard, c'est à dire qu'une lecture se traduira par la lecture des dernières données écrites.
Le port d'état
Ce port peut uniquement être lu, c'est à dire que toute écriture sera ignorée. Il est l'image de l'état des lignes ERROR, SELECT, PE, ACK et BUSY. Il faut cependant remarquer que le bit 7 du port (correspondant à l'image de la ligne BUSY) est inversé par rapport à l'entrée.
Bit | Nom | Signification |
---|---|---|
0 à 2 | Inutilisés dans le mode standard | |
3 | ERROR |
0 = Erreur imprimante
1 = Pas d'erreur |
4 | SELECT |
0 = Imprimante OFF-LINE
1 = Imprimante ON-LINE |
5 | PE |
0 = Pas d'erreur
1 = Plus de papier |
6 | ACK |
Impulsion négative de l'imprimante pour indiquer que l'octet à été reçu.
Attention ! Logique inversée entre le signal et la broche |
7 | BUSY |
0 = Imprimante occupée
1 = Imprimante prête |
Le port de contrôle
Ce port, accessible à la fois en lecture et en écriture, est employé pour contrôler l'imprimante. Les quatres premiers bits sont l'image des lignes STROBE, AUTOFEED, INIT et SELECT IN. Le bit 4 autorise ou non le déclenchement d'une interruption lorsque ACK passe à l'état bas (c'est à dire lorsque l'imprimante indique a bien reçue l'octet envoyé.
Bit | Nom | Signification |
---|---|---|
0 | STROBE |
1 = Signal STROBE (impulsion)
Attention ! Logique inversée entre le signal et la broche |
1 | AUTOFEED |
0 = Saut de ligne automatique
1 = Pas de saut de ligne automatique Attention ! Logique inversée entre le signal et la broche |
2 | INIT | 1 = Initialisation de l'imprimante (impulsion) |
3 | SELECT IN |
0 = Imprimante hors ligne
1 = Imprimante sélectionnée Attention ! Logique inversée entre le signal et la broche |
4 | IRQ ENABLE |
0 = Pas d'interruptions
1 = Interruptions autorisée |
5 à 7 | Inutilisés dans le mode standard |
Le port parallèle étendu
L'interface parallèle standard possède 5 lignes en entrées (ACK, BUSY, PE, SELECT et ERROR), et 12 lignes en sortie (D0 à D7, STROBE, AUTOFEED, INIT et SELECT IN). Il n'est pas bidirectionnel, et la vitesse de transmission maximale que l'on peut esperer avec un tel port est de l'ordre de 150 kb/s (en sortie). Vu l'utilisation de plus en plus fréquente du port parallèle en tant que port de communication, le port EPP (Enhanced Parallel Port) a été mis au point par Xircom et Zenith Data Systems. Le but des développeurs a été d'introduire un concept évolué pouvant remplacé le port imprimante existant. Sur la base de ce concept, Intel a développé un circuit d'interface, le 82360, le comité IEEE-1284 ayant pris à son compte la standardisation. Ce port se caractérise surtout par sa bidirectionnalité, et on peut ainsi esperer obtenir un débit d'environ 2 Mb/s.
Pour celà, le port parallèle étendu ajoute de nouveau port au port parallèle standard :
Nom du port | Offset | Mode | Lecture/Ecriture | Description |
---|---|---|---|---|
Port de données SPP | +0 | SPP/EPP | Ecriture | Voir port parallèle standard |
Port d'état SPP | +1 | SPP/EPP | Lecture | Voir port parallèle standard |
Port de contrôle SPP | +2 | SPP/EPP | Ecriture | Voir port parallèle standard |
Port d'adresse EPP | +3 | EPP | Lecture/Ecriture | Génère, en entrelacé, l'impulsion de lecture/écriture pour les adresses. |
Port de données EPP | +4 | EPP | Lecture/Ecriture | Génère, en entrelacé, l'impulsion de lecture/écriture pour les données. |
Non défini | +5..7 | EPP | - |
Utilisé de différentes façons.
Également utilisable pour des E/S 16 et 32 bits. |
Pour utiliser la communication bidirectionnelle, on active le bit 5 du 3ème port (port de contrôle SPP). Ce bit batisé PCD détermine la direction du flux de données. Un niveau 0 configure le port en sortie, alors qu'un 1 le configure en entrée.
Le port parallèle ECP
Encore plus récent, le port ECP (Extended Capacity Port) possède la particularité d'être Plug and Play. Il dérive du port EPP et en possède les même caractéristiques. Sa particularité est qu'il permet au périphérique branché de s'identifier dès le démarrage.
Ce type de port est utilisé pour connecter des imprimantes, mais aussi des périphériques évolués tel que scanners, webcams, lecteurs ZIP, graveur de CD, adaptateurs Ethernet sur les portables, ... Il est aujourd'hui de plus en plus remplacé par l'USB qui permet un débit plus élevé, une autoalimentation des petits périphériques, et surtout un plus grand nombre de périphériques sur la même interface.
Mais du point de vu de l'électronicien, l'avantage de ce type de port est sans conteste sa bidirectionnalité.
Pour plus d'informations, sur les ports ECP et EPP, on pourra se reporter au site internet suivant : http://www.fapo.com. On y décrit dans le détail le standard IEEE-1284.