Quali sono le proprietà di un microcontrollore N-bit?


9

Ho sentito parlare di microcontrollori a 8 bit e microcontrollori a 16 bit. Ho anche sentito parlare di microcontrollori a 7 bit e microcontrollori a 1 bit .

Quali sono gli attributi generali di questi gruppi? Come faccio a scegliere quale tipo usare per un progetto?


4
Non ho mai sentito parlare di un microcontrollore a 7 bit. Mi dispiace se sei stato confuso da un commento che ho pubblicato su electronics.stackexchange.com/q/32097/4512 . Quello doveva essere uno scherzo.
Olin Lathrop,

4
Grande! Olin, volevo avvertirti che questa domanda era prevedibile! :-)
stevenvh,

Risposte:


11

Esistono anche microcontrollori a 4 e 32 bit. I microprocessori a 64 bit sono utilizzati nei PC.

Il numero si riferisce alla larghezza del registro . I registri sono al centro del microcontrollore. Molte operazioni utilizzano i registri, sia per spostare i dati sia per eseguire operazioni aritmiche o logiche. Queste operazioni si svolgono nell'ALU , nell'unità aritmetica e logica.

inserisci qui la descrizione dell'immagine

Alcune operazioni accettano solo 1 argomento, come cancellare un registro o incrementarlo. Molti, tuttavia, prenderanno 2 argomenti e questo porta alla tipica rappresentazione dei pantaloni capovolta di un ALU. e sono gli argomenti e l'ALU produrrà un risultato basato sull'operazione corrente. Un'operazione a due argomenti può essere "aggiungi 15 per registrare R5 e memorizzare il risultato all'indirizzo di memoria 0x12AA". Ciò richiede che ci sia un routing tra la costante "15" (che proviene dalla memoria del programma), il file di registro e la memoria dei dati. Tale instradamento avviene attraverso un databusABC. C'è un databus interno che collega i registri, la RAM interna e l'ALU, e per i microprocessori e alcuni microcontrollori un databus esterno che si collega alla RAM esterna. Con poche eccezioni, il databus ha la stessa larghezza dei registri e dell'ALU e insieme determinano che tipo di microcontrollore è. (Un'eccezione era l'8088, che internamente ha un bus a 16 bit, ma esternamente solo 8 bit.)

I controller a 4 bit hanno registri a 4 bit, che possono rappresentare solo 16 valori diversi, da 0 a 0xF esadecimali. Non è molto, ma è sufficiente lavorare con le cifre in un orologio digitale, ed è un dominio in cui vengono utilizzati.

I controller a 8 bit sono il cavallo di battaglia del settore da un paio di decenni. In 8 bit è possibile memorizzare un numero compreso tra 0 e 255. Questi numeri possono anche rappresentare lettere e altri caratteri. Quindi puoi lavorare con il testo. A volte 2 registri possono essere combinati in un registro a 16 bit, che consente numeri fino a 65535. In molti controller, tuttavia, è necessario elaborare grandi numeri nel software. In tal caso sono possibili anche numeri a 32 bit.
La maggior parte dei controller a 8 bit ha un contatore di programmi a 16 bit. Ciò significa che può indirizzare al massimo 64kByte di memoria. Per molte applicazioni integrate ciò è sufficiente, alcune richiedono anche solo pochi kByte.
Un monitor di parcheggio, ad esempio, in cui è necessario tenere conto del numero di auto e visualizzarlo su un display LCD, è qualcosa che in genere si farebbe con un controller a 8 bit. :-)

16 bit è il prossimo passo. Per qualche motivo non hanno mai avuto il successo di 8 bit o 32 bit. Ricordo che la serie Motorola HC12 era proibitiva e non poteva competere con i controller a 32 bit.

32 bit è la parola del giorno. Con un contatore di programmi a 32 bit è possibile indirizzare 4 GByte. ARM è un popolare controller a 32 bit. Ci sono dozzine di produttori che offrono ARMs di tutte le dimensioni. Sono potenti controller che spesso hanno molte funzioni speciali a bordo, come USB o driver display LCD completi.
Gli ARM richiedono spesso pacchetti di grandi dimensioni, sia per adattarsi a un die grande con molto Flash, sia perché le diverse funzioni richiedono molti pin I / O. Ma questo pacchetto illustra le possibilità offerte da ARM.

