Quelles sont les propriétés d'un microcontrôleur N bits?

9

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?

Jacob Harding
la source
4
Je n'ai jamais entendu parler d'un microcontrôleur 7 bits. Je suis désolé si vous avez été dérouté par un commentaire que j'ai publié sur electronics.stackexchange.com/q/32097/4512 . C'était censé être une blague.
Olin Lathrop
4
Génial! Olin, je voulais vous avertir que cette question était à prévoir! :-)
stevenvh

Réponses:

11

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.

entrez la description de l'image ici

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 Csur 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.

entrez la description de l'image ici

Il s'agit d'un ARM à 16 broches dans un boîtier de 2,17 mm x 2,32 mm seulement.

Stevenvh
la source
Et les microcontrôleurs 64 bits également. uk.computers.toshiba-europe.com/innovation/jsp/…
Telaclavo
1
Il y a eu toutes sortes de largeurs dans le passé. Le PDP-8 était de 12 bits, et un CDC 6600 était de 60 bits avec 6 octets de bits si je me souviens bien. De nos jours, nous voyons à peu près 4 (2 ^ N) largeurs de bits.
Olin Lathrop
Quelle est la référence de ce processeur ARM?
Rocketmagnet
@Rocketmagnet ressemble peut-être à un NXP LPC1102UK: nxp.com/products/microcontrollers/cortex_m0/miniature_package/…
Craig
5

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
Les processeurs de base et de milieu de gamme Microchip ont respectivement un mot d'instruction 12 bits ou 14 bits. Les deux sont cependant classés comme processeurs 8 bits car le bus de données est 8 bits. Une entreprise chinoise (ELAN Microelectronics) a fait une variation des PIC 14 bits avec un mot d'instruction 13 bits appelé EM78. Pour tous ces éléments, les données sont adressées en octets tandis que la mémoire de programme est adressée en mots - mais la mémoire de programme est parfois annoncée comme étant si longue en octets, ce qui donne une valeur gonflée du nombre réel d'instructions qui peuvent être programmées!
tcrosley
4

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 que MN. 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:

uint32_t x,y,z;  // Declare 3 32-bit variables
z=x + y;         // Add two of them to store in the third

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:

  1. Inertie - Si vous avez du code et de l'expérience avec un processeur 8 bits, vous pouvez ne pas obtenir un retour sur investissement suffisant en convertissant tout en une architecture 32 bits.
  2. Faible puissance - Chaque transistor d'un contrôleur dissipe la puissance, et bien que la taille ne soit plus un problème, les processeurs 32 bits ont plus de transistors et dissipent donc plus de courant dans leur état bloqué. Ce n'est un problème que dans les conceptions extrêmes à pile bouton.
  3. Faible coût - Si vous n'avez besoin que de quelques dizaines d'instructions d'assemblage et de 2 broches d'E / S, même un processeur 8 bits est probablement exagéré. À l'extrémité inférieure, les contrôleurs 8 bits les moins chers sont inférieurs à 0,40 $ en vrac, mais les processeurs 32 bits les moins chers sont toujours à 0,80 $ environ, mais sont beaucoup plus puissants que les alternatives 8 bits. Si vous essayez de construire un jouet avec une seule LED clignotante pour le prochain million de Happy Meals, c'est une baisse de prix convaincante, sinon cela ne fait pas vraiment de différence.

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 ,

Le nombre de voitures entrant et sortant d'un parking doit être compté et le nombre affiché sur un écran LCD. Un maximum de dix voitures sont autorisées dans le parking.

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.

Kevin Vermeer
la source
Sur la comparaison 8 bits vs 32 bits: Même si les contrôleurs 32 bits sont plus souvent moins chers (prix unitaire) et ont plus de fonctionnalités que les contrôleurs 8 bits, ils sont plus coûteux en termes de PCB immobilier.
shimofuri
1

La taille en bits d'un CPU se rapporte à quelques caractéristiques qui vont généralement de pair:

  1. La plus grande taille d'opérande sur laquelle la majeure partie du jeu d'instructions peut fonctionner
  2. La taille de la plupart si ses registres à usage général
  3. La taille du plus grand bus disponible pouvant déplacer des données entre des registres à usage général et de la mémoire
  4. La taille du plus grand bus disponible pouvant déplacer des données entre des registres à usage général
  5. La taille de l'ALU utilisée pour le calcul de données à usage général

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.

supercat
la source