De basisprincipes van ingebed geheugen: EEPROM, FRAM, eMMC of SD-kaarten

Door Jacob Beningo

Bijgedragen door De Noord-Amerikaanse redacteurs van DigiKey

Geheugen is een belangrijk onderdeel van ingebedde systemen op basis van microcontrollers. Zo hebben ontwikkelaars bijvoorbeeld RAM nodig voor al hun vluchtige variabelen, voor het maken van buffers en het beheren van verschillende toepassingsstacks. Behalve voldoende RAM hebben ontwikkelaars ook opslagruimte nodig voor hun toepassingscode, niet-vluchtige gegevens en configuratie-informatie.

Omdat het aantal verschillende technologieën voor niet-vluchtig geheugen blijft groeien, wordt het steeds lastiger om voor een bepaalde toepassing het juiste geheugen te vinden.

Dit artikel begint met een introductie van de verschillende technologieën. Vervolgens wordt aan de hand van voorbeelden van leveranciers zoals ON Semiconductor, Adesto Technologies, Renesas, ISSI, Cypress Semiconductor, Advantech, GigaDevice Semiconductor en Silicon Motion de karakteristieken van elk geheugentype uitgelegd. Tot slot wordt besproken waar elk geheugentype het beste kan worden toegepast, zodat ontwikkelaars ze effectief kunnen gebruiken.

EEPROM en FRAM in ingebedde systemen

Het eerste en meest gebruikte geheugentype dat aan een ingebed systeem wordt toegevoegd, is EEPROM. Dit is een niet-vluchtig geheugen dat vaak wordt gebruikt voor het opslaan van systeemconfiguratieparameters voor een ingebedde toepassing. Zo kan een apparaat dat is verbonden met een netwerk zoals een CAN-bus bijvoorbeeld de CAN-ID in de EEPROM opslaan.

EEPROM heeft verschillende eigenschappen waardoor het een goede keuze is voor ontwikkelaars van ingebedde systemen:

  • een klein fysiek oppervlak
  • relatief goedkoop
  • typische bitsnelheden variërend van 100 kilobit per seconde (kbit/s) tot 1000 kbit/s
  • gestandaardiseerd elektronisch interface
  • ondersteunt gewoonlijk I2C- en SPI-interfaces

Een snelle zoekopdracht voor EEPROM op de website van DigiKey levert negen EEPROM-leveranciers op met meer dan 5800 verschillende EEPROM’s. De CAT24C32WI-GT3 van ON Semiconductor is bijvoorbeeld een 32 kbit (4 kbyte) EEPROM en is verkrijgbaar in een SOIC-behuizing met 8 pennen en aansluitmogelijkheid op de I2C-bus bij frequenties van maximaal 1 megahertz (MHz) (Afbeelding 1).

Afbeelding van de CAT24C32WI-GT3, een 1 kbit EEPROM van ON SemiconductorAfbeelding 1: De CAT24C32WI-GT3 is een 1 kbit EEPROM van ON Semiconductor die via een I2C- of SPI-poort op een microcontroller kan worden aangesloten om configuratie- en toepassingsgegevens op te slaan. (Bron afbeelding: ON Semiconductor)

Het interessante aan EEPROM is dat deze soms ook in de microcontroller zelf wordt opgenomen. Zo is de R7FS128783A01CFM#AA1 een 32 bit microcontroller van Renesas met 4 kbyte ingebouwd EEPROM-geheugen waar ontwikkelaars gebruik van kunnen maken.

Hier gaan we ervan uit dat de configuratiebehoefte binnen de 4 kbyte ligt. Als dat niet het geval is, moeten ontwikkelaars ofwel een extern geheugen gebruiken of via het flash-geheugen van de microcontroller extra EEPROM emuleren.

