Beneficiați de avantajele oferite de microcontrolerele pe 16-biți: performanță și consum mic de putere

by donpedro

O durată mare de viață a bateriei este foarte importantă pentru satisfacția utilizatorilor în ceea ce privește dispozitivele electrocasnice. Pentru punctele finale IoT (Internetul Lucrurilor) alimentate de la baterii, o durată extinsă de viață a bateriilor diminuează costurile de întreținere și îmbunătățește siguranța în funcționare. După cum microcontrolerul utilizat în aceste dispozitive poate fi un consumator semnificativ, proiectanții trebuie să selecteze și să aplice arhitecturile potrivite pentru a răspunde cerințelor acestor aplicații. În numeroase cazuri, microcontrolerele pe 16 biți se dovedesc a fi cea mai bună alegere.

În vreme ce microcontrolerele pe 8-biți devin din ce în ce mai puternice, performanțele lor rămân inevitabil limitate în termeni de putere de procesare și memorie adresabilă. Acest lucru elimină alegerea de 8-biți pentru aplicațiile de performanțe mai ridicate. Pe de altă parte, sistemele bazate pe nuclee de 32-biți sunt adesea nejustificate pentru aplicații, în special atunci când consumă mai multă putere decât este necesar.

Soluția se află la mijloc, adică microcontrolerele pe 16-biți, punctul de eficiență maximă între nucleele pe 8-biți și 32-biți. Ele oferă consumul energetic redus al unui microcontroler pe 8-biți, furnizând în același timp unele dintre avantajele de performanță și memorie ale nucleelor pe 32-biți. Dacă o aplicație nu are cerințe de calcul intensiv și dacă cerințele de memorie nu sunt foarte mari, atunci un microcontroler pe 16-biți poate oferi nivelul potrivit de performanță cu economii energetice semnificative.

Acest articol descrie arhitectura microcontrolerelor pe 16-biți și cum reprezintă acestea cea mai bună alegere pentru numeroase aplicații casnice alimentate de la baterii și aplicații finale IoT. Sunt oferite apoi câteva exemple de microcontrolere pe 16-biți de la Microchip Technology și Texas Instruments și vă arată cum puteți începe un proiect pe 16-biți.

Selectarea unui microcontroler

Selectarea microcontrolerului potrivit pentru o aplicație este unul dintre primii pași în procesul de proiectare, după definirea cerințelor proiectului. Cele 3 alegeri de bază sunt între microcontrolerele pe 8, 16 și 32-biți.

Nu vă vine să credeți cât de prolifice au devenit microcontrolerele pe 8-biți: ele sunt ‘calul de povară’ al proiectanților. Nu există nicio sarcină prea mică pentru un microcontroler pe 8-biți economic și cu consum energetic redus: acesta are consumul energetic cel mai redus din regatul microcontrolerelor, unele microcontrolere având curenți de mod de așteptare de sub 100 nA.

Sunt, de asemenea, ușor de utilizat. Microcontrolerul pe 8-biți este uzual bazat pe ‘acumulator’, cu toate că mai multe arhitecturi moderne au un set de registre (n.red.: În unitatea centrală de procesare (CPU) a calculatorului, acumulatorul este un registru în care sunt stocate rezultatele aritmetice și logice intermediare.). Modelul de programare este simplu și limitat: acumulatori sau un set mic de regiștri cu un singur registru de stare, un indicator de stivă și unul sau mai mulți regiștri de indexare. Foarte adesea, stiva poate fi în hardware, iar contorul de programe (PC – program counter) este inaccesibil pentru firmware.

Deși populară, arhitectura pe 8-biți și-a atins limitele când a încercat să se implice în rețele și comunicații. Aproape toate pachetele de comunicații și protocoalele de rețea sunt fie pe 16-biți sau pe 32-biți, ceea ce face sa fie necesară părăsirea arhitecturii de 8-biți. Mai mult, chiar și cele mai performante microcontrolere pe 8-biți au tendința de a fi limitate la o adresare pe 16-biți fără paginare, limitând dimensiunea firmware-ului și complexitatea.

La cealaltă extremă, microcontrolerele pe 32-biți au devenit cunoscute pentru aplicații din toate gamele de performanțe. Acestea sunt construite pe arhitecturi bazate pe regiștri care suportă cu ușurință rețele și comunicații. Ele dispun în mod uzual de 32 de biți de adresare, pot suporta matematică în virgulă mobilă și operații algebrice de nivel superior, iar frecvențele de ceas sunt în gama de GHz. Nucleele pe 32-biți au un model de programare mai complicat, care poate include regiștri multipli de stare, un PC expus la firmware, management complex al întreruperii și două sau mai multe nivele de drepturi de executare firmware.

