La série d’adresse et l’IRQ
Le PC alloue donc une série d’adresses de port et une commande d’interruption (IRQ) pour les interfaces USB.
Contrairement aux autres périphériques qui ne sont pas USB, pour chaque ajout d’un périphérique il faut lui associer une adresse de port, souvent un IRQ ainsi qu’une carte d’extension si le PC n’en possède plus ou pas assez. Avec les périphériques USB, tous ces problèmes sont inexistants.
Le HUB
Un atout majeur du bus USB est qu’il est très facile à connecter, on n’a pas besoin d’ouvrir le PC à chaque fois que l’on veut rajouter un périphérique, les anciens PC possèdent au minimum deux ports USB (de nos jours il y en a davantage). On peut aussi connecter un HUB sur un port déjà existant pour pouvoir connecter encore plus de périphériques USB.
Le HUB joue en quelque sorte le rôle de multiplexeur (connexion de plusieurs périphériques à un même câble) mais aussi de répétiteur, d’amplificateur, de contrôleur du signal et de fournisseur de courant. C’est un multiplieur de port USB. Actuellement certains moniteurs, claviers … possèdent des HUBs intégrés. On peut, évidemment, reconnecter d’autres HUBs aux HUBs cité précédemment.
Le Hot pluggable
Un autre avantage du bus USB est la connectique. En effet les câbles possèdent deux extrémités bien différentes pour ne pas se tromper lors du branchement, de plus les câbles USB sont très compacts comparer aux câbles pour les liaisons parallèles ou séries.
On dit également que le bus USB est « Hot pluggable », c’est à dire que l’on peut connecter et déconnecter un périphérique USB tout en ayant le PC allumé. L’Operating System installé sur le PC (Windows …) le reconnaît ainsi immédiatement.
Le Power conservation
L’USB possède aussi une caractéristique très intéressante : c’est le mode veille lorsque l’on n’utilise pas le périphérique. On l’appelle aussi « Power conservation ». En effet le bus USB se met en suspend après 3 ms ou il n’est plus utilisé. Pendant ce mode, le composant ne consomme que 500μA.
Enfin, le dernier point fort pour l’USB est que cette norme permet d’alimenter le périphérique directement avec le PC. Il n’est pas nécessaire d’alimenter le périphérique avec une alimentation extérieure, le PC suffit.
Domaine d’utilisation des différentes vitesses
Les applications Low Speed concernent essentiellement des périphériques interactifs (claviers, souris, consoles), mais aussi des afficheurs, des lecteurs (de carte à puce) et des applications en automatismes (mesure, capteurs) appelées à se développer.
En mode Full Speed on va trouver la téléphonie, les modems, les disques, les imprimantes, les fax ainsi que les scanners, certains lecteurs de carte à puce et le domaine multimédia (jeux, audio, vidéo limitée). Et pour les 2 autres (High Speed et le Super Speed), il peut s’appliquer à tous les domaines cités précédemment et voir plus. De plus, ces deux derniers c’est pour la raison de puissance au niveau du transfert et la mise à jour des normes correspondants aux différents nouveaux appareils actuels.
Les débits de l’USB
Il faut noter que dans la norme USB le débit n’est pas proportionnel à la vitesse. L’USB « Low Speed » qui est consacré aux périphériques soit disant lents est limités à échanger aux maximum 8 octets toutes les 10 [ms], ce qui correspond à un débit maximum de 800 [octets/sec] soit 6400 [bits/s]. Par certains moyens détournés il est possible d’espérer atteindre 8 [Ko/s], mais c’est sans garantie.
L’USB « Full Speed » qui est consacré aux HUBs et aux périphériques non lents peut échanger jusqu’à 1024 octets toutes les ms, soit un débit de [1 Mo/s].
L’électrique
A moins qu’on ne concevait le silicium pour un appareil ou émetteur / récepteur USB ou bien pour un hôte ou Hub USB, il n’y a pas grand-chose à retenir des particularités électriques. On va préciser brièvement les points essentiels ici-même :
Comme nous le savons déjà, l’USB utilise une paire de transmission différentielle (cf annexe) pour les données. Celle-ci étant codé en utilisant le NRZI et est garni de bits pour assurer les transitions adéquates dans le flot de données.
Sur les appareils à vitesse basse et pleine un ‘1’ différentiel est transmis en mettant D+ au-dessus de 2,8[V] grâce à une résistance de 15[kΩ] relié à la masse et D- en dessous de 0,3[V] avec une résistance de 1,5k ohms relié à 3,6[V]. D’autre part un différentiel ‘0’ correspond à D- plus grandque 2,8[V] et D+ inférieur à 0,3[V] avec les mêmes résistances de rappel état haut/bas adéquates.
Le récepteur défini un différentiel ‘1’ avec D+ plus grand de 200[mV] que D- et un différentiel ‘0’ avec D+ plus petit de 200[mV] que D-. La polarité du signal est inversée en fonction de la vitesse du BUS. En conséquence les états référencés par les termes ‘J’ et ‘K’ sont utilisés pour signifier les niveaux logiques. En vitesse basse, un état ‘J’ ai un différentiel ‘0’. En vitesse haute, un état ‘J’ ai un différentiel ‘1’.
Les émetteurs / récepteurs USB comprendront à la fois des sorties différentiels et uniques (non complémentaires). Certains états de BUS USB sont indiqués par des signaux à sorties uniques (single ended zero ou SE0) sur D+, D- ou les deux. Par exemple un zéro à sorties uniques ou SE0 peut être utilisé pour signifier la réinitialisation d’un appareil s’il est maintenu plus de 10[ms]. On génère un SE0 en maintenant D+ et D- en position basse (inférieur à 0,3[V]). Les sorties uniques et différentielles sont importantes d’être notées si vous utilisez un émetteurs / récepteurs et un FPGA comme appareil USB. Vous ne pouvez pas vous contenter simplement d’échantillonner la sortie différentielle.
Le BUS basse et pleine vitesse a une impédance caractéristique de 90[Ω] +/-15%. Il est donc important d’observer la documentation technique lorsque vous sélectionnez les résistances des caractéristiques électriques séries pour D+ et D- afin d’équilibrer l’impédance. Toute documentation technique devrait spécifier ces valeurs et tolérances.
Le mode vitesse haute (480 Mbits/s) utilise un courant constant de 17,78[mA] pour demander de réduire le bruit.
Identification de la vitesse
Un appareil USB doit indiquer sa vitesse en mettant soit D+ ou D- à 3,3[V]. Un appareil pleine vitesse, représenté plus bas utilisera une résistance de rappel rattaché à D+ pour se signaler comme tel. Ces résistances de rappel à l’extrémité de l’appareil seraient aussi utilisés par l’hôte ou Hub pour détecter la présence d’un appareil connecté à son port. Sans résistance de rappel, l’USB suppose qu’il n’y a rien de connecté au BUS. Certains appareils possèdent cette résistance intégré sur le silicium, pouvant être connecté ou non sous commande micro-programmée, d’autres exigent une résistance externe.
Par exemple Philips Semi-conducteur a une technologie Soft connectTM. Lors d’une première connexion au BUS, elle permet au microcontrôleur d’initialiser la fonction USB de l’appareil avant de valider la résistance de rappel d’identification de vitesse, indiquant ainsi qu’un appareil est relié au BUS.
Si la résistance de rappel était connectée à VBUS, alors celle-ci indiquerait qu’un appareil est branché au BUS dès que la prise est insérée. L’hôte peut alors tenter de réinitialiser l’appareil et demander un descripteur au moment où le microprocesseur n’a pas encore commencé à initialiser lafonction USB de l’appareil.
Courant de veille
Le mode Veille est obligatoire sur tous les appareils. Pendant son temps d’action, d’autres contraintes surviennent. Le courant maximum de veille est proportionnel à l’unité de charge. Pour un appareil d’une unité de charge (par défaut) le courant de veille maximum est de 500[μA]. Ceci comprend le courant dû aux résistances de rappel sur le Bus. Au niveau du Hub, D- et D+ possèdent des résistances de rappel niveau bas de 15 [kΩ]. Pour des raisons de consommation électrique, la résistance de rappel niveau bas de l’appareil est montée en série avec la résistance de rappel niveau haut de 1,5[kΩ], totalisant ainsi une charge de 16,5[kΩ] sur VTERM habituel de 3,3[V]. Par conséquent cette résistance draine un courant de 200[μA] avant même que l’on commence.
Une autre considération pour bon nombre d’appareils est le régulateur de 3,3V. Un grand nombre d’appareil USB fonctionne sur 3,3[V]. Le PDIUSBD11 en est un exemple. Les régulateurs linéaires sont habituellement tout à fait inefficaces avec des courants de repos moyen de l’ordre de 600[μA], par conséquent on aura besoin de régulateurs plus efficace et donc plus cher. Dans la majorité des cas, on doit ralentir ou arrêter les horloges pour que la consommation du microcontrôleur tombe en dessous de la limite de 500[μA].
Toutefois en fonctionnement normal, si on essaye de dépasser les 100[mA] ou la charge permise qui vous est indiqué, alors le Hub ou Hôte le détecte et déconnecte l’appareil, dans l’intérêt del’intégrité du Bus.
Accès au mode veille
Un appareil USB entrera en veille lorsqu’il n’y a aucune activité sur le Bus pendant plus de 3[ms].
Il dispose ensuite de 7[ms] de plus pour éteindre l’appareil et ne prendre que le courant de veille désigné, ne prenant ainsi que le courant de veille nominal à partir du Bus 10[ms] après que l’activité du Bus ce soit arrêté. Afin de le maintenir connecté à un Hub ou à un Hôte mis en veille, l’appareil doit encore fournir de l’alimentation à ces résistances de rappel de sélection de vitesse pendant le mode veille.
L’USB possède un démarrage de trames de bits ou bien d’entretien qui sont envoyés périodiquement sur le Bus. Ceci empêche un Bus inutilisé d’entrer dans le mode veille en l’absence de données.
Comme ci-dessous :
Un Bus haute vitesse enverra une trame toutes les 125.0 [μs] ±62.5 [ns].
Un Bus pleine vitesse enverra une trame toutes les 1.000 [ms] ±500 [ns].
Un Bus basse vitesse aura un dispositif d’entretien qui est un EOP (End Of Packet ou Fin De Paquet) toutes les 1[ms] simplement en l’absence de données basse vitesse.
Le terme veille Global (Global Suspend) est utilisé lorsque le Bus USB entier entre collectivement dans le mode veille. Cependant les appareils sélectionnés peuvent être mis en veille en ordonnant au Hub sur lequel l’appareil est aussi connecté. On fait référence à cette opération comme mode « veille sélective ». L’appareil reprendra son fonctionnement quand il recevra tout signal qui n’est pas en attente. Si un appareil possède une mise en service de réveil retardé, alors il devra signaler à l’Hôte de reprendre à partir du mode veille.
Taux de transfert de données
Un autre domaine qui est souvent négligé est la tolérance de l’horloge USB. Elle est précisée dans la spécification USB 7.1.11 :
Les données haute vitesse sont cadencées à 480.00 [Mb/s] avec une tolérance de transmission de données de ± 500 ppm ;
Les données pleine vitesse sont cadencés à 12.000 [Mb/s] avec une tolérance de transmission de données de ± 0.25 % ou 2,500 ppm ;
Les données basse vitesse sont cadencées à 1.50 [Mb/s] avec une tolérance de transmission de données de ±1.5 % ou 15,000 ppm. Cela permet aux résonateurs d’être utilisés pour des appareils faibles vitesse et faible coût, mais d’être exclus pour des appareils pleins et hauts vitesse.
LE BUS USB PROPREMENT DITE
Principe du bus USB
Le bus USB est un bus fonctionnant sur la hiérarchie, commandé par un host unique. Le host utilise un protocole Maître/Esclave pour communiquer avec les périphériques USB. Cela signifie que c’est le host qui décide du transfert des données et que les différents périphériques ne peuvent pas établir de connexion entre eux tant que le maître n’a pas donné l’autorisation. On peut dire que cela peut être un inconvénient par rapport aux autres protocoles mais il ne faut pas oublier que l’USB a été conçu avec des compromis de coût et de performance. Le fait que le bus USB fonctionne avec le protocole Maître/Esclave résout implicitement ces problèmes comme par exemples les problèmes de collision ou d’arbitrage de périphériques.
Topologie du Bus USB
La topologie du port est une topologie « étoile série » ou encore « tiered star » qui tolère jusqu’à 5 niveaux de concentrateurs. La spécification limite le nombre de périphérique à 127. Un dispositif conforme à la norme 2.0 peut être relié à un HUB 1.1 mais dans ce cas le trafic sera celui défini par la norme 1.1. C’est toujours les même pour les autres normes. Les divers cas possibles sont précisés sur la figure ci-dessous. Notons qu’à l’initialisation d’un « device » (ou d’une fonction selon la terminologie utilisée par le groupement USB) celui-ci reçoit une adresse. Les transferts Full Speed déclenchés par le « host » parcourent tous les tronçons, mais seule la fonction adressée va évidemmentrépondre. Ainsi s’il s’agit d’un ordre d’impression il sera reçu par tous les périphériques, mais seule l’imprimante le comprendra.
Type de paquet USB
Contrairement à la RS232 et des interfaces sérielles similaires où le format des données envoyées n’est pas défini, l’USB est composé de plusieurs couches de protocoles. Une fois qu’on comprit ce qui se passe, on doit uniquement inquiéter des couches supérieures. En fait la plupart des Circuits Intégrés contrôleur d’USB s’occuperont de la couche inférieure, la rendant ainsi presque invisible au regard du concepteur final. Les données sur le BUS USB sont transmises avec le bit
LSB en premier. L’USB a quatre types différents de paquet : les paquets jetons (Token) indiquent le type de la transaction qui va suivre, les paquets de données contiennent la charge utile, les paquets « Handshake » ou « poignée de mains » sont utilisés pour valider les données ou rapporter les erreurs et ainsi les paquets début de trame (SOF) indiquent le commencement d’une nouvelle trame.
TRANSFERTS D’INTERRUPTION (OU INTERRUPT)
Le transfert par interruption est utilisé par les appareils ayant peu de données à transmettre, mais ayant des données qui doivent être transmises rapidement (exemple: clavier ou souris). Les interruptions sont détectées par polling (interrogation successives) de la part de l’hôte. La fréquence de polling requise est donnée par les descripteurs de l’appareil. Ce mode de transfert est également compatible avec le Low et Full Speed.
Ce type de transfert est une expérience de demandes d’interruption sur microcontrôleurs saura que les interruptions sont générées par l’appareil. Toutefois sous USB, si un appareil demande l’attention de l’hôte, il doit attendre que l’hôte l’interroge avant de signaler qu’il a besoin d’une attention urgente.
Si une interruption a été mise en attente par l’appareil, la fonction enverra un paquet Data contenant des données ayant rapport à l’interruption quand il recevra le jeton IN. Sur des réceptions au niveau de l’hôte, celui-ci retournera un ACK. Toutefois si les données sont altérées, l’hôte ne mentionnera aucun état. Si, d’autre part, une condition d’interruption n’était pas.
TRANSFERTS ISOCHRONES
Le transfert isochrone est un mode de transfert pour lequel les données sont transmises à l’intérieur d’une trame et elles sont synchronisées avec les débuts de trames. Il est utilisé pour des transferts nécessitant un flux régulier de données comme par exemple les caméras ou les téléphones. Ce mode de transfert est uniquement compatible avec la vitesse Full USB.
Ils contiennent généralement des informations à durée de vie critique, tel des trains de données audio ou vidéo. S’il y avait un retard ou une reprise de données dans un flot de données audio, alors on pourrait s’attendre à de l’audio par intermittence contenant des signaux transitoires. Le battement (rythme) ne serait plus synchronisé. Toutefois si un paquet ou une trame se perdait, il est vraisemblable que l’auditeur ne le remarquerait même pas.
Les transferts Isochrones fournissent :
Un accès garanti à la bande passante USB.
Un temps d’attente limité.
Des flux de données – Unidirectionnel.
La détection d’erreur via le CRC, mais sans reprise ou garantie de livraison.
Seulement des modes pleines et haute vitesse.
Pas de données de basculement (basculage, cachées, de commutation)
TRANSFERT EN BLOC (OU BULK)
Les Transferts en Bloc peuvent être utilisés pour de grandes quantités de données sporadiques. De tels exemples pourraient inclure un travail d’impression envoyé à une imprimante ou une image provenant d’un scanner.
Les Transferts en Bloc se prémunissent de correction d’erreurs sous la forme d’un champ CRC16 sur les données » charge utile » et sur les mécanismes de détection et de retransmission d’erreurs qui assure la transmission et la réception de données de manière infaillible. Les Transferts en Bloc utiliseront une bande passante de réserve non attribuée sur le Bus après que toutes les autres transactions aient été allouées.
Si le Bus est occupé avec de l’Isochrone et/ou de l’interruption, les données en bloc peuvent alors s’écouler doucement sur le Bus. En conséquence, les transferts en bloc devraient seulement être utilisés pour des communications insensibles au temps du fait du non garanti du temps d’attente.
Les Transferts en Bloc
Utilisés pour de grandes quantités de données sporadiques.
Détection d’erreurs via le CRC, avec la garantie de livraison.
Pas de garantie de bande passante ou du temps d’attente minimum.
Des flux de données – Unidirectionnel.
Seulement les modes pleines et haute vitesse.
Ce mode de transfert est uniquement compatible avec le Full USB. Ce mode est réservé pour les gros transferts de données (imprimantes…). Le débit est variable et dépend de la disponibilité. Ce mode assure la reprise sur les erreurs.
Table des matières
REMERCIEMENTS
TABLES DES MATIERES
LISTE DES FIGURES
LISTE DES TABLEUAUX
INRODUCTION GENERALE
CHAPITRE 1. L’ETUDE THEORIQUE DU PORT UNIVERSAL SERIAL BUS (USB)
GENERALITES SUR L’USB
Introduction
Origine de l’USB
La naissance et l’évolution de la norme USB
Facilité d’utilisation
VITESSE DE TRANSFERT DE L’USB
Définitions des différentes vitesses
Raison des trois vitesses de l’USB
Domaine d’utilisation des différentes vitesses
Les débits de l’USB
LE MATERIEL
Les connecteurs
L’électrique
Identification de la vitesse
Alimentation (VBUS)
Courant de veille
Accès au mode veille
Taux de transfert de données
LE BUS USB PROPREMENT DITE
Principe du bus USB
Topologie du Bus USB
Protocole USB
Type de paquet USB
NOTIONS IMPORTANTES SUR L’USB
Architectures de transmissions des données (entrées/sorties)
Les terminaisons (ou les types de transferts)
Les descripteurs USB
L’énumération
CHAPITRE 2. LA TECHNILOGIE DU PORT FIREWIRE (IEEE 1394 ou I.LINK) LA THEORIE DU BUS FIREWIRE
Historique
Les normes FireWire
Le connecteur FireWire
Brochage du FireWire
Architecture
Caractéristiques techniques
FONCTIONNEMENT DU BUS FIREWIRE
La topologie
Les types de transferts
Modes de transmissions
CARACTERISTIQUES
Le protocole
La couche physique
L’arbitrage
La Couche de Lien (Link Layer)
La Couche de Transaction
CHAPITRE 3. LA COMPARAISON DES DEUX PORTS
INTRODUCTION
LES DIFFERENCES ENTRE USB ET FIREWIRE
CES AVANTAGES
Le port USB
Le bus FireWire
CES INCONVENIENTS
De l’USB
Du FireWire
EXEMPLE DE COMPARAISON ENTRE USB2.0 ET IEEE 1394
Performance
Tableau comparatif
CONCLUSION
CONCLUSION GENERALE
REFERENCES BIBLIOGRAPHIQUES