Même si la MAX78000FTHR de Maxim Integrated donne l'impression de « n'être qu'une carte à microcontrôleur de plus », ses caractéristiques la situent pourtant dans un domaine spécifique des applications embarquées : l'intelligence artificielle (IA). Dans ce contexte, l'IA est, en termes très simples, la capacité d'un système à reconnaître des modèles d'entrée complexes, par exemple des sons et des images, et bien sûr à mettre en œuvre les systèmes de commande capables de réagir à ces modèles. À titre d'exemple, le kit d'évaluation propose - parmi beaucoup d'autres - une application servant à reconnaître des commandes vocales. Celle-ci pourrait être améliorée, par exemple, pour commuter des sorties numériques en fonction de la commande.

La première présentation destinée à introduire la carte d'évaluation MAX78000FTHR a été publiée par mon collègue d'Elektor Clemens Valens. L'article que vous lisez concerne plus spécifiquement le matériel de la carte. Mon autre collègue chez Elektor, Mathias Claußen, vous guidera pour sa part lors des premières étapes du développement logiciel, qui feront l'objet d'un article distinct.

Développement rapide avec la carte MAX78000FTHR

Le texte suivant, extrait de la documentation de Maxim Integrated, décrit les composants électroniques livrés dans nos bureaux il y a quelques semaines :

La carte MAX78000FTHR est une plateforme de développement rapide destinée aux ingénieurs qui souhaitent mettre en place rapidement des solutions d'intelligence artificielle à très faible consommation à l'aide du processeur ARM® Cortex®-M4F MAX78000, doté d'un accélérateur de réseau neuronal convolutif intégré. La carte contient également un circuit intégré de gestion de l'énergie, le PMIC MAX20303, destiné à gérer la batterie et l'alimentation. Le format correspond à un connecteur à double rangée de 0,9 x 2,6" (environ 25 mm x 70 mm), compatible avec les dimensions des extensions de périphériques Adafruit Feather Wing. La carte comprend un éventail complet de périphériques, notamment un capteur d'images CMOS VGA, un microphone numérique, un CODEC audio stéréo à faible consommation, 1 Mo de SRAM QSPI, un connecteur pour carte microSD, des LED RVB pour témoins et des boutons poussoirs. La MAX78000FTHR constitue une plateforme flexible et optimisée qui permet de valider rapidement des concepts et développer des logiciels de manière précoce, ce qui réduit le délai de mise sur le marché.

