microcontrôleur vs système sur puce

24

Je commence la programmation de micro-contrôleurs et je lisais de la documentation et des manuels. Je suis un peu confus quant à la différence entre un microcontrôleur et un système sur puce?

Certains documents utilisent ces deux termes de façon interchangeable. Cependant, la plupart des manuels soulignent que l'utilisation interchangeable des deux termes n'est PAS correcte, il doit donc y avoir une différence notable ...

Merci!

rrazd
la source
4
Merci d'avoir accepté ma réponse, mais je vous recommande vraiment d'attendre plus longtemps la prochaine fois avant d'accepter. D'autres ont probablement des points de vue et des idées différents, mais peuvent souvent ignorer une question qui a déjà une réponse acceptée - je sais que je le fais. Vous voulez laisser un peu de temps pour recueillir un consensus, en particulier pour une question qui aborde une zone grise.
Olin Lathrop
@Olin Cool, gardera cela à l'esprit la prochaine fois!
rrazd

Réponses:

27

Un microcontrôleur est un processeur dont la mémoire de programme et de données est intégrée. Ces puces sont destinées aux petites applications de contrôle intégrées, donc laisser les broches pour les E / S et ne nécessitant pas de bus mémoire externe est très utile. Certains microcontrôleurs n'ont que 6 broches et peuvent faire des choses utiles. Comparez cela à un processeur informatique à usage général destiné à un PC. Ces éléments ont des centaines de broches dans un réseau et nécessitent des circuits externes étendus.

Quant au système sur puce, c'est un terme moins bien défini. Chypre appelle certaines de ses pièces PSOC (Programmable System on Chip). Il s'agit essentiellement d'un microcontrôleur avec un petit FPGA sur la même puce. Au lieu d'avoir des périphériques intégrés, vous pouvez créer tout ce que vous voulez dans les ressources disponibles du FPGA.

En général, je pense qu'un système sur une puce est un microcontrôleur avec une logique soi-disant au niveau du système intégrée. Bien sûr, plus vous essayez d'aller dans le système, moins un ensemble de matériel supplémentaire sera susceptible d'être utile, donc une sorte de configurabilité est très utile. Cependant, pour l'instant, le «système sur puce» est plus un terme marketing que n'importe quoi de réel.

Olin Lathrop
la source
20

System On a Chip (ou SoC) est une expression fourre-tout que les gens du marketing utilisent et ne signifie pas vraiment grand-chose. Il existe également de nombreuses variantes comme:

PSoC: système programmable sur puce, par Cypress Semiconductor.

SOPC: système sur une puce programmable, par Altera

Essentiellement, un SOC est une puce unique qui fait tout ce qui auparavant utilisait plusieurs puces. Il n'y a rien là-bas qui dit qu'il doit inclure un CPU ou une RAM. Donc, étant donné que nous pouvons obtenir plus de transistors sur une puce et que nous avons de plus en plus de fonctionnalités sur nos puces - à peu près tout peut être appelé un SoC par rapport à ce que nous faisions il y a 10 ou 20 ans !

Pour aggraver les choses: il existe de nombreux exemples de choses appelées SoC qui nécessitent encore plusieurs puces pour être utiles. Souvent, vous aurez une forme de CPU + périphériques qui nécessitent toujours une mémoire flash externe, de la RAM et des éléments d'alimentation. Ainsi, même le nom SoC est trompeur.

Un MCU est probablement l'exemple le plus concis de ce que devrait être un SoC - mais c'est un exemple très limité.


la source
@ David-kesner +1 pour SoC comme expression marketing.
Frank
12

En général, un microcontrôleur est considéré comme un périphérique intégré qui est programmé en interne pour effectuer une tâche spécifique. Il y a une interaction utilisateur minimale et peu ou pas de flexibilité. Un microcontrôleur est généralement assez faible puissance avec seulement de petites quantités de mémoire et de ROM (flash).

À l'inverse, un système sur puce est l'autre extrémité du spectre. Il est davantage orienté vers une flexibilité totale et une interaction avec l'utilisateur. Il inclut souvent des éléments tels que des pilotes d'E / S pour un matériel plus volumineux (comme des disques durs, etc.), et même parfois une carte graphique. Un système sur puce ressemble plus à un système informatique complet, oui, sur une puce.

Il y a beaucoup de croisements entre les deux - quand cesse-t-il d'être un microcontrôleur et commence-t-il à être un système sur puce? C'est de là que vient une grande partie de la confusion.

Fondamentalement, s'il peut faire ce qu'un ordinateur peut faire, c'est un système sur puce. S'il est conçu, par exemple, pour être assis dans un téléphone de bureau gérant votre liste de contacts, ou dans un système de saisie par clavier, ou pour faire fonctionner les moteurs sur une machine CNC, alors c'est un microcontrôleur.

ps, ne me citez pas à ce sujet - comme je le dis, il y a beaucoup de croisement entre les deux.

Majenko
la source
5

