Wat is het verschil tussen een microcontroller en een microprocessor?
Wat is het verschil tussen een microcontroller en een microprocessor?
Een microprocessor heeft doorgaans geen RAM-, ROM- en IO-pinnen. Het gebruikt meestal zijn pinnen als een bus om te communiceren met randapparatuur zoals RAM, ROM, seriële poorten, digitale en analoge IO. Hierdoor is het uitbreidbaar op boardniveau.
Een microcontroller is 'all in one', de processor, ram, IO allemaal op één chip, dus je kunt (zeg maar) de hoeveelheid RAM beschikbaar of het aantal IO-poorten. De controlerende bus is intern en niet beschikbaar voor de kaartontwerper.
Dit betekent dat een microprocessor over het algemeen kan worden ingebouwd in grotere algemene toepassingen dan een microcontroller. De microcontroller wordt meestal gebruikt voor meer specifieke toepassingen.
Dit zijn allemaal zeer algemene uitspraken. Er zijn chips beschikbaar die de grenzen doen vervagen.
Zoals gezegd zijn microcontrollers in wezen systemen op een chip. Behalve sommige gespecialiseerde randapparatuur zit alles in één pakket. De interface met externe randapparatuur gebeurt bijna altijd via seriële verbindingen. Hierdoor blijft het pakket klein (minder pinnen) en het PCB-formaat klein (minder pinnen om tussen pakketten te verbinden).
Bij de laatste Boston Barcamp (MIT 2009) heb ik een "Intro to Microcontrollers" -gesprek gehouden. Een kopie van de hand-out staat op
Microcontrollers:
Microprocessors:
Ik vind het interessant dat de LEGO Mindstorms NXT-set een microprocessor heeft [32 -bit AT91SAM7S256 (ARM7TDMI) hoofdmicroprocessor @ 48 MHz (256 KB flashgeheugen, 64 KB RAM)] om mee te denken, en een microcontroller [8-bit ATmega48 microcontroller @ 4 MHz (4 KB flashgeheugen, 512 bytes RAM)] voor koppeling met de sensoren en motoren. Zie technische specificaties op Wikipedia.
Dit onderscheid is tegenwoordig veel moeilijker te maken, aangezien er een hele reeks apparaten tussen de extremen is ontstaan, maar als er één identifier is die lijkt te werken, is het om naar de pin-out te kijken, en kijk wat de ontwerpers met de pinnen deden . Zijn het meestal individuele I / O's? Of domineren bussen?
Naar mijn mening is een microcontroller van oudsher iets dat werkt als een 1-chip-oplossing; plaats er een op een printplaat met een paar onvermijdelijke discreties en wat connectoren, schrijf een kleine hoeveelheid software en je hebt een systeem. De microcontroller bevat al het geheugen, vluchtig en niet, dat het systeem nodig heeft. De prijs die voor dit gemak wordt betaald, is dat er niet veel van beide beschikbaar zou zijn. De meeste pinnen zijn bestemd voor I / O-functies.
Terwijl, aan het andere uiterste, de microprocessor het soort beest is dat zoveel mogelijk ontlaadt om chips te ondersteunen, om silicium te wijden aan het maximaliseren van de doorvoer van de CPU-kern. De meeste pinnen op dit soort apparaten zijn adres- en datalijnen, nodig om verbinding te maken met het geheugen en de I / O-apparaten die de kern mist.
Het is nog steeds mogelijk om sommige dingen microprocessors te noemen, en andere dingen microcontrollers, wanneer de ontwerpers duidelijk vasthielden aan de ene of de andere filosofie. Een Intel Core i7 is duidelijk een processor, PIC's en AVR's zijn duidelijk controllers. Op dit moment kunt u echter, met de hoeveelheid logica die in een enkele chip kan worden gestopt, gemakkelijk een volledig microprocessor systeem uit 1990 in een enkele chip integreren. Hoe noem je een 400 MHz PPC604 met een interruptcontroller, een SDRAM-controller, ethernetondersteuning en een hele reeks andere randapparatuur, allemaal op één chip?
Ik zou willen suggereren dat een microcontroller een apparaat is dat voldoende intern geheugen en schakelingen bevat om, althans in sommige varianten, een nuttige functie uit te voeren zonder extern geheugen. Volgens een dergelijke definitie zou de 8051 voldoende schakelingen hebben om op zichzelf bruikbaar te zijn en de 8031 niet; de 8031 is echter gewoon een 8051 waarin de inhoud van de interne ROM niet gespecificeerd is (hoewel het heel goed mogelijk is dat sommige "ROMless" 8031-chips en varianten de ROM-ruimte van de dobbelsteen laten, zou ik verwachten dat er enkele andere zijn die, voor consistentie van matrijslay-out met versies die ROM bevatten, inclusief een nutteloze lege ROM-array).
Vooral marketing.
Er zijn nog andere rare termen; Analog Devices heeft (of had) iets dat ze 'microconverters' noemden, die waren als ADC / DAC's met een ingebouwde microprocessor. TI noemt nu een aantal van hun DSP's (de C2000-serie) digitale signaalcontrollers.
Anders wat JohnC zei.
Om al het bovenstaande uitstekend geschreven antwoorden toe te voegen, Analogy: Microprocessor is a Brain. terwijl microcontroller het hele lichaam is.
Brain is in staat om alle instructies uit te voeren, maar we moeten ogen, handen (dwz randapparatuur) extern bevestigen.
Terwijl het lichaam hersenen en andere randapparatuur heeft, dwz Microcontroller :)
De regel is wat wazig, maar over het algemeen gaat het als volgt:
microprocessors bevatten de processorkern (fetch / decode-eenheid, ALU, registers enz.) en misschien nog een paar meer basisblokken, maar meestal niet veel meer.
microcontrollers voegen RAM (SRAM) toe, meestal een beetje ROM (kan masker-rom of Flash / EEPROM zijn) voor codeopslag (maar kan ook ROMloos zijn), en een set randapparatuur (SPI / I2C, UART, GPIO's, misschien zelfs USB of Ethernet enzovoort). Soms wordt dit System-on-Chip (SoC) genoemd, of soms is SoC zelfs nog meer geïntegreerd. Sommige Japanse bedrijven houden ook van de term " microcomputer".
Zoals ik al zei, wordt de lijn echter wazig. Recente Intel / AMD-processors voegen bijvoorbeeld een geheugencontroller toe aan de chip (voorheen zat deze in de chipset).
Trouwens, ik zou 8086 eigenlijk een microprocessor noemen (de microcontrollers van Intel bevatten bijvoorbeeld 8051 of 80186) .
Microprocessor = cpu; Microcontroller = cpu + randapparatuur + geheugen Randapparatuur = poorten + klok + timers + uarts + adc converters + lcd-stuurprogramma's + dac + andere dingen; Geheugen = eeprom + sram + eprom + flash
In Microprocessor meer op-codes, een paar instructies voor het afhandelen van bits. Maar in Microcontroller: minder opcodes, meer instructies voor het afhandelen van bits.
Een microprocessor is misschien niet ook geprogrammeerd om realtime taken uit te voeren, terwijl een microcontroller zoals in apparaten die dat nodig hebben om de temperatuur van het water te regelen of misschien om de temperatuur van een kamer te meten, is realtime monitoring vereist en daarom werkt de microcontroller met zijn ingebouwde set instructies op zichzelf.
Microprocessor is een eenvoudige centrale verwerkingseenheid (CPU) op een enkele chip (onthoud het woord ‘Single Chip’). Het omvat rekenkundige logische eenheid (ALU), besturingseenheid (CU), registers, instructiedecoders, busbesturingscircuit etc. maar alles zou op een enkele chip moeten staan.
Microcontroller: een microcontroller is de associatie van een microprocessor en de perifere I / O-apparaten, ondersteunende schakelingen en geheugen (zowel gegevens als programma). Het is niet nodig om op een enkele chip te zitten (onthoud dit punt, niet op een enkele chip).
Alle antwoorden zijn correct, aangezien dit verschil meer blokken heeft in mC en mP, zie onderstaande tabel,
Lang antwoord kort:
MicroProcessor - Is het 'denken' in feite de chip zelf die wiskunde afhandelt.
Microcontroller - Een systeem met een microprocessor inbegrepen, die gemakkelijk kan communiceren met elektronische componenten voor het ontwikkelen van een ingebed systeem.(Denk aan arduino, PI, PSOC4 etc.