Sfruttare il primo MCU basato su Arm® Cortex®-M33 - Parte 1: Gestione di potenza e prestazioni

Di Stephen Evanczuk

Contributo di Editori nordamericani di DigiKey

Nota del redattore: La Parte 1 di questo articolo illustra come gli sviluppatori possono soddisfare un'ampia gamma di requisiti in materia di prestazioni e basso consumo utilizzando un'unica famiglia di microcontroller per uso generale. La Parte 2 si occupa di come le estese funzionalità di sicurezza integrate nei microcontroller LPC55S6x di NXP Semiconductors supportino la sicurezza del ciclo di vita dal provisioning e dalla messa in servizio fino alle comunicazioni, all'avvio e agli aggiornamenti sicuri del firmware.

Gli sviluppatori sono continuamente alle prese con il difficile compito di bilanciare richieste spesso contrastanti di applicazioni con prestazioni più elevate ma meno energivore per un'ampia gamma di funzioni e applicazioni. Queste applicazioni includono Internet delle cose (IoT), automazione industriale, sistemi medicali e dispositivi consumer. L'esigenza in rapida crescita di maggiore sicurezza in tali applicazioni accresce le difficoltà degli sviluppatori di trovare una sola famiglia di microcontroller in grado di soddisfare una serie ampia, diversificata e crescente di requisiti di progettazione contrastanti.

Per risolvere questi problemi, NXP Semiconductors ha introdotto la famiglia di microcontroller LPC55S6x. Questi dispositivi vengono in soccorso degli sviluppatori grazie alla combinazione di un potente core per uso generale con hardware specializzato e motori di elaborazione altamente efficienti.

Identificare e soddisfare requisiti diversi

I prodotti connessi si sono evoluti rapidamente rispetto agli esordi, quando erano dei sistemi relativamente semplici i cui requisiti di progettazione più impegnativi ruotavano tipicamente attorno ad alcuni aspetti delle comunicazioni. Ora i progettisti devono confrontarsi con un ambiente decisamente più arduo che consente pochi compromessi in una serie crescente di requisiti che interessano tutti i campi di applicazione. Agli sviluppatori è richiesto di privilegiare gli aspetti che servono per affrontare le sfide specifiche di ciascuna applicazione. Esiste tuttavia un denominatore comune tra la maggior parte delle aree delle applicazioni mainstream: la richiesta di prestazioni più elevate e di un minore consumo energetico.

Le fabbriche intelligenti, ad esempio, non solo dipendono dai dispositivi a bassa latenza e ad alte prestazioni necessari per l'elaborazione dei segnali, ma richiedono anche un consumo energetico ridotto perché la tendenza degli ingegneri è quella di stipare sempre più dispositivi in spazi angusti. I dispositivi indossabili consumer, oltre a richiedere progetti a più basso consumo per assicurare una durata estesa della batteria, devono affrontare anche le crescenti richieste di capacità di elaborazione dei segnali per gestire carichi di lavoro più complessi. In ogni segmento di applicazione, i progettisti sono sottoposti a crescenti pressioni per rispondere in modo più efficace alle preoccupazioni reali sulla vulnerabilità di questi dispositivi, delle loro reti e delle risorse aziendali a un attacco immediato o a minacce persistenti avanzate da singoli pirati informatici, organizzazioni criminali o persino gruppi sponsorizzati dagli stati.

Per soddisfare tutte queste esigenze, gli sviluppatori in genere sono dovuti scendere a compromessi su alcuni aspetti dei loro progetti. Potrebbero sacrificare le prestazioni dell'applicazione per ridurre il consumo energetico utilizzando un processore meno performante, abbassando la frequenza di clock oppure il ciclo di lavoro del processore in favore di stati a basso consumo. Per soddisfare requisiti prestazionali severi, potrebbero adottare l'approccio opposto: processori più potenti, velocità di clock più elevate e un ciclo di lavoro maggiore al costo di un consumo energetico molto più alto. Per applicazioni più complesse dal punto di vista computazionale, potrebbero aggiungere un processore di segnali digitali (DSP) dedicato per accelerare l'esecuzione dell'algoritmo, ma questo aumenterebbe la complessità di progettazione, i costi e il consumo energetico del sistema. Anche se arrivassero a un equilibrio accettabile fra consumi e prestazioni, in genere per soddisfare i requisiti di sicurezza dovrebbero accettare un aumento della complessità e dei costi di progettazione.

Mentre i progettisti si scontrano con requisiti crescenti, gli utenti chiedono invece sempre meno compromessi, o addirittura nessun compromesso, per applicazioni critiche come attrezzature medicali, sistemi di automazione industriale, dispositivi di pagamento al dettaglio e altre ancora. La famiglia di microcontroller LPC55S6x di NXP Semiconductors aiuta i progettisti a evitare i compromessi con un'architettura che combina la flessibilità di un processore per uso generale con funzionalità specializzate per l'elaborazione e la sicurezza richieste nelle applicazioni emergenti.

Ampia capacità con core di elaborazione dedicati

I microcontroller single core LPC55S66 e dual core LPC55S69 di NXP Semiconductors sono i primi MCU per uso generale basati su Arm® Cortex®-M33. Sfruttano la bassa latenza e le prestazioni deterministiche insite nell'architettura della serie Arm M. Tra i vari miglioramenti architettonici, i dispositivi LPC55S6x di NXP includono l'acceleratore DSP PowerQuad ad alte prestazioni, anch'esso di NXP, il motore di crittografia CASPER (Cryptographic Accelerator and Signaling Processing Engine with RAM) e un sottosistema di sicurezza completo. Oltre a 640 kB di flash, fino a 320 kB di SRAM e 128 kB di ROM, i dispositivi LPC55S6x integrano un ampio set di elementi funzionali richiesti abitualmente in qualsiasi progetto di sistema profondamente embedded (Figura 1).

Schema dell'architettura del microcontroller LPC55S6x di NXPFigura 1: L'architettura del microcontroller LPC55S6x estende le capacità di elaborazione per uso generale del core Arm Cortex-M33 con blocchi hardware specializzati per l'elaborazione dei segnali, la crittografia, lo storage sicuro e la gestione delle chiavi, fornendo al contempo un set completo delle periferiche usate nei tipici progetti embedded. (Immagine per gentile concessione di NXP Semiconductors)

Degli elementi inclusi nei dispositivi LPC55S6x fanno parte un sottosistema timer completo, diverse interfacce seriali, controller di accesso diretto alla memoria (DMA) e fino a 64 pin di I/O per uso generale (GPIO). Oltre a questi sottosistemi digitali, i dispositivi LPC55S6x integrano un convertitore analogico/digitale (ADC) con registro ad approssimazioni successive (SAR) a 16 bit multicanale, un comparatore analogico e un sensore di temperatura. In più, un'unità logica programmabile (PLU) su chip consente agli sviluppatori di creare una logica combinatoria o sequenziale personalizzata, incluse macchine a stati, dalla sua matrice di 26 elementi della tabella di ricerca (LUT) a cinque ingressi. Gli sviluppatori possono accedere ai registri della PLU per programmare direttamente la PLU per piccole reti logiche o utilizzare gli strumenti di NXP per implementare una rete più ampia descritta nel Register-Transfer Language (RTL) di Verilog.

Per evitare colli di bottiglia nell'accesso ai loro diversi sottosistemi, i dispositivi LPC55S6x includono una matrice bus multistrato costruita con l'architettura Advanced Microcontroller Bus Architecture (AMBA) e con il bus di comunicazione Advanced High-performance Bus (AHB) di Arm. Il bus AHB per la comunicazione fornisce una connessione diretta tra i bus master e le periferiche o la memoria. Questo approccio consente ai trasferimenti DMA, ad esempio, di procedere alla massima velocità senza compromettere le prestazioni di accesso del processore alla memoria. Di fatto, la capacità di massimizzare l'efficienza del processore tra i diversi requisiti di progettazione è alla base dell'architettura di LPC55S6x.

Nell'architettura di LPC55S6x, il core Cortex-M33 offre numerose funzionalità studiate per aiutare i progettisti a soddisfare più facilmente i vari requisiti del progetto. Come per altri dispositivi della sua classe, il processore LPC55S6x supporta diverse modalità a basso consumo. Durante i periodi prolungati di inattività, il dispositivo può essere messo in modalità di spegnimento che consente di mantenere tutta la SRAM con un consumo di soli 15,4 μA. In alternativa, può essere attivata la modalità di spegnimento profondo che mantiene l'alimentazione a una slice di 4 kB della SRAM consumando circa 0,59 μA. Le modalità di sospensione e di sospensione profonda spengono il processore mantenendo però diversi livelli di funzionamento per le periferiche e la memoria: la modalità di sospensione assicura il funzionamento completo consumando circa 2,7 mA, mentre la modalità di sospensione profonda applica il clock gating alle periferiche per ridurre il consumo energetico a circa 110 μA.

Capacità potenziate

Oltre alle modalità a basso consumo, l'architettura di LPC55S6x estende il supporto per diversi requisiti di progettazione con funzionalità integrate per migliorare prestazioni e sicurezza. Integrate nel core Cortex-M33 primario, queste funzionalità comprendono estensioni della sicurezza Arm TrustZone (SECEXT), unità di protezione di memoria (MPU), unità a virgola mobile (FPU) standard IEEE 754 ed Embedded Trace Macrocell (ETM). Inoltre, il core principale include il motore di crittografia CASPER e l'acceleratore PowerQuad per operazioni DSP e SIMD (istruzione singola, dati multipli).

Nota: queste funzionalità aggiuntive non sono incluse nel secondo core Cortex-M33 fornito nel microcontroller LPC55S69 dual-core.

Ognuno di questi sottosistemi e ognuna di queste caratteristiche architettoniche integrate offre un'ampia gamma di funzionalità con descrizioni dettagliate che vanno ben oltre le finalità di questo articolo. Ad esempio, l'acceleratore DSP PowerQuad è un sofisticato coprocessore a sé stante, in grado di calcolare in modo indipendente le funzioni di elaborazione dei segnali e di accedere alla memoria come bus master.

Internamente, l'acceleratore PowerQuad combina diversi registri e interfacce con una serie di motori hardware per funzioni chiave di elaborazione dei segnali, tra cui la trasformata di Fourier veloce (FFT), la trasformata discreta del coseno (DCT), la risposta impulsiva infinita (IIR), la risposta impulsiva finita (FIR) e l'algoritmo CORDIC (COordinate Rotation DIgital Computer) utilizzato per calcolare in modo efficiente le funzioni trigonometriche (Figura 2).

Schema della famiglia di microcontroller LPC55S6x di NXP SemiconductorsFigura 2: La famiglia di microcontroller LPC55S6x di NXP Semiconductors integra il coprocessore PowerQuad della società, che si avvale di motori specializzati per accelerare l'esecuzione degli algoritmi generalmente richiesti nelle applicazioni di elaborazione dei segnali. (Immagine per gentile concessione di NXP Semiconductors)

Utilizzando l'acceleratore PowerQuad, gli sviluppatori possono eseguire operazioni complesse di elaborazione dei segnali senza compromettere la capacità del processore host di rispondere agli eventi in tempo reale o di completare una lunga serie di operazioni. Il processore host imposta semplicemente i registri PowerQuad con la funzione di elaborazione dei segnali richiesta e specifica gli indirizzi di memoria per le regioni di origine, destinazione e memoria di lavoro. Una volta richiamato, l'acceleratore PowerQuad si comporta come un vero coprocessore, utilizzando la matrice AHB per eseguire trasferimenti di memoria a 128 bit nel suo ruolo di bus master. Nel frattempo, il processore host può tornare subito alle sue attività di elaborazione principali, interrogando periodicamente un bit occupato di PowerQuad o semplicemente rispondendo a un interrupt di completamento di PowerQuad per accedere ai risultati.

Per gli sviluppatori, tuttavia, le operazioni di PowerQuad sono in gran parte trasparenti. Gli sviluppatori utilizzano l'API (interfaccia di programmazione di applicazioni) standard per la libreria DSP CMSIS (standard di interfaccia software per microcontroller Cortex) di Arm. La versione della libreria che supporta PowerQuad di NXP inclusa nel kit di sviluppo software (SDK) MCUXpresso di NXP Semiconductors sostituisce le funzioni matematiche di basso livello implementate nel software con le chiamate all'API PowerQuad.

Ad esempio, per calcolare un FFT complesso gli sviluppatori usano la funzione CMSIS-DSP standard, arm_cfft_q31(), con i dati in formato Q, che rappresenta un numero a punto fisso a 32 bit utilizzando 1 bit per il segno e 31 per l'esponente. In una pura implementazione software, una chiamata alla funzione arm_cfft_q31() a sua volta richiama la funzione software butterfly CMSIS DSP FFT, arm_radix4_butterfly_q31() e la funzione di fine, arm_cfft_radix4by2_q31(), oppure le loro versioni inverse per FFT inversi complessi.

Quando si usano la libreria DSP di NXP e PowerQuad, la normale chiamata a arm_cfft_q31() richiama invece PQ_TransformCFFT(), che gestisce gli stessi calcoli nell'hardware. Come risultato finale si ottiene non solo un carico di elaborazione ridotto sul core Cortex-M33, ma anche un'esecuzione più veloce delle funzioni DSP (Figura 3).

Grafico del kit di sviluppo software MCUXpressoFigura 3: Il kit di sviluppo software MCUXpresso accelera notevolmente l'esecuzione dei comuni algoritmi DSP mantenendo però la compatibilità con chiamate di alto livello alla libreria standard DSP CMSIS di Arm tramite la sostituzione trasparente delle funzioni CMSIS-DSP di basso livello con chiamate all'acceleratore PowerQuad. (Immagine per gentile concessione di NXP Semiconductors)

