English version

Le WizYasep

Le WizYasep est une carte électronique conçue par YGDES pour transmettre et transcoder des flux de données par Ethernet, à haute vitesse, faible latence et faible gigue. Il est destiné initialement au contrôle d'écrans de LED en réseau, mais sa simplicité, ses performances et sa flexibilité le rendent très utile pour d'autres applications industrielles, embarquées et temps-réel.

Le WizYasep est conçu et développé en France par YGDES, en utilisant des outils développés pour le projet YASEP, et est assemblé en France par Dipole Electronique.

Implantation

1 : Bornier 5V

2 : JTAG (reconfigure le FPGA)

3 : connecteur module Wiznet

4 : borniers sorties numériques

5 : Régulateur 3,3V

6 : FPGA A3P250-VQ100

7 : Flash SPI

8 : Oscillateur 64MHz

9 : connecteur Z (console)

10 : connecteur Y (sorties 5V)

11 : connecteur X (GPIO, bus 16 bits)


Caractéristiques techniques de la version 1 (2014) :

Performance

La combinaison d'un FPGA Flash et d'un module Wiznet à pile TCP/IP câblée évite les incertitudes rencontrées avec les microcontrôleurs ou microprocesseurs classiques. Pour commencer, l'absence de système d'exploitation garantit le fonctionnement immédiat dès la mise sous tension. Cela assure aussi des temps de réponse extrêmement courts et stables : un ping au travers d'un hub Ethernet dure 0,1ms, soit 7× plus rapide qu'un Raspberry Pi.

Le FPGA permet de paralléliser de nombreux traitements logiques simples, ce qui enlève les goulots d'étranglements inhérents aux programmes (le simple réordonnancement de données peut augmenter la latence d'un programme) et contribue au déterminisme des temps de réponse. La PLL permet d'accélérer ou ralentir l'horloge de 64MHz.

Le module Wiznet gère simultanément 8 sockets IP et dispose de 128Ki octets de mémoire tampon pour stocker les données reçues ou émises, ce qui permet de travailler sur des gros blocs de données. Le bus de données parallèle sur 16 bits accède au tampon à 18MO/s, deux fois plus vite que l'interface réseau.

Flexibilité

Le FPGA est un circuit extrêmement flexible, qui permet de travailler avec plusieurs domaines d'horloge, d'effectuer des traitement logiques parallèles et d'allouer n'importe quelle broche à n'importe quelle fonction. Plus besoin de changer de modèle ou de famille de microcontrôleur à cause d'une fonctionnalité manquante ! C'est le circuit qui s'adapte au projet, et pas l'inverse.

Les connecteurs au pas de 2,54mm servent aux tests d'usine, au développement, aux mises à jour mais aussi à étendre les capacités de la carte. Le WizYasep "nu" fournit juste 8 sorties numériques 5V sur des borniers, mais ces signaux sont aussi disponibles sur le connecteur Y si vous voulez les connecter autrement. Le connecteur Z fournit 8 GPIO supplémentaires, multiplexés avec les signaux de la "console". Quant au connecteur X, il fournit 9 autres GPIO. Ce sont donc 25 broches disponibles, dont 17 bidirectionnelles, en plus du bus parallèle dédié au module Wiznet. Si vous n'avez pas besoin de connexion réseau, enlevez le module WIZ830MJ et vous disposerez de 33 signaux supplémentaires.

Tous ces connecteurs sont au pas de 2,54mm, utilisent des broches standard et économiques, et vous pouvez prototyper vos propres cartes d'extension avec des circuits imprimés prétroués par exemple. YGDES peut aussi concevoir et/ou fabriquer des extensions, ou simplement adapter le circuit imprimé pour votre application spécifique.

La partie "YASEP" du WizYasep va continuer d'être développée. Le FPGA contiendra alors un microcontrôleur totalement configurable et Open Source, qui réduira la nécessité de modifier la configuration du FPGA pour les projets complexes. Les protocoles et séquences seront mis à jour simplement en écrivant le code dans la mémoire SPI, donc sans utiliser de matériel ou de logiciel propriétaire.


Configuration

Une mémoire Flash SPI contient les informations de customisation de la carte, en particulier la configuration IP du module Wiznet (adresse IP, adresse MAC, sous-réseau, gateway, numéros de ports) et la géométrie des LED (nombre de canaux, vitesse, ordre des composantes RGB, nombre de LED par canal...)

La mémoire peut être configurée à la commande avec des paramètres du client, ou reprogrammée sur site par celui-ci. La mise à jour s'effectue au travers du port Z, en activant le mode "console SPI". YGDES peut fournir un programmateur Flash dérivé du projet YASEP, préconfiguré pour les cartes WizYasep. Ce programmateur est économique, à base de Raspberry Pi, accessible en réseau donc sans aucun pilote logiciel à installer, et doté d'une interface graphique en JavaScript.

"Open Source"

La carte WizYasep et sa conception utilisent au maximum des Logiciels Libres. À l'exception de l'outil de synthèse VHDL (propriétaire et spécifique au fabricant du FPGA), l'utilisateur peut travailler entièrement sous le système d'exploitation de son choix. Les outils de configuration ont été développés pour le projet YASEP, sous licence Affero Affero GPLv3+.

Une carte spécifiquement conçue pour les écrans à LED

La première application de la carte WizYasep est le contrôle d'écrans à base de guirlandes de LED asynchrones (type WS2811, WS2812, TM1804, UCS2903...), très répandues car simples et économiques. Cepenant les contraintes temporelles sont très serrées, un FPGA est donc idéal pour leur envoyer des données en respectant les chronogrammes.

Lorsque le nombre de LED augmente, la bande passante nécessaire augmente aussi. Le lien série asynchrone des WS2812 est limité à 800Kbps, soit 30000 pixels par seconde. Le raffraichissement de l'image ralentit proportionnellement si on agrandit l'écran, il doit descendre à moins 10 images par seconde pour 3000 pixels. On est alors tenté d'utiliser des LED synchrones (WS2801) pour aller plus vite mais deux autre limites sont vite atteintes :

Ces problèmes sont résolus en utilisant une autre approche que l'accélération du débit : il faut au contraire paralléliser les données, avec des segments de 100 à 150 LED maximum (selon la géométrie, l'alimentation etc.)

La carte WizYasep permet de contrôler directement jusqu'à 24 canaux. Ces derniers sont gérés de manière à minimiser les émissions d'interférences électromagnétiques, qui sont bénignes pour quelques centaines de LED mais graves à des plus grandes échelles. Les interférences peuvent brouiller des appareils alentours ou altérer l'image affichée... La carte WizYasep devrait aussi être connectée aux guirlandes avec du fil en "paire torsadée".

Protocole spécifique pour les écrans à LED

Pour envoyer les données des LED à la carte WizYasep, un protocole spécifique et très simple a été conçu, garantissant la performance et la synchronicité de l'affichage. Le protocole Artnet n'est pas supporté (pour l'instant) car il est trop complexe et ne permet pas une synchronisation aussi fine. Open Pixel Control est proche mais ne permet pas une gestion fine du timing.

Le protocole est unidirectionnel et alterne l'envoi de données sur deux sockets UDP.

Si toutes les cartes ont la même configuration, elles finissent toutes l'affichage à quelques microsecondes d'écart, ce qui garantit l'uniformité de l'écran, et évite le tearing de l'image lors de mouvements d'une zone à un autre.

Du code d'exemple en C est fourni pour accélérer le développement du logiciel du contrôleur central.

Étude de cas : l'écran à LED de Mons2015

La flexibilité de la carte WizYasep lui permet de s'adapter à des projets très exigeants, sans compromettre sa performance. Le FPGA peut reconfigurer ses 16 broches d'extension, afin de fournir des fonctionnalités dont un microcontrôleur ne pourrait pas rêver...

Vidéo : gare de Mons

L'artiste parisien Fred Sapey-Triomphe a fabriqué un écran de 42×4 mètres pour la gare temporaire de Mons, à l'occasion des festivités de Mons2015. Avec un écartement de 10cm, cela représente 420×40=16800 LED RVB à contrôler individuellement à 25 images par seconde, soit une bande passante de 1,5MiO/s à distribuer sur des longues distances. L'alimentation d'un tel écran nécessite aussi de très nombreuses alimentations, ce qui pose des problèmes lors de la mise sous tension.

L'écran a été divisé en 6 zones, chacune contrôlée par une carte WizYasep montée sur une carte d'extension. Les broches supplémentaires sont allouées à des canaux de LED supplémentaires ainsi qu'à des optorelais pour séquencer l'allumage progressif des alimentations. Une carte d'extension spécifique a été développée et fabriquée. Au total, l'ensemble comporte 6×20=120 canaux de LED et 6×4=24 circuits électriques individuels, ce qui augmente la modularité et la fiabilité de tout l'écran. L'image est fluide et sans artefacts.

Chaque carte WizYasep contrôle 20×140 LED RGB asynchrones, soit 2800 pixels ou 8400 octets. À 25 images par seconde, c'est juste 210000 octets par seconde, ce qui est encore loin des limites de la carte. La bande passante maximale d'une LED asynchrone est de 100KO/s, donc une guirlande de 140 LED asynchrones peut être raffraichie à 100000/(3×140)=230Hz. 20 canaux de LED nécessitent 20×100K=2MO/s, alors que l'interface Wiznet peut lire les données à 16b×9MHz=18MO/s en crête.

Cependant le lien 100BaseT sature à 10MO/s. L'ordinateur qui gère les flux doit non seulement émettre les données mais les lire simultanément dans une mémoire de masse. Avec 6 écrans totalisant 16800 pixels, la bande passante vidéo est de 1,26MO/s et les flux vidéos non comprimés commencent à poser des soucis de capacité de stockage et de transmission pour un nano-ordinateur économique. Un écran encore plus grand et plus rapide (50 ou 100 images/s) est possible en utilisant un ordinateur doté d'un port Gigabit, secondé par des hubs rapides.

Développements futurs

De nombreuses améliorations sont prévues pour rendre la carte plus facile à configurer et à utiliser par les débutants. Les utilisateurs pourront aussi stocker quelques images dans la mémoire Flash SPI (pour l'écran de démarrage par exemple) ou lire des séquences dans une carte SD (nécessite un adaptateur).

Le protocole Open Pixel Control pourrait être supporté mais la synchronisation fine ne serait pas possible entre cartes.

Les technologies utilisées pour la carte WizYasep permettent de créer une version à 40 canaux (ou plus), capable de streamer 4MO/s dans des guirlandes de LED, mais la carte actuelle ne dispose pas d'assez de broches.

Un FPGA plus puissant permettra aussi de prendre en charge le mapping des pixels. Actuellement, le réordonnancement des pixels (zig-zags, assignation des canaux...) doit être effectué par l'ordinateur de contrôle.

Les versions futures pourront être reconfigurées au travers de la connexion réseau, grâce à un serveur web intégré. La configuration par la console sera toujours disponible pour la mise au point, les tests et la configuration initiale. D'autres protocoles comme DHCP et Artnet pourraient alors être supportés.

Autres applications

En dehors du domaine des écrans à LED, la carte WizYasep peut servir pour beaucoup d'autres fonctions, en particulier

  -   Transmission/Broadcast/Multicast de son/musique, sonorisation (le contrôle des LED est alors remplacé par un convertisseur SPDIF ou I2S)

  -   Outils de laboratoire, en remplacement du bus GPIB, ou du lien USB qui nécessite l'installation de pilote logiciels ainsi que leur développement sur plusieurs plateformes. De nombreux appareils peuvent en bénéficier : oscilloscope, analyseur logique, programmateur SPI ou JTAG, émulation/ICE... Le protocole HTTaP est développé justement dans ce sens.

  -   Contrôle à distance, sécurité, téléprésence, alarme...

Prix et disponibilité

La carte WizYasep est pour l'instant fabriquée à la demande. Le prix unitaire, autour de 200€, dépend de la quantité désirée, des délais et des éventuelles adaptations requises. Veuillez me contacter pour évaluer la solution la plus adaptée, pour présenter une démonstration ou animer un workshop.

Liens

Le WizYasep a une page sur hackaday.io.

Le WizYasep est aussi présenté sur le Musée Wiznet.

Il en est aussi question dans cette interview.










Page créée le 25 mars 2015 par whygee@f-cpu.org
version 20150327
version 20150903
version 20150919