inserisci qui la descrizione dell'immagine

Questo è un ARM a 16 pin in un pacchetto di soli 2,17 mm x 2,32 mm.



1
Ci sono stati tutti i tipi di larghezze in passato. Il PDP-8 era di 12 bit e un CDC 6600 era di 60 bit con 6 bit di byte se ricordo bene. Oggi vediamo quasi 4 (2 ^ N) larghezze di bit.
Olin Lathrop,

Qual è il numero di parte di quella CPU ARM?
Rocketmagnet,

@Rocketmagnet sembra forse un LPC1102UK NXP: nxp.com/products/microcontrollers/cortex_m0/miniature_package/…
Craig

5

La semplice risposta: un microcontrollore N-Bit ha un percorso dati e ALU in grado di elaborare i dati in blocchi N-Bit.

Risposta lunga: la risposta breve è corretta al 95% delle volte. La lunga risposta diventa confusa. Alcune CPU / MPU hanno parti che sono per lo più bit N, ma alcune parti sono bit B. Ad esempio, potrebbe essere una CPU a 8 bit con un moltiplicatore intero che funziona su dati a 16 bit. La serie di CPU Intel (dall'8088 all'attuale i7) potrebbe spesso combinare vari registri a 8 e 16 bit per ottenere 16 o 32 bit. Quindi gli addetti al marketing ottengono questi numeri e decidono di usarli nelle loro cose di marketing e si finisce con MPU a 8 bit chiamate 16 bit, ecc.

Diventa ancora più strano di così. Alcuni addetti al marketing promuovono la dimensione delle istruzioni della MPU. I PIC Microchip ne sono un buon esempio. Se non stai attento, potresti confonderlo con il numero di bit nel percorso dei dati.


I processori Microchip baseline e midrange hanno rispettivamente una parola di istruzioni a 12 o 14 bit. Entrambi sono classificati come processori a 8 bit, tuttavia perché il bus dati è a 8 bit. Una società cinese (ELAN Microelectronics) ha fatto una variazione dei PIC a 14 bit con una parola di istruzione a 13 bit chiamata EM78. Per tutti questi, i dati sono indirizzati in byte mentre la memoria del programma è indirizzata in parole - ma la memoria del programma è talvolta pubblicizzata come lunga così tanti byte, il che dà un valore gonfiato del numero effettivo di istruzioni che possono essere programmate!
Tcrosley,

4

Cosa significa "N-Bit"?

Scusate se questo primo paragrafo è un po 'troppo di basso livello, ma è offerto nella speranza che possa aiutare i lettori futuri: numero A, rappresentata da N cifre in base M, non può che essere grande come . Ad esempio, con 9 cifre decimali (base 10), è possibile scrivere solo numeri fino a 10 ^ 9 o da zero a 999.999.999. Con 8 cifre binarie (base 2) (una "cifra binaria" è un "bit"), è possibile memorizzare 2 ^ 8 = 256 numeri.MN

Un microcontrollore o processore si chiama 'N-bit' perché controller e processori hanno una larghezza di dati fondamentale. Ogni registro potrebbe essere N bit, ogni istruzione potrebbe essere N bit, il bus dati potrebbe essere N bit, la memoria potrebbe essere indirizzata con N bit. Soprattutto al livello inferiore, ci sono eccezioni a questa regola: ad esempio, un controller a 8 bit potrebbe avere un bus di memoria a 12 bit, ma come si può immaginare è difficile lavorare con quando i registri contengono solo 8 bit. Tuttavia, tutti i processori hanno una larghezza del tipo di dati nativi fondamentale. Considera il seguente codice:

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

