Ajouter un FPGA aux cartes de développement Arduino et Raspberry Pi

Les cartes de développement Arduino et Raspberry Pi sont en première ligne de la révolution affectant la manière dont les ingénieurs développent des systèmes embarqués. Autrefois, vous deviez développer un système embarqué en commençant par le matériel. En général, les étapes du projet étaient les suivantes :

  1. Spécifier les exigences système, y compris une estimation approximative de la vitesse de traitement et des exigences E/S.
  2. Sélectionner un microcontrôleur ou un microprocesseur approprié répondant aux exigences de puissance, de performances et de prix.
  3. Brancher un prototype matériel.
  4. Déboguer le prototype matériel. Rédiger un peu de code de pilote pour les lignes si nécessaire.
  5. Lancer le code une fois le matériel en fonctionnement.
  6. Déboguer le code.
  7. Livrer le produit fini.

Les choses ne sont plus aussi simples maintenant. Tout d'abord, il existe des milliers de processeurs et de microcontrôleurs parmi lesquels choisir, et qui sont proposés par de nombreux fournisseurs. Personne ne peut mémoriser toutes ces alternatives.

Ensuite, la troisième étape ci-dessus (brancher un prototype matériel) constitue un véritable problème, depuis que le monde a évolué pour produire la technologie de montage en surface il y a une trentaine d'années. Les techniques comme le câblage manuel ou encore la technologie d'enroulement, qui étaient des techniques de prototypage très répandues dans les années 1970, sont maintenant dépassées. Elles sont rares aujourd'hui. Il faut vraiment tout faire : concevoir, fabriquer et souder un prototype de carte à circuit imprimé. Cependant, qui veut perdre son temps à cela s'il existe de meilleures alternatives plus rapides et moins chères ?

Cette situation a créé une opportunité pour les cartes de développement, qui permettent d'éviter les étapes une à quatre ci-dessus. Deux des plus célèbres cartes de développement actuellement sur le marché sont l'Arduino Uno (et ses nombreuses variantes) et la Raspberry Pi. Le modèle Raspberry Pi le plus récent est le Raspberry Pi 3 modèle B+. Bien qu'on les mentionne souvent ensemble, les cartes de développement Arduino et Raspberry Pi sont très différentes.

Arduino est le nom d'une entreprise de matériel informatique et de logiciels open-source, d'un projet communautaire open-source, de la communauté d'utilisateurs qui conçoit et fabrique les cartes de développement Arduino, d'un environnement de développement intégré (IDE) et de la carte de microcontrôleur Arduino elle-même. (Le nom Arduino vient d'un bar à Ivrée, en Italie, où quelques-uns des fondateurs du projet Arduino avaient l'habitude de se retrouver.)

Figure 1 : L'Arduino Uno, une carte de développement d'entrée de gamme basée sur un microcontrôleur Atmel 8 bits avec quelques capacités E/S simples, sert de plateforme de développement pour des conceptions embarquées qui ne nécessitent pas de hautes performances. (Source de l'image : Arduino)

Les premières cartes de développement Arduino étaient basées sur les microcontrôleurs Atmel AVR. Le code était développé à l'aide de l'IDE Arduino, qui se chargeait alors de le compiler et de le télécharger dans la mémoire Flash du microcontrôleur intégré. L'IDE Arduino prend en charge les langages C et C++ avec des règles de structure de code spéciales qui lui sont propres. Avec les grandes avancées du concept Arduino, les variantes Arduino plus récentes sont passées à la vitesse supérieure avec des microcontrôleurs basés sur le processeur Arm® Cortex®-M0 32 bits pour plus de performances (Figure 1).

Étant donné qu'elles ont été conçues comme des cartes de développement de microprocesseur préliminaires pour commander des systèmes embarqués relativement simples, les cartes de développement Arduino présentent des capacités E/S très simples. En plus de quelques embases de 2,54 mm avec des broches E/S numériques et des broches d'entrée analogiques simples, les cartes de développement Arduino Uno sont dotées d'un port USB et de quelques LED intégrées conçues pour clignoter. Et c'est tout. Les broches E/S sont contrôlées par logiciel et leurs performances sont donc assez limitées.

Passer à la vitesse supérieure avec Raspberry Pi

Si votre conception embarquée a besoin de performances plus élevées, la carte de développement Raspberry Pi 3 B+ inclut des avancées considérables par rapport à Arduino (Figure 2). Voici ses fonctionnalités majeures :

  • Système sur puce Cortex®-A53 (Arm®v8) 64 bits à 1,4 GHz Broadcom BCM2837B0
  • SDRAM LPDDR2 1 Go
  • Réseau local sans fil IEEE 802.11.b/g/n/ac 2,4 GHz et 5 GHz, Bluetooth 4.2, BLE
  • Gigabit Ethernet sur USB 2.0 (débit maximal de 300 Mbps)
  • Embase GPIO étendue à 40 broches
  • HDMI pleine taille
  • Quatre ports USB 2.0
  • Embase GPIO étendue à 40 broches
  • Port de caméra CSI pour connecter une caméra Raspberry Pi
  • Port d'écran DSI pour connecter un écran tactile Raspberry Pi
  • Sortie stéréo quadripolaire et port vidéo composite
  • Port micro SD pour le chargement d'un système d'exploitation et le stockage de données
  • Entrée d'alimentation CC 5 V/2,5 A
  • Prise en charge PoE (Power over Ethernet) (nécessite un HAT PoE distinct)

Figure 2 : La carte Raspberry Pi 3 modèle B+ constitue une excellente plateforme de développement matériel embarquée avec un processeur d'application Arm 64 bits à quatre cœurs, 1 Go de mémoire SDRAM et des capacités E/S étendues. (Source de l'image : Raspberry Pi)

Avec autant de puissance de traitement, de mémoire et de capacités E/S, les possibilités sont quasiment infinies. La carte de développement Raspberry Pi 3 B+ fonctionne sous Linux et bénéficie d'une énorme communauté de support dédiée au produit. Du fait de son prix réduit, la Raspberry Pi 3 modèle B+ constitue une excellente plateforme matérielle pour de nombreux projets de développement de systèmes embarqués.

Et si vous recherchez une vitesse accrue ?

Si le Raspberry Pi 3 modèle B+ répond à toutes les exigences de conception de votre système embarqué, vous n'avez pas besoin d'aller plus loin. Étant donné le prix réduit de cette carte de développement extrêmement performante, il n'y a aucune raison de vous poser des questions. Toutefois, si votre système embarqué nécessite des capacités E/S spéciales, qui vont au-delà des ressources E/S considérables du Raspberry Pi 3 B+, que faire ?

Dans ce genre de situation, vous aurez besoin des capacités hautes performances des FPGA, qui permettent de définir de nouveaux types d'interfaces haute vitesse, définies uniquement au moyen d'un logiciel. Aucun câblage supplémentaire n'est requis. De plus, vous pouvez profiter des capacités FPGA qui sont déjà intégrées dans le facteur de forme Raspberry Pi modèle 2 avec la carte de développement TE0726-03M de Trenz Electronic, la ZynqBerry (Figure 3).

Figure 3 : La carte de développement TE0726-03M ZynqBerry de Trenz inclut un système sur puce Zynq Z-7010 de Xilinx dans un facteur de forme Raspberry Pi modèle 2 pour les conceptions embarquées qui ont besoin de performances E/S supplémentaires. (Source de l'image : Trenz Electronic)

Le ZynqBerry est basé sur un système sur puce Zynq Z-7010 de Xilinx, qui associe un microprocesseur Arm® Cortex®-A9 double cœur 32 bits à un FPGA, ce qui permet d'obtenir un dispositif capable de gérer de nombreuses tâches hautes performances supplémentaires par rapport à un processeur seul (ou même par rapport à quatre processeurs s'exécutant à 1,4 GHz). La programmation de la carte ZynqBerry de Trenz se fait avec la suite d'outils téléchargeable Vivado de Xilinx, fournissant un IDE pour le côté logiciel (processeur) et le côté matériel (FPGA) du système sur puce Zynq.

Vous préférez le facteur de forme Arduino ?

Que faire si vous préférez le facteur de forme Arduino Uno ? Trenz Electronic a également la solution avec le TE0723-03M ArduZynq (Figure 4).

Figure 4 : Le TE0723-03M ArduZynq de Trenz Electronic offre un système sur puce Zynq de Xilinx dans le facteur de forme de la carte de développement Arduino pour les projets Arduino qui ont besoin de plus de performances au niveau du processeur et des E/S. (Source de l'image : Trenz Electronic)

Comme avec la carte ZynqBerry de Trenz, la programmation de l'ArduZynq de Trenz se fait avec la suite d'outils Vivado de Xilinx.

Les cartes comme l'Arduino Uno et la Raspberry Pi simplifient de nombreux choix de développement de systèmes embarqués, mais ne peuvent pas relever tous les défis liés à la conception embarquée. Lorsque vos exigences dépassent les capacités de ces cartes, il n'est pas nécessaire de changer de facteur de forme. Il vous suffit d'ajouter un petit FPGA.

À propos de l'auteur

Image of Steve Leibson Steve Leibson a été ingénieur système pour HP et Cadnetix, rédacteur en chef pour EDN et Microprocessor Report, blogger technique pour Xilinx et Cadence (entre autres), et il est intervenu en tant qu'expert technologique dans deux épisodes de "The Next Wave with Leonard Nimoy". Il a aidé les ingénieurs de conception à développer des systèmes améliorés, plus rapides et plus fiables pendant 33 ans.
More posts by Steve Leibson