L'intelligence artificielle nécessite une puissance de calcul extrême, et le MAX78000 est conçu pour permettre l'exécution de réseaux neuronaux à très faible consommation : l'accélérateur de réseau neuronal convolutif (CNN) intégré au matériel peut exécuter des inférences d'IA (à l'aide de modèles pré-entraînés) en n'absorbant qu'une très faible quantité d'énergie. Il est ainsi possible de rapprocher l'IA du monde de l'Internet des objets (voire même de l'y immerger complétement !).

Dans cet article, nous allons examiner le matériel du MAX78000 ainsi que les caractéristiques et les périphériques offerts par la carte au format Feather. La figure 1 montre un schéma de principe « simplifié » du matériel contenu sur la carte MAX78000FTHR, qui est décrit plus en détail ici.

MAX78000FTHR board
Figure 1 : Schéma de principe de la carte MAX78000FTHR (source : Plateforme d'application MAX78000 FTHR). 

Le microcontrôleur MAX78000

Ce contrôleur est bien sûr le cœur et la composante la plus importante de cette carte d'évaluation. Nous n'aborderons ici que brièvement les principales caractéristiques de ce microcontrôleur. Pour en savoir plus, référez-vous à la fiche technique après l'avoir téléchargée ainsi qu'au Guide de l'utilisateur MAX78000 qui — au moment où cet article est rédigé — n'est accessible que sur GitHub ; il sera très probablement disponible prochainement aussi sur le site de Maxim Integrated. La figure 2 illustre la structure des blocs matériels internes à ce microcontrôleur.
 

MAX78000 microcontroller
Figure 2 : Schéma de principe du microcontrôleur MAX78000 (source : fiche technique du MAX78000).

Le microcontrôleur MAX78000 est un composant à double cœur, comportant un processeur ARM Cortex-M4 assorti d'une unité de calcul en virgule flottante (FPU), capable de fonctionner à une vitesse de 100 MHz, et un coprocesseur RISC-V cadencé à 60 MHz. Le processeur ARM Cortex-M4 est responsable de la plupart des commandes et des traitements effectués par le MAX78000, tandis que le coprocesseur RISC-V est ajouté pour les tâches auxiliaires, comme le transfert de données DMA et les tâches d'arrière-plan, par exemple le traitement des E/S GPIO. En général, les processeurs bénéficient d'un accès équivalent aux périphériques du système et peuvent être programmés pour des tâches arbitraires. La mémoire interne dont disposent les microcontrôleurs pour une utilisation générale dans le MAX78000 se compose de 512 Ko de mémoire Flash, 128 Ko de mémoire SRAM, 16 Ko de mémoire cache et une mémoire ROM d'amorçage.

Le bloc CNN (réseau neuronal convolutif) en haut à droite du schéma de principe est le bloc le plus important concernant l'IA. La description de l'intelligence artificielle, ainsi que les informations relatives au fonctionnement de ce bloc CNN, dépassent le cadre de cet article. Vous trouverez davantage d'informations sur ce bloc de réseau neuronal convolutif dans la fiche technique et le Guide de l'utilisateur. Le bloc CNN contient des mémoires dédiées pour le stockage des poids des réseaux neuronaux et pour le stockage et le traitement des données d'entrée. Ces mémoires sont indépendantes et s'ajoutent à celles mentionnées précédemment dont dispose le microcontrôleur.

Il est possible d'utiliser l'horloge interne et la gestion de l'énergie pour équilibrer les performances de calcul et la consommation d'énergie du MAX78000. Le MAX78000 possède jusqu'à 52 broches d'E/S générales (GPIO), partagées avec un spectaculaire éventail d'interfaces. Bien entendu, sur la carte MAX78000FHTR, un grand nombre de ces broches et interfaces sont occupées par le matériel et les périphériques embarqués. Il est même possible de partager avec ce matériel les broches acheminées vers les connecteurs d'extension situés sur les côtés de la carte au format Feather. Vérifiez toujours l'absence de conflit de l'électronique externe avec la carte et le micrologiciel que vous mettez en œuvre ! Les illustrations de la figure 3 montrent les entrées/sorties utilisées pour les composants périphériques embarqués. Il est possible de configurer dans le logiciel la tension de sortie de chaque broche GPIO du MAX78000 pour fixer un niveau logique de 1,8 V ou 3,3 V. (La figure 3 montre les périphériques sur la carte Feather, les connexions au MAX78000 et au PMIC. Source : Plateforme d'application MAX78000 FTHR​)

Top side of the MAX78000FHTR
Figure 3a : Recto.
Bottom side of the MAX78000FHTR
Figure 3b : Verso.


En ce qui concerne les interfaces, le MAX78000 fournit un débogage série (SWD), une interface I2S (principale/secondaire), trois interfaces principales I2C à grande vitesse, un UART à 4 fils, deux UART à 2 fils, un UART basse consommation à 2 fils (LPUART), deux interfaces SPI (principale/secondaire), une interface principale à 1 fil et une interface caméra parallèle 12 bits (PCIF). En plus de cela, le microcontrôleur possède un C/AN Sigma-Delta à huit canaux et trois générateurs de train d'impulsions. Enfin, le microcontrôleur comporte une horloge en temps réel et deux temporisateurs chien de garde, ainsi que quatre temporisateurs 32 bits et deux temporisateurs 32 bits basse consommation.

PMIC portable MAX20303 avec jauge de niveau

Ce circuit intégré de gestion de l'énergie comprend des régulateurs de tension, un chargeur de batterie et une jauge de niveau pour contrôler et surveiller l'état de charge d'une batterie Li-Ion externe (en option) reliée au connecteur JST J9. Il est conçu pour des applications portables à très faible consommation et est configurable via une interface I2C, sur cette carte connectée au points P0_17 (SDA) et P0_16 (SCL) du MAX78000. Pour en savoir plus sur ce PMIC, consultez la fiche technique.

Le PMIC MAX20303 contrôle l'alimentation électrique de la carte au format Feather et bascule automatiquement sur la batterie externe (si elle est connectée) lorsque l'alimentation USB est coupée. La batterie est chargée en alimentant la carte Feather via le connecteur micro-USB CN1 si la puissance requise par le système est inférieure à la limite du courant d'entrée ; dans cette condition, la batterie est chargée avec la puissance résiduelle de l'entrée, avec une intensité maximale de 51 mA de courant de charge. Si le traitement nécessite plus de courant que ce que l'alimentation USB peut fournir, la batterie LiPo externe (si elle est disponible) sera mise en marche pour fournir une puissance supplémentaire.

Il est possible de configurer une sortie du MAX20303 (L1OUT) pour commuter l'alimentation du microphone embarqué, une deuxième sortie (MCP0) servant à contrôler l'alimentation du logement de la carte SD. Une thermistance RT1 est également connectée au MAX20303, très probablement pour surveiller la température de la batterie pendant le processus de charge (ce qui n'est pas documenté dans la fiche technique du MAX78000FTHR). Il faudrait pour cela que la batterie Li-Po soit fixée sur la face inférieure du circuit imprimé ; la thermistance RT1 est située près du repère triangulaire de la broche 1 du logement de la carte SD.

Interfaces de débogage et de programmation

Un microcontrôleur MAX32625 (U2) est préprogrammé avec le micrologiciel DAPLink, ce qui permet de programmer et de déboguer le cœur du MAX78000 ARM Cortex-M4 par le biais de l'interface USB. Il sert également de passerelle entre l'un des UART du MAX78000 et le port USB. Ainsi, un programme de terminal exécuté sur votre ordinateur permet d'échanger des données série avec la carte mère. Le microcontrôleur fournit également l'interface permettant de programmer le MAX78000 comme un périphérique de stockage de masse USB, par une simple opération de glisser-déposer d'un fichier binaire.

Le connecteur J1 10 broches est au format JTAG et permet la programmation et le débogage du noyau RISC-V du MAX78000. Juste à côté, sur le circuit imprimé, un emplacement est prévu pour le connecteur J2 10 broches au format SWD (non monté) pour le cœur ARM du MAX78000. Sur la face inférieure du circuit imprimé, figure le connecteur J3, adaptateur à aiguilles 10 broches pour l'interface SWD de U2, microcontrôleur de l'interface DAPLink.

Barrettes compatibles avec cartes d'essai

Deux connecteurs SIL sur les côtés de la carte (J4 et J8) permettent de la brancher sur une carte d'essai standard. Le format du circuit imprimé et ces deux connecteurs sont également compatibles avec les cartes d'extension pour périphériques Adafruit Feather Wing. La figure 4 montre les signaux acheminés vers les broches des connecteurs d'extension. Pour autant, n'oubliez pas que certains de ces signaux sont partagés avec les périphériques incorporés sur la carte !

 

Connections on the Feather Wing
Figure 4 : Raccordements aux connecteurs d'extension Feather Wing (source Plateforme d'application MAX78000 FTHR).

La plupart des broches d'E/S de ces connecteurs sont directement contrôlées par le MAX78000, mais certaines d'entre elles sont connectées au PMIC MAX20303, qui - à cet égard - sert également de dispositif d'extension des E/S. Notez que si tous les efforts ont été faits pour appliquer le format Feather Wing, celui-ci reste une norme non officielle - vérifiez toujours, avant de connecter des cartes supplémentaires répondant à ce format, qu'il n'y ait pas de conflits électriques ou logiques.

Les niveaux des lignes I2C sur les broches 11 et 12 du connecteur J4 sont remontés de 1,8 V à 3,3 V à l'aide de l'élévateur U6 (MAX14595). Il est possible de revenir aux niveaux externes de 1,8 V en faisant passer la résistance zéro ohm de la position R15 à R20 sur la face inférieure de la carte, à proximité de la broche 12 du connecteur J4.

Connecteur de carte microSD

La prise J6, sur la face inférieure du circuit imprimé, correspond à une carte microSD standard. Elle est connectée au MAX78000 via une interface SPI. L'alimentation de la carte SD peut être commutée à l'aide de la sortie MCP0 du CI de gestion d'énergie MAX20303 et d'un MOSFET. L'interface SPI est partagée avec la RAM QSPI embarquée.



MAX78000 AI Design Contest
Vous avez une idée de projet intéressant lié à l'intelligence artificielle, basé sur le MAX78000 ? Participez au concours de conception d'applis d'IA avec le MAX78000 de Maxim Integrated (sous l'égide d'Elektor).


Témoins à LED RVB

La carte MAX78000FTHR comporte trois LED RVB. Les LED rouge, verte et bleue sont connectées respectivement à P2_0, P2_1 et P2_2 sur le MAX78000. La LED D1 est destinée aux applications utilisateur. La LED D2 est raccordée aux sorties LEDx du PMIC MAX20303, qui peuvent également être configurées comme indicateurs d'état de charge à l'aide de commandes I2C. La LED d'état de l'adaptateur DAPLink, D3, est commandée par l'interface de programmation/débogage, mais ne peut pas l'être par les applications des utilisateurs.

Boutons-poussoirs

La carte comprend cinq boutons-poussoirs miniatures, dont deux disponibles pour les applications des utilisateurs : SW1 et SW2 sont connectés aux broches P0_2 et P1_7, respectivement, du MAX78000, par l'intermédiaire du circuit intégré U11 (MAX6817) à double dispositif anti-rebond. Le bouton-poussoir SW3 sert à la mise sous tension/hors tension : il met la carte MAX78000FTHR hors tension s'il est maintenu enfoncé pendant plus de 12 secondes et met immédiatement la carte sous tension lorsqu'il est enfoncé à nouveau. Cet interrupteur est connecté à la broche PFN1 du PMIC MAX20303. Le bouton-poussoir SW4 sert à la réinitialisation du MAX78000. SW5 permet la mise à jour du micrologiciel du microcontrôleur (U2) de l'interface de débogage et de programmation DAPlink.

Capteur d'images CMOS VGA

Il est possible d'utiliser ce capteur VGA pour des applications de reconnaissance d'images et de formes. Le capteur CMOS couleur Omnivision VGA CameraCubeChipTM OVM7692 U1 est directement connecté au MAX78000 via son interface parallèle de caméra (PCIF). Note : il est possible que l'objectif du capteur soit encore recouvert d'un film protecteur après le déballage. N'oubliez pas de l'enlever avant d'utiliser la caméra !

Audio

Deux connecteurs jack stéréo de 3,5 mm (J5 et J7) permettent de raccorder les signaux d'entrée et de sortie stéréo, respectivement, pour le traitement du son. Les signaux sont acheminés vers un CODEC audio stéréo basse consommation MAX9867, commandé par le MAX78000 via I2C. De leur côté, les données audio numériques sont transférées entre le CODEC et le microcontrôleur via le bus I2S.

Ce bus est partagé avec le microphone numérique MK1 SPH0645LM4H-B, fabriqué par Knowles Acoustics. Pour éviter tout conflit avec le CODEC sur le bus I2S, l'alimentation du microphone peut être contrôlée via I2C par la sortie L1OUT du circuit PMIC.

Mémoire SRAM externe

Sur la face inférieure du circuit imprimé, le circuit U2 (N01S830HAT22I d'On Semiconductor) apporte 1 Mo de SRAM QSPI supplémentaire. L'interface série de cette mémoire est connectée aux broches P0_5 à P0_10 du MAX78000 et certaines de ces broches sont partagées avec l'interface de la carte SD.

Une puissante solution

Avec cette carte MAX78000 au format Feather, Maxim Integrated présente une plateforme pour les applications d'IA sur batterie, certes miniaturisée, mais puissante par ses capacités de traitement et ses périphériques. Son encombrement compatible avec le format Adafruit Feather facilite la connexion à d'autres matériels. Avec un prix de vente d'environ 25 € pour la carte MAX78000FTHR, vous obtiendrez une plateforme de développement dotée de périphériques de qualité qui sauront aussi vous être utiles si vous avez besoin d'une carte microcontrôleur puissante, mais sans fonctions d'IA.

Bien entendu, rien ne fonctionne sans logiciel avec une carte à microcontrôleur, et l'article de Mathias Claußen qui paraîtra prochainement vous guidera pour la mise en place d'outils de développement et la compilation d'applications. En attendant, vous pouvez découvrir l'application préprogrammée de reconnaissance de mots-clés qui démontre ce que peut faire cette carte d'IA !


Traduction
 : Pascal Godart