Port parallèle sur PC

 

On a vu l’utilisation de liaison série sur un PC. On sait qu’elle s’accompagne de limitations de débit et de distance. => Pour améliorer la distance, on utilise des modems.

=> Pour améliorer le débit, la solution simple consiste à faire passer plusieurs bits en parallèle.

 

Toutefois cela pose des problèmes de diaphonie ( interférences électromagnétiques entre fils ), ce qui limite encore plus la distance. En outre il faut disposer d’un nombre de fils plus élevés d’où un coût plus élevé.

 

On verra dans un premier temps le port parallèle des origines du PC ( SPP ) puis les différentes évolutions permettant l’utilisation de modes de fonctionnement plus performants.

 

 

I) Historique

 

En 1981, IBM inclut un port parallèle sur le PC pour des transmissions plus rapides que les liaisons séries. Il est utilisé pour envoyer des données à une imprimante, donc pour une transmission unidirectionnelle : Mode standard : SPP.

 

Ensuite on a connecté d’autres périphériques demandant des liaisons entrantes en utilisant des astuces         ( utilisation de lignes de gestion entrantes pour lire des données ) : Mode quartet ( Nibble mode ).

 

Puis on a développé des circuits électroniques permettant aussi les données entrantes sur les lignes de données : Mode octet ( Byte mode ).

 

Mais la transmission est limitée en débit ( 150 ko/s sortant ), demande beaucoup de traitement logiciel ( pas de  DMA ), n’est pas définie par un standard électrique ce qui pose des problèmes d’interopérabilité, est limitée en distance par la puissance des drivers de ligne électroniques.

 

En 1991, un nouveau standard ( IEEE1284 ) est développé incluant un lien bidirectionnel haut débit ( plus du Mo/s ). Il demande de nouveaux circuits mais doit aussi être compatible avec les anciens fonctionnements : Mode EPP.

 

S’il reste inférieur au débit du bus ISA (8Mo/s), il permet néanmoins la réception de données depuis des périphériques tels que des lecteurs de CD-ROM ou disques durs. En plus du débit supérieur, les ports EPP sont bidirectionnels.

 

Encore plus récent, le port ECP (Extended Capacity Port) possède la particularité d'être Plug and Play         ( branchez et utilisez). Il dérive du port EPP et en possède les mêmes caractéristiques. Sa particularité est qu'il permet au périphérique branché sur celui-ci de s'identifier à la machine dès le démarrage. Ainsi l'imprimante peut s'autoconfigurer lors du lancement du système d'exploitation (à condition que ce dernier et le BIOS soient eux aussi compatibles Plug and Play).

 

Chaque mode définit une méthode de transfert des données :

Sens de transfert

 

Mode

Unidirectionnel

( SPP )

PC vers périphérique

Mode standard

 

 

Périphérique vers PC

Mode quartet

 

Mode octet

 

Bidirectionnel

( semiduplex )

 

Mode EPP

 

Mode ECP

 

 

Les modes Standard et quartet peuvent être utilisés sur tout circuit parallèle. On crée ainsi un lien bidirectionnel. Les autres modes demandent que le circuit électronique soit prévu pour ces fonctionnements.

Le choix du mode de fonctionnement SPP, EPP ou ECP se fait dans le BIOS.


II) Description du port parallèle

 

Le port parallèle sur PC est fait de 17 signaux et 8 broches à la masse. Les signaux sont de 3 catégories :

+ Signaux de contrôle  ( 4 ) : Contrôle de liaison ( Handshake = enchaînement de requêtes/réponses pour le

         déroulement de la transmission ).

 

+ Signaux d’état ( 5 ) : Indication de l’état des appareils, de cause de problème.

 

+ Signaux de données ( 8 ) : Envoi de données du PC vers le périphérique seulement à l’origine.

 

 

 

Dans la définition originale ( SPP : Standard Parallel Mode ), le port parallèle du PC servait à la connexion avec des imprimantes. C’est pourquoi on trouve des noms de broches liés à l’impression :

 

Groupe

SPP Signal

In/Out

Signal Description

Contrôle

/STROBE

Out

Actif bas. Le PC indique la présence certaine de données valides sur la ligne ( elles le sont avant ).

/AUTOFEED

Out

Actif bas. Indique à l’imprimante d’insérer automatiquement un saut de ligne en plus du retour chariot à chaque return.

/SELECT IN

Out

Actif bas. Indique à l’imprimante qu’elle est sélectionnée.

/INIT

Out

Actif bas. Utilisé pour envoyer un reset à l’imprimante.

Etat

/ACK

In

L'imprimante envoie une impulsion à 0 sur cette ligne pour indiquer à l'ordinateur qu'elle a bien reçu le caractère transmis

et qu’il peut continuer la transmission.

BUSY

In

Cette ligne est mise à 1 par l'imprimante lorsque son buffer de réception est plein ( contrôle de flux matériel ).

Le PC doit attendre que cette ligne revienne à 0 pour ré-émettre.

PE

In

L’imprimante indique qu’il n’y a plus de papier ( Paper Error )

SELECT

In

Cette ligne indique à l'ordinateur si l'imprimante est "on line" ou "off line".

 

/ERROR

In

L’imprimante indique une erreur au PC.

Données

DATA[8:1]

Out

8 lignes de données- seulement en sortie en SPP.

 

Remarque: Ce tableau présente les broches dans le cas de l’échange de données. Elles peuvent être utilisées à autre chose dans le cas de procédures de gestion de la liaison ( phases de transition demandant l’échange d’information de contrôle ). On peut aussi envisager l’utilisation du port parallèle pour une liaison avec un autre périphérique qu’une imprimante. 

 

Remarque: /A ou nA indique « Complément de A ». Ici cela indique des variables actives sur niveau bas.

 

 

 

                Le lien entre le matériel et le logiciel se fait par des registres : Le port parallèle est installé à une adresse de base ADR ( 378h ou 278h habituellement ). Les registres du port parallèles sont au nombre de 3 :

 

Adresse

Nom

Read/Write

Description

ADR + 0

Registre de données

(Data Register)

R/W

Data port ( lecture/écriture de données )

ADR + 1

Registre d’état

(Status Register)

R

Contient les bits d’état ( Status bits )

ADR + 2

Registre de contrôle

(Control Register)

W

Utilisé pour imposer les valeurs des bits de contrôle

 

 


                Le brochage sur une prise DB25 sur le PC est le suivant :

 

                  BROCHE   NOM               Sortie du PC      Entré dans le PC

                  -------------------------------------------------------------------------

                  1        /STROBE           X                 X

                  2        D0                X                 X si EPP (voir après )

                  3        D1                X                 X si EPP    

                  4        D2                X                 X si EPP

                  5        D3                X                 X si EPP

                  6        D4                X                 X si EPP

                  7        D5                X                 X si EPP

                  8        D6                X                 X si EPP

                  9        D7                X                 X si EPP

                  10       /ACK                                 X

                  11       BUSY                                 X

                  12       PE                                   X

                  13       SELECT                               X

                  14       /AUTOFEED                  X                 X

                  15       /ERROR                               X

                  16       /INIT             X                 X

                  17       /SELECT IN        X                 X

                  18-25    MASSE             X                 X

 

 

                Le détail du registre de données en ADR est :

 

7

6

5

4

3

2

1

0

D7 = MSB

D6

D5

D4

D3

D2

D1

D0 = LSB

                               Il n’est accessible qu’en écriture dans les premiers modes SPP.

 

 

 

                Le détail du registre d’état en ADR+1 est :

 

7

6

5

4

3

2

1

0

BUSY

/ACK

PE

SELECT

/ERROR

Non défini

Non défini

Non défini

Il n’est accessible qu’en lecture.

 

 

 

                Le détail du registre de contrôle en ADR+2 est :

 

7

6

5

4

3

2

1

0

Non défini

Non défini

DIR

IRQ ENABLE

SELECT IN

/INIT

AUTOFEED

/STROBE

                               Il est accessible en lecture et en écriture.

Le bit 4 autorise ou non une interruption lorsque ACK passe à 0 ( l’imprimante valide la

Réception d’un caractère ).

Le bit 5 ne sert que pour les modes bidirectionnels : Ce bit à 1 rend le port accessible en écriture.

 

 


III) Mode normaux : SPP ( standard parallel port )

 

                Mode standard ( Mode Centronics ou Compatibility mode )

 

                C’est le mode utilisé pour le fonctionnement normal du port SPP : Les données sont placées sur les lignes de données.


 

1.       Ecrire les données dans le registre de données  ( => Elles sont sur les fils de sortie )

2.       Lire le registre d’état pour vérifier que l’imprimante n’est pas occupée ( BUSY )

3.       Si elle ne l’est pas, écrire le registre de contrôle pour mettre  /STROBE = 0.

4.       Ecrire le registre de contrôle pour changer /STROBE  et pouvoir passer à la donnée suivante.

 

On arrive à des débits de l’ordre de 150 ko/s. C’est suffisant pour les veilles imprimantes mais pas pour les lecteurs CD amovibles ou les imprimantes lasers. En outre c’est un mode unidirectionnel, du PC vers le périphérique. 

 

Mode Quartet ( Nibble mode )

 

                Le mode Nibble est le moyen simple d’obtenir en SPP des données du périphérique vers le PC. Il est combiné avec le mode précédent pour obtenir une liaison bidirectionnelle ( voir norme IEEE1284 ).

 

                On va utiliser comme entrées de données les entrées de status. Un périphérique enverra un octet de données en envoyant 2 quartets ( nibbles ) à la suite.

 

Comme le /ACK est utilisé pour les interruptions, on utilise les 4 autres entrées restantes ( BUSY, PE, SELECT, /ERROR ). Les bits sont donc éparpillés dans le registre d’état ce qui oblige à des traitements pour récupérer un quartet puis l’octet

 

Signal SPP

Nom en mode quartet

In/Out

Description – Utilisation lors d’un transfert entrant

en mode quartet

/STROBE

/STROBE

Out

Pas utilisé en transfert entrant.

/AUTOFEED

HostBusy

Out

Signal de handshake du PC en mode quartet. Mis bas pour indiquer que le PC est prêt au mode quartet. Mis haut pour indiquer au périphérique qu’un quartet a été reçu.

/SELECTIN

1284Active

Out

Mis à l’état haut pour indiquer un transfert entrant ( 1284 )

/INIT

/INIT

Out

Pas utilisé en transfert entrant.

/ACK

PtrClk

In

Au niveau bas, indique une donnée entrante valide,

Mis à l’état haut en réponse à HostBusy passant au niveau haut.

BUSY

PtrBusy

In

Utilisé pour le bit de donné entrant 3, puis 7

PE

AckDataReq

In

Utilisé pour le bit de donné entrant 2, puis 6

SELECT

Xflag

In

Utilisé pour le bit de donné entrant 1, puis 5

/ERROR

/DataAvail

In

Utilisé pour le bit de donné entrant 0, puis 4

DATA[8:1]

Non utilisés

 

En SPP les circuits électroniques n’acceptent pas le sens entrant.

 


 

 


1.       Le PC indique sa capacité à recevoir un quartet en mettant HostBusy au niveau bas.

2.       Le périphérique répond en plaçant le premier quartet sur les lignes d’état utilisées pour les données.

3.       Le périphérique indique la validité du quartet en passant PtrClk à bas.

4.       Le PC met HostBusy à haut pour indiquer qu’il a reçu le quartet et qu’il n’est pas prêt pour le suivant.

5.       Le périphérique met PtrClk haut pour acquitter cette information.

6.       On recommence les étapes 1 à 5 pour le second quartet.

 

Le mode quartet permet une liaison bidirectionnelle de données malgré un circuit électronique unidirectionnel pour ses lignes de données.  Mais le débit est limité à 50 ko/s.

 

 

ƒ Mode Octet ( Byte mode )

 

                Des fabriquants ont installé un port parallèle bidirectionnel électroniquement. Mais la gestion reste la même qu’auparavant. On parle de "enhanced bi-directional" port à ne pas confondre avec Enhanced Parallel Port (EPP) qui va introduire des éléments de gestion plus performants.

 

                Ici on a une évolution électronique ( entrées de données bidirectionnelles dont le sens est commandé par le bit 5 DIR du registre de contrôle ) mais la gestion du transfert reste la même ( lire les signaux d’état en attendant jusqu’à ce qu’ils prennent l’état souhaité, établir les niveaux des signaux de contrôle selon la procédure ).

 

 

Signal SPP

Nom en mode Octet

In/Out

Description – Utilisation lors d’un transfert entrant

en mode octet

/STROBE

HostClk

Out

