Pentru mine, una dintre componentele cele mai dificile în proiectele cu grafică integrată este memoria pentru bufferele de cadre. Această memorie ar trebui să fie mare, de mare viteză și ieftină. Din păcate, pentru a integra memorie în proiectele cu grafică embedded, este adesea nevoie de compromisuri. În cel mai bun caz, aceste compromisuri se transformă în creșteri de cost și reducerea profitabilității. În cel mai rău caz, ele pot conduce la necesitatea de a realiza proiectul în afara companiei sau de a angaja și pregăti noi talente pentru a completa cu succes proiectul. Acest articol va lua în discuție considerațiile ce pot veni odată cu încorporarea de memorie de înaltă densitate și înaltă performanță, necesară în aplicațiile grafice embedded ce utilizează microcontrolere (MCU) și modalitățile de a minimiza și chiar elimina impactul lor potențial.
Există numeroase beneficii în utilizarea MCU-urilor în proiectele grafice embedded, față de utilizarea unei arhitecturi cu MPU (microprocesor). În vreme ce o arhitectură cu MPU este absolut necesară pentru anumite nivele de GUI, numeroase aplicații pot avea încă interfețe grafice atrăgătoare și eficiente fără a aduce costuri suplimentare și pregătire pentru a face schimbarea. Avantajul, care este probabil cel mai profund, este nivelul de integrare oferit de MCU-urile standard. Acest lucru include selecția dimensiunilor memoriilor volatile (SRAM) și nevolatile (Flash), a nucleului specific și frecvenței de ceas, a interfețelor de comunicație și porturilor de intrare/ieșire, precum și a perifericelor analogice. Suplimentar, piața oferă o gamă de dispozitive potrivite celor mai diferite necesități, care pare fără limită. Totuși, atunci când pentru o aplicație embedded este solicitată o interfață grafică GUI, simplitatea, spațiul și economiile de cost pot fi mai complexe pentru utilizatorii de microcontrolere. Atunci când apare această necesitate, mulți proiectanți embedded au pus sub semnul întrebării cum poate un MCU să răspundă cerințelor sau dacă ar trebui să facă saltul potențial costisitor și complicat către un MPU.
Considerația 1 – Cum va fi comandată grafica?
Prima considerație pentru proiectanții de dispozitive grafice ar fi modalitatea prin care urmează să fie comandată grafica. În general, există trei funcții într-un proiect de grafică embedded: redare, comandă și stocare. Redarea se referă la modalitatea prin care imaginile sunt create și manipulate.
Proiectele la nivel de intrare vor utiliza unitatea centrală de procesare (CPU) a microcontrolerului pentru a îndeplini această funcție. Microcontrolerele de clasă mai ridicată, gândite pentru grafică vor dispune de propria unitate de procesare grafică (GPU) ce va reduce încărcarea funcțiilor de redare, precum desenarea și umplerea liniilor și dreptunghiurilor, mutarea formelor și manipularea suprapunerilor numite blitz. Funcția de comandă se referă la modalitatea prin care imaginea este mutată pe ecran. Acest lucru poate fi realizat printr-o unitate de acces direct la memorie (DMA) printr-un port paralel extern al microcontrolerului sau cu un controler realizat special pentru grafică. Controlerul grafic va adăuga unele caracteristici precum suprapuneri și rotație, permițând un design final îmbunătățit. În final, stocarea este locul în care este păstrată informația ce trebuie afișată. Acesta este punctul pe care se concentrează restul articolului.
Considerația 2 – Unde veți stoca designul vostru GUI?
Astăzi, memoria SRAM integrată disponibilă pentru majoritatea MCU-urilor din clasa superioară de pe piață, este în jur de 512KB. Aceasta poate fi suficientă pentru a comanda interfețe GUI statice simple care necesită numai un buffer de cadre, sau interfețe grafice GUI ce utilizează ecrane mici și numai 8 biți pe pixel de culoare. Totuși, tendința pe care o vedem în piață este aceea că utilizatorul final dorește o experiență pe interfețele dispozitivelor lor embedded similară cu cea pe care o au cu aplicațiile favorite de pe telefoanele inteligente. Suplimentar, companiile doresc ca orice GUI să le afișeze logo-ul cu exactitate, într-un mod care să conducă la identitate de marcă și loialitate. Comanda unei interfețe grafice cu utilizatorul superioare poate implica utilizarea unor buffere de cadre multiple, numeroase suprapuneri de straturi și profunzimi de culoare mai mari. Ultima afirmație este în special adevărată dacă grafica din aplicație trebuie să fie foto-realistică sau să se potrivească exact unei culori de marcă.
Figura 1 oferă câteva exemple de aplicații GUI care implică multe din aceste îmbunătățiri. Exemplul este o demonstrație de distorsiune de imagine foto-realistică, ce are o amprentă în memoria nevolatilă la rulare de aproximativ 12MB. O altă aplicație, un GUI pentru un aparat de cafea, ia avantajele unor elemente grafice mai mici, dar are, de asemenea, mișcare și multiple suprapuneri de straturi. Amprenta în funcționare a fost de aproximativ 3MB.
Considerația 3 – Ar trebui să utilizați memorie externă pentru a stoca GUI-ul vostru?
Amintiți-vă că memoria SRAM integrată de vârf în microcontrolerele de clasă superioară este de aproximativ 512KB. În mod clar, cele două aplicații mai sus menționate depășesc memoria integrată a aproape oricărui MCU de pe piață. Este astfel necesară utilizarea unei memorii externe MCU-ului. O astfel de memorie trebuie să fie de înaltă densitate, înaltă performanță și de înaltă disponibilitate. O opțiune pentru memoria externă în aplicații de grafică MCU este SRAM asincron. SRAM-ul extern asigură o îmbunătățire a memoriei, oferind densități de 8MB și este, de asemenea, relativ ușor de implementat, cu linii de adresă non-multiplexate și pini care sunt ușor accesibili porturilor paralele externe ale multor microcontrolere. Compromisul cu utilizarea SRAM-ului extern îl reprezintă densitatea (8MB este mare, dar nu suficient de mare în numeroase aplicații cu grafică intensivă), costul (prețul unei singure componente la distribuitorii online este adesea mai mare decât al microcontrolerului în sine), precum și spațiul de placă.
Numeroase microcontrolere de pe piață au implementată o interfață SDRAM, care poate fi utilizată pentru stocare grafică. Densitățile suportate în acest tip de memorii externe sunt de 8MB și 16MB. SDRAM sunt relativ ușor de obținut și sunt de departe mai economice decât SRAM-urile externe. După cum s-a arătat mai sus, 8MB ar trebui să fie considerată o limită inferioară, în cazul unor aplicații GUI (de exemplu demonstrația de distorsiune foto) depășindu-se această limită. Utilizarea SDRAM este un caz în care trebuie ținut cont de considerațiile legate de proiectarea plăcii. Cu magistrale ce ating 120MHz, trebuie analizate cerințe de proiectare speciale. De exemplu, anumite aplicații recomandă ca toate plăcile PCB cu design SDRAM end-to-end să conțină șase straturi. Aceasta înseamnă că o memorie externă de înaltă performanță poate adăuga până la patru straturi pe proiectul PCB embedded, adăugând câțiva dolari în plus la costul sistemului în lista de materiale (BOM).
Performanța poate fi o altă problemă de luat în considerare cu SDRAM. Cu magistrale tipice de 100MHz pe 16-biți, viteza maximă teoretică de transfer de date este de 200MB/s. Un display de 800×480 WVGA cu o rată de actualizare de 60MHz și o profunzime a culorii de 16 biți pe un pixel, necesită o viteză de transfer de date de 46MB/s. Totuși, cu manipularea imaginilor comandată fie de CPU, fie de o unitate de procesare grafică opțională, precum și cu suport pentru suprapuneri de straturi, ceea ce devine normă pentru microcontrolerele cu grafică integrată, proiectul ar putea atinge sau depăși per- formanțele reale ale sistemelor bazate pe SDRAM. Cu alte cuvinte, performanțele SDRAM pot fi o limitare în unele aplicații grafice de înaltă clasă. Vă amintiți tendința care a fost menționată mai devreme? Utilizatorii finali vor ca toate interacțiunile lor cu dispozitivele electronice să arate la fel cu experiența avută la interacțiunea cu telefoanele lor inteligente, rulând aplicațiile favorite. Cu toate acestea presiunea pe performanță se estimează că va crește în continuare. Astfel, sunt necesare performanțe mai ridicate și tehnologii de densitate mai mare.
Considerația 4 – Există ceva ce poate fi folosit ca memorie internă pentru aplicații GUI?
Tehnologia finală pe care o vom lua în considerare este DDR2 SDRAM. Aceasta oferă dezvoltatorului avantajele unei densități chiar și mai mari (până la 128MB) care pot fi atinse cu SDRAM. Un alt avantaj în utilizarea DDR2 SDRAM este performanța. Frecvența de ceas pe interfața memoriei DDR2 este de minim două ori mai mare decât în cazul SDRAM. De asemenea, DDR provine de la “viteză dublă de transfer de date”, ceea ce însemnă că datele sunt transferate către sau dinspre memorie în cantitate dublă pe fiecare ciclu. Rezultatul este o tehnologie de memorie care este de cel puțin patru ori mai rapidă față de SDRAM-ul utilizat pe piață.
Valorificarea performanței memoriei DDR2 este una dintre dezavantajele majore ale utilizării acestei tehnologii. Cu o interfață de magistrală începând de la 200MHz și cu transfer de date pe fiecare jumătate de ciclu, trebuie analizate anumite considerații speciale peste sau sub ceea ce este necesar pentru SDRAM, pentru a se asigura integritatea corespunzătoare a semnalului, oferind în același timp izolație față de restul plăcii. Proiectele bazate pe DDR trebuie, de asemenea, să acorde atenție altor specificații, precum toleranțe strânse pe referință, tensiune de sursă și finală, decuplare potrivită, considerații de strat precum lățimea traseului, spațiul interpair și intrapair și ruta traseului.
Odată cu creșterea mărimii, profunzimii și complexității aplicațiilor grafice embedded, necesitățile de dimensiuni de memorie mai mari și viteze de transfer de date mai ridicate cu memoria DDR2 vor continua să crească. Proiectanții de sisteme embedded care au implementat acum doar câțiva ani microcontrolere la un maxim de 150MHz, trebuie să facă față necesității de utilizare a unor microcontrolere de două ori mai rapide, cu interfețe de memorie care să se potrivească cu viteza de ceas intern a microcontrolerului. Majoritatea producătorilor de MCU pot și fac oferte de asistență de pro- iectare pentru produsele lor sub mai multe forme.
În orice caz, nu ar fi bine să existe acces la memorii de înaltă densitate și performanță ridicată într-un MCU grafic de mare viteză, fără a trebui adăugate pe PCB straturi costisitoare, ce suplimentează cu câțiva dolari costul general cu materialele BOM, permițând incursiunea în proiectele de magistrală 200MHz+ DDR2? PIC32MZ DA de la Microchip este unul dintre puținele microcontrolere de pe piață care se poate interfața cu memorii DDR2.
Familia de microcontrolere PIC32MZ DA diminuează presiunea pe proiectarea cu memorii externe, încorporând în cip memorie grafică. Utilizând o tehnică de proiectare cu stivă de memorie, PIC32MZ DA include o memorie internă de 32MB DDR2 DRAM, astfel încât nu este nevoie de memorie externă (figura 2). Acest dispozitiv integrează, de asemenea pe cip, un controler grafic cu trei straturi și o unitate de procesare grafică de performanță ridicată, oferind un nivel de integrare nemaivăzut și performanțe excelente.
Concluzii
Necesitatea în cazul proiectelor embedded de a ține pasul cu frumusețea și complexitatea interfețelor grafice cu utilizatorul se va accelera. Una dintre limitările cheie ale arhitecturilor microcontrolerelor o reprezintă memoria de stocare. Pentru a ajuta la rezolvarea acestei probleme, există câteva tehnologii, fiecare însă cu avantajele și dezavantajele lor unice. Acest articol prezintă beneficiile și lipsurile fiecărei arhitecturi. Proiectele GUI nu dispar, iar în vreme ce limitările de memorie pot da dureri de cap proiectanților, ele nu trebuie să vă limiteze în a putea dezvolta aplicații minunate, utile și eficiente pentru clienții voștri.
Autor: Kurt Parker, Product Marketing Manager pentru Divizia MCU32 la Microchip Technology
Microchip Technology | www.microchip.com