Tirer parti des performances et de la basse consommation des microcontrôleurs 16 bits
Avec la contribution de Rédacteurs nord-américains de DigiKey
2019-07-24
Une durée de vie étendue des batteries est importante pour répondre aux attentes des utilisateurs d'appareils grand public. Pour les points d'extrémité IoT (Internet des objets) alimentés par batterie, une autonomie prolongée permet de réduire les coûts de maintenance et d'améliorer la fiabilité. Étant donné que le microcontrôleur utilisé dans ces dispositifs peut consommer énormément d'énergie, les concepteurs doivent choisir et appliquer la bonne architecture afin de répondre aux besoins de ces applications. Dans de nombreux cas, les microcontrôleurs 16 bits s'avèrent être la meilleure solution.
Même si les microcontrôleurs 8 bits sont de plus en plus puissants, leurs performances restent intrinsèquement limitées en termes de puissance de traitement et de mémoire adressable. Les microcontrôleurs 8 bits sont donc exclus pour les applications aux performances supérieures. D'autre part, les systèmes basés sur des cœurs 32 bits sont souvent trop gourmands pour l'application, particulièrement lorsqu'ils consomment plus d'énergie que nécessaire.
La solution idéale se trouve à mi-chemin entre les cœurs 8 bits et les cœurs 32 bits : les microcontrôleurs 16 bits. Ils offrent la basse consommation d'un microcontrôleur 8 bits à alimentation simple tout en fournissant certains avantages de performances et de mémoire des cœurs 32 bits. Si une application n'est pas trop intensément multitraitement et si les besoins en mémoire ne sont pas trop élevés, un microcontrôleur 16 bits peut fournir le niveau de performances adapté tout en permettant des économies d'énergie considérables.
Cet article décrit l'architecture des microcontrôleurs 16 bits et explique en quoi ils constituent la meilleure option pour de nombreuses applications de points d'extrémité grand public et IoT alimentés par batterie. Il présente ensuite quelques exemples de microcontrôleurs 16 bits de Microchip Technology et Texas Instruments, et explique comment se lancer dans une conception 16 bits.
Choisir un microcontrôleur
La sélection du microcontrôleur adapté à une application est l'une des premières étapes du processus de conception après avoir défini les exigences du projet. Il convient de choisir parmi les trois types de microcontrôleurs traditionnels : 8 bits, 16 bits et 32 bits.
On minimise souvent l'importance des microcontrôleurs 8 bits, qui sont pourtant des bourreaux de travail pour les concepteurs. Il n'existe pas de projets indignes des microcontrôleurs 8 bits basse consommation à faible coût : ils offrent la consommation la plus basse au royaume des microcontrôleurs traditionnels, certains présentant des courants en veille de moins de 100 nanoampères (nA).
Ils sont également faciles à utiliser. Les microcontrôleurs 8 bits sont généralement basés sur un accumulateur, mais certaines architectures plus modernes comportent un ensemble de registres. Le modèle de programmation est simple et limité : des accumulateurs ou un petit ensemble de registres comprenant un seul registre d'état, un pointeur de pile et un ou plusieurs registres d'index. Très souvent, il s'agit d'une pile matérielle et le compteur de programme (PC) est inaccessible au micrologiciel.
Malgré sa popularité, l'architecture 8 bits atteint ses limites lorsqu'elle tente des opérations de mise en réseau et de communication. Presque toutes les piles de communication et tous les protocoles de mise en réseau sont de l'ordre de 16 bits ou 32 bits, ce qui rend l'architecture 8 bits inutilisable. En outre, même les microcontrôleurs 8 bits haut de gamme sont souvent limités à un adressage 16 bits sans pagination, ce qui limite la taille et la complexité du micrologiciel.
À l'autre bout du spectre, les microcontrôleurs 32 bits sont plus populaires pour les applications nécessitant toutes les gammes de performances. Ils présentent des architectures basées sur des registres qui prennent facilement en charge la mise en réseau et les communications. Ils ont généralement une capacité d'adressage de 32 bits, prennent en charge les opérations algébriques complexes et les opérations mathématiques en virgule flottante, et présentent des fréquences d'horloge en gigahertz (GHz). Les cœurs 32 bits ont un modèle de programmation plus complexe, qui peut inclure plusieurs registres d'état, un compteur de programme accessible au micrologiciel, une gestion sophistiquée des interruptions et deux couches (ou plus) de privilèges d'exécution du micrologiciel.
Quant aux microcontrôleurs 16 bits, ils sont également basés sur des registres, avec des architectures aussi simples que celles des microcontrôleurs 8 bits. Ils offrent généralement de bonnes performances basse consommation, et présentent un appel de courant beaucoup plus réduit que les architectures 32 bits et une consommation énergétique presque aussi faible que les cœurs 8 bits. Si l'application nécessite des opérations mathématiques complexes, certains microcontrôleurs 16 bits sont dotés de coprocesseurs mathématiques qui offrent quasiment les mêmes performances mathématiques que les microcontrôleurs 32 bits à la même fréquence d'horloge interne.
Il existe également de nombreuses piles de communication qui prennent en charge la mise en réseau de microcontrôleurs 16 bits. Les piles de protocoles Ethernet, CAN, USB et Zigbee, entre autres, peuvent s'exécuter aussi rapidement sur un microcontrôleur 16 bits que sur un microcontrôleur 32 bits, à condition que le code d'application ait suffisamment de ressources à consacrer à la pile.
Réaliser l'adressage de vastes matrices de mémoire Flash à l'aide d'un microcontrôleur 16 bits
L'une des différences majeures entre les architectures 32 bits et 16 bits est la plage d'adressage de mémoire. Les microcontrôleurs 32 bits ont un bus d'adresses de 32 bits qui donne accès à une mémoire allant jusqu'à 4 giga-octets (Go). D'ordinaire, les microcontrôleurs 16 bits traditionnels ont 16 bits d'adressage avec un accès à 64 kilo-octets (Ko) seulement. Cependant, de nombreuses architectures 16 bits modernes ont désormais jusqu'à 24 bits d'adressage étendu, ce qui permet d'avoir un espace d'adressage non négligeable de 16 méga-octets (Mo).
La gamme de microcontrôleurs basse consommation PIC24F de Microchip Technology est un bon exemple de cette approche d'adressage étendu. Parmi eux figure le PIC24FJ1024GA, un microcontrôleur 16 bits de 32 mégahertz (MHz) avec 1 Mo de mémoire Flash embarquée et 32 Ko de mémoire SRAM. Il utilise un modèle de programmation simple, semblable à celui de nombreux microcontrôleurs 8 bits (Figure 1).
Figure 1 : Le modèle de programmation du PIC24F de Microchip est semblable à celui des microcontrôleurs 8 bits haut de gamme. Il présente une architecture basée sur des registres, avec 16 registres 16 bits à usage général, un pointeur de pile, un compteur de programme et 5 registres de support. (Source de l'image : Microchip Technology)
Le PIC24 dispose d'un compteur de programme 23 bits qui peut accéder à une mémoire programme Flash jusqu'à 8 Mo. Il inclut 16 registres 16 bits appelés WREG (Working Registers), référencés de W0 à W15. Les registres W0 à W13 sont des registres à usage général (GP) qui peuvent être utilisés pour stocker des données sous le contrôle du micrologiciel. Le registre W15 est un pointeur de pile (SP) dédié. Le pointeur de pile est automatiquement incrémenté et décrémenté par des appels de fonction et de sous-routine, des exceptions de programmation et des renvois d'appel, mais peut également être modifié à l'aide du micrologiciel, tout comme les registres W0 à W13.
Le registre W14 sert de pointeur de trame (FP) de la pile, avec les instructions d'assemblage LINK et UNLINK. Le registre de limitation du pointeur de pile (SPLIM) est un registre indépendant utilisé avec le pointeur de pile pour empêcher les dépassements de capacité de la pile.
Le PIC24 utilise une architecture Harvard avec des espaces distincts pour les adresses et pour les données. Le registre d'adresse de page de la table de données (TBLPAG) et le registre d'adresse de page de la visibilité de l'espace programme (PSVPAG) sont utilisés avec des instructions spéciales pour accéder aux données et les transférer entre les espaces dédiés aux adresses et aux données. Il s'agit là d'une fonctionnalité courante dans les architectures 32 bits, mais rare dans les cœurs 8 bits.
Le registre de compteur de boucles de répétition (RCOUNT) 16 bits contient le compteur de boucles pour l'instruction d'assemblage REPEAT (répétition).
Le registre de commande du cœur (CORCON) du processeur 16 bits est utilisé pour configurer les modes de fonctionnement internes du cœur PIC24.
Enfin, le registre d'état 16 bits contient les bits d'état de fonctionnement liés à l'état du cœur PIC24, notamment l'état découlant de la dernière instruction d'assemblage exécutée.
Microchip Technology évalue les performances du PIC24FJ1024GA606T à 16 millions d'instructions par seconde (MIPS) à 32 MHz, ce qui est impressionnant pour un cœur 16 bits. Le cœur offre de nombreuses fonctionnalités que l'on trouve dans un microcontrôleur 32 bits, comme un multiplicateur matériel 17 bits par 17 bits prenant également en charge les opérations mathématiques fractionnaires, ainsi qu'un diviseur matériel 32 bits par 16 bits. Ces fonctionnalités sont utiles pour les points d'extrémité IoT qui ont besoin d'effectuer des calculs basés sur les données provenant de capteurs. L'architecture peut également lire et écrire simultanément à partir de la mémoire de données, sans perte de performances.
Malgré la vaste gamme de périphériques standard du PIC24FJ1024GA606T, notamment un port USB On-The-Go (OTG), il présente une très basse consommation énergétique pour les applications alimentées par batterie. L'alimentation requise est de 2,0 V à 3,6 V seulement. De plus, à pleine vitesse, le microcontrôleur consomme 7,7 milliampères (mA) maximum à 32 MHz, une prouesse difficilement réalisable pour un cœur 32 bits. Le micrologiciel commande avec précision les horloges du cœur et des périphériques. Il existe deux instructions d'assemblage en mode basse consommation. L'instruction IDLE (repos) arrête le cœur PIC24 tout en laissant les périphériques fonctionner. L'instruction SLEEP (veille) arrête toutes les opérations du dispositif, à l'exception de l'horloge de surveillance en option et de la détection d'interruption externe. Le courant de repos s'élève à 2,8 mA (max.) seulement, tandis que le courant maximum en veille est compris entre 10 et 45 microampères (µA) selon la configuration des périphériques. Dans son mode présentant la plus basse consommation, le mode veille avec maintien du contenu de la mémoire vive (RAM), ce PIC24F peut ne consommer que 190 nA.
Pour des performances supérieures, Microchip Technology propose un microcontrôleur 16 bits haut de gamme dans sa gamme de produits dsPIC®. Citons par exemple le microcontrôleur 16 bits dsPIC33EP512GP506T avec 512 Ko de mémoire Flash et des performances évaluées par Microchip à 70 MIPS. Le dsPIC a presque les mêmes registres de cœur que le PIC24, avec des registres supplémentaires pour prendre en charge les instructions de traitement numérique des signaux (DSP), notamment deux accumulateurs 40 bits et un multiplicateur 32 bits. Pour la mise à niveau d'un PIC24 en système, de nombreux microcontrôleurs PIC24 permettent des mises à niveau dsPIC à brochage compatible, ce qui permet d'avoir de meilleures performances tout en utilisant la même carte à circuit imprimé.
Évidemment, ces performances supérieures nécessitent davantage de puissance. Ce dsPIC33 nécessite une alimentation de 3,0 V à 3,6 V et lorsqu'il fonctionne à 70 MIPS, il consomme 60 mA maximum.
Réduire la consommation tout en améliorant les performances
La gamme de microcontrôleurs MSP430FR599x de Texas Instruments utilise la mémoire vive ferroélectrique (FRAM) de l'entreprise en tant que mémoire programme afin d'atteindre de meilleurs niveaux de performances de lecture/d'écriture avec une consommation plus basse que les microcontrôleurs Flash. Le microcontrôleur 16 bits MSP430FR5994IPNR fait partie de cette gamme avec une horloge de 16 MHz et 256 Ko de FRAM.
Le cœur de ce microcontrôleur MSP430FR offre des performances améliorées, notamment une mémoire cache associée à deux voies avec quatre lignes de cache de 64 bits pour de meilleures performances FRAM. Un multiplicateur matériel 32 bits améliore quant à lui les performances des opérations mathématiques intensives. Il dispose également d'un coprocesseur à accélérateur basse consommation (LEA) qui fonctionne indépendamment du cœur MSP430 principal. Le LEA peut effectuer une transformation de Fourier rapide (FFT) complexe à 256 points, un filtre à réponse impulsionnelle finie (RIF) et une multiplication de matrices qui, selon TI, est 40 fois plus rapide qu'un processeur Arm® Cortex®-M0+. Le LEA améliore les performances des opérations de fusion des capteurs, d'amélioration des images et de traitement des données des capteurs à ultrasons. Il s'agit là de toutes les applications pour lesquelles un développeur pense généralement en premier lieu à un cœur 32 bits et non à un microcontrôleur 16 bits ultrabasse consommation.
Le modèle de programmation du MSP430R est très simple (Figure 2). Il y a 16 registres 16 bits répertoriés de R0 à R15. R0 est le compteur de programme, R1 est le pointeur de pile, R2 est le registre d'état et R3 est un générateur constant (utilisé pour les opérandes immédiats). Les registres R4 à R15 sont des registres à usage général. Les autres registres de configuration sont mappés en mémoire, comme pour la plupart des cœurs 32 bits.
Figure 2 : L'ensemble des registres du microcontrôleur MSP430 présente une configuration similaire aux autres cœurs 16 bits basés sur des registres. Les autres registres de configuration sont mappés en mémoire. (Source de l'image : Texas Instruments)
Ces performances n'entraînent aucune consommation énergétique supplémentaire. En mode veille avec l'horloge temps réel (RTC) en fonctionnement, le MSP430FR5994 de TI ne consomme que 350 nA. En mode d'arrêt, il ne consomme que 45 nA. Il s'agit d'une consommation inférieure à celle de tous les microcontrôleurs 32 bits actuellement connus, et même à celle de la plupart des microcontrôleurs 8 bits.
Le MSP430FR5994IPNR peut fonctionner de 1,8 V à 3,6 V. Avec un micrologiciel s'exécutant hors FRAM et sans interception cache, le MSP430FR ne requiert que 3 mA. Si le code s'exécute en dehors du cache, la consommation de courant chute à 790 µA. Combiné au LEA, cela fournit des performances de traitement considérables avec une consommation extrêmement basse pour un microcontrôleur 16 bits.
Des applications basse consommation pour la gamme MSP430FR5994 peuvent facilement être développées grâce au kit de développement MSP-EXP430FR5994 LaunchPad™ de TI. Ce kit contient tout ce dont un développeur a besoin pour commencer à écrire et à déboguer le micrologiciel pour le microcontrôleur MSP-EXP430FR5994 (Figure 3).
Figure 3 : Le kit de développement MSP-EXP430FR5994 LaunchPad de TI contient tout ce dont un développeur a besoin pour commencer à coder et à déboguer le micrologiciel pour le microcontrôleur FRAM 16 bits MSP430FR5994. (Source de l'image : Texas Instruments).
Le kit LaunchPad inclut deux boutons-poussoirs, deux LED et un logement de carte microSD. Pour démontrer les capacités basse consommation du microcontrôleur MSP430FR5994, le kit LaunchPad comporte un supercondensateur de 0,22 Farad (F) capable d'alimenter le LaunchPad. Ce supercondensateur est chargé en branchant le LaunchPad à une alimentation externe et en configurant le cavalier J8 sur « Charge ». La charge complète du supercondensateur prend deux à trois minutes. Au bout de ces trois minutes, le cavalier J8 passe en mode « Use » (utilisation) et l'alimentation externe est coupée. Selon l'application, le MSP430 peut fonctionner pendant de nombreuses minutes.
Le LaunchPad peut également servir à mesurer la consommation de courant du MSP430 et de l'application. Le bloc d'isolement J101 comporte sept cavaliers, dont un cavalier d'alimentation de 3 V, appelé 3V3. Le cavalier 3V3 à deux broches peut être retiré, ce qui permet de mesurer le courant d'application grâce à ces deux broches.
Le LaunchPad prend également en charge la technologie EnergyTrace™ de TI et peut se connecter à un ordinateur grâce à l'interface utilisateur graphique (GUI) EnergyTrace de Texas Instruments. Cela permet aux développeurs de surveiller la consommation énergétique en temps réel du microcontrôleur MSP430 et de l'application, pour ainsi pouvoir ajuster leur application en fonction de la consommation souhaitée.
Par exemple, la surveillance et la mesure du courant en temps réel peuvent montrer que la consommation de courant du microcontrôleur MSP430 augmente par moments. Les pointes de courant peuvent dégrader la batterie et réduire sa durée de vie. Elles peuvent être provoquées par une mauvaise configuration des périphériques intégrés, par une charge capacitive ou inductive externe, ou même par le micrologiciel qui essaie de tout activer en même temps. Grâce à la surveillance et à la mesure du courant, les développeurs peuvent savoir où ajuster le micrologiciel afin de maintenir ces pointes de courant sous contrôle.
Conclusion
Pour de nombreuses applications embarquées alimentées par batterie basse consommation et moyennes performances, les développeurs peuvent choisir un microcontrôleur 16 bits approprié plutôt que de se tourner vers un cœur 32 bits. Comme indiqué ici, pour de nombreuses applications, un microcontrôleur 16 bits peut avoir une consommation beaucoup plus basse qu'un microcontrôleur 32 bits, tout en atteignant les performances voulues.
Avertissement : les opinions, convictions et points de vue exprimés par les divers auteurs et/ou participants au forum sur ce site Web ne reflètent pas nécessairement ceux de DigiKey ni les politiques officielles de la société.




