cosa sono realmente: Microcontroller (uC), System on Chip (SoC) e Digital Signal Processor (DSP)?


9

La vera domanda è alla fine. Ma leggerlo da solo potrebbe non mostrarti perché sono confuso. Ho scritto questo post iniziando con alcune definizioni, ipotesi e speculazioni e poi ponendo la vera domanda.

Penso sempre di conoscere la differenza, ma quando ricevo una domanda del tipo: "Se metto un ricetrasmettitore con un uC, ora è un SoC?" Vado tutto confuso e non so come rispondere. Ricordo una volta che mi è stato detto che un uC è essenzialmente un SoC . Ma quale prova ho? Ma Arduino non è su un singolo chip! Posso togliere il processore Atmeg dalla "scheda" in qualsiasi momento!

Quando controllo online ricevo tutti i tipi di risposte che confermano o contraddicono ciò che ho appena detto direttamente o indirettamente. Questo mi confonde sempre e non biasimo altro che le persone di marketing che usano questi termini vagamente e talvolta in modo intercambiabile, e le persone che seguono il loro esempio.

Così ho deciso di cercare il significato fondamentale di questi tre termini: uC, SoC e DSP. Perché per esempio, quando mi confondo sulle tensioni nei circuiti, torno sempre ai fondamenti della fisica, la terra non è proprio zero, è solo un "riferimento" e le tensioni non sono "assolute", sono un "parente". Questo mi indica sempre la giusta direzione. Ma non c'è base su cui parlare quando si parla di uC. Il "micro" "controller" è un controller così piccolo da trovarsi nella scala del micro metro. Ma non abbiamo il termine nanocontrollore, vero? Quindi questo modo di pensare non sarebbe d'aiuto.

Quello a cui sto cercando di rispondere sono i seguenti:

  • uC è un'unità di elaborazione con altre periferiche e memoria con essa per uso generale, giusto?
  • Il SoC è un "sistema" completo su un "chip". Quindi, qualunque sistema tu abbia messo su un singolo chip, è un SoC, giusto?
  • DSP è un'unità di elaborazione per uso specifico, principalmente operazioni matematiche, giusto?

    Adesso

  • Significa che tutto in un uC deve essere tutto in un chip? perché se sì, allora uC è in realtà un SoC. Forse piccolo, ma lo è. Che dire di Arduino. Probabilmente uC "può" essere un SoC se si trova su un singolo chip, ma non è necessario (sto usando pesantemente arduino come esempio qui).

  • Quindi arduino è un uC, se prendo tutti i suoi componenti e li inserisco in un'altra scheda e aggiungo XBEE al mix, ad esempio. È ancora un uC, giusto? Quindi, quando diciamo che ora è un SoC? Solo quando le stesse cose vengono messe in un singolo chip anziché raccolte in una scheda?

Fino ad ora penso che le domande di cui sopra in qualche modo rispondano da sole, ma voglio solo confermare per poter andare avanti. Quando provo a pensare "fondamentalmente", il chip o la scheda "possono" essere gli stessi, sono solo i fili che collegano i diversi componenti. e a questo punto, cosa definisci un componente? È un singolo transistor o un circuito come un ADC? Ma non voglio andarci.

La prossima domanda è di cosa tratta veramente questo post:

  • Un uC è essenzialmente un SoC? Un caso speciale di un SoC che ha come requisito che l'intero sistema è per uso generale.
  • uC è uno scopo generale (secondo Internet) e DSP è principalmente quello di elaborare matematicamente i segnali raccolti dal mondo reale. Ma DSP è ancora un "processore" e un uC contiene un "processore". Posso semplicemente mettere un DSP con un gruppo o periferiche (diciamo ADC e DAC dal momento che questi sono solitamente usati con esso) e chiamare il mix un uC? o è un SoC (dal momento che il mix non è di uso generale e quindi non possiamo chiamarlo uC ma è ancora un SoC)

Non importa come lo chiami, "una rosa con qualsiasi altro nome avrebbe un profumo così dolce!" SoC è un termine di vendita, "altre persone ti vendono le parti, ma noi vendiamo l'intero sistema" è ciò che implica. uC generalmente è come una memoria uP + e spesso ADC. Un DSP è ottimizzato per, lo crederesti, DSP e invariabilmente ha un moltiplicatore hardware, ma spesso in questi giorni, memoria di programma e talvolta ADC / DAC, quasi un SoC. Ma in larga misura, la maggior parte di quelli potrebbero essere descritti come gli altri. Non sudare, certamente non colpire le persone su di esso.
Neil_UK,

2
So che è ampiamente inteso l'uso di te e non c'è nessun vero problema nell'usarlo, ma dovresti mai voler creare un µ, premendo AltGr + Mo ⌘ + Mdovresti fare il trucco.
Magic Smoke,

1
"micro" è il bagaglio storico; Il controller "micro" proviene dal computer "micro", che si distingue dai "mini" computer di dimensioni frigo e dai "" computer che occupavano intere stanze.
user253751

Risposte:


11

uC = un chip di elaborazione autonomo: CPU, RAM, ROM, alcune periferiche.

DSP = chip del processore (può essere una CPU separata, oggigiorno principalmente un uC) ottimizzato per l'elaborazione del segnale. Spesso ha un MAC veloce (moltiplicare-accumulare), saturare la matematica e più interfacce di memoria. Per ottenere il massimo da esso, è spesso necessario essere profondamente consapevoli delle sue peculiarità, ad esempio quale tipo di accesso alla memoria può essere fatto contemporaneamente. (Quindi spesso usato con librerie di assemblaggio messe a punto fornite dal produttore.) Spesso non è previsto l'uso di memorie di grandi dimensioni (il bus di indirizzo a 16 bit è spesso sufficiente).

SOC = chip del processore (principalmente una CPU, forse con un po 'di RAM per la memorizzazione nella cache) che incorpora periferiche che prima erano al di fuori del chip del processore principale. Questo è per definizione un obiettivo mobile: le funzioni nei SOC specializzati odierni si trovano nei chip mainstream di domani. I SOC attuali sono principalmente pensati per l'esecuzione di un sistema operativo di livello Linux e contengono la maggior parte delle cose di cui avresti bisogno su un tale sistema, ad eccezione della RAM e della ROM (anche se alcune ROM sono spesso incluse, spesso per leggere un FLASH esterno).

Esempi di periferiche che sono comuni nei SOC di oggi (ma si stanno facendo strada negli Stati Uniti!): Porte Ethernet, struttura di commutazione Ethernet, USB incl. host e OTG, motore / i grafico / i, decodifica mpeg, motore crittografico, interfacce RAM e FLASH.

Un Arduino è un prodotto a livello di scheda, quindi per definizione non è un uC, un DSP o un SOC, sebbene possa contenerne uno. Uno di base contiene un uC.

Un uC non è un SOC (anche se potrebbero esserci casi limite): un uC è autonomo e (al livello attuale della tecnologia) non intende eseguire sistemi operativi a livello Linux. Un SOC non è autonomo (necessita di RAM e ROM).

I confini non sono al 100% di coscia e si stanno spostando nel tempo. Le interfacce De CPU e di memoria della maggior parte delle CPU attuali superano facilmente i DSP di ieri, anche sul loro territorio. Ma i DSP di oggi sono più veloci e / o meno costosi o meno affamati di energia rispetto alle CPU più generiche quando eseguono l'elaborazione del segnale. È una corsa tra i produttori per realizzare il chip più attraente utilizzando lo stato più recente della tecnologia e della domanda. Al momento questo ha portato ai 3 punti critici di cui sopra (oltre a microprocessori per uso generico), ma questo cambierà nel tempo (i DSP sono meno popolari di 10 anni fa, IMO perché il throughput a livello audio è ora facilmente raggiungibile da un CPU per uso generico).

Un tipo specifico di chip che sta diventando più comune in questi giorni è l'UC (o SOC) con qualche interfaccia wireless. Controllare ESP8266 ed ESP32 per esempi WiFi e RN2483 per LoraWan.


2

uC e DSP hanno una definizione piuttosto semplice.

Un uC è un core di elaborazione che ha la memoria (volatile e non volatile) integrata internamente. Questo rispetto a un microprocessore che avrà generalmente una memoria volatile all'interno ma non non volatile.

Un DSP è un tiro fuori di un uC. I DSP hanno generalmente ottime capacità di campionamento analogico rispetto a un tipico uC. I DSP hanno anche migliori capacità matematiche di uC e sono dotati di molte librerie come FFT o autocorrelazione per utilizzare tali capacità matematiche.

SoC è più un termine segreta di marketing. SoC è un termine che cercano di usare quando un uC ha inserito funzionalità sufficienti per realizzare una soluzione a chip singolo o quasi singolo. Il termine SoC tende a essere trovato quando l'uC ha integrato l'elaborazione grafica e i driver grafici a bordo. Pensa ai chip ARM nei telefoni cellulari. Incorporano la grafica.


Quindi stai dicendo che un DSP contiene anche un ADC per esempio?
himura,

@himura uC ha ADC ma i DSP hanno ADC davvero buoni. Ad esempio Arduino è in grado di eseguire una frequenza di campionamento fino a circa 10kHz a 10 bit. Il dsPIC33, che è un DSP, è in grado di eseguire una frequenza di campionamento di 1,1 MHz a 10 bit. Sono due ordini di grandezza più veloci.
vini_i

Pensavo che DSP fosse solo l'unità di elaborazione senza alcuna capacità ADC. Ma sembra più un sistema completo ora. Grazie
himura,

1
Penso che questa risposta sia sbagliata. Esistono molti chip DSP che non hanno convertitori. La principale differenza tra un DSP e una CPU per uso generico è l'architettura della memoria. I DSP hanno più memorie a cui è possibile accedere in parallelo. Vedi en.wikipedia.org/wiki/Harvard_architecture
Hilmar

@Hilmar puoi fornire alcuni riferimenti ai DSP senza convertitori? Mi piace questo punto
himura,

0

Quello che chiamiamo SOC generalmente ha un core di processore molto più potente di uC. Di solito puoi trovare il core ARM lì. Quasi tutti i "grandi" processori ARM, come la serie Cortex A, prodotti oggi sono in realtà SOC. Per eseguire un sistema operativo di grandi dimensioni come Linux è necessaria molta RAM, quindi i SOC hanno un controller RAM esterno che supporta i moderni chip SDRAM. Piccola quantità di RAM statica integrata utilizzata solo in fase di avvio per eseguire il boot loader e inizializzare le periferiche e il controller SDRAM.

Gli uC di solito sono soluzioni complete all-in-one con RAM statica integrata (quantità piuttosto ridotta). La piccola RAM e la mancanza di MMU impediscono l'utilizzo di grandi sistemi operativi su di essi. Oggi la maggior parte degli uC ha core a 8 o 32 bit. 16 bit US utilizzati solo nelle applicazioni legacy. L'era del 32 bit uSc è iniziata con i core della serie ARM M. Questi core sono progettati appositamente per gli uC e hanno poco in comune con i grandi ARM tranne le istruzioni set (ARM M utilizza istruzioni THUMB, un sottoinsieme di istruzioni ARM).

Il termine DSP riguarda l'architettura di base. I DSP hanno più di un ALU e hanno i cosiddetti set di istruzioni VLIW (parole di istruzioni molto lunghe). L'istruzione VLIW è composta da una serie di istruzioni secondarie (circa 4) destinate a diversi sottosistemi CPU. Ad esempio un'istruzione così lunga può contenere un'istruzione per precaricare i dati dalla memoria, un'istruzione di moltiplicazione ad ALU moltiplicatore specializzato e un'istruzione aritmetica ad ALU per uso generale.

È possibile utilizzare DSP come scopo generale, ma lo scopo principale è l'elaborazione dei dati digitali (non solo segnali, ma anche video). I filtri digitali e gli algoritmi di compressione / decompressione dei media beneficiano dell'architettura DSP parallelizzata.

I moderni core della CPU di solito hanno una sorta di "estensioni DSP" sotto forma di istruzioni vettoriali (è possibile eseguire la stessa operazione aritmetica su un numero di, circa 8, operatori). È qualcosa di diverso rispetto alle istruzioni VLIW dei DSP.


"Quasi tutti i processori ARM prodotti oggi sono in realtà SOC" davvero? consideri i chip Cortex-M0 come i SOC LPC810 ??
Wouter van Ooijen,

Ho citato separatamente le serie Cortex M mentre parlavo di UC. Cortex M sono ovviamente gli Stati Uniti.
e_asphyx,
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.