Se puoi aggiungere solo numeri a 8 bit, come eseguiresti questa operazione? Dovresti suddividere ogni variabile in 4 numeri a 8 bit, fare le aggiunte e le trasporta singolarmente, quindi unirle per ottenere il risultato. Questo richiederebbe almeno 16 istruzioni! Tuttavia, su un processore a 32 bit, è una singola istruzione semplice come mul r0, r1, r2. Come puoi vedere da questo semplice esempio, larghezze di bit del processore più grandi possono gestire più dati più velocemente.

Note storiche

La tendenza nel corso della storia è stata da larghezze di bit più piccole a quelle di dimensioni maggiori. Già nei primi anni '70, Intel ha rilasciato il 4004, il primo controller a chip singolo. Era un processore a 4 bit. Poiché i transistor erano grandi e affamati di potere, e poiché il design era rivoluzionario e complicato, questo era tutto ciò che poteva essere schiacciato sul chip. Poco dopo, hanno rilasciato l'8008, un processore a 8 bit. Esistono ancora pochi processori a 4 bit, ma ci sono molti controller a 8 bit, PIC e AVR sono esempi contemporanei ancora in uso comune. Sono stati realizzati più processori a 8 bit rispetto a qualsiasi altro tipo! Sono ancora i controller più popolari per attività di piccole dimensioni, semplici e sensibili ai costi. La successiva ovvia transizione è stata verso i controller a 16 bit, ma questi non hanno avuto la portata dei loro fratelli a 8 o 32 bit. Anziché, c'è stato un salto ai processori a 32 bit, come quelli progettati da ARM e progettati nelle CPU dei PC di alcuni anni fa. Non ci sono stati microcontrollori a 64 bit significativi di cui sono a conoscenza, anche se ora sono importanti nei PC.

8 bit contro 32 bit

Di gran lunga i tipi più popolari sono i processori a 8 e 32 bit. I processori a 32 bit stanno diventando sempre più popolari. Ogni anno, una rivista specializzata pubblica un articolo dal titolo "È morto a 8 bit?" I processori a 32 bit stanno diventando sempre più popolari, più potenti ed economici, lasciando solo tre motivi per scegliere un processore a 8 bit:

  1. Inerzia : se disponi di codice ed esperienza con un processore a 8 bit, potresti non ottenere un ROI sufficiente convertendo tutto in un'architettura a 32 bit.
  2. Bassa potenza : ogni transistor in un controller dissipa la potenza e, sebbene le dimensioni non siano più un problema, i processori a 32 bit hanno più transistor e quindi dissipano più corrente nel loro stato off. Questo è solo un problema nei progetti estremi, basati su celle a bottone.
  3. Basso costo : se sono necessarie solo una dozzina di istruzioni di assemblaggio e 2 pin IO, anche un processore a 8 bit è probabilmente eccessivo. Nella fascia bassa, i controller a 8 bit più economici sono meno di $ 0,40 in blocco, ma i processori a 32 bit più economici sono ancora $ 0,80 o giù di lì, ma sono abbondantemente più potenti delle alternative a 8 bit. Se stai cercando di costruire un giocattolo con un singolo LED lampeggiante per il prossimo milione di Happy Meals, questa è una riduzione dei prezzi convincente, altrimenti non fa davvero la differenza.

I processori a 32 bit stanno diventando sempre più onnipresenti, ma c'è poco segno che il processore a 8 bit scomparirà come i vecchi processori a 4 bit a causa di questi tre motivi.

Arduino come esempio

Prendi in considerazione un'applicazione come Arduino .

Arduino utilizza un controller Atmel, un ATmega32 a 8 bit . L'ATmega funziona a 20 MHz, ha 4k di RAM, comunicazioni SPI, I2C e UART, alcuni interrupt di processo e 8 ADC a 10 bit. Questo chip costa $ 3,90 in quantità di 100.

Un chip simile a 32 bit potrebbe essere un'altra parte Atmel, un AT-SAM3 a 32 bit che utilizza il core ARM Cortex-M3 condiviso. Questo chip funziona a 64 MHz (3 volte più veloce, ma ricorda che l'ATmega richiede 16 istruzioni per eseguire una singola aggiunta a 32 bit). Ha 16k di RAM, 4 volte di più di ATmega. Ha periferiche I²C, MMC, SPI, SSC, UART e persino USB. Ha DMA (accesso diretto alla memoria, lo rende anche più veloce ed efficiente), un set flessibile e potente di interrupt, 10 ADC a 12 bit e 2 DAC. Supera semplicemente l'ATmega in tutte le categorie. Ho provato a trovare un controller a 32 bit che avesse un set di funzioni comparabili, e questo è stato il migliore che potessi fare. Quanto costa questo chip? Sono $ 2,34 in quantità di 100: ottieni più prestazioni con meno soldi. Dovrebbe essere una decisione facile.

E il tuo esempio?

Per la tua situazione di esempio qui ,

È necessario contare il numero di auto in entrata e in uscita da un parcheggio e il numero visualizzato su uno schermo LCD. È consentito un massimo di dieci auto nel parcheggio.

hai una matematica molto semplice con piccoli numeri e un semplice display su un LCD (o davvero, un grande cartello fatto di numeri a 7 segmenti illuminati a LED sarebbe più visibile e più economico). Un controller a 8 bit è probabilmente perfettamente adeguato per questo compito. Tuttavia, quello che se davvero non vuole un LCD? Il controller a 8 bit farà fatica a pilotare anche un display VGA a bassa risoluzione, mentre puoi facilmente ottenere schede di sviluppo per controller a 32 bit con uscite HDMI. Che cosa succede se per ora vuoi visualizzarlo su uno schermo, ma successivamente vuoi collegarlo a un cavo Ethernet sulla LAN della tua attività e visualizzare i risultati sul computer del supervisore presso l'ufficio del parco? Puoi facilmente ottenere controller a 32 bit con bus di comunicazione Ethernet integrati, non puoi farlo con un controller a 8 bit.Xport , ma contiene al suo interno un processore a 32 bit.

Per progetti una tantum, consiglierei sempre un controller a 32 bit. Il tuo tempo è semplicemente più prezioso della differenza di prezzo tra controller a 8 e 32 bit.


Rispetto ai processori a 7 bit che hai citato, probabilmente non ci sono mai state e mai ci saranno macchine di questo tipo. Dal punto di vista architettonico, è più sensato utilizzare larghezze di bit che sono potenze di 2.


Sul confronto a 8 bit vs 32 bit: anche se i controller a 32 bit sono più spesso più economici (prezzo unitario) e hanno più funzioni rispetto ai controller a 8 bit, sono più costosi in termini di immobili PCB.
shimofuri,

1

Le dimensioni in bit di una CPU si riferiscono ad alcune caratteristiche che generalmente vanno insieme:

  1. La dimensione massima dell'operando su cui può operare la maggior parte del set di istruzioni
  2. La dimensione della maggior parte se i suoi registri di uso generale
  3. La dimensione del più grande bus disponibile in grado di spostare i dati tra i registri di uso generale e la memoria
  4. La dimensione del più grande bus disponibile in grado di spostare i dati tra i registri di uso generale
  5. La dimensione della ALU utilizzata per il calcolo dei dati per scopi generici

Per alcuni processori, tutte queste quantità hanno lo stesso valore. Per altri, possono avere valori diversi. Lo Z80, sebbene includa alcuni registri a 16 bit, utilizza registri a 8 bit per la maggior parte del suo set di istruzioni e richiede cicli extra per quasi tutte le istruzioni che operano su quantità a 16 bit (l'unica eccezione è EX DE, HL); è una CPU a 8 bit. Qualcosa come il 68008, tuttavia, non può essere ben descritto usando solo uno N: ha un set di istruzioni che può operare principalmente su quantità a 32 bit e può IIRC spostare i dati tra i registri a 32 bit alla volta, ma la sua ALU primaria è solo 16 bit e il suo bus di memoria è solo 8 bit. A seconda di ciò che si sta misurando, potrebbe essere considerato come una CPU a 32 bit, 16 bit o 8 bit.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.