Din partea lor, microcontrolerele pe 16-biți sunt toate bazate pe regiștri, dar cu arhitecturi de simplitatea unui microcontroler de 8 biți. Acestea au tendința de a avea performanțe bune în privința consumului energetic, un consum de curent semnificativ mai redus față de arhitecturile pe 32-biți și un consum energetic aproximativ la fel de scăzut precum nucleele pe 8-biți. Dacă aplicația necesită matematică de nivel ridicat, unele microcontrolere pe 16-biți se laudă cu coprocesoare matematice care ating chiar unele dintre performanțele celor pe 32-biți la aceeași frecvență de ceas.

Există, de asemenea, numeroase pachete de comunicații pentru a suporta legarea în rețea a microcontrolerelor pe 16-biți. Ethernet, CAN, USB și Zigbee sunt unele dintre exemplele de pachete de protocoale care pot rula la fel de rapid pe un microcontroler pe 16-biți, ca și pe unul de 32-biți, cu condiția ca programul de aplicație să aibă suficiente performanțe disponibile pentru service-ul pachetului.

Adresarea unor arii de memorii Flash mari cu un microcontroler pe 16-biți

Figura 1: Modelul de programare al Microchip PIC24F este similar unui microcontroler pe 8-biți de clasă superioară. El are o arhitectură bazată pe regiștri, cu 16 regiștri de uz general pe 16-biți, un indicator stivă, PC, și 5 regiștri suport. (Sursă imagine: Microchip Technology)

Una dintre cele mai importante diferențe între arhitecturile pe 32-biți și cele pe 16-biți este domeniul de adresare a memoriei. Microcontrolerele pe 32-biți au o magistrală de adresă pe 32 de biți, care oferă acces la o memorie de până la 4 Gbyte de memorie. Microcontrolerele uzuale pe 16-biți au avut o adresabilitate de 16 biți care putea accesa numai 64 Kbyte de memorie. Totuși, numeroase arhitecturi moderne pe 16-biți oferă acum o adresabilitate extinsă de până la 24 de biți, care permite o plajă considerabilă de 16 Mbyte de spațiu de adresare.

Un bun exemplu de abordare a adresării extinse este familia de microcontrolere de joasă putere PIC24F de la Microchip Technology. Unul dintre microcontrolere este PIC24FJ1024GA, un microcontroler pe 16-biți, 32MHz, cu 1Mbyte de memorie Flash pe placă și 32 Kbyte de memorie SRAM pe placă. Acesta utilizează un model de programare simplă, similar cu numeroase microcontrolere pe 8-biți (Figura 1).

PIC24 are un numărător de program pe 23-biți care poate accesa până la 8 Mbyte de memorie program Flash. Acesta are șaisprezece regiștri pe 16-biți, numiți regiștri de lucru (WREG – Working Registers) notați cu W0 până la W15. Regiștrii de la W0 la W13 sunt regiștri de uz general (GP) care pot fi utilizați pentru a stoca date sub control firmware. W15 este un indicator stivă dedicat (SP – stack pointer). În vreme ce SP este incrementat și decrementat automat prin apelările funcțiilor și subrutinelor, excepțiilor de programare și returnări de apeluri, acesta poate fi modificat și de firmware, la fel ca W0 până la 13.

W14 servește ca indicator cadru de stivă (FP – stack frame pointer) cu instrucțiunile de asamblare LINK și UNLINK. Registrul SPLIM (Stack Pointer Limit) este un registru independent și este utilizat cu SP-ul pentru a preveni depășirea stivei.

PIC24 utilizează o arhitectură Harvard cu spații separate de adresă și date. Registrul TBLPAG (Data Table Page Address) și registrul PSVPAG (Program Space Visibility Page Address) sunt utilizați cu instrucțiuni speciale pentru a accesa și transfera date între spațiile de adresă și date. Aceasta este o funcție cunoscută în arhitecturile pe 32-biți, dar rară în cazul nucleelor pe 8-biți.

Registrul pe 16-biți RCOUNT (Repeat Loop Counter) conține numărătorul de repetare a buclei pentru instrucțiunea din limbajul de asamblare REPEAT.

Registrul pe 16-biți de control a nucleului unității centrale (CPU Core Control – CORCON) este utilizat penru configurarea modurilor interne de operare ale nucleului PIC24.

În final, registrul de stare pe 16-biți conține biții de stare ai nucleului PIC24, inclusiv starea rezultată de la ultimele instrucțiuni executate în limbaj de asamblare.

Microchip Technology definește performanța PIC24FJ1024GA606T prin cele 16 milioane de instrucțiuni pe secundă (MIPS) la 32 MHz – impresionantă pentru un nucleu pe 16-biți. Nucleul dispune de multe caracteristici ce se pot găsi în cazul microcontrolerelor pe 32-biți, precum un multiplicator hardware de 17-biți cu 17-biți, care suportă matematică fracțională și un divizor hardware de 32-biți cu 16-biți. Acest lucru este util pentru punctele finale (endpoints) IoT care trebuie să realizeze calcule asupra datelor senzoriale. Arhitectura poate, de asemenea, citi și scrie simultan din memoria de date, fără pierderi de performanță.

În vreme ce PIC24FJ1024GA606T are o gamă largă de periferice standard, inclusiv USB On-the-Go (OTG), el are un consum energetic foarte redus, util pentru aplicații alimentate la baterii. Sursa de tensiune necesară este de numai 2 până la 3.6V, iar la viteza maximă, microcontrolerul consumă maxim 7.7 mA la 32 MHz – dificil de atins pentru un nucleu pe 32-biți. Firmware-ul are un bun control asupra ceasurilor nucleului și periferiei. Există două instrucțiuni de joasă putere. Instrucțiunea IDLE oprește nucleul PIC24, în vreme ce permite perifericelor să opereze. Instrucțiunea SLEEP oprește operațiile în întreg dispozitivul, cu excepția watchdog-ului opțional și a detecției întreruperilor externe. Curentul în starea Idle este de numai 2.8mA (max.), iar curentul maxim în starea Sleep este între 10 și 45µA, în funcție de configurația perifericelor. În modul său cu cel mai redus consum energetic – modul Sleep cu păstrarea conținutului memoriei cu acces aleatoriu (RAM) – acest PIC24F poate consuma până la 190nA.

Pentru performanțe mai mari, Microchip Technology oferă un microcontroler pe 16-biți de clasă superioară, parte a familiei sale dsPIC®. Un exemplu este dsPIC33EP512GP506T pe 16-biți cu 512 Kbyte de memorie Flash și performanțe Microchip de 70 MIPS. dsPIC are aproape aceeași regiștri de bază ca PIC24, dar cu regiștri suplimentari pentru a suporta instrucțiuni de procesare semnal digital (DSP), inclusiv două ‘acumulatoare’ pe 40-biți și suport de multiplicare pe 32-biți. La realizarea unui upgrade pentru un sistem cu PIC24, numeroase microcontrolere PIC24 au disponibile dispozitive dsPIC compatibile la nivel de pini, oferind performanțe crescute, utilizând aceeași placă de circuit imprimat.

Desigur că extra-performanțe înseamnă extra-consum. Acest dsPIC33 necesită o tensiune de alimentare de la 3 la 3.6V, iar când operează la 70 MIPS, consumă maxim 60 mA.

Scăderea consumului energetic odată cu îmbunătățirea performanțelor

Familia de microcontrolere MSP430FR599x de la Texas Instruments utilizează memoria de program proprietară a companiei – FRAM (memorie feroelectrică cu acces aleatoriu) – pentru a obține caracteristici de performanță citire/scriere mai mari la un consum energetic mai mic decât microcontrolerele Flash. Microcontrolerul MSP430FR5994IPNR pe 16-biți este un membru al acestei familii, cu un ceas de 16 MHz și 256 Kbyte de memorie FRAM.

Figura 2: Setul de regiștri al microcontrolerului MSP430 este similar din punct de vedere al configurației cu alte nuclee pe 16-biți bazate pe regiștri. Regiștrii de configurare rămași sunt mapați la memorie. (Sursă imagine: Texas Instruments)

Nucleul acestui microcontroler MSP430FR are îmbunătățiri ale performanței care includ cache asociat pe două căi cu patru linii de cache / 64-biți dimensiunea liniei pentru performanțe mai bune FRAM. Un multiplicator hardware pe 32-biți îmbunătățește performanțele pentru operații matematice intensive. El dispune, de asemenea, de un coprocesor accelerator de joasă energie (LEA), care operează independent de nucleul principal MSP430. LEA poate realiza, în acord cu TI, o transformată Fourier rapidă (FFT) complexă în 256 puncte, un filtru de răspuns la impuls finit (FIR) și multiplicare de matrice, mai rapid de 40 de ori față de un Arm® Cortex®-M0+. LEA îmbunătățește performanțele pentru operații de fuziune senzorială, îmbunătățind imaginile și procesând datele senzoriale ultrasonice. Toate acestea sunt aplicații în care un dezvoltator se va gândi în mod uzual la început la un nucleu pe 32-biți, nu la un microcontroler pe 16-biți de ultra-joasă putere.

Modelul de programare pentru MSP430R este foarte simplu (figura 2). Există șaisprezece regiștri pe 16-biți, de la R0 la R15. R0 este numărătorul de program, R1 este indicatorul de stivă, R2 este registrul de stare, iar R3 este un generator de constante (utilizat pentru operanzi imediați). De la R4 la R15 sunt regiștri de uz general. Restul regiștrilor de configurare sunt mapați la memorie, similar majorității nucleelor pe 32-biți.

