Microcontrollori e DSP - definizioni e scelta del dispositivo
In questa pagina 5
Il corso di Elettronica Industriale studia come è fatto e come si usa il processore che sta dentro un'apparecchiatura industriale: un azionamento per motori, un alimentatore a commutazione, un termostato, una centralina d'auto. Questa nota fissa le definizioni di partenza e i criteri con cui si sceglie il dispositivo.
Microcontrollore (µC)
Un microcontrollore è un microprocessoreCPU, cioè l'unità che esegue le istruzioni di un programma ottimizzato per compiti di controllo, temporizzazione e supervisione di apparati (si dice embedded controlcontrollo incorporato: il processore è nascosto dentro il prodotto e l'utente non lo vede come un computer). La caratteristica che lo distingue da un processore per PC è la disponibilità on chip, cioè sullo stesso pezzo di silicio, di:
- memoria (ROM, EEPROM, FLASH per il programma, SRAM per i dati);
- periferiche: convertitori A/D (spesso anche D/A), timercontatore binario che misura intervalli di tempo e genera eventi, vedi la nota sui timer, modulatori PWMPulse Width Modulation, modulazione a larghezza di impulso, porte di comunicazione seriali (UART, I2C, SPI, CAN), interfacce per encoder e display, unità di gestione dell'alimentazione.
Di norma ha complessità ridotta, configurazione semplice e basso costo. Esistono µC da 4 a 32 bit (lunghezza della parola di dati e dell'ALU); il mercato oggi privilegia i 32 bit (circa 50%), seguiti da 8 e 16 bit (circa 25% ciascuno). Gli impieghi tipici sono gli elettrodomestici, i telefoni e le periferiche dei PC, gli strumenti portatili e, soprattutto in ambito industriale, il settore automotive (centraline) e gli azionamenti elettrici.
Digital Signal Processor (DSP)
Un DSP è un microprocessore ottimizzato per eseguire in modo efficiente funzioni di elaborazione numerica del segnale in tempo reale (real-timetempo reale: il risultato deve essere pronto entro una scadenza fissata, per esempio entro il prossimo campione): filtri, trasformate, codifica e compressione di audio e video, criptazione, sintesi del suono. È caratterizzato da elevata potenza di calcolo, costo relativamente basso rispetto ai processori per uso generico e attenzione al consumo. Elementi comuni a molte famiglie:
- un moltiplicatore hardware nella CPU e l'istruzione MACMultiply and ACcumulate: moltiplica due operandi e somma il prodotto a un accumulatore in un solo ciclo, è l'operazione base dei filtri;
- accessi multipli alla memoria in un solo ciclo di clock (organizzazione Harvard, vedi Organizzazione del processore - Von Neumann, Harvard, bus, ALU e registriOgni processore ha ALU, memoria e dispositivi di I/O. Nell'organizzazione Von Neumann dati e istruzioni stanno nella stessa memoria e viaggiano su un solo sistema di bus (semplice ed economica, usata nei µC più semplici); nell'organizzazione Harvard memorie e bus sono separati (più accessi per ciclo: tipica di DSP e µC veloci). I bus sono pilotati da porte tri-state; l'ALU lavora su registri (accumulatore o molti registri); il controllo è cablato o microprogrammato; la gerarchia di memoria va dai registri alla RAM interna e a quella esterna.Organizzazione del processore - Von Neumann, Harvard, bus, ALU e registri →);
- modi di indirizzamento specifici per registri circolari e per l'ordinamento a bit rovesciati (Architettura del repertorio di istruzioni - RISC, CISC, VLIW e indirizzamentoL'architettura è l'insieme delle risorse visibili al programmatore (istruzioni, modi di indirizzamento). RISC: poche istruzioni semplici, di uguale lunghezza, decodifica cablata, quasi tutte a 1 ciclo; CISC: molte istruzioni complesse, decodifica microprogrammata, più cicli. I DSP sono RISC "potenziati" (MAC, saturazione, barrel shifter, arrotondamento, VLIW, SIMD); i modi di indirizzamento tipici sono immediato, a registro, diretto, indiretto, con auto-incremento, circolare e a bit rovesciati (per la FFT).Architettura del repertorio di istruzioni - RISC, CISC, VLIW e indirizzamento →);
- il DMADirect Memory Access: un circuito che sposta dati tra periferiche e memoria senza impegnare la CPU per gestire le periferiche (Sottosistema di I-O - polling, interruzioni e DMALe periferiche si collegano al bus con una interfaccia che ha registri di dati (DREG), controllo (CREG) e stato (SREG); nei µC e DSP sono mappati in memoria (si leggono e scrivono come locazioni). Poiché le periferiche sono asincrone e lente, la sincronizzazione avviene per polling (inefficiente), per interruzioni (la più usata) o per DMA (costoso, per grandi quantità di dati). Una interruzione: completa l'istruzione, salva il contesto (PC e registro di stato, spesso altro), esegue la ISR, ripristina. Le sorgenti si distinguono con ISR di stato, interruzioni vettorizzate o daisy-chaincollegamento delle periferiche in catena, in cui il segnale di riconoscimento passa dall'una all'altra; le NMI non sono mascherabili.Sottosistema di I-O - polling, interruzioni e DMA →).
Differenze storiche e convergenza
Tradizionalmente il µC faceva il controllo grazie alle periferiche, ma con CPU a 8 bit senza moltiplicatore hardware e poca potenza di calcolo; il DSP faceva solo signal processing, dove la potenza di calcolo è il parametro chiave. Oggi la distinzione è sfumata: i DSP più recenti integrano periferiche da µC, e alcuni µC (per esempio quelli con core ARM Cortex-M4) hanno un'organizzazione e una potenza prossime a quelle di un DSP. Per i processori orientati al controllo in tempo reale si usa il nome Digital Signal Controller (DSC).
Per le applicazioni di controllo industriale i µC/DSC si preferiscono ai processori per PC perché includono le periferiche per interfacciare azionamenti, convertitori di potenza e interfacce uomo-macchina, costano meno, dissipano meno e sono assai meno sensibili ai disturbi elettromagnetici dell'ambiente industriale. Interfacciare un processore "da PC" con un processo industriale è invece costoso; farlo fare signal processing penalizza le prestazioni.
Come si sceglie il dispositivo
Il mercato offre moltissimi chip, quindi scegliere non è banale. L'obiettivo di un progetto è ottenere le funzioni richieste al minimo costo complessivo, e questo non dipende solo dal prezzo del chip:
- il costo dei dispositivi dipende molto dal volume di produzione, perché i costi fissi di progetto si ripartiscono su più pezzi;
- il tempo e le risorse di sviluppo (time to markettempo che passa dall'inizio del progetto alla vendita del prodotto) dipendono dalla qualità dell'ambiente di sviluppo integrato (IDEIntegrated Development Environment: editor, compilatore e debugger in un unico programma), dal supporto del costruttore (librerie, driver) e dalla disponibilità di esempi.
L'applicazione fissa poi il livello di prestazioni richiesto in termini di periferiche (per esempio un ADC a 8, 10 o 12 bit), di condizioni di funzionamento (consumo massimo, temperatura) e di potenza di calcolo (controllo real time, signal processing). Come si misura la potenza di calcolo, e perché indici come i MIPS ingannano, è nella nota Misura delle prestazioni - tempo di calcolo e indici MIPSLe prestazioni di un processore si misurano col tempo di calcolo di un programma: $T_{cal}=T_{clk}\sum_{i}N_i,NC_i$ (periodo di clock per numero di istruzioni di classe $i$ per cicli medi della classe). Aumentare la velocità vuol dire ridurre $T_{clk}$, i cicli per istruzione (organizzazione) o il numero di istruzioni (architettura). Gli indici MIPS, DMIPS, FLOPS misurano solo un picco e non permettono di confrontare famiglie diverse: si usa il benchmarking (kernel benchmarking per i DSP).Misura delle prestazioni - tempo di calcolo e indici MIPS →.
Errori comuni
- Pensare che "più bit" significhi "più accurato": la lunghezza di parola non è l'accuratezza dei calcoli (un processore a 4 bit può calcolare con la stessa accuratezza di uno a 128, solo più lentamente: Numeri binari e complemento a dueI processori lavorano con un numero fisso di bit $n$. I naturali vanno da $0$ a $2^n-1$; per i negativi si usa il complemento a due: $C_2(N)=2^n-N=\overline N+1$ (si invertono tutti i bit e si somma 1). Con $n$ bit rappresenta $-2^{n-1}\le N\le2^{n-1}-1$, ha un solo zero e unifica somma e sottrazione. Quando il risultato esce dall'intervallo c'è overflow; gli overflow intermedi si compensano se il risultato finale è rappresentabile. La lunghezza di parola non è l'accuratezza.Numeri binari e complemento a due →).
- Confondere DSP e µC come due mondi separati: oggi un DSC fa entrambe le cose.
- Scegliere il chip dalla sola frequenza di clock, trascurando periferiche, strumenti di sviluppo e consumo.
Versione ripasso
- µC: processore + memoria + periferiche (ADC, timer, PWM, UART, I2C, CAN) sullo stesso chip; 4-32 bit, oggi prevalgono i 32 bit; basso costo, controllo embedded (Organizzazione del processore - Von Neumann, Harvard, bus, ALU e registriOgni processore ha ALU, memoria e dispositivi di I/O. Nell'organizzazione Von Neumann dati e istruzioni stanno nella stessa memoria e viaggiano su un solo sistema di bus (semplice ed economica, usata nei µC più semplici); nell'organizzazione Harvard memorie e bus sono separati (più accessi per ciclo: tipica di DSP e µC veloci). I bus sono pilotati da porte tri-state; l'ALU lavora su registri (accumulatore o molti registri); il controllo è cablato o microprogrammato; la gerarchia di memoria va dai registri alla RAM interna e a quella esterna.Organizzazione del processore - Von Neumann, Harvard, bus, ALU e registri →).
- DSP: ottimizzato per il signal processing real-time: moltiplicatore hardware e MAC, più accessi alla memoria per ciclo, indirizzamento circolare e a bit rovesciati, DMA.
- DSC: nome dei processori orientati al controllo real time: µC e DSP convergono.
- Scelta: costo complessivo (volume, time to market, IDE, supporto), periferiche necessarie, condizioni di funzionamento, potenza di calcolo (Misura delle prestazioni - tempo di calcolo e indici MIPSLe prestazioni di un processore si misurano col tempo di calcolo di un programma: $T_{cal}=T_{clk}\sum_{i}N_i,NC_i$ (periodo di clock per numero di istruzioni di classe $i$ per cicli medi della classe). Aumentare la velocità vuol dire ridurre $T_{clk}$, i cicli per istruzione (organizzazione) o il numero di istruzioni (architettura). Gli indici MIPS, DMIPS, FLOPS misurano solo un picco e non permettono di confrontare famiglie diverse: si usa il benchmarking (kernel benchmarking per i DSP).Misura delle prestazioni - tempo di calcolo e indici MIPS →).
- Errori: bit = accuratezza; µC e DSP separati; scegliere dal solo clock.