Ondanks de populariteit van EEPROM zijn er een aantal potentiële nadelen:

  • gewoonlijk beperkt tot 1.000.000 wis/schrijfcycli
  • shrijfcycli zijn ca 500 nanoseconden (ns)
  • meerdere instructies nodig om een cel te schrijven
  • gegevensretentie van 10 jaar of langer (tegenwoordig is 100 jaar of langer gebruikelijker)
  • gevoeligheid voor straling en hoge bedrijfstemperaturen

Voor veel toepassingen zijn EEPROM’s een uitstekende oplossing, maar voor toepassingen die een hoge mate van betrouwbaarheid vereisen — zoals in de medische wereld, de automobielindustrie of voor ruimtevaartsystemen — hebben ontwikkelaars een meer robuuste geheugenoplossing nodig, zoals FRAM.

FRAM is een afkorting van ‘Ferro Random Access Memory’ en biedt verschillende voordelen ten opzichte van EEPROM-geheugen:

  • het is sneller (schrijfcycli van minder dan 50 ns)
  • bevat meer schrijfcycli (meer dan 1 biljoen vergeleken met 1 miljoen voor EEPROM)
  • lagere spanning (vereist 1,5 volt)
  • beter bestand tegen straling

FRAM is verkrijgbaar in groottes vergelijkbaar met die voor EEPROM. De FRAM-familie van Cypress Semiconductor varieert bijvoorbeeld tussen 4 kbit en 4 Mbit. En de FM25L16B-GTR bevat 16 kbit (Afbeelding 2). Deze wordt geleverd in een SOIC-uitvoering met 8 pennen en werkt tot 20 MHz.

Afbeelding van de FRAM-familie van CypressAfbeelding 2: De FRAM-familie van Cypress wordt geleverd in geheugens variërend van 4 kbit tot 4 Mbit die via SPI aangesloten kunnen worden op een microcontroller om configuratie- en toepassingsgegevens op te slaan. De FM25L16B-GTR (afgebeeld) werkt bij snelheden tot 20 MHz. (Bron afbeelding: Cypress Semiconductor)

De hoogkwalitatieve CY15B104Q-LHXIT van Cypress Semiconductor heeft 4 Mbit en ondersteunt interfacesnelheden tot 40 MHz (Afbeelding 3). FRAM-geheugen heeft een aantal interessante kenmerken, zoals:

  • een gegevensretentieperiode van 151 jaar
  • 100 biljoen lees/schrijfcycli
  • is een rechtstreekse vervanging voor seriële flash en EEPROM

Zoals men zou vermoeden, is FRAM duurder dan EEPROM en daarom is het belangrijk zorgvuldig de omgevingsfactoren af te wegen bij het selecteren van het juiste geheugen voor een toepassing.

Afbeelding van de CY15B104Q-LHXIT, een 4 Mbit geheugencomponent van CypressAfbeelding 3: De CY15B104Q-LHXIT is een 4 Mbit component dat werkt tot 40 MHz. Het behoort tot de FRAM-familie van Cypress bestaande uit componenten variërend van 4 kbit tot 4 Mbit. (Bron afbeelding: Cypress Semiconductor)

Flash, eMMC en SD-kaarten in ingebedde systemen

Flashgeheugen in een ingebed systeem kan voor verschillende doeleinden worden gebruikt. Allereerst kan externe flash dienen als uitbreiding van het interne flashgeheugen om het totaal beschikbare geheugen voor de toepassingscode te vergroten. Dit wordt meestal gedaan met SPI flashmodules zoals de GD25Q80CTIGR van GigaDevice Semiconductor (Afbeelding 4). De GD25Q80CTIGR kan worden gebruikt om via de SPI-interface het interne geheugen met 8 Mbit uit te breiden, ervan uitgaande dat de microcontroller dat ondersteunt.

Afbeelding van GD25Q80CTIR flashgeheugen van GigaDevice Semiconductor LimitedAfbeelding 4: Het GD25Q80CTIR flashgeheugen van GigaDevice Semiconductor Limited kan worden gebruikt om via de SPI-poort het interne flashgeheugen met 8 Mbit uit te breiden. (Bron afbeelding: GigaDevice Semiconductor Limited)

