J'ai entendu parler de microcontrôleurs 8 bits et microcontrôleurs 16 bits. J'ai même entendu parler de microcontrôleurs 7 bits et de microcontrôleurs 1 bit .
Quels sont les attributs généraux de ces groupes? Comment choisir le type à utiliser pour un projet?
microcontroller
architecture
Jacob Harding
la source
la source
Réponses:
Il existe également des microcontrôleurs 4 bits et 32 bits. Les microprocesseurs 64 bits sont utilisés dans les PC.
Le nombre fait référence à la largeur du registre . Les registres sont au cœur du microcontrôleur. De nombreuses opérations utilisent des registres, soit pour déplacer des données, soit pour effectuer des opérations arithmiques ou logiques. Ces opérations se déroulent dans l' ALU , l'unité Arithmétique et Logique.
Certaines opérations ne prennent qu'un seul argument, comme effacer un registre ou l'incrémenter. Beaucoup, cependant, prendront 2 arguments, et cela conduit à la représentation typique d'un pantalon à l'envers d'une ALU.UNE et B sont les arguments, et l'ALU produira un résultat C sur la base de l'opération en cours. Une opération à deux arguments peut être "ajouter 15 pour enregistrer R5 et stocker le résultat à l'adresse mémoire 0x12AA". Cela nécessite un routage entre la constante "15" (qui provient de la mémoire du programme), le fichier de registre et la mémoire de données. Ce routage s'effectue via un bus de données . Il y a un bus de données interne reliant les registres, la RAM interne et l'ALU, et pour les microprocesseurs et certains microcontrôleurs un bus de données externe qui se connecte à la RAM externe. À quelques exceptions près, le bus de données a la même largeur que les registres et l'ALU, et ensemble ils déterminent de quel type de microcontrôleur il s'agit. (Une exception a été le 8088, qui possède en interne un bus 16 bits, mais en externe uniquement 8 bits.)
Les contrôleurs 4 bits ont des registres 4 bits, qui ne peuvent représenter que 16 valeurs différentes, de 0 à 0xF hexadécimal. Ce n'est pas beaucoup, mais c'est suffisant pour travailler avec les chiffres d'une horloge numérique, et c'est un domaine où ils sont utilisés.
Les contrôleurs 8 bits sont la bête de somme de l'industrie depuis quelques décennies maintenant. En 8 bits, vous pouvez stocker un nombre compris entre 0 et 255. Ces nombres peuvent également représenter des lettres et d'autres caractères. Vous pouvez donc travailler avec du texte. Parfois, 2 registres peuvent être combinés en un registre 16 bits, ce qui permet des nombres jusqu'à 65 535. Dans de nombreux contrôleurs, de grands nombres doivent cependant être traités par logiciel. Dans ce cas, même des nombres 32 bits sont possibles.
La plupart des contrôleurs 8 bits ont un compteur de programme 16 bits. Cela signifie qu'il peut traiter un maximum de 64 Ko de mémoire. Pour de nombreuses applications intégrées, cela suffit, certaines n'ont même besoin que de quelques kilo-octets.
Un moniteur de parking, par exemple, où vous devez compter le nombre de voitures et l'afficher sur un écran LCD, est quelque chose que vous feriez généralement avec un contrôleur 8 bits. :-)
16 bits est une prochaine étape. Pour une raison quelconque, ils n'ont jamais eu le succès de 8 ou 32 amers. Je me souviens que la série Motorola HC12 était d'un coût prohibitif et ne pouvait pas rivaliser avec les contrôleurs 32 bits.
32 bits est le mot du jour. Avec un compteur de programme 32 bits, vous pouvez adresser 4 Go. ARM est un contrôleur 32 bits populaire. Il existe des dizaines de fabricants proposant des ARM de toutes tailles. Ce sont de puissants contrôleurs ayant souvent de nombreuses fonctions spéciales à bord, comme des pilotes d'affichage USB ou LCD complets.
Les ARM nécessitent souvent des packages volumineux, soit pour accueillir une matrice de grande taille avec beaucoup de Flash, soit parce que les différentes fonctions nécessitent beaucoup de broches d'E / S. Mais ce package illustre les possibilités qu'ARM offre.
Il s'agit d'un ARM à 16 broches dans un boîtier de 2,17 mm x 2,32 mm seulement.
la source
La réponse simple: un microcontrôleur N-Bit a un chemin de données et ALU qui peut traiter les données en morceaux N-Bit.
Réponse longue: La réponse courte est correcte dans 95% des cas. La longue réponse devient confuse. Certains CPU / MPU ont des parties qui sont principalement des N-Bits, mais certaines parties sont des M-Bits. Par exemple, il peut s'agir d'un processeur 8 bits avec un multiplicateur entier qui fonctionne sur des données 16 bits. La série de processeurs Intel (8088 jusqu'à l'actuel i7) pouvait souvent combiner divers registres 8 et 16 bits pour obtenir 16 ou 32 bits. Ensuite, les responsables marketing obtiennent ces chiffres et décident de les utiliser dans leurs activités marketing et vous vous retrouvez avec des MPU 8 bits appelés 16 bits, etc.
Ça devient encore plus bizarre que ça. Certaines personnes chargées du marketing font la promotion de la taille de l'instruction du MPU. Les PIC Microchip en sont un bon exemple. Si vous ne faites pas attention, vous pouvez confondre cela avec le nombre de bits dans le chemin de données.
la source
Que signifie "N-Bit"?
Désolé si ce premier paragraphe est un peu trop bas, mais il est proposé dans l'espoir qu'il puisse aider les futurs lecteurs: un nombre, représenté par N chiffres dans la base M, ne peut être aussi grand queMN . Par exemple, avec 9 chiffres décimaux (base 10), vous ne pouvez écrire que des nombres jusqu'à 10 ^ 9 ou zéro à 999 999 999. Avec 8 chiffres binaires (base 2) (un "chiffre binaire" est un "bit"), vous pouvez stocker 2 ^ 8 = 256 chiffres.
Un microcontrôleur ou processeur est appelé «N-bit» car les contrôleurs et les processeurs ont une largeur de données fondamentale. Chaque registre peut être N bits, chaque instruction peut être N bits, le bus de données peut être N bits, la mémoire peut être adressée avec N bits. Surtout au niveau inférieur, il existe des exceptions à cette règle: par exemple, un contrôleur 8 bits peut avoir un bus mémoire 12 bits, mais comme vous pouvez le deviner, il est difficile de travailler avec lorsque vos registres ne contiennent que 8 bits. Cependant, tous les processeurs ont une largeur de type de données natif fondamental. Considérez le code suivant:
Si vous ne pouvez ajouter que des nombres à 8 bits, comment effectueriez-vous cette opération? Vous devez diviser chaque variable en 4 nombres de 8 bits, effectuer les ajouts et les transporter individuellement, puis les fusionner pour obtenir le résultat. Cela prendrait au moins 16 instructions! Cependant, sur un processeur 32 bits, c'est une seule instruction aussi simple que
mul r0, r1, r2
. Comme vous pouvez le voir dans cet exemple simple, des largeurs de bits de processeur plus importantes peuvent traiter plus de données plus rapidement.Notes historiques
La tendance à travers l'histoire est passée de plus petites largeurs de bits à des plus grandes. Au début des années 1970, Intel a sorti le 4004, le premier contrôleur monopuce. C'était un processeur 4 bits. Parce que les transistors étaient grands et énergivores, et parce que la conception était révolutionnaire et compliquée, c'était tout ce qui pouvait être pressé sur la puce. Peu de temps après, ils ont sorti le 8008, un processeur 8 bits. Il y a peu de processeurs 4 bits encore utilisés, mais il y a beaucoup de contrôleurs 8 bits, le PIC et l'AVR sont des exemples contemporains encore couramment utilisés. Plus de processeurs 8 bits ont été fabriqués que tout autre type! Ce sont toujours les contrôleurs les plus populaires pour les tâches petites, simples et économiques. La prochaine transition évidente a été vers les contrôleurs 16 bits, mais ceux-ci n'ont pas eu la portée de leurs frères 8 bits ou 32 bits. Au lieu, il y a eu un saut aux processeurs 32 bits, comme ceux conçus par ARM et conçus dans les processeurs PC d'il y a quelques années. Il n'y a pas eu de microcontrôleurs 64 bits importants à ma connaissance, bien qu'ils soient désormais bien en vue sur les PC.
8 bits contre 32 bits
De loin, les types les plus populaires sont les processeurs 8 bits et 32 bits. Les processeurs 32 bits deviennent de plus en plus populaires. Chaque année, un magazine spécialisé publie un article intitulé "Is 8-bit dead?" Les processeurs 32 bits deviennent de plus en plus populaires, plus puissants et moins chers, ne laissant que trois raisons de choisir un processeur 8 bits:
Les processeurs 32 bits deviennent de plus en plus omniprésents, mais il y a peu de signes que le processeur 8 bits disparaisse comme les processeurs antiques 4 bits pour ces trois raisons.
Arduino comme exemple
Considérez une application comme l' Arduino .
L'Arduino utilise un contrôleur Atmel, un ATmega32 8 bits . L'ATmega fonctionne à 20 MHz, dispose de 4 000 RAM, de communications SPI, I2C et UART, de quelques interruptions matérielles et de 8 ADC 10 bits. Cette puce coûte 3,90 $ en quantités de 100.
Une puce 32 bits similaire pourrait être une autre partie d'Atmel, un AT-SAM3 32 bits utilisant le noyau ARM Cortex-M3 partagé. Cette puce fonctionne à 64 MHz (3 fois plus vite, mais n'oubliez pas que l'ATmega prend 16 instructions pour effectuer un seul ajout 32 bits). Il a 16k de RAM, 4 fois plus que l'ATmega. Il dispose de périphériques I²C, MMC, SPI, SSC, UART et même USB. Il dispose de DMA (accès direct à la mémoire, le rend également plus rapide et plus efficace), d'un ensemble d'interruptions flexible et puissant, de 10 ADC 12 bits et de 2 DAC. Il surclasse simplement l'ATmega dans toutes les catégories. J'ai essayé de trouver un contrôleur 32 bits qui avait un ensemble de fonctionnalités comparable, et c'était le mieux que je pouvais faire. Combien coûte cette puce? C'est 2,34 $ en quantités de 100: vous obtenez plus de performances pour moins d'argent. Cela devrait être une décision facile.
Et votre exemple?
Pour votre exemple de situation ici ,
vous avez des calculs très simples avec de petits nombres et un affichage simple sur un écran LCD (ou vraiment, un grand panneau composé de chiffres éclairés par LED à 7 segments serait plus visible et moins cher). Un contrôleur 8 bits est probablement parfaitement adapté à cette tâche. Cependant, si vous avez vraiment ne voulez un écran LCD? Le contrôleur 8 bits aura du mal à piloter même un écran VGA basse résolution, tandis que vous pouvez facilement obtenir des cartes de développement pour les contrôleurs 32 bits dotés de sorties HDMI. Que faire si vous souhaitez l'afficher sur un écran pour l'instant, mais que vous souhaitez ensuite le connecter à un câble Ethernet sur le réseau local de votre entreprise et afficher les résultats sur l'ordinateur du superviseur au bureau du parc? Vous pouvez facilement obtenir des contrôleurs 32 bits avec des bus de communication Ethernet intégrés, vous ne pouvez pas le faire avec un contrôleur 8 bits.Xport , mais qui contient un processeur 32 bits.
Pour les projets ponctuels, je recommanderais à chaque fois un contrôleur 32 bits. Votre temps est tout simplement plus précieux que la différence de prix entre les contrôleurs 8 et 32 bits.
En ce qui concerne les processeurs 7 bits que vous avez mentionnés, il n'y a probablement jamais eu et il n'y aura jamais de telles machines. D'un point de vue architectural, il est plus judicieux d'utiliser des largeurs de bits qui sont des puissances de 2.
la source
La taille en bits d'un CPU se rapporte à quelques caractéristiques qui vont généralement de pair:
Pour certains processeurs, toutes ces quantités ont la même valeur. Pour d'autres, ils peuvent avoir des valeurs différentes. Le Z80, bien qu'il comprenne certains registres 16 bits, utilise des registres 8 bits pour la plupart de son jeu d'instructions, et nécessite des cycles supplémentaires pour presque toutes les instructions qui fonctionnent sur des quantités de 16 bits (la seule exception étant EX DE, HL); c'est un processeur 8 bits. Cependant, quelque chose comme le 68008 ne peut pas être très bien décrit en utilisant un seul
N
: il a un jeu d'instructions qui peut principalement fonctionner sur des quantités de 32 bits, et il peut IIRC déplacer des données entre les registres 32 bits à la fois, mais son ALU principal est seulement 16 bits, et son bus mémoire n'est que de 8 bits. Selon ce que l'on mesure, il peut être considéré comme un processeur 32 bits, 16 bits ou 8 bits.la source