Această performanță vine fără a consuma mai multă energie. În modul de așteptare cu ceasul de timp real (RTC) în operare, MSP430FR5994 de la TI consumă numai 350nA. În modul de închidere (shutdown) se atinge un consum de 45nA. Acesta este mai mic decât al oricărui microcontroler pe 32-biți cunoscut, chiar mai mic și decât al celor mai multe microcontrolerele pe 8-biți.

MSP430FR5994IPNR poate opera de la 1.8 la 3.6V. Cu firmware-ul rulând din FRAM și fără utilizare cache, MSP430FR necesită numai 3mA. Dacă programul rulează din cache, consumul de curent este de numai 790µA. Combinat cu LEA, se oferă performanțe de procesare semnificative cu un consum energetic extrem de redus pentru un microcontroler pe 16-biți.

Aplicațiile de joasă putere ale familiei MSP430FR5994 pot fi cu ușurință dezvoltate utilizând TI MSP-EXP430FR5994 LaunchPad™. Această platformă conține tot ceea ce are nevoie un dezvoltator pentru a începe scrierea și depanarea de firmware pentru microcontrolerul MSP-EXP430FR5994 (figura 3).

Platforma are două butoane cu apăsare, două LED-uri și un soclu pentru memorie microSD. Pentru a demonstra capabilitățile de joasă putere ale microcontrolerului MSP430FR5994, platforma are un super-condensator mare de 0.22 Farad (F), care este capabil de a alimenta dispozitivul. Super-condensatorul este încărcat prin conectarea platformei la o sursă externă și prin reglarea jumper-ului J8 la poziția de ,,Încărcare (Charge)”. Durează între două și trei minute până la încărcarea completă a super-condensatorului. După trecerea celor trei minute, Jumper-ul J8 se mută pe poziția ,,Utilizare (Use)”, iar sursa de tensiune externă este îndepărtată. În funcție de aplicație, MSP430 poate rula apoi pentru multe minute.

Figura 3: Platforma TI MSP-EXP430FR5994 LaunchPad are tot ceea ce este necesar unui dezvoltator pentru a începe să programeze și să depaneze firmware pentru microcontrolerul MSP430FR5994 pe 16-biți cu FRAM (Sursă imagine: Texas Instruments).

Platforma poate fi, de asemenea, utilizată pentru a măsura consumul de curent al MSP430 și al aplicației. Blocul izolator J101 are șapte jumpere, inclusiv unul de sursă de tensiune de 3V, 3V3. Acest jumper de 3V3 cu doi-pini poate fi îndepărtat, iar curentul aplicației poate fi măsurat prin cei doi pini.

Platforma de mai sus poate, de asemenea, suporta tehnologia EnergyTrace™ de la TI și se poate conecta la un computer utilizând interfața grafică EnergyTrace (GUI) de la Texas Instruments. Acest lucru permite dezvoltatorilor să observe consumul energetic în timp real de la microcontrolerul MSP430 și de la aplicație, permițând dezvoltatorilor să își regleze fin aplicațiile în funcție de consumul energetic.

De exemplu, monitorizarea și înregistrarea curentului în timp real poate arăta că microcontrolerul MSP430 are salturi de curent pe anumite intervale de timp. Salturile de curent pot degrada bateria, reducându-i durata de viață. Aceste salturi de curent pot fi cauzate de configurarea greșită a perifericelor de pe cip, de o sarcină externă inductivă sau capacitivă sau chiar de firmware-ul care încearcă să pornească totul în același timp. Monitorizarea și înregistrarea curentului pot arăta dezvoltatorilor unde să regleze firmware-ul pentru a duce salturile de curent sub control.

Concluzie

Pentru numeroase aplicații embedded de joasă putere, cu performanțe medii, alimentate de la baterii, dezvoltatorii pot alege un microcontroler pe 16-biți potrivit, în opoziție cu selectarea unui nucleu pe 32-biți. După cum s-a putut observa, pentru numeroase aplicații, un microcontroler pe 16-biți poate consuma mult mai puțin curent față de unul pe 32-biți, dar păstrând performanțele necesare.

Autor: Rich Miron – Inginer de aplicații

Rich Miron, Inginer de aplicații la Digi-Key Electronics, face parte din grupul de autori care crează articole tehnice (Technical Content Group) din 2007, având res­ponsabilitatea principală de a scrie și edita articole, bloguri și module de instruire pentru cunoașterea produselor.
Înainte de Digi-Key, el a testat și calificat sisteme de control și instrumentare pentru submarine nucleare. Rich deține o diplomă în inginerie electrică și electronică de la Universitatea de Stat din North Dakota din Fargo, ND.

Digi-Key Electronics   |   https://www.digikey.ro

S-ar putea să vă placă și

Adaugă un comentariu