Circuits #5 - Le fonctionnement des ports USB

Durée: 10m17s

Date de sortie: 27/03/2024

Les ports et câbles USB sont presque devenus une technologie invisible, car elle est présente partout en informatique, et pourtant c'est un bijou de technologie qu'il faut comprendre !

Notes de l'épisode :

Salut et bienvenue dans ce nouvel épisode de la série circuit sur code gage. Aujourd'hui on va parler de l'USB,
savoir ce que c'est exactement et surtout comment ça fonctionne. Mais avant de lancer l'épisode, cette semaine pas de sponsor, mais quand même une petite annonce.
On lance avec l'association le computer club un nouvel after work pour les devs et les passionnés d'informatique en général.
Sur Orléans, la première soirée sera le 3 avril, donc mercredi prochain à 19h au Pied-de-Caffé.
C'est une soirée conviviale où on vient, on boit un coup, on grignote et surtout on fait des super rencontres.
Donc si vous êtes sur Orléans ou dans le Loiré en général, je vous donne rendez-vous mercredi prochain à 19h au Pied-de-Caffé.
Pour venir il faudra évidemment prendre un billet sur Eventbrite, le lien est dans les notes de l'épisode.
Tous les billets sont gratuits, c'est simplement pour contrôler le nombre d'entrées maximum que nous laisse le bar.
Mais en tout cas j'espère vraiment vous y voir nombreuses et nombreuses et moi je vous donne rendez-vous dans une semaine pour cet after work.
Placez l'épisode.
Aujourd'hui l'USB c'est une technologie presque invisible.
Dans le sens où hormis quelques exceptions, on s'attend forcément à avoir au minimum un peu USB sur chaque appareil.
Et on a forcément, forcément pardon chez soi, un câble USB, un micro USB, un USB-C etc.
Pourtant on ne se rend pas forcément compte à quel point cette norme a pu changer la donne dans l'évolution d'informatique.
Dans les années 80 et 90, un ordinateur possède un grand nombre de portes différents.
Un port parallèle pour les imprimantes, un port série pour le modem, des ports PS2 pour le clavier et la souris.
Et encore, il y en a énormément d'autres, je ne cite pas les ports VGA pour l'affichage etc.
Et ça, ça facilite vraiment pas l'arrivée des nouveaux périphériques.
Alors de nombreuses entreprises comme Commodore, Apple, Philips,
se risquent chacun de leurs côtés à construire un port universel standard pour transmettre de la donnée.
Mais le risque, c'est que quand on travaille seul sur un projet, c'est qu'on n'arrive pas à imposer son standard.
Et c'est exactement ce qui se passe pour ces entreprises.
Mais heureusement, au milieu des années 90, un groupement de 7 entreprises majeures du secteur de l'informatique,
il y aura Compac, DEC, IBM, Intel, Microsoft, Neck et Nortel,
et bien toutes ces entreprises s'allient pour créer la première version de la norme USB,
qui verra le jour en janvier 96 et qui deviendra, tel qu'on la connaît, une norme universelle au fil des années.
Et ça tombe bien parce que USB, ça signifie universal, céréale, bus.
Le terme céréale ou série en français, ça permet de différencier les connecteurs dits parallèles.
Un connecteur parallèle, ça va avoir plusieurs broches utilisées pour envoyer des données simultanément.
Par exemple, un connecteur parallèle qui possède 6 broches va pouvoir envoyer 6 bits en simultane.
De son côté, un connecteur série comme l'USB ne va envoyer des données que sur une seule broche ou borne,
et toutes les données seront envoyées les unes à la suite des autres sous la forme de tramont.
L'avantage majeur d'un bus série, c'est sa taille, moins de borne, moins d'espace nécessaire.
Et si vous vous demandez pourquoi on parle de bus ou de bus,
c'est un terme qu'on retrouve en général dans les systèmes électriques et électroniques.
Il est dérivé du latin omnibus, qui signifie pour tout, ou qu'on pourrait traduire par tout en un.
Maintenant qu'on connaît l'origine de cette technologie, on va pouvoir aborder son fonctionnement.
Alors on va s'attarder ici sur le fonctionnement des connecteurs USB type A,
mais si jamais l'épisode vous plaît, on pourra toujours aborder les autres types d'USB dans un prochain épisode.
L'USB type A, c'est la belle prise rectangulaire qu'on connaît tous.
Et si vous en prenez une dans vos mains et que vous regardez attentivement à l'intérieur,
vous apercevrez quatre broches en cuivre qui reposent sur en général un simple morceau de plastique.
De la gauche vers la droite, ces borne s'appellent GND ou Ground pour la masse,
Data plus, Data moins pour recevoir et envoyer des données, et VCC qu'on appelle aussi 5 volts,
parfois tout simplement, qui va permettre de faire passer le courant de charge.
Mais là je sais ce que vous dites.
On n'a pas dit qu'une communication série, contrairement au parallèle,
ça se fait que sur une seule borne, pourquoi est-ce qu'on a deux broches appelées Data plus et Data moins ?
Alors sans trop rentrer dans les détails, c'est ce qu'on appelle un signal différentiel.
Pour faire simple, ce sont exactement les mêmes données qui transiteront sur ces deux fils,
mais les tensions des signaux seront inversées.
Ça permet de réduire le bruit et les interférences électromagnétiques pendant la communication.
Et comme vous le savez, autant sur une communication analogique du bruit,
comme on peut en avoir sur un signal audio, ça va simplement faire grisiller et crépiter.
Mais sur une communication numérique, on envoie des données binaires,
et bien ça peut tout simplement fausser complètement le signal et les données n'auront plus rien à voir
avec ce qu'on a envoyé et ça, ça pose de gros problèmes.
C'est pour ça que c'est un problème majeur et qu'on a des astuces comme justement des signaux différentiels.
Mais avant d'aller plus loin là-dedans, il est important de comprendre une chose sur la communication USB.
C'est que cette communication, elle a un sens.
En USB, chacun des périphériques va jouer un rôle et un seul.
Il y aura donc un HOST en anglais et un périphérique.
C'est toujours l'HOST qui va initialiser la connexion et envoyer des requêtes pour récupérer des données.
Un périphérique ne pourra pas initier de transfert de données de son propre chef.
Lors du premier échange de données, l'autre va demander au périphérique son type inscrit dans la norme USB
et qui est dans une liste non exhaustive où il y a périphérique audio, imprimante, vidéo, stockage, etc.
ou même un type propriétaire pour tous les autres types non références.
Quand je dis liste non exhaustive, c'est ma liste qui n'est pas exhaustive.
La liste de la norme USB est exhaustive et liste une trentaine de types de périphériques.
Mais au final, comment est-ce que l'autre est le périphérique dialogue entre eux ?
C'est ce qu'on va appeler le transfert de données.
Chaque échange de données sera effectué dans une trame qu'on appelle une USB frame,
qu'on peut traduire par un cadre.
Chaque cadre est séparé en deux parties.
D'abord, il y a le SOF ou Start-off Frame Sequence.
Puis ensuite, on va avoir un ensemble de transactions classiques et dont on va voir le contenu après.
Le SOF, il est transmis par l'autre et il contient un numéro incremental
pour identifier chaque trame pour synchroniser et éventuellement interrompre le transfert de données.
Ensuite, il y a chaque transaction qui contiendra les données suivantes.
D'abord, il y a un jeton, un token qui va décrire le type de la transaction.
Ensuite, on va avoir le payload avec toutes les données.
Puis, à la fin, on va avoir un accusé de réception qu'on appelle Endshake ou Poyniennement.
Le jeton, il peut avoir quatre valeurs.
Première valeur, c'est Out.
C'est pour une transmission de l'autre vers le périphérique.
Ensuite, on va avoir In, qui est la transmission inverse,
tout simplement du périphérique vers l'autre.
On va avoir Setup, qui va servir aux transmissions
pour configurer le périphérique si besoin et les transmissions.
Et enfin, le dernier, c'est SOF,
justement pour la toute première transaction de la frame.
J'ai séparé tout à l'heure SOF et les transactions,
mais en réalité, la partie SOF, c'est aussi une transaction qui contient ce token-là.
Ensuite, dans la transaction, on vient les donner.
La taille maximale du payload dépendra du type de connexion USB décidée par l'autre.
En gros, pour faire simple, il y a des types de transmission avec ou sans contrôle d'erreur.
Certaines sont plus rapides, mais moins fiables, et d'autres un peu moins rapides, mais plus fiables.
Et mais globalement, on va dire que les trames pourraient être comprises
entre 8 et 1024 octets par transaction.
Et pour finir, l'accusé de réception, il pourra prendre trois valeurs différentes.
ACK, pour transmission réussie, ça vient de acknowledge en anglais.
NACK, qui est pour transmission, pardon, échouée, non acknowledge.
ESTALL, qui veut dire transmission à réessayer.
On réessaye une transmission.
Voilà un petit peu pour le concept de l'USB, la transmission donnée,
le rôle de chaque périphérique, etc.
J'espère que vous en aurez appris un petit peu plus sur cette norme qu'on a absolument partout dans notre vie.
L'épisode précédent, d'ailleurs, si vous ne l'avez pas écouté,
allez écouter, c'était sur les périphériques d'entrée.
Eh bien, la plupart aujourd'hui sont connectés en USB, parfois en USB-C,
mais c'est simplement une mise à jour avec plus de broches, plus de pins,
d'autres protocoles de communication.
Mais le concept de base reste quand même le même.
Donc, j'espère que vous en aurez appris un petit peu plus sur tout ça.
N'hésitez pas à laisser 5 étoiles sur le podcast,
sur Spotify, Apple Podcast, Google Podcast, Deezer, peu importe.
Mais en tout cas, ça nous aide à être mieux référencés
et à vous apporter toujours plus de contenus et du contenu encore plus intéressant.
Moi, je vous donne rendez-vous la semaine prochaine pour un prochain épisode du podcast
ou directement sur Code Tiré Garage.
Pour aller faire, vous connaissez la plateforme.
On en parle à chaque épisode.
C'est évidemment là où vous pourrez retrouver tous les articles de blog,
tous les épisodes de podcast, mais surtout toutes nos formations.
Maintenant, on vient d'avoir une nouvelle formation là qui est HTML, CSS,
qui est tout juste sorti du four.
Et on peut enfin remplir notre promesse de commencer à vous apprendre le code de zéro.
Alors, si vous écoutez ce podcast, vous n'en êtes sûrement pas là.
Mais si vous avez des gens dans votre entourage qui veulent commencer
à un petit peu toucher au code et bien envoyer les surcodes garage,
ils commencent à toucher un petit peu du HTML, CSS.
Ça permet de rentrer, de mettre un pied,
surtout dans des langages qui sont quand même très simples à aborder.
Ça permet de voir tout de suite si oui ou non.
C'est quelque chose qui peut nous intéresser.
Je vous donne rendez-vous la semaine prochaine,
pas un prochain épisode du podcast.
Salut !

Les infos glanées

Je suis une fonctionnalité encore en dévelopement

Signaler une erreur

Code-Garage

Découvrons ensemble des sujets passionnants autour du métier de dev et de la programmation en général !
Tags
Card title

Lien du podcast

[{'term': 'Technology', 'label': None, 'scheme': 'http://www.itunes.com/'}]

Go somewhere