Ten tweede kan extern flashgeheugen worden gebruikt, in plaats van EEPROM of FRAM, voor het opslaan van configuratie-informatie of toepassingsgegevens. Zo kan gebruik van een externe flashchip de productiekosten verlagen of het interne geheugen voor het opslaan van toepassingsgegevens vergroten. Microcontrollerpoorten en geheugentoewijzingen kunnen zodanig worden geconfigureerd dat het externe flashgeheugen hierin opgenomen wordt, zodat ontwikkelaars eenvoudiger toegang hebben zonder dat ze specifiek gebruik hoeven te maken van een driver, wat wel nodig is voor communicatie met een EEPROM of FRAM.

Een voorbeeld van extern flashgeheugen dat hiervoor kan worden gebruikt, is de AT25SF161 van Adesto Technologies (Afbeelding 5). Dit geheugen maakt gebruik van een Queued SPI (QSPI) interface. QSPI is een uitbreiding van het normale SPI-protocol en staat meer gegevensdoorvoer toe voor het systeem. Dit is met name interessant voor ontwikkelaars die tijdens een eenmalige transactie grote hoeveelheden gegevens moeten opslaan of ophalen.

QSPI verwijdert inmenging van de CPU en wijzigt de interface van standaard vier pennen (MOSI, miso, CLK en CS) naar zes pennen (CLK, CS, IO0, IO1, IO2 en IO3). Dit betekent dat er vier pennen beschikbaar zijn voor input en output in plaats van de traditionele twee pennen bij SPI.

Afbeelding van AT25SF161 extern flashgeheugen van Adesto TechnologiesAfbeelding 5: Het AT25SF161 externe flashgeheugen van Adesto Technologies kan worden gebruikt als intern flashgeheugen. Deze componenten beschikken over een QSPI-interface voor sneller opslaan en ophalen van gegevens. (Bron afbeelding: Adesto Technologies)

Tot slot kan flash worden gebruikt voor het opslaan van toepassingsgegevens en payload-informatie. Zo slaat een GPS-systeem bijvoorbeeld niet alle GPS-kaarten lokaal op de processor op, maar wordt een externe opslag gebruikt zoals een SD-kaart of een eMMC-geheugen. Deze opslagmedia kunnen via SPI of via een speciale SDIO-interface op een microcontroller worden aangesloten voor efficiënte communicatie met het externe geheugen.

De IS21ES04G-JCLI eMMC van ISSI verstrekt bijvoorbeeld 32 Gbit extra flashgeheugen en kan rechtstreeks worden aangesloten op een SDIO-interface op de microcontroller (Afbeelding 6).

Afbeelding van de eMMC flashmodule van ISSI met 32 Gbit geheugenAfbeelding 6: De ISSI eMMC flashmodule bevat 32 Gbit geheugen dat via SPI of SDIO op een host kan worden aangesloten. (Bron afbeelding: ISSI)

Wat betreft het elektrisch interface zijn een SD-kaart en eMMC-geheugen hetzelfde. Hoewel ze in verschillende uitvoeringen geleverd worden, hebben ze dezelfde gemeenschappelijke pennen om de apparaten op een microcontroller aan te sluiten. Toch kunnen de twee geheugentypen nogal van elkaar verschillen. Vergeleken met SD-kaarten vertoont eMMC over het algemeen de volgende verschillen:

  • robuuster en minder kans op fysieke beschadiging
  • snellere interactie
  • duurder
  • op de kaart gesoldeerd en dus niet verwijderbaar

Als een gebruiker de geheugenkaart niet hoeft te verwijderen, biedt eMMC een betere oplossing, maar dat is wel afhankelijk van de eindtoepassing. Hoe dan ook moeten ontwikkelaars hun geheugen zorgvuldig kiezen omdat er nogal wat verschillen zijn.

Een subsysteem dat in een auto wordt geplaatst kan bijvoorbeeld betrouwbaarder en hoogwaardiger geheugen vereisen dan standaard flash-componenten. In dat geval zou een ontwikkelaar geheugen kiezen dat goedgekeurd is voor gebruik in auto's zoals de SM668GE4-AC 4 Gbyte eMMC-module van Silicon Motion.

Ook wat betreft SD-kaarten moeten ontwikkelaars goed opletten, omdat, net als bij eMMC, niet alle SD-kaarten even goed zijn. Zo moeten ontwikkelaars zorgvuldig de snelheidsklasse en de bedrijfstemperatuur van de kaart evalueren. De meeste SD-kaarten zijn bijvoorbeeld geschikt voor 0 tot 70 ˚C, wat prima is voor consumentenelektronica.

Ook heeft elke kaart een snelheidsklasse die de maximale interfacesnelheid aangeeft die verwacht kan worden. Een kaart met klasse 2 is bijvoorbeeld langzaam voor een toepassing waarbij afbeeldingen worden opgeslagen, vergeleken met een kaart met klasse 10, zoals de SQF-MSDM1-4G-21C SQFlash 4 Gbyte microSD-kaart van Advantech, die is ontworpen voor HD video.

Afbeelding van de SQF-MSDM1-4G-21C SQFlash microSD-kaart van AdvantechAfbeelding 7: De SQF-MSDM1-4G-21C SQFlash microSD-kaart van Advantech bevat 4 Gbyte aan geheugen en heeft een high-end klasse 10 snelheidsindex. (Bron afbeelding: Advantech Corp)

Tips voor het selecteren van geheugen

Het kiezen van het juiste type geheugen en interface voor een ingebed product kan lastig zijn. Hier volgen een paar tips waar ontwikkelaars rekening mee moeten houden bij het kiezen van het juiste geheugen voor een toepassing:

  • Evalueer zorgvuldig de bedrijfscondities voor het geheugen zoals:
    • te verwachten wis/schrijfcycli
    • omgevingscondities en factoren zoals temperatuur, trilling en straling
    • vereisten voor het laden van gegevens
  • Documenteer de minimale, gewenste en maximale bitsnelheid die nodig is voor het succesvol gebruik van het geheugen voor de toepassing.
  • Selecteer het type geheugeninterface dat het best aansluit bij de gedocumenteerde gewenste bitsnelheid.
  • Selecteer voor extreme omgevingscondities, zoals voor automobiel- of ruimtevaartsystemen, geheugen dat geschikt is voor de autosector of dat stralingsbestendig is.
  • Gebruik een breakout-board voor het testen van de geselecteerde opslagmedia door ze te integreren met de microcontrollerontwikkelingsset.

Door deze tips te volgen, kunnen ontwikkelaars het juiste geheugen voor hun ingebedde toepassing kiezen.

Conclusie

Tegenwoordig hebben ontwikkelaars de keuze uit tal van non-vluchtige geheugencomponenten voor het opslaan van gegevens, van toepassingscode tot configuratiegegevens. Zoals aangetoond, moeten ontwikkelaars hun toepassingsbehoeften zorgvuldig evalueren en vervolgens een balans zien te vinden tussen de keuze van het juiste geheugentype en interface en de kosten.

 
DigiKey logo

Disclaimer: The opinions, beliefs, and viewpoints expressed by the various authors and/or forum participants on this website do not necessarily reflect the opinions, beliefs, and viewpoints of DigiKey or official policies of DigiKey.

Achtergrondinformatie over deze auteur

Image of Jacob Beningo

Jacob Beningo

Jacob Beningo is een embedded software consultant. Hij heeft meer dan 200 artikelen over embedded software ontwikkelingstechnieken gepubliceerd, is een veelgevraagde spreker en technische trainer en heeft drie universitaire graden, waaronder een Masters of Engineering bij de University of Michigan.

Over deze uitgever

De Noord-Amerikaanse redacteurs van DigiKey