Signal d’acquittement. Mis bas pour indiquer que l’octet a été reçu.

/AUTOFEED

HostBusy

Out

Signal de Handshake. Mis bas pour indiquer que le PC est prêt pour un octet. Mis haut pour indiquer que l’octet a été reçu.

/SELECTIN

1284Active

Out

Mis à l’état haut pour indiquer un transfert entrant ( 1284 ).

/INIT

/INIT

Out

Pas utilisé, laissé haut.

/ACK

PtrClk

In

Mis bas pour indiquer des données valides sur les lignes de données,

Mis haut en réponse à HostBusy passant au niveau haut.

BUSY

PtrBusy

In

Signal Busy du PC.

PE

AckDataReq

In

Suit /DataAvail

SELECT

Xflag

In

Drapeau d’extensibilité. Pas utilisé en mode octet.

/ERROR

/DataAvail

In

Mis bas par le périphérique pour indiquer qu’une donnée entrante est disponible.

DATA[8:1]

DATA[8:1]

Bi-Di

Envoi des données du périphérique au PC.



 

 


 


1. Le PC signal qu’il est prêt à recevoir en mettant HostBusy bas

2. Le périphérique répond en plaçant les données sur les lignes de données

3. Le périphérique indique que l’octet est valide en passant PtrClk à bas

4. Le PC met HostBusy haut pour indiquer qu’il a reçu et qu’il n’est pas encore prêt pour un suivant

5. Le périphérique  met PtrClk haut pour acquitter cette information. Le PC applique une impulsion pour  

    acquitter à son tour.

6. On recommence les étapes 1 à 5 pour le second octet.

 

                Le mode octet de lire un octet sur les lignes de données. On y arrive par des entrées électroniques bidirectionnelles, le sens de transmission est choisi par un bit de direction dans le registre de contrôle : DIR.

 

                On a donc en fait une liaison unidirectionnelle dont le sens est paramétrable. On devra adapter par programmation logicielle les signaux de gestion au sens choisi => gestion lourde et pénible.

=>Débit encore limité ou consommation de ressources du système.

 

                Les modes étendus développés en 1991 donnent des circuits électroniques améliorés par des machines d’état ( circuits logiques séquentiels ) qui génèrent automatiquement les signaux de contrôle.

                => Le circuit devient aussi contrôleur de l’échange parallèle.

 

 

IV) Modes étendus

 

                Mode EPP ( Enhanced Parallel Port )

 

                Le mode EPP donne en plus du circuit électronique d’échange parallèle un système de contrôle de l’échange selon le protocole EPP alors qu’avant on devait programmer ce système de handshake. On l’a trouvé à partir du chipset Intel 386SL ( chip d’I/O 82360 ). On a en fait un contrôleur de communication parallèle.

 

Remarque : Sur les PC actuels on un contrôleur AIP ( Advanced Integrated Peripherical = Intel ) qui intègre contrôleur de port série, port parallèle, de disquette,…

 

 

                Le protocole EPP fournit 4 types de cycles de transfert de données :

 

                               - Ecriture de données ( Data_Write cycle )

- Lecture de données ( Data_Read cycle )                    

- Ecriture d’adresse ( Address_Write cycle )

- Lecture d’adresse ( Address_Read cycle )

 

                Les cycles de transfert de données sont ceux de SPP bidirectionnel précédent. On a en plus les cycles de transfert d’adresse. On passe en fait des adresses, commandes ou informations de contrôle. Ce sont en fait 2 cycles de transfert de données qui s’enchaînent automatiquement. 

 


 



Signaux SPP

Nom du signal EPP

In/Out

Description – Utilisation lors d’un transfert EPP

/STROBE

/WRITE

Out

Actif bas, Indique une opération d’écriture.

Il doit être haut pour un cycle de lecture.

/AUTOFEED

/DataStrobe

Out

Actif bas, il indique qu’une opération Data_Read ou Data_Write est en cours.

/SELECTIN

/ADDRStrobe

Out

Actif bas, il indique qu’une opération Address_Read ou Address_Write est en cours.

/INIT

/RESET

Out

Reset du périphérique, Actif bas.

/ACK

/INTR

In

Interruption créée par périphérique. Utilisé pour générer une interruption sur le PC.

BUSY

/WAIT

In

Signal de Handshake. Bas, il indique que l’on peut démarrer un cycle ( appelle un strobe ). Haut, il indique que l’on peut terminer un cycle ( permet au strobe de conclure ).

D[8:1]

AD[8:1]

Bi-Directionnel

Lignes bidirectionnelles de données, d’adresse

PE

Défini par l’exploitant

In

Usage selon le périphérique

SELECT

Défini par l’exploitant

In

Usage selon le périphérique

/ERROR

Défini par l’exploitant

In

Usage selon le périphérique

 

La figure suivante est un exemple d’écriture d’une donnée : Data_Write cycle . Le signal /IOW de la CPU est montré juste pour mettre en évidence que tous les contrôles du port parallèle ( les autres signaux ) se font en un seul cycle d’écriture CPU.

 


 


Cycle d’écriture de données EPP : Data_Write Cycle

1.       Le programme demande une écriture ( I/O CYCLE ) à l’adresse du port parallèle ADR+4 (EPP Data Port)

2.       La ligne /write de la liaison parallèle est activée et les données placées en ligne.

3.       Le /DataStrobe est activée pour signaler leur validité, en conséquence /WAIT est mis bas automatiquement par le périphérique

4.       Le port parallèle attend la remontée de /WAIT comme acquittement par le périphérique.

5.       Le /DataStrobe est désactivé ce qui est la fin du cycle EPP.

6.       Le cycle ISA d’I/O est fini d’où l’évolution de /IOW

7.       /WAIT est mis bas par le périphérique pour indiquer qu’un nouveau cycle peut commencer.

 

La nouveauté importante est dans le fait que le transfert complet d’une donnée ( avec gestion de validité, acquittement ) se déroule sur un seul cycle d’entrée/sortie ISA. Ainsi on arrive à 2Mo/s. On est proche du fonctionnement d’une carte interne ISA ( 6 Mo/s ). Avec les handshakes imbriqués, la vitesse sera fixée par le terminal le moins rapide.

 


La notion de Handshakes imbriqués signifie que chaque transition d’un signal de contrôle est acquittée par un signal de l’autre côté de l’interface. Sur le diagramme précédent, on voit que

/DataStrobe évolue parce que /WAIT est bas,

/WAIT remonte en réponse à la descente de /DataStrobe,

/DataStrobe remonte en réponse à la remontée de /WAIT,

/WAIT descend en réponse à la remontée de /DataStrobe.

 

 

Remarque : On trouve des composants EPP qui ne respectent pas exactement la norme IEEE1284 définissant EPP    ( Au début du cycle, /DataStrobe ou /AddrStrobe prendra son état sans s’occuper de /WAIT. Le périphérique ne peut pas bloquer le début de cycle en maintenant /WAIT. C’est la version EPP des premiers contrôleurs Intel 82360 ).

 

 

 

Exemple d’un cycle Address_Read.

 


 

 

 


Registres intervenant pour le mode EPP

                On retrouve les 3 registres de SPP auxquels on en ajoute 2 autres . Pour un port // installé à l’adresse ADR :

 

Nom

Adresse

Mode

Read/Write

Description

Registre de données SPP

ADR

SPP/EPP

W

Port de données standard SPP.

Pas de gestion automatique ( autostrobing ).

Registre d’état SPP

ADR+1

SPP/EPP

R

Lecture des entrées d’état de l’interface.

Registre de contrôle SPP

ADR+2

SPP/EPP

W

Ecriture des sorties de contrôle.

Registre d’adresse EPP

ADR+3

EPP

R/W

Lance un cycle d’écriture ou de lecture d’adresse avec gestion automatique.

Registre de données EPP

ADR+4

EPP

R/W

Lance un cycle d’écriture ou de lecture de données avec gestion automatique.

Non défini

ADR+5 à +7

EPP

N/A

Utilisé selon fabricants de périphériques. Peut être utilisé pour entrées/sorties 16 ou 32 bits.

 

En générant une simple instruction d’écriture en ADR+4, le contrôleur EPP génère automatiquement les signaux de Handshake et de Strobe nécessaires pour que le transfert suive le cycle EPP Data_Write.

 

Des accès aux registres SPP ( en ADR, ADR+1, ADR+2 ) amènent un comportement identique au modes définis auparavant.  Cela garantit la compatibilité avec les vieux systèmes.

 

Un accès au registre d’adresse EPP ( ADR+3 ) créera un cycle de lecture ou écriture d’ « adresse » selon /WRITE.

 

                Le mode EPP en plus d’automatiser par le matériel la gestion de liaison ce qui permet des débits plus élevés, des logiciels moins lourds, permet aussi le mélange facile de cycles de lecture et d’écriture ainsi que le transfert de blocs par les cycles d’adresse.

 

 


Mode ECP ( Extended Capability Port )

 

                Le port ECP proposé par HP et Microsoft permet en plus des performances de transmission du mode EPP de définir un protocole d’échange d’informations de gestion du matériel.

 

                Le protocole ECP autorise les cycles suivants dans les 2 sens :

 

                               - Cycle de données

                               - Cycle de commandes       -> Comptage RLE ( Compression Run Lenght Encoding ).

                                                                              -> Adressage de canal.

 

 

 

                La réalisation est standardisée, définie dans le document Microsoft "The IEEE 1284 Extended Capabilities Port Protocol and ISA Interface Standard".

 

                ECP introduit la possibilité de compression RLE avant transmission, d’utilisation de mémoires FIFO et d’utilisation de transfert DMA ( Direct Memory Access ).

 

                La compression en temps réel permet d’atteindre des taux de 64 pour les liaisons avec imprimante ou scanner ( image présentant des parties de pixels similaires ).

 

                L’adressage de canal permet d’adresser plusieurs appareils logiques sur une seule liaison physique               ( exemple d’un appareil faisant fax/modem/imprimante ou scanner/imprimante ). On peut utiliser les différentes fonctions de l’appareil en même temps.

 

 

Signal SPP

Nom du signal ECP

In/Out

Description – Utilisation lors d’un transfert ECP

/STROBE

HostClk

Out

Utilisé avec PeriphAck pour transférer information sortante concernant donnée ou adresse.

/AUTOFEED

HostAck

Out

Fourni Command/Data status en sortie. Utilisé avec PeriphClk pour transférer des données entrantes.

/SELECTIN

1284Active

Out

Mis haut quand le PC est en mode de transfert 1284.

/INIT

/ReverseRequest

Out

Mis bas pour mettre le canal en direction inverse.

/ACK

PeriphClk

In

Utilisé avec HostAck pour transférer des données entrantes.

BUSY

PeriphAck

In

Utilisé avec HostClk pour transférer information sortante concernant donnée ou adresse.

Fourni Command/Data status en entrée.

PE

/AckReverse

In

Mis bas pour acquitter /ReverseRequest.

SELECT

Xflag

In

Drapeau d’extensibilité ( Extensibility flag ).

/ERROR

/PeriphRequest

In

Mis bas par le périphérique pour indiquer qu’une donnée entrante est disponible.

Data[8:1]

Data[8:1]

Bi-Directionnel

Echange des données.

 

 

 

Quand HostAck est haut, cela indique un cycle de données.

Quand HostAck est descendu, cela indique un cycle de commandes.

Les données sont alors soit un comptage RLE ( si bit8=0 ), soit une adresse de canal ( Si bit8=1 ).

 

 

 

 


Cycles de données sortantes et de commandes en mode ECP


 


Transitions dans un transfert sortant:

1.        Le PC place les données sur les lignes de données, indique qu’il lance un cycle de données avec HostAck à 1.

2.        Le PC descend HostClk pour indiquer que les données en ligne sont valides.

3.        Le périphérique acquitte en montant PeriphAck.

4.        Le PC monte HostClk. Le front montant déclenche la lecture par le périphérique.

5.        Le périphérique descend PeriphAck pour indiquer qu’il est prêt à un octet suivant.

6.        Le cycle recommence sauf que cette fois c’est un cycle de commandes car HostAck est bas.


 


Cycles de données et de commandes entrants en mode ECP

 

1.        Le PC demande un canal entrant en descendant /ReverseRequest.

2.        Le périphérique donne son accord en descendant /AckReverse.

3.        Le périphérique place les données sur les lignes de données et indique un cycle de données en montant PeriphAck.

4.        Le périphérique descend PeriphClk pour indiquer que les données en ligne sont valides.

5.        Le PC acquitte en montant HostAck.

6.        Le périphérique monte PeriphClk. Sur le front montant, le PC lit la données.

7.        Le PC descend HostAck pour indiquer qu’il est prêt à un octet suivant.

8.        Le cycle se répète sauf que c’est un cycle de commandes car PeriphAck est bas.

 

Contrairement à EPP, les signaux I/O READ ou WRITE ne sont pas représentés sur les schémas précédents car ECP utilise des FIFO qui permettent de découpler les transfert internes au PC ( bus ISA, DMA,… ) avec les transferts sur la liaison parallèle.

 

On constate aussi que contrairement à EPP où l’on peut mixer entrées et sorties sans dialogue ou ajout de données, en mode ECP, un changement de direction doit être négocié. Le PC demande un transfert sur canal entrant en descendant /ReverseRequest et attend ensuite l’acquittement du périphérique par mise à 0 de /AckReverse. C’est une complication du logiciel de gestion surtout si on interrompt une liaison DMA. ECP n’est donc pas fait pour les alternances de direction sur des petits transferts mais pour des gros.


On définit différents modes de fonctionnement à l’intérieur du mode ECP :

Mode

Description

000

SPP mode

001

Mode Bidirectionnel (Byte mode)

011

Mode ECP

110

Test mode

111

Configuration mode

Autres

Selon l’utilisation de FIFO

 

Le registre ECR ( Extended Control Register ) permet de définir le mode de fonctionnement. Il permet aussi de savoir si le matériel est apte au mode ECP.

 

Bit 7

Bit 6

Bit 5

Bit 4

Bit 3

Bit 2

Bit 1

Bit 0

Mode ( selon tableau précédent )

Interruption ECP

Autorisation mode DMA

Bit de service ECP

FIFO

pleine

FIFO

Vide

 

 

Description des registres en mode ECP d’un port installé en ADR :

Offset

Nom

Read/Write

Mode de fonctionnement

Fonction

ADR

Données

R/W

000-001

Registre de données

ADR

EcpAfifo

R/W

011

FIFO d’adresses ECP

ADR+1

dsr

R/W

Tous

Registre d’état

ADR+2

Dcr

R/W

Tous

Registre de contrôle

ADR+400h

CFifo

R/W

010

FIFO des données du port parallèle

ADR+400h

EcpDfifo

R/W

011

FIFO des données ECP

ADR+400h

Tfifo

R/W

110

FIFO de test

ADR+400h

CnfgA

R

111

Registre de configuration A

ADR+401h

CnfgB

R/W

111

Registre de configuration B

ADR+402h

Ecr

R/W

Tous

Registre ECR ( Extended Control Register )

 

                Le mode ECP est défini par le BIOS.

Puis un mode de fonctionnement est défini dans le registre ECR ( bits 7 à 5 ).

 

Remarque : Les registres de configuration A et B ne sont accessibles qu’en mode Configuration. Ils permettent d’affiner la configuration de la liaison ( DMA, RLE, IRQ, gestion des erreurs ).

 

 

 

V) Aspects électriques d’une liaison bidirectionnelle

 

Comme pour n’importe quelle liaison on doit assurer un minimum de perturbations afin d’atteindre le meilleur débit ( pas trop de résistances internes, d’effets capacitifs qui font un filtrage RC ).

 

L’autre problème est la gestion du sens de transmission. En liaison série, on dispose d’un fil RX de réception, d’un fil TX d’émission. En revanche la liaison parallèle bidirectionnelle consiste à gérer le sens sur une même fil.

 

                Le port parallèle de PC originel n’avait pas de spécification ( ni driver, terminaison de ligne, capacité ) permettant de garantir la compatibilité.

 

                Les dernières normes IEEE1284 concernant le port parallèle de PC définissent 2 niveaux d’interface.

                               - Niveau I : Pour les liaisons bas débit mais nécessitant les 2 sens de transmission.

                               - Niveau II : Pour les hauts débits, les longs câbles.

 

 

 

                Nous verrons ici seulement le niveau II, le plus exigeant. Les caractéristiques sont :

 

                Pour l’émetteur :

                               - En circuit ouvert, le niveau haut ne doit pas dépasser +5,5V, le niveau bas –0,5V.

- VOH > 2,4V pour I = 14mA, VOL < 0,4V pour I = 14mA,

                               - La résistance de sortie après connecteur Ro = 50 +/- 5 W

                               - Le slew rate doit être entre 0,05 et 0,40 V/ns.

 

 

 

                Pour le récepteur :

                               - Le récepteur doit accepter des pics de tension entre –2V et +7V sans dommage.

- Les niveaux de décisions doivent être tels que  VIH < 2V et VIL > 0,8V.

                               - Le récepteur doit avoir en entrée une hystérésis de plus de 0,2V, de moins de 1,2V.

- Le courant de fuite au niveau haut ne dépasse pas 20µA à 2V.

                               - Le courant d’entrée au niveau bas ne dépasse pas 20µA à 0,8V.

                               - La capacité équivalente d’entrée doit être inférieure à 50pF.


 


                La figure suivante présente la terminaison recommandée. Ro représente l’impédance de sortie après connecteur. On suppose qu’il y a adaptation d’impédance avec le câble ( Rs sert à arriver à ce résultat ).

 

 

 


Si l’on intègre la liaison bidirectionnelle, on arrive à la liaison suivante :

 

 

 


VI) Négociation du type de liaison parallèle

 

                Comme un périphérique n’est pas sensé supporter tous les modes de fonctionnement du port parallèle, il va falloir détecter les modes possibles et se mettre d’accord sur l’utilisation d’un d’eux.

 

                Pour cela on réalise une négociation initiée par l’hôte : Séquence d’événements auxquels un ancien périphérique ne répondra pas alors qu’un périphérique supportant les modes récents répondra..


 


                Durant la négociation, l’hôte place une requête ( code = extensibility data byte ) sur les fils de donnée et lance la séquence :

 

 

Différentes phases lors de la négociation IEEE1284:

1.       L’hôte place la requête ( extensibility data byte ) sur les fils de données.

2.       Il met /SelectIn à l’état haut /AutoFeed bas pour indiquer une séquence de négociation.

3.       Un périphérique 1284 répondra en mettant /Ack bas, /Error, PE et Select hauts.

Un périphérique ancien ne répondra pas.

4.       L’hôte met /Strobe à l’état bas. Cela sert à indiquer que l’Extensibility byte peut être lu.

5.       L’hôte met /Strobe et /AutoFeed à l’état haut pour dire au périphérique qu’il l’a reconnu comme capable des modes 1284.

6.       Le périphérique répond en mettant PE bas, /Error bas si il peut émettre des données ( canal entrant l’hôte ) et  Select à l’état haut si le mode demandé par l’hôte est réalisable ou Select bas sinon.

7.       Le périphérique met /Ack à l’état haut pour indiquer la fin de la négociation et sa capacité à communiquer dans le mode choisi.

 

 

Remarque: XFlag ( Select ) sert au périphérique à indiquer que le mode demandé est possible. Il sera toujours à 1

    si c’est le cas ( Etape 6 de la figure précédente ) sauf pour un canal de retour en mode quartet ( Nibble ).

    En effet tout appareil doit le supporter de toute façon, c’est le mode de base du canal de retour..

 

 

 

Le code émis ( extensibility byte ) permet de demander un mode de transfert mais aussi de demander au périphérique de s’identifier.

 

                Négociation et identification d’un périphérique permettent d’avoir un système performant permettant un rattachement facile des périphériques par le port parallèle.

 

 

Remarque : Il est déjà prévu de nouvelles évolutions par des liaisons améliorées ( Extensibilty link ).


Valeurs possibles l’octet d’extensibilité ( extensibility byte ) :

Description

Valeurs valides
(8765 4321)

Demande une liaison « améliorée »

 ( Extensibility Link )

1000 0000

Demande de mode EPP

0100 0000

Demande de mode ECP avec RLE

0011 0000

Demande de mode ECP sans RLE

0001 0000

Réservé

0000 1000

Demande d’identification

( Device ID )

Avec retour des données par le mode:

Quartet ( Nibble )

0000 0100

Octet ( Byte )

0000 0101

ECP sans RLE

0001 0100

ECP avec RLE

0011 0100

Réservé

0000 0010

Mode Octet

0000 0001

Mode quartet

0000 0000

 

 

VI) Câble parallèle direct

 

Un cas particulier de liaison parallèle est la connexion directe comme le NULL MODEM en liaison série. Le but est de supprimer toute la procédure de contrôle.

 

Voir td