Panoramica della progettazione di schede a microcontrollore

Arduino, con una semplice idea, ha rivoluzionato il mondo hobbistico e makers dell’elettronica e dei gadget tecnologici rendendo di fatto accessibile e alla portata di tutti una scheda ricca di funzionalità e pronta all’uso. Tuttavia, la progettazione delle schede elettroniche a microcontrollore non è affatto una cosa semplice. Pensiamo ora se dovessimo progettare noi una nuova Arduino, cosa ci serve realmente per il nostro progetto? Quale tipo di microcontrollore, quali periferiche, quale sorgente di clock? Quale alimentazione scegliere? Sono tantissime le domande e i dubbi a cui dare una risposta per realizzare una scheda embedded.

Idee chiare

Progettare da zero una scheda elettronica embedded basata su microcontrollore non è un’attività che si può improvvisare ma deve essere concepita accuratamente per assicurarsi che la scheda fornisca una risposta corretta a tutte le esigenze del progetto. Una fase preliminare di "concept design", con la rappresentazione a blocchi di tutti gli elementi necessari al progetto è doverosa per mantenere sotto controllo ogni aspetto e ragionare puntualmente su ogni soluzione da adottare. Ciò deve avvenire prima di progettare lo schema della scheda e realizzarla (ad esempio una base può essere quella riportata in Figura 1 a cui andare successivamente ad aggiungere dettaglio). Dalla fase di concept design si ottiene una panoramica capace di supportare il progettista nella selezione dei componenti più delicati del progetto, tra cui il microcontrollore. Questo è l’elemento principale della scheda in quanto è il cuore pulsante della stessa. Tuttavia, anche gli altri elementi dell’architettura devono essere considerati nella loro interezza, soprattutto per definire quali protocolli utilizzare a bordo scheda (che influenzano dunque anche la scelta del micro) e definire le alimentazioni necessarie.

Figura 1: Schema a blocchi di massima per una scheda embedded

Fattore di forma

Nella scelta del giusto microcontrollore per il nostro progetto ricopre un ruolo fondamentale anche il package del componente stesso. Infatti, per molte famiglie di microcontrollori troveremo sicuramente disponibili diversi packaging del componente che possono essere funzione sia del numero di pin che delle capacità di dissipazione del componente. Infatti, al crescere del numero di pin del componente passiamo da footprint di tipo SSOP o TSSOP a footprint di tipo QFN (con i contatti metallici che non escono più oltre il package plastico del componente) fino a componenti di tipo BGA dove i pin escono attraverso le balls direttamente sotto al componente (alcuni esempi sono riportati in Figura 2). Particolare attenzione richiedono i package QFN che hanno avuto grande successo e diffusione per la presenza di un’enorme pad termica, detta “exposed pad”. Da questa analisi ho volutamente escluso le soluzioni a montaggio PTH (tradizionale) che ormai sono state largamente superate dal montaggio superficiale SMD per esigenze non solo di “integrazione” di un elevato numero di pin ma anche per esigenze di automazione dell’assemblaggio delle schede elettroniche attraverso macchinari di pick&place. Ricordiamo ad esempio le prime board Arduino dove c’era un ATMEGA a montaggio PTH.

Figura 2: Confronto tra diversi package (QFN, QFP e BGA)

L’architettura del microcontrollore

Decidere quale architettura di microcontrollore utilizzare può essere un passaggio fondamentale per quei progetti dove vogliamo ottenere il massimo dalla CPU. La stragrande maggioranza, se non completa totalità, di produttori di microcontrollori oggi fornisce innumerevoli soluzioni con architetture ARM single core, dual core e via dicendo. Prima dell’avvento delle architetture ARM i produttori invece realizzavano architetture di microcontrollori proprietarie. Andiamo a vedere quali erano le principali differenze tra queste architetture. Prima di tutto, in queste architetture possiamo trovare una differenza sostanziale tra 8, 16 e 32 bit. Oggigiorno, quasi tutti i microcontrollori disponibili in commercio sono 32 bit in quanto la differenza in termini di costo delle versioni a 16 e 8 bit ormai si è ridotta al minimo. Prima ciò non era vero, ed era fondamentale selezionare un oggetto che garantisse le giuste prestazioni al progetto senza essere troppo costoso. I bit che indichiamo (8, 16 e 32) sono la dimensione del bus di dati che inizialmente era di 8, poi incrementato a 16 e ora giunto fino a 32. Esistono anche altre architetture più performanti con bus di dati a 64 bit e oltre, ma in genere non le troviamo per applicazioni a microcontrollori ad uso consumer. Qualche anno fa, comparare le MCU in funzione della dimensione del bus di dati ci portava ad un trade-off tra velocità di trasferimento ed elaborazione dei dati e consumo energetico.

Al crescere dei bit cresceva la velocità di trasferimento di un dato verso la ALU ma cresceva anche il consumo energetico. Dalla lunghezza del bus di dati dipende fortemente l’architettura e la dimensione dell’unità di elaborazione, ossia la ALU (Arithmetic Logic Unit). Un altro aspetto fondamentale, come già accennato, è l’architettura del micro. Esistono principalmente due tipologie: RISC (Reduced Instruction Set Computer) e CISC (Complex Instruction Set Computer). Queste tipologie differenziano la struttura del set di istruzioni utilizzate dall’unità centrale del microcontrollore, ossia le operazioni assembly che la ALU è capace di svolgere. Le architetture di tipo RISC presentano un numero di istruzioni ridotto ma semplice ed ottimizzato in modo tale da ottimizzare la velocità di esecuzione. Invece, nella seconda tipologia, il set di istruzioni risulta essere più esteso e complesso, in quanto sono previste anche istruzioni a lunghezza variabile. Questo comporta necessariamente l’esecuzione di un’istruzione in più cicli di clock e dunque risulta essere più lento rispetto ad un’architettura di tipo RISC. Le architetture moderne di fatto sono diventate un ibrido tra queste due tipologie in quanto le istruzioni RISC sono comunque aumentate rispetto a quelle disponibili qualche anno fa, mentre le istruzioni CISC si sono evolute e sono state ottimizzate per raggiungere prestazioni simili alle RISC. Di fatto, oggigiorno non troviamo grossa differenza tra l’utilizzo di un’architettura o un’altra poiché l’utilizzo delle istruzioni base ormai viene demandato al compilatore e l’hardware del microcontrollore offre prestazioni elevate.

[...]

ATTENZIONE: quello che hai appena letto è solo un estratto, l'Articolo Tecnico completo è composto da ben 2141 parole ed è riservato agli ABBONATI. Con l'Abbonamento avrai anche accesso a tutti gli altri Articoli Tecnici che potrai leggere in formato PDF per un anno. ABBONATI ORA, è semplice e sicuro.

Scarica subito una copia gratis

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend