Chiar dacă metoda de emulare a EEPROM-ului nu este un concept nou, se impune tot mai mult a fi luată în considerare datorită implementării cerințelor de AUTOSAR dar și evidentelor avantaje legate de îmbunătățirea metodelor de lucru, a timpilor de execuție SW și de optimizarea protecției datelor, de restrângerea/limitarea potențialelor surse de eroare. Cerințele tot mai stringente referitoare la reducerea costurilor devin și ele un factor important în asumarea acestei metode. În rândurile următoare, vom expune pe scurt specificul acestei metode de lucru precum și efectul asupra influenței electromagnetice rezultate pe un microcontroler automotive specializat ce are încorporate toate mecanismele necesare.
Pentru memoriile nevolatile cu costuri reduse, scrierea se poate face pe cuvânt (locul datei în memorie fiind identificat simplu pe baza poziționării acesteia în cadrul memoriei), iar ștergerea numai pe un întreg bloc de memorie. Acest din urmă caz este exemplificat în cele ce urmează pentru o mai bună înțelegere a mecanismului.
Metoda de emulare a EEPROM-ului constă în utilizarea a (cel puțin) două blocuri/pagini de memorie flash destinate mecanismului, pentru citirea respectiv salvarea parametrilor/datelor de stare ale unității electronice de control la intrarea/ieșirea din funcțiune cât și a variabilelor de sistem necesare a fi actualizate periodic.
Necesitatea utilizării blocurilor asigură pe de o parte integritatea datelor dar și existența în orice moment a unui bloc valid care poate fi ușor de identificat. Unul dintre blocuri va fi blocul valid iar celălalt bloc va fi blocul alternativ. În cadrul blocului valid, datele sunt identificate pe baza unui câmp identificator (ID) care precedă datele de memorat pentru locația respectivă. Înregistrările de memorat sunt scrise în ordine una după cealaltă, în fiecare dintre locațiile libere, atunci când e nevoie de actualizarea unei date ocupându-se imediat următoarea locație liberă. În momentul în care o dată este necesară a fi citită din memorie, căutarea se va face parcurgând înregistrările de la cea mai recentă (ultima dată memorată) către cea mai veche dintre ele (prima dată memorată) asigurându-se astfel faptul că aceea citită este cea mai nouă dintre posibilele actualizări ale înregistrării respective. Mecanismul de scriere se repetă astfel până când pagina activă este plină și nu mai sunt locații disponibile pentru memorarea de noi date. În acest moment se execută o căutare și o citire a tuturor datelor actuale din blocul valid, acestea fiind copiate în blocul alternativ conform cu procesul normal de scriere al noilor înregistrări. Tot acum e momentul ca blocul alternativ să devină noul bloc valid, iar fostul blocul valid va fi șters în totalitate devenind astfel noul bloc alternativ. Din acest moment întregul mecanism de emulare se reia cu fiecare dată necesară a fi memorată/citită respectiv cu fiecare umplere a unei pagini de înregistrări. Acum, având în vedere mecanismul descris anterior, scopul memoriilor flash este de a stoca datele înscrise chiar și atunci când tensiunea de alimentare este îndepărtată. Acțiunea de stocare a datelor în memorie se numește programare. Când o anumită dată trebuie modificată, locația respectivă nu poate fi actualizată fără o ștergere în prealabil. Aici intervine limitarea în ceea ce privește memoriile flash.Un întreg bloc de memorie va trebui să fie șters, aspect care va avea ca efect alterarea ( ștergerea) altor date (scrise în același bloc). Așadar, este nevoie de un interschimb între blocuri, conform cu mecanismul descris anterior.
Ștergerea memoriei înseamnă aducerea tuturor biților din blocul selectat în starea de "1" logic. Acest fapt se face practic prin încărcarea tuturor capacităților MOS ale tranzistoarelor integrate. Programarea unui bit înseamnă a descărca această capacitate pentru a fi citită drept "0" logic. Pentru a efectua o ștergere sau o programare, se inițiază o operație folosind înalta tensiune. Aceasta înseamnă practic generarea unei tensiuni necesare pentru încărcarea celulelor de memorie flash pornind de la tensiunea de alimentare a blocului de memorie care este de 3.3Vcc. De obicei, o tensiune între 9V și 10V este necesară. Astfel, intern, în controller-ul memoriei flash este implementată o pompă de încărcare care are ca intrare cei 3.3V iar la ieșire, cei 9 - 10V. Aceste pulsuri de tensiune sunt practic necesare în cadrul procesului de ștergere respectiv de programare.
O implementare generală a unei pompe de încărcare este prezentată în figura de mai jos cu mențiunea că circuitul electric prezentat doar dublează tensiunea de la intrare. Contactele care duc la buna funcționare a unui astfel de circuit comută cu o frecvență fixă generată de un circuit de oscilație intern. În cazul memoriilor flash Freescale în tehnologie C55, această frecvență este egală cu 64MHz.
O notă interesantă aici: un timp de ștergere tipic pentru un bloc de 32K, pentru o memorie cu tehnologie C55 de la Freescale este de 220ms. Timpul tipic de programare pentru 1024 biți este de 70us. Aceste valori au fost determinate pe baza măsurătorilor făcute în laboratorul intern pe acest tip de tehnologie și sunt confirmate de către specificația producătorului.
Pe un ECU care are o memorie EEPROM externă, ștergerea și programarea se fac practic odată la sfârșitul verificărilor de pe linia de producție atunci când aplicația este programată și verificată, înainte ca produsul să ajungă la producătorul echipamentului final și să fie echipată mașina. Pompa de încărcare se activează astfel doar în acest moment (în timpul programării), pentru ca în restul ciclului de viață al memoriei, acest circuit să fie practic în stare latentă.
Dacă e să luăm în considerare un ECU ce implementează mecanismul de emulare al EERPOM- ului folosind memoria flash integrată (nu o memorie externă ca și în cazul anterior), în faza de producție lucrurile stau la fel. Diferența semnificativă apare după ce ECU-ul se va afla în mașina specializată și aceasta va rula pe drum. De fiecare dată când un parametru trebuie modificat sau o dată nouă trebuie memorată, va avea loc o operație care implică înalta tensiune. Când un bloc va fi plin și are loc schimbul de date între blocuri, va fi inițiată din nou o operație care implică înalta tensiune.
În acest context, construcția pompei de încărcare joacă un rol important. Pentru a obține cei 9 - 10V din cei 3.3V, pompa de încărcare implică un alt circuit, de comutație, care funcționează cu o anumită frecvență. Se poate pune problema, care e impactul acestuia sau … care e diferența în comparație cu vechea implementare ?
Figura 1: Acționare pompă de încărcare
Răspunsul se regăsește în spectrul de frecvență. Producătorii de echipamente au specificații foarte clare în legătură cu amplitudinea componentelor spectrale pe care un ECU le poate emite. De aceea, trebuie să ținem cont de faptul că frecvența de comutație a circuitului pompei de încărcare se va reflecta în spectru de emisie.
Luând în considerare timpii de operare, e clar că operațiile de ștergere vor solicita mai mult timp circuitul pompei de încărcare și astfel va avea un impact mai mare în spectrul de emisii care poate crea probleme nedorite. Programarea se va face mai des, dar va solicita mai puțin acest circuit.
În concluzie, după măsurătorile de EMI, am putut observa că impactul nu e unul critic deoarece amplitudinile din spectru sunt în limitele impuse, dar chiar și așa, ar fi putut fi o sursă de probleme.
Figura 2: EMI cu emularea EEPROM-ului
În următoarea figură poate fi vizualizat spectrul EMI al unui dispozitiv care are implementat mecanismul de emulare al EEPROM-ului. Pot fi observate componentele spectrale generate de emularea EEPROM. Frecvența de funcționare a pompei de încărcare este 64.88MHz și poate fi observată în partea stângă a spectrului. În cadrul măsurătorii a fost observată și prezența armonicilor acestei frecvențe. Cea mai mare amplitudine este cea a armonicii de ordinul doi.
Download qualification report: - raport intern;
C55 flash module specification: - document intern NXP;