La distinction est en quelque sorte plus liée au marketing que technique, mais je dirais qu'en général la partie "programmable" d'un microcontrôleur est limitée à un seul "courant de conscience" relativement étroit. Essentiellement, à un moment donné, la prochaine opération relativement petite du microcontrôleur sera déterminée par la façon dont il est programmé, mais toute autre logique du système est câblée et fonctionnera comme elle est construite. Certaines choses comme les minuteries peuvent fournir certaines options de configuration (par exemple, le comptage à débit fixe par rapport au comptage des impulsions sur une entrée) mais en général, le câblage du système sera fixe. Si l'on souhaite que le signal de sortie change en réponse à un signal d'entrée et qu'il n'existe pas de matériel explicite pour le faire, le programme devra examiner périodiquement le signal d'entrée et, s'il a changé, commuter le signal de sortie. S'il est souhaité que la tension analogique de sortie change en réponse à une tension analogique d'entrée, le processeur peut échantillonner la tension d'entrée, calculer la réponse souhaitée et demander la tension de sortie souhaitée. Pratiquement, le type de stimulus / réponse souhaité pourrait être produit en faisant examiner par le processeur les entrées et les sorties de calcul, mais les temps de réponse seraient en général plus lents que ceux produits avec du matériel dédié.

L'idée générale d'un système sur puce est de permettre de fournir aux circuits suffisamment de multiplexeurs et d'autres installations de routage de telle sorte que les signaux puissent être acheminés à travers les circuits pour produire de nombreux types utiles de modèles de stimulation / réponse sans intervention du processeur. De tels circuits ne peuvent pas produire des modèles de stimulus / réponse qui soient à peu près aussi rapides que ce qu'un processeur pourrait produire, mais ils peuvent dans de nombreux cas être des ordres de grandeur plus rapides que tout ce qu'un processeur pourrait faire.

supercat
la source
2

À mon avis, SoC est le terme avec beaucoup de définitions, qui en fait continueront de changer avec le temps. D'un autre côté, le microcontrôleur sera défini de la même manière après une décennie qu'il l'est actuellement. Lorsque vous dites un microcontrôleur, il est livré avec des éléments de base sur une seule puce, comme la mémoire, les ports d'E / S, les minuteurs et les compteurs, etc. ... Mais lorsque vous dites un SoC, il n'a pas de norme spécifique sur type de circuit qu'il doit contenir. Par exemple, l'application principale dans laquelle ils essaient d'intégrer le SoC est le smartphone. Dans le scénario actuel, un smartphone devrait contenir des éléments de base intégrés comme,

  1. NFC
  2. GPS
  3. Accéléromètre et gyroscope
  4. Wifi
  5. Un CPU et un GPU

Dans la situation actuelle, si je veux fabriquer un smartphone, je dois prendre un CPU et un GPU et tout interfacer avec. Mais SoC est basé sur le concept de puce unique qui aura tout ce qui précède et a une capacité d'évoluer (bien que de manière très basique). De plus, j'ai dit que le SoC a une définition en constante évolution car les exigences de base pour un smartphone, un ordinateur ou tout appareil électronique vont augmenter de jour en jour et la définition du SoC changera avec ces exigences.

krushna ratnaparkhi
la source
0

Oui SoC est fondamentalement un terme marketing utilisé plus souvent. Il y a la terminologie de l'appareil et de l'hôte.Les hôtes sont les grands fabricants de PC comme Dell, HP, IBM, etc. Ils ont utilisé le CPU à l'intérieur d'eux généralement fabriqué par Intel, AMD, etc. fournit essentiellement CPU ou SoC sur la carte mère (appelée CPU), certains fournissent également le CPU + SoC (dans un but particulier pour décharger l'activité des périphériques - comme des capteurs ou un appareil GPS, qui autrement auraient été très gourmands en énergie si ils ont été connectés directement au CPU) .SoC est aussi parfois appelé un co-processeur dont le travail est le même que ce que j'ai écrit plus tôt. Maintenant, les cartes mères sont connectées à divers périphériques (qui sont connectés essentiellement à un processeur ou à un SoC), ces périphériques sont essentiellement connectés directement à eux (SOC ou CPU) via un bus de somme - i2c, SPI, USB ou ils sont généralement connectés aux micro-contrôleurs . fabricants de contrôleurs) ainsi que les fabricants de PC car ils obtiennent les meilleurs appareils (périphérique + microcontrôleur). Donc, le point est le terme de microcontrôleur que vous verrez plus souvent du côté de l'appareil (celui qui est interfacé avec le SoC (maintenant vous savez ce qu'est un SOC ?? Ne le faites pas) et SoC du côté de l'hôte (le côté PC) Vous pouvez dire que le CPU est le père qui délègue le soem de son travail au SoC pour de meilleures capacités d'alimentation des périphériques (Micro + périphériques).

Raulp
la source
1
HOU LA LA ! Vraiment comme le downvote quand les gens le font sans dire beaucoup de commentaires utiles!
Raulp
3
Ce n'est pas très clair. Je ne peux pas faire les tenants et les aboutissants dans ce courant de conscience.
ivan_pozdeev
0

Résumez ce qui précède, il me semble:

Un MCU fournit beaucoup de mémoire, des interfaces telles que VGA et des capacités telles que GPU en utilisant plusieurs puces différentes qui fournissent différentes choses.

Un MCU tient tout sur une seule puce en ne fournissant que peu de mémoire, d'interfaces, etc.

Un SoC tient tout sur une seule puce en repoussant les limites de ce qui peut être fait sur une seule puce.

Les MCU fournissent de la valeur en minimisant les coûts, les SoC fournissent de la valeur en maximisant les fonctionnalités, à la fois sur une seule puce. S'il est en concurrence avec la logique TLL, c'est probablement un MCU. S'il rivalise avec les microprocesseurs (AMD, Intel), c'est probablement un SoC.

Ray Morris
la source