Il existe aujourd'hui de nombreuses variantes de la norme USB sur le marché, allant des variantes du protocole lui-même aux variations internes. Dans cet article, nous allons examiner l'interface ULPI (interface UTMI + à faible brochage), que l'on trouve dans les couches PHY USB haute vitesse (HS).
L'ULPI est une variante de l'interface UTMI+ avec un nombre de broches réduit. Cela nous aide en tant qu'ingénieurs concepteurs de circuits imprimés, car nous n'avons pas besoin de tracer et de faire correspondre la longueur d'autant de pistes. Ceci est particulièrement avantageux pour les conceptions à espace restreint, ainsi que pour la gestion des interférences électromagnétiques.
L'ULPI est un interfaçage haut vitesse qui permet la mise en œuvre finale de l'USB haute vitesse afin d'atteindre un débit binaire maximum spécifique de 480 Mbps. Il faudra donc faire preuve de prudence lors du routage, afin d'éviter les problèmes d'interférences électromagnétiques et d'intégrité du signal.
Pour plus d'informations, n'hésitez pas à visionner cette vidéo (en anglais).
Une couche PHY USB haute vitesse est, pour faire simple, un point de transition entre une interface ULPI et une paire différentielle USB visible par un connecteur USB. L'interface ULPI est exposée à un circuit intégré compatible, tel qu'un microcontrôleur avancé, un FPGA ou un système sur puce (SoC).
L'interface ULPI est composée d'un bus de données bidirectionnel de 8 bits (DATA[7:0]), d'un signal d'horloge (CLK) fonctionnant à une fréquence de 60 MHz et de divers signaux de contrôle (DIR, STP, NXT).
Bien que la fréquence d'horloge de 60 MHz puisse sembler faible, n'oublions pas ici que nous ne sommes pas nécessairement préoccupés par celle-ci, mais plutôt par les temps de montée et de descente.
C'est dû au fait que les bords de notre signal numérique (presque) carré contiennent la majorité des informations haute fréquence. Sans analyse détaillée, on peut facilement s'en rendre compte en observant la série de Fourier d'une onde carrée qui est composée de la fondamentale (ici, 60 MHz) et d'harmoniques impaires s'étendant à l'infini avec des niveaux de puissance décroissants.
Malheureusement, les temps de montée et de descente sont généralement difficiles à trouver sur la fiche technique d'un fabricant et doivent être extraits via des fichiers IBIS. Les fiches techniques ne nous donnent généralement qu'un « meilleur scénario » pour les temps de montée et de descente, ce qui n'est pas tout à fait suffisant.
Dans tous les cas, en raison de ce contenu harmonique à haute fréquence, ainsi que des contraintes liées à la temporisation imposées par l'interface ULPI, nous devrons faire attention lors du routage.
Les signaux ULPI nécessitent un contrôle d'impédance aux fréquences concernées. Pour les pistes plus longues, celles-ci agiront comme des lignes de transmission. Ainsi, l'impédance doit correspondre au niveau du driver et du récepteur.
De manière générale, les pistes ULPI devront avoir une impédance contrôlée de 50 ohms. Nous n'aborderons pas dans cet article le calcul de l'impédance des pistes. Toutefois, Altium Designer propose un solveur de champs 2D très pratique.
Vous devrez connaître l'empilement de votre circuit imprimé et saisir ces informations dans le gestionnaire d'empilage de couches d'Altium Designer. Ensuite, vous pourrez accéder à l'onglet « Impedance » et Altium Designer se chargera de calculer la largeur de piste requise pour une impédance donnée.
Notez que la paire différentielle USB haute vitesse doit être routée avec une impédance différentielle de 90 ohms.
Outre le contrôle de notre impédance de piste, nous devons aussi égaliser le temps de propagation des pistes. La spécification ULPI et les spécifications de synchronisation de la fiche technique PHY peuvent être utilisées pour déterminer le budget de synchronisation.
Si vous n'avez encore jamais calculé de budget de synchronisation auparavant, n'oubliez pas de consulter le guide de l'utilisateur UG863 de Xilinx et en particulier la section USB 2.0. Vous obtiendrez ainsi les calculs de la longueur de piste maximale autorisée, ainsi que les variations maximales du temps de propagation entre les pistes de signaux ULPI et la piste CLK.
Quel que soit le scénario d'égalisation du temps de propagation, n'oubliez pas de prendre en compte les retards liés aux broches du boîtier de votre contrôleur. Comme pour les temps de montée et de descente, les retards des broches et du boîtier peuvent être assez difficiles à identifier. Cependant, ils peuvent être de l'ordre de plusieurs centaines de picosecondes, ce qui peut impacter votre budget de synchronisation.
Il faudra également tenir compte des retards liés aux vias. Il existe une méthode de routage simple permettant d'ignorer ce retard en routant toutes les pistes de la même manière. Cela implique d'utiliser le même nombre de vias et les mêmes transitions de couches pour tous les signaux ULPI.
N'oubliez pas d'ajouter des plans de référence pleins (de préférence, des plans « 0V ») directement adjacents à vos pistes de signaux. Il est également recommandé d'ajouter un diélectrique fin entre les deux. De même, ne routez pas les pistes ULPI sur des séparations ou des vides dans le plan de référence.
Enfin, lors de la transition entre des références et des couches avec un via de signal, veillez à placer un via de « transition » (à « 0V ») à proximité du via de signal. Cela permet de s'assurer que le chemin de retour soit toujours bien défini et garantisse une bonne transition du plan de référence pendant la transition sur l'axe Z.
Le routage ULPI nécessite une attention particulière en ce qui concerne la topologie et le routage des circuits imprimés.
Cependant, avec un peu de réflexion et en suivant les indications de cet article, vous parviendrez à créer des conceptions ULPI fonctionnelles tout en évitant les problèmes d'interférences électromagnétiques et d'intégrité du signal.
Altium Designer peut vous assister dans ce processus grâce à son solveur de champ 2D avancé pour les calculs d'impédance, ainsi que ses outils d'égalisation du temps de propagation et de longueur.