Explications sur les différents ports

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

Dernière mise à jour : 31 janvier 2005

Port série - Port parallèle
Port USB - Port Firewire
Port SCSI - Port VGA
Port clavier - Port souris


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

1. Port série

Le port série supporte le standard RS-232, créé (1960) avec un seul objectif : permettre la communication entre un terminal (Data Terminal Equipment, DTE ; en clair : un ordinateur) et un appareil communiquant (Data Communications Equipment, DCE ; en clair : un modem, par exemple).

Dans une communication série, les données sont transférées de l'émetteur au receveur un bit à la fois, à travers une seule ligne (ou circuit). Les avantages est le faible coût et le faible encombrement. Le désavantage est que la transmission va moins vite que si on transmettait un certain nombre de bits en même temps (voir port parallèle).

1.1. Principe de communication

La communication se fait bit à bit : chaque bit d'information est transféré de manière séquentielle (sérielle) d'un endroit à un autre. Le port série prend 8, 16 ou 32 bits "parallèles" du bus du PC et les convertit en un flux séquentiel de 8, 16 ou 32 bits.

En théorie, on n'aurait alors besoin que de 2 fils : une ligne pour le signal et une pour la terre. Mais, en pratique, il y a des perturbations extérieures et des erreurs qui rendent ce besoin simple impossible. En effet, si 1 bit est envoyé mais manque du côté récépteur, tous les bits suivants sont décalés, donnant des données incorrectes lorsque le flux est transformé du côté récepteur. Il faut donc des processus permettant de contrôler si une telle erreur est survenue.

1.1.1. Méthodes de transmission

Deux méthodes différentes sont utilisées :

  • la communication synchrone ;
  • la communication asynchrone.
1.1.1.1. Communication synchrone

Dans la communication synchrone, l'émetteur et le récepteur sont synchronisés par une horloge qui compte précisément la période séparant chaque bit. En contrôlant l'horloge, le récepteur peut déterminer si un bit a été perdu ou s'il y en a un en trop (habituellement, par induction électrique). Si jamais une des deux parties perd le signal d'horloge, la communication est terminée car rendue impossible.

Cette méthode est peu utilisée en informatique généraliste.

1.1.1.2. Communication asynchrone

Dans la communication asynchrone, un "marqueur" est ajouté au-début du flux de bits pour aider à positionner les bits dans le flux. Lorsque le récepteur reçoit le bit de début (start bit, toujours égale à 0), pour peu que les deux ports soient à la même vitesse, le récepteur déclenche un timer et récolte les bits de données dans un intervalle de temps donné. En gardant les flux non contrôlés (bits de données après le start bit) court, on restreint la possibilité d'erreur.

Cette méthode est la plus souvent employée en informatique généraliste (c'est celle des modems, par exemple).

1.1.2. Les bits, leur parité et leur vitesse

Chaque flux de bits est composé de 5 à 8 bits, appelés mots (words). Habituellement, dans un environnement PC, on trouvera des mots de 7 ou 8 bits (7 bits pour les 127 premiers codes ASCII, 8 bits pour correspondre exactement à un byte).

Lors d'une communication, l'émetteur encode chaque mot en ajoutant un bit de départ au début et 1 ou 2 bits de fin (stop bits) à la fin du flux. Parfois, afin de vérifier l'intégrité des données, l'émetteur ajoutera un bit de parité entre le dernier bit d'un mot et le bit de départ du mot suivant. On parlera ainsi de fenêtre de données (data frame).

Bit 1 2 3 4 5 6 7 8 9 10 11 12 13 14
Contenu départ bit 1, mot 1 bit 2, mot 1 bit 3, mot 1 bit 4, mot 1 bit 5, mot 1 bit 6, mot 1 bit 7, mot 1 bit 8, mot 1 stop parité départ bit 1, mot 2 etc.

Figure 1.1. Exemple de fenêtre de donnée sur 8 bits, avec bits de départ, d'arrêt et de parité (8 bits data frame)

5 bits de parité différents peuvent être utilisés :

  1. le bit de parité de marquage (mark parity bit) : toujours égal à 1 (de type logique)
  2. le bit de parité d'espace (space parity bit) : toujours égale à 0 (de type logique)
  3. le bit de parité paire (even parity bit) : égal à 1 lorque le nombre de bits dans le mot est pair
  4. le bit de parité impaire (odd parity bit) : égal à 1 lorsque le nombre de bits dans le mot est impair
  5. pas de bit de parité (non parity bit frame) : cela permet de gagner de la place (1 bit par fenêtre) et est rendu possible car le bit de parité n'est pas obligatoire

[Séquence des bits, port série]
Figure 1.2. Séquence de succession des bits dans un port série

La vitesse de transmission est un point très important dans la communication asynchrone. Cette vitesse influence directement les moments auxquels le récepteur s'attend à trouver un bit de donnée (voir la figure ci-dessus : ligne d'horloge). De nos jours, la plus petite vitesse couramment utilisée est le 300 bps (bit par seconde). On trouve encore des vitesse de 600, 1200, 2400, 4800 bps mais, le plus souvent, on utilise 9600, 19200 ou 38400 bps. Seul, le processeur ne peut aller que jusque 19200 bps (19.2 kbps). Mais, avec les bus PCI et, surtout le DMA (Direct Memory Access, accès direct à la mémoire), on peut atteindre les 38400 bps (38.4 kbps).

Notez qu'on voit parfois la notion de baud en communication série. La fréquence de baud est une mesure du nombre de fois par seconde qu'un signal varie (dans un canal de communication), ou effectue une transition entre états (càd. fréquences ou niveaux de voltage, ...). Un baud est un de ces changements. Donc, le signal d'un modem à 300 bauds change 300 fois d'étant par seconde ; le signal d'un modem à 600 bauds change d'état 600 fois par seconde. Mais cela ne veut pas dire qu'un modem à 300 ou 600 bauds transmet respectivement 300 ou 600 bits par seconde (300 bauds/s != 300 bps).

En effet, un modem peut transmettre 1 bit avec chaque baud (ou changement d'état) ou +/- 1 bit par baud. Cela dépend de la technique de modulation utilisée. Ainsi, pour un modem qui transmet 1 bit par baud, on aura effectivement 300 bauds/s = 300 bps. Mais, pour un modem qui transmet 1,5 bit par baud, on aura 300 bauds/s = 450 bps !

1.2. Matériel

La plupart des équipements utilisent un port série à 25 connecteurs (DB-25). Derrière les ordinateurs, le port série contient généralement seulement 9 connecteurs (les seuls nécessaires en mode asynchrone, voir ci-dessus).

[Ports série derrière un PC]
Figure 1.3. Ports série derrière un PC

1.2.1. Connecteur et assignation

[Prise série femelle à 25 connecteurs]
Figure 1.4. Prise série femelle à 25 connecteurs

[Prise série femelle à 9 connecteurs]
Figure 1.5. Prise série femelle à 9 connecteurs

Le rôle de chaque connecteur était, au début, spécifiée pour l'utilisation de modems. C'est pourquoi la nomenclature suit de près cet usage.

Voici l'assignation des 25 connecteurs d'une prise DB25 :

  1. Pas utilisé (terre)
  2. Transmission de données (Transmit Data) : l'ordinateur envoie des données au périphérique
  3. Réception de données (Receive Data) : l'ordinateur reçoit des données du périphérique
  4. Demande d'envoi (Request To Send, RTS) : l'ordinateur demande au périphérique s'il peut envoyer de l'information
  5. Prêt à envoyer (Clear To Send, CTS) : le périphérique dit à l'ordinateur qu'il est prêt à envoyer des données
  6. Prêt pour données (Data Set Ready, DSR) : le périphérique dit à l'ordinateur qu'il est prêt à parler
  7. Terre (Signal Ground) : terre
  8. Détection de signal sur la ligne (Received Line Signal Detector) : détermine si le modem est connecté à une ligne téléphonique qui fonctionne
  9. Pas utilisé : transmet le retour de courant de boucle (+)
  10. Pas utilisé
  11. Pas utilisé : transmet le courant de boucle des données (-)
  12. Pas utilisé
  13. Pas utilisé
  14. Pas utilisé
  15. Pas utilisé (parfois timing du signal transmis pour le DCE)
  16. Pas utilisé
  17. Pas utilisé
  18. Pas utilisé : reçoit le courant de boucle des données (+)
  19. Pas utilisé
  20. Terminal prêt (Data Terminal Ready, DTR) : l'ordinateur dit au périphérique qu'il est prêt pour parler
  21. Pas utilisé (parfois détection de la qualité du signal)
  22. Indicateur de sonnerie (Ring Indicator) : une fois que l'appel a été effectué, l'ordinateur reconnaît le signal (envoyé par le modem) qu'une sonnerie est détectée
  23. Pas utilisé (parfois détection de la vitesse du signal)
  24. Pas utilisé (parfois timing du signal transmis pour le DTE)
  25. Pas utilisé : reçoit le retour de courant de boucle (-)

Comme on n'utilise pas les connecteurs 1, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 23, 24 et 25 (16 connecteurs inutilisés), il y en a 9 seulement de réellement utiles (connecteurs 2, 3, 4, 5, 6, 7, 8, 20, 22). On a alors fabriqué des ports qui n'ont que ces 9 connecteurs (sur tous les PC récents).

Voici l'assignation des 9 connecteurs d'une prise DB9 :

  1. Détection de signal sur la ligne (Received Line Signal Detector) : détermine si le modem est connecté à une ligne téléphonique qui fonctionne
  2. Réception de données (Receive Data) : l'ordinateur reçoit des données du périphérique
  3. Transmission de données (Transmit Data) : l'ordinateur envoie des données au périphérique
  4. Terminal prêt (Data Terminal Ready, DTR) : l'ordinateur dit au périphérique qu'il est prêt pour parler
  5. Terre (Signal Ground) : terre
  6. Prêt pour données (Data Set Ready, DSR) : le périphérique dit à l'ordinateur qu'il est prêt à parler
  7. Demande d'envoi (Request To Send, RTS) : l'ordinateur demande au périphérique s'il peut envoyer de l'information
  8. Prêt à envoyer (Clear To Send, CTS) : le périphérique dit à l'ordinateur qu'il est prêt à envoyer des données
  9. Indicateur de sonnerie (Ring Indicator) : une fois que l'appel a été effectué, l'ordinateur reconnaît le signal (envoyé par le modem) qu'une sonnerie est détectée

Le voltage envoyé peut être de deux types : on ou off. Un signal On (valeur binaire 1) équivaut à un voltage entre -3 et -25 volts. Un signal Off (valeur binaire 0) équivaut à un voltage entre +3 et +25 volts.

1.2.2. Contrôleur matériel et contrôle de flux (encore des contrôles !)

On a vu (ci-dessus) qu'avec un processeur seul, la vitesse est limitée à 19.2 kbps. Depuis quelques temps, la gestion du port série se fait en dehors du processeur, via un receveur/transmetteur asynchrone universel (Universal Asynchronous Receiver/Transmitter, UART).

Ce contrôleur matériel prend les bits "parallèles" sur le bus du PC et les ré-arrange en séquence pour les transmettre sur le port série. Pour fonctionner plus rapidement, la plupart des UART ont un tampon intégré (16 à 64 kb). Ainsi, les données entrantes (provenant du bus) peuvent être mises en cache en attendant d'être ré-arrangé. On arrive ainsi (déchargement du processeur et cache) à des vitesse de transfert de 115 kbps.

Outre les bits de parité (voir ci-dessus), il existe aussi un contrôle du flux de données. Par ce contrôle, un appareil est capable de dire à l'autre d'arrêter d'envoyer des données pour un moment, par l'utilisation des commandes Request to send (RTS), Clear to send (CTS), Data Terminal Ready (DTR) et Data Set Ready (DSR).

C'est particulièrement utile avec les modems ... Généralement, les modems communiquent entre eux à 56 kbps. Or, la communication entre le PC et le modem peut se faire à 115 kbps, ce qui est plus que le double ! Comme le modem reçoit plus de données qu'il ne peut en transmettre, même avec une mémoire tampon, il ne pourra plus rapidement traiter toutes les données qui lui sont fournies.

Avec le contrôle de flux, le modem peut arrêter le flux provenant de l'ordinateur avant que les données ne sature la mémoire tampon. L'ordinateur envoie constamment un signal RTS (demande d'envoi) et vérifie constamment s'il n'y a pas de signal CTS (prêt à envoyer). S'il n'y a pas de réponse CTS, l'ordinateur arrête d'envoyer des données au modem et attend jusqu'au prochain CTS. Ainsi, cela permet aux données de passer sans problème du PC au modem.

1.2.3. A sens unique ou non

Finalement, le cablâge et la manière dont les ports sont arrangés sont important. Certains ports utilisent le même connecteur (pin) pour recevoir et émettre des données. Le récepteur doit donc attendre d'avoir tout reçu avant de pouvoir émettre à son tour. On parlera de port demi-duplex (half-duplex). Par contre, d'autres ports utilisent des connecteurs différents pour recevoir et émettre des données. Chaque appareil peut donc se comporter, en même temps, comme émetteur et comme receveur. On parlera de port full-duplex ou bi-directionnel. Un port bi-directionnel permettra de réduire le temps mis pour une tâche à s'accomplir.

1.3. Jouons avec notre PC

1.3.1. Avec MS-Windows

Sous MS-Windows, les ports série sont nommés COM1, COM2, COM3, etc.

Pour découvrir les ports série 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 série sous MS-Windows]
Figure 1.6. Liste de ports série sous MS-Windows

Pour connaître (et éventuellement modifier) les paramètres d'un port série, il suffit de cliquer sur son item et de choisir l'onglet ... "Paramètres du port".

[Paramètres d'un ports série sous MS-Windows]
Figure 1.7. Paramètres modifiables d'un ports série sous MS-Windows

1.3.2. Avec GNU/Linux

Sous GNU/Linux, les ports série font partie du répertoire /dev et sont nommés ttys0, ttys1, ttys3, etc.

Il y a plusieurs manières de découvrir les ports série qu'on a sous GNU/Linux. En ligne de commande (ou dans une console), vous pouvez tapez la commande setserial -g /dev/ttys0 (par exemple). Cela devrait donner ce résultat ...

[Ports série sous MS-Windows]
Figure 1.8. Liste de ports série sous GNU/Linux (les ports à UART inconnues n'existent pas)

La commande setserial permet également de voir les paramètres d'un port série et de les modifier. Consultez la page ad hoc du manuel (man setserial) pour plus de renseignements.

Références et liens pour approfondir