Document traduit du site Beyond Logic par Bernard Acquier ( http://perso.wanadoo.fr/bernard.acquier/sommaire.html )
 
L'USB en bref

Donner un sens au standard USB


  Les connecteurs

Tous les appareils ont une connexion amont vers l'hôte et tous les hôtes ont une connexion aval vers l'appareil. Les connecteurs amont et aval ne sont pas interchangeables mécaniquement, éliminant ainsi les connexions de rebouclage interdite aux Hubs comme pour un port aval connecté à un port aval. Il y a généralement 2 types de connecteurs, appelé type A et type B présenté ci-dessous.

Connecteur USB type A
Connecteur USB type B

Les prises mâles de type A sont toujours tournés vers l'Amont. Les prises femelles de type A se trouveront généralement sur les hôtes et les Hubs. Par exemple, les prises femmelles de type A sont courantes sur les cartes mères des ordinateurs et les Hubs. Les prises mâles de type B sont toujours connecté vers l'aval et par conséquent les prises femelles de type B se trouvent sur les appareils.

Il peut-être intéressant de trouver des câbles de type A vers type A avec un câblage direct et une matrice de changeur de genre USB dans certains magasins d'ordinateurs. C'est en contradiction avec la spécification USB. Les seuls appareils avec prise type A vers prise type A sont des ponts que l'on utilise pour brancher 2 ordinateurs entre eux. D'autres câbles prohibés sont les extensions USB qui ont une prise mâle à une extrémité (soit de type A ou de type B) et une prise femelle à l'autre. Ces câbles ne respectent pas les exigences de longueur de câble de l'USB.

L'USB 2.0 comprenait un errata qui présente les mini connecteurs USB de type B. On peut trouver les détails de ces connecteurs dans la notice changement technique des mini connecteurs B. La raison d'être des mini connecteurs est issu de la gamme d'appareils électroniques miniatures comme les téléphones mobiles et les agendas électroniques. Le connecteur ordinaire de type B est trop grand pour être facilement intégré à ces appareils.

Il vient de paraître une spécificité On-the-Go qui ajoute la fonctionalité pair à pair (peer to peer) à l'USB. D'où l'introduction des hôtes USB dans les téléphones mobiles et les agendas électroniques, de même qu'une particularité pour les prises mâles mini A, les prises femelles mini A et les prises femelles mini A-B. Tout porte à croire que nous devrions être inondés de câbles mini USB et d'une gamme de câbles convertisseurs de la taille mini à standard.

Numéro de broches
Couleurs des câbles
Fonction
1
Rouge
VBUS (5 volts)
2
Blanc
D-
3
Vert
D+
4
Noir
Masse
On utilise des couleurs standards pour les fils intérieurs des câbles USB de façon à faciliter l'identification des fils d'un constructeur à un autre. La normalisation précise les différents paramètres électriques pour les câbles. Il peut être intéressant de lire en détail la documentation sur l'USB 1.0 d'origine qui est incluse. Vous comprendrez qu'elle précise les caractéristiques électriques, mais le paragraphe 6.3.1.2 suggérait que la couleur recommandé pour le surmoulage sur les câbles devrait être blanc comme neige. Quelle monotonie! Quand on sait que l'USB 1.1 et USB 2.0 ont été assoupli pour recommander le Noir, le Gris ou le naturel.

Les concepteurs PCB voudront se référer au chapitre 6 pour des empreintes de pas standards et des affectations des broches.
 
L'Electrique.

A moins que vous ne conceviez 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 du chapitre 7. Nous vous précisons brièvement les points essentiels ici-même.

Comme nous en avons déjà discuté, l'USB utilise une paire de transmission différentiel 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,8V grâce à une résistance de 15k ohms relié à la masse et D- en dessous de 0,3V avec une résistance de 1,5k ohms relié à 3,6V. D'autre part un différentiel '0' correspond à D- plus grand que 2,8V et D+ inférieur à 0,3V 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é 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' est un différentiel '0'. En vitesse haute, un état 'J' est 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) 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,3V). 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 Ohms +/-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,3V. 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 microprogrammée, d'autres exigent une résistance externe.

Par exemple Philips Semiconducteur 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é à 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 ou le microprocesseur n'a pas encore commencé à initialiser la fonction USB de l'appareil.

D'autres fournisseurs tel que Cypress Semiconducteur utilise aussi une résistance programmable à des fins de Re-NumérationTM dans leurs appareils EzUSB ou l'appareil peut-être énuméré par une fonction telle que la programmation sur champs puis être déconnecté du BUS sous commande micro programmée, et énuméré en tant qu'appareil différent, tout cela en un clin d'oeil. La plupart des appareils EzUSB n'ont pas de Flash ou de ROM OTP pour stocker le code. Ils sont amorcés dès le branchement.
 

Figure 2 : Appareil pleine vitesse avec résistance de rappel état haut branché sur D+
Figure 3 : Appareil basse vitesse avec résistance de rappel état haut branché sur D-

Vous noterez que nous n'avons pas inclus d'identification de vitesse pour le mode haute vitesse. Les appareils haute vitesse démarreront dès qu'ils seront connectés en tant qu'appareils pleine vitesse (1,5 kOhms à 3,3V). Une fois qu'il sera attaché il émettra un Chirp à haute vitesse pendant la réinitialisation et établira une connexion à grande vitesse si le Hub le supporte. Si l'appareil fonctionne en mode haute vitesse, alors la résistance de rappel est retiré pour équilibrer la ligne.

Un appareil de détection d'anomalie pour l'USB 2.0 n'est pas utile pour supporter le mode haute vitesse. Cela permet d'utiliser des appareils meilleurs marché si la vitesse n'est pas critique. C'est aussi le cas des appareils USB1.1 basse vitesse qui n'est pas nécessaire pour supporter la plein vitesse.

Toutefois un appareil haute vitesse ne peut pas supporter le mode basse vitesse. Il devrait seulement supporter le mode pleine vitesse nécessaire en début de connexion, ensuite le mode haute vitesse s'il réussit par être négocié. Un appareil face aval à détection d'anomalies pour l'USB 2.0 (Hub ou Hôte) doit supporter les 3 modes, Haute, pleine et basse vitesse.
 
Alimentation (VBUS)
 

Un des avantages de l'USB réside dans ces appareils alimentés par le Bus. Ceux-ci obtiennent leur alimentation à partir du Bus et ne demande aucune prise externe et câble additionnel. Cependant beaucoup de gens se focalisent sur cette option sans prendre en compte au préalable tous les critères nécessaires.

Un appareil USB précise sa consommation électrique exprimé en unité de 2mA dans le descripteur de la configuration que nous examinerons plus tard. Un appareil ne peut pas augmenter sa consommation électrique plus qu'il n'est précisé pendant l'énumération, même s'il perd de la puissance externe. Il existe 3 classes de fonctions USB,

  • Les fonctions alimentés par le Bus à basse puissance (Low-Power)
  • Les fonctions alimentés par le Bus à haute puissance (High-Power)
  • Les fonctions auto alimentées (Self-powered)
Les fonctions alimentés par le Bus à basse puissance tire toute leur puissance de VBus et ne peuvent en tirer que la charge d'une unité. La spécification USB défini une charge d'unité à 100mA. Les fonctions alimentés par le Bus à basse puissance peuvent aussi être conçus pour travailler à une tension de VBUS tombant à 4,4V et montant à un maximum de 5,25V mesuré à la prise amont de l'appareil. Pour beaucoup d'appareil 3,3V, des régulateurs LDO sont obligatoires.

Les fonctions alimentés par le Bus à haute puissance tireront toute leur puissance du Bus et ne pourront tirer plus d'une unité de charge jusqu'à ce qu'elles aient été configurées, après quoi elle pourront tirer 5 unités de charge (500mA max) pourvu que cela soit demandé dans son descripteur. Les fonctions du Bus à Haute puissance doivent être capable d'être détectées et énumérées à un minimum de 4,40V. Lorsqu'elles fonctionnent à pleine charge, un VBUS minimum de 4,75V est précisé avec un maximum de 5,25V. Une fois de plus, ces mesures sont prises à la prise mâle amont.

Les fonctions auto alimentées peuvent tirer jusqu'à une unité et faire dériver le reste de leur alimentation d'une source extérieure. Si cette source extérieure venait à manquer, il doit y avoir des résreves en place de manière à ne pas tirer plus d'une unité de charge du Bus. Les fonctions auto alimentées sont plus facile à concevoir au niveau de la spécification car il ne peut guère y avoir de problêmes en ce qui concerne l'alimentation électrique. La charge alimentée par le Bus à une seule unité permet la détection de l'énumération d'appareil sans avoir besoin d'une alimentation principale/secondaire du secteur.

Aucun appareil USB, qu'il soit alimenté par le Bus ou bien auto alimentée ne peut piloter VBus sur son port face amont. Si VBus est perdu, l'appareil a une durée de 10 secondes pour retirer l'alimentation des résistances de rappel de D+/D- utilisées pour l'identification de la vitesse.

Les autres considérations de VBUS sont l'appel de courant qui doit être limité. Ceci est souligné dans le paragraphe 7.2.4.1 des spécifications USB et est souvent laissé de côté. L'appel de courant est soutenu au niveau de la capacité de tête de votre appareil entre VBUS et la masse. Les spécifications précisent par conséquent que la capacité de découplage maximum que vous pouvez avoir sur votre appareil est de 10µF. Quand vous déconnectez l'appareil après que le courant soit passé par le câble USB inductif, une grande tension de retour peut se produire sur l'extrémité ouverte du câble. Pour éviter ceci, on recommande une capacité de découplage VBUS minimum de 1µF.

Pour l'appareil habituel alimenté sur un Bus, celui-ci ne peut drainer plus de 500 mA, ce qui est fort raisonnable. Où est donc la complication, me demandez vous? Peut-être dans le mode veille (suspend)?
 
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ésisatnces de rappel niveau bas de 15 kOhm. 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 kOhm, totalisant ainsi une charge de 16,5 kOhm sur VTERM habituel de 3,3V. 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,3V. Le PDIUSBD11 en est un exemple. Les régulateurs linéaires sont habituellement tout à fait inefficace 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, vous devez ralentir ou arrêter les horloges pour que la consommation du microcontrôleur tombe en dessous de la limite de 500µA.

Beaucoup de développeur demande au forum des fournisseurs USB, quelles sont les complications si l'on dépasse cette limite? On comprend bien, que la plupart des Hôtes et des Hubs n'ont pas la possibilité de détecter de surcharge de cette importance et ainsi si vous drainez peut-être 5 mA ou même 10 mA cela devrait aller, tout en gardant à l'esprit qu'à la fin de la journée, votre appareil a enfreint la spécification USB. Toutefois en fonctionnement normal, si vous essayez de dépasser les 100 mA ou la charge permise qui vous est indiqué, alors attendez-vous à ce que le Hub ou Hôte le détecte et déconnecte votre appareil, dans l'intérêt de l'intégrité du Bus.

Bien sûr, ces problèmes de conception peuvent être évités si vous choisissez de concevoir un appareil auto alimenté. Les courants de veille peuvent ne pas être d'un grand inérêt pour les ordinateurs de bureau mais avec l'introduction de la spécification On-The-Go, nous allons commencer à voir des Hôtes USB construit dans les téléphones mobiles et agendas électroniques. La consommation électrique utilisée à partir de ces appareils affectera défavorablement la durée de vie de la batterie.
 
Accès au mode veille

Un appareil USB entrera en veille lorsqu'il n'y a aucune activité sur le Bus pendant plus de 3ms. Il dispose ensuite de 7ms 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 10ms 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 (frame packet) 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.

  • 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 Pacquet) toutes les 1ms 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'appreil 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 des 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és à 480.00Mb/s avec une tolérance de transmission de données de ± 500ppm.
  • Les données pleine vitesse sont cadencés à 12.000Mb/s avec une tolérance de transmission de données de ±0.25% or 2,500ppm. 
  • Les données basse vitesse sont cadencés à 1.50Mb/s avec une tolérance de transmission de données de ±1.5% or 15,000ppm. 
Cela permet aux résonnateurs d'être utilisés pour des appareils basse vitesse et faîble coût, mais d'être exclus pour des appareils pleine et haute vitesse.
 
 
Ce document vous a plu, alors il est possible de le télécharger au format PDF CHAPITRE 2


 
Introduction. Chap.1
Le protocole USB. Chap.3
Les types de terminaisons. Chap.4
Les descripteurs USB. Chap.5
Les requêtes USB. Chap.6
Exemple avec un PDIUSBD11 et un PIC16F87x Chap.7


Accueil

Sommaire