Un altro coprocessore, il motore di crittografia CASPER, esenta il processore principale dal pesante carico computazionale associato agli algoritmi di crittografia asimmetrica. La crittografia del motore CASPER esegue l'algoritmo Rivest-Shamir-Adleman (RSA), l'algoritmo Diffie-Hellman, la crittografia a curva ellittica (ECC) e l'algoritmo di firma digitale a curva ellittica (ECDSA) a una velocità fino a otto volte superiore a quella del software crittografico equivalente eseguito nel core Cortex-M33.

Per accelerare l'esecuzione di algoritmi simmetrici, LPC55S6x integra anche blocchi hardware per l'Advanced Encryption Standard a 256 bit (AES-256) e il Secure Hash Algorithm 2 (SHA-2).

La combinazione di questi blocchi hardware e del motore CASPER fornisce agli sviluppatori un supporto basato su hardware per gli algoritmi crittografici usati comunemente per l'autenticazione e la crittografia dei dati necessarie per proteggerne lo scambio nei prodotti connessi.

Come verrà discusso nella Parte 2 di questo articolo, il supporto della famiglia LPC55S6x per la sicurezza va ben oltre quello di algoritmi di crittografia fondamentali per fornire le funzionalità di sicurezza basate su hardware necessarie per proteggere l'intero ciclo di vita.

Sviluppo del sistema

Gli sviluppatori possono rapidamente esplorare i motori di crittografia, DSP e le capacità di elaborazione per uso generale dei microcontroller LPC55S6x utilizzando LPC55S69 EVK di NXP. Progettato per accelerare lo sviluppo con questi dispositivi, LPC55S69 EVK include un microcontroller dual core LPC55S69, l'accelerometro MMA8652FCR1 di NXP, LED, pulsanti, interfaccia di debug e supporto per numerose opzioni di espansione, incluso hardware aggiuntivo Arduino UNO, Click di MikroElektronica e PMod di Digilent.

I numerosi ponticelli e basette consentono agli sviluppatori di impostare facilmente diverse configurazioni hardware e di esaminare da vicino i dettagli delle prestazioni (Figura 4). Ad esempio, chi è interessato al consumo energetico può misurare la corrente di alimentazione di LPC55S69 semplicemente utilizzando un voltmetro per misurare la caduta di tensione sulla basetta P12.

Immagine di LPC55S69 EVK di NXP Semiconductors (fare clic per ingrandire)Figura 4: Costruito attorno a un microcontroller LPC55S69 dual-core di NXP Semiconductors, LPC55S69 EVK fornisce diversi ponticelli e basette che consentono agli sviluppatori di impostare facilmente le configurazioni ed esaminare dettagli sulle prestazioni come il consumo di corrente del microcontroller. (Immagine per gentile concessione di NXP Semiconductors)

Per lo sviluppo, i progettisti possono usare la scheda con l'ambiente di sviluppo integrato (IDE) MCUXpresso e SDK, che si avvale di hardware specializzato LPC55S6x come la funzionalità PowerQuad menzionata prima. Inoltre, LPC55S69-EVK è supportato dagli IDE IAR e Keil. NXP fornisce anche pacchetti software gratuiti con codice di esempio che dimostrano i principali modelli di progettazione software per l'utilizzo delle funzionalità di LPC55S6x.

Conclusione

Gli sviluppatori stanno cercando di bilanciare prestazioni, basso consumo e sicurezza in un'ampia gamma di applicazioni, tra cui IoT, automazione industriale, sistemi medicali e dispositivi consumer. Come descritto qui, la famiglia LPC55S6x del potente core per uso generale dei microcontroller con hardware e motori di elaborazione specializzati offre la possibilità di soddisfare più facilmente le richieste di funzioni specializzate ad alte prestazioni, pur contenendo il consumo energetico.

La Parte 2 di questa serie spiega come gestire la sicurezza lungo l'intero ciclo di vita di un dispositivo utilizzando la famiglia LPC55S6x.

DigiKey logo

Esonero della responsabilità: le opinioni, le convinzioni e i punti di vista espressi dai vari autori e/o dai partecipanti al forum su questo sito Web non riflettono necessariamente le opinioni, le convinzioni e i punti di vista di DigiKey o le sue politiche.

Informazioni su questo autore

Image of Stephen Evanczuk

Stephen Evanczuk

Stephen Evanczuk ha più di 20 anni di esperienza come autore sull'industria elettronica e ha scritto su una vasta gamma di argomenti tra cui hardware, software, sistemi e applicazioni, incluso l'IoT. Ha ricevuto un Ph.D. in neuroscienze sulle reti neuronali e ha lavorato nel settore aerospaziale su sistemi di sicurezza ampiamente distribuiti e sui metodi di accelerazione algoritmica. Attualmente, quando non scrive articoli su tecnologia e ingegneria, lavora su applicazioni di deep learning per i sistemi di riconoscimento e di raccomandazione.

Informazioni su questo editore

Editori nordamericani di DigiKey