Het geheugen
De verschillende toepassingen van het geheugen (opslag van een programma of opslag van gegevens) stellen verschillende eisen aan het geheugen.
Wanneer de micro-controller start (door de voeding aan te zetten, of door een 'reset' signaal), begint hij meteen met het uitvoeren van het programma. Zoals gezegd wordt de eerste instructie van een vooraf vastgelegd adres opgehaald. Het programma moet dus al in het programmageheugen aanwezig zijn. Het programmageheugen moet derhalve zijn inhoud bewaren, ook wanneer de voeding uit staat. Daarnaast is voor één bepaalde toepassing het programma steeds hetzelfde, waardoor het niet nodig is dat dit geheugen vaak opnieuw beschreven kan worden.
Wanneer het programma wordt uitgevoerd, wordt het datageheugen naar behoefte geladen met waarden. De inhoud van dit type geheugen hoeft niet bewaard te blijven als de voeding uit staat. De inhoud van het datageheugen wordt tijdens het uitvoeren van het programma doorgaans steeds gebruikt en aangepast door de CPU. Daardoor moet het datageheugen zowel gelezen als beschreven kunnen worden.
Geheugens zijn tegenwoordig in zeer veel verschillende uitvoeringen te koop. Het belangrijkste onderscheid tussen de verschillende uitvoeringen is nog steeds de toepassing als
Programma geheugen
De eenvoudigste vorm van programmageheugen is een geheugen waarin door de fabrikant van het IC al tijdens productie de inhoud wordt vastgelegd (volgens specificatie van de klant.) U kunt dit type het best vergelijken met een boek, dat door de uitgever wordt gedrukt met een vastgelegde inhoud, die naderhand niet gewijzigd kan worden. Heel toepasselijk heten deze geheugens Read Only Memory ofwel ROM.
Dit type geheugen is zeer goedkoop in heel grote aantallen, en is vaak aanwezig in
micro-controllers. Ook in de 68HC11 is dit geheugen aanwezig. Uiteraard heeft U daar niets aan, omdat U het zelf niet kunt programmeren.
Gelukkig kan op de 68HC11 dit geheugen ook uitgeschakeld worden
Een hierop volgend type programmageheugen is door de gebruiker éénmalig te programmeren met de door hem gewenste inhoud. Hiervoor is speciale apparatuur nodig, en de inhoud kan later niet gewijzigd worden. Dit type heet Programmable Read Only Memory ofwel PROM. Vergelijk dit type met bijvoorbeeld een telefoonklapper, die 'leeg' wordt geleverd, en door U (in principe éénmalig) kan worden beschreven.
Een variant hiervan kan door de gebruiker middels speciale apparatuur geprogrammeerd worden, en later weer gewist. Het wissen gaat via ultra-violet licht. Deze IC's zijn dan ook te herkennen aan een kwarts-venster in de behuizing, zodat het licht bij de chip kan. Dit type heet Erasable Programmable Read Only Memory (EPROM) en wordt vanwege de betrekkelijk lage prijs erg veel toegepast.
Ook in IC's waarvan de behuizing geen venster heeft. Die zijn dus ook niet
te wissen, net als bij PROM. Deze variant heet One Time Programmable, of
OTP.
Een andere ontwikkeling is een EPROM die niet via ultra-violet gewist wordt, maar via een sterk elektrisch veld. Daarnaast
kan dit geheugen veel sneller gewist worden (wissen met ultra-violet kost ongeveer 20 minuten, deze
geheugens kunnen in enkele seconden gewist worden.) Deze geheugens noemt men FLASH-EPROM's. Zowel EPROM's als FLASH-EPROM's moeten volledig gewist worden voordat ze opnieuw geprogrammeerd kunnen worden. Voor deze geheugens geldt dat het aantal keren dat de cellen kunnen worden gewist en opnieuw geprogrammeerd, beperkt
is.
De meest flexibele variant van een 'vast' geheugen, is een geheugen dat per geheugenplaats elektrisch geprogrammeerd en gewist kan worden, zonder dat er speciale apparatuur nodig is voor het programmeren of het wissen. Dit type heet Electrically Erasable Programmable Read Only Memory, ofwel EEPROM. Dit type geheugen kan snel gelezen worden. Wissen van een geheugenlocatie kost ongeveer 10 milli-seconden, en programmeren van een geheugenlocatie kost eveneens ongeveer 10 milli-seconden. Dit is het type geheugen dat
vaak wordt gebruikt om gegevens op te slaan die niet vaak veranderen, en
bewaard moeten blijven als de spanning weg is. Bijvoorbeeld instellingen
die de gebruiker heeft gedaan, of calibratie factoren. In de 68HC11 kan
dit type geheugen ook worden gebruikt als programmageheugen.
Data geheugen
Datageheugen moet snel beschreven en gelezen kunnen worden, maar hoeft de inhoud niet te bewaren als de voedingsspanning wordt weggenomen. Hiervan bestaan twee typen.
Dynamisch geheugen is opgebouwd uit kleine condensatoren waar, afhankelijk van de inhoud van het geheugen, al dan niet lading in wordt opgeborgen. Aangezien de lading langzaam uit de condensatoren wegloopt, moet de inhoud van het geheugen regelmatig ververst worden. Hiervoor zijn extra schakelingen in de computer nodig. Dit type geheugen kan echter zeer klein zijn, zodat bijzonder veel geheugencellen op één chip kunnen worden ondergebracht. Wanneer veel geheugen nodig is, weegt dit al snel op tegen de extra schakelingen die nodig zijn om de inhoud regelmatig te verversen. Dit type geheugen (Dynamic Random Access Memory ofwel DRAM) vindt U in Uw PC.
Statisch geheugen is opgebouwd uit logische schakelingen die in twee 'standen' kunnen staan (flip-flops.) Deze stand blijft zonder speciale maatregelen bestaan zolang de voeding aanwezig is. Dit type datageheugen is eenvoudiger toe te passen dan DRAM, maar de geheugencellen zijn iets groter zodat minder geheugen op een chip past. Omdat geen extra schakeling voor het verversen van de inhoud nodig is (en daardoor ook minder energie wordt gebruikt) is dit type geheugen het meest geschikt wanneer betrekkelijk weinig datageheugen nodig is. Dit type geheugen (Static Random Access Memory ofwel SRAM) is aanwezig in de
meeste micro-controllers, en ook in de 68HC11.
Welk geheugen kiezen?
Waar wordt nu welk type geheugen toegepast? Er zijn vier afwegingen te maken:
Wanneer het niet nodig is het geheugen na de produktie te programmeren, volstaat ROM. Moet het geheugen slechts éénmalig geprogrammeerd kunnen worden dan is PROM
of OTP het aangewezen geheugen. Is het nodig dat het geheugen zonder voedingsspanning toch de opgeslagen gegevens bewaart, en moet het geheugen desondanks herhaald programmeerbaar en wisbaar zijn, dan kan hiervoor EPROM, FLASH-EPROM of EEPROM worden gebruikt. EPROM vereist de meest omslachtige methode, maar is erg goedkoop. FLASH-EPROM
kan in de schakeling blijven bij het programmeren en wissen. Wissen en opnieuw programmeren kan ook betrekkelijk snel gebeuren. EPROM's en FLASH-EPROM's zijn met grote geheugen-capaciteit per chip te koop. EEPROM is relatief duur en kan alleen in betrekkelijk lage geheugencapaciteit per chip worden geproduceerd. EEPROM is wel erg flexibel en eenvoudig in het gebruik.
Een alternatieve methode om een niet-vluchtig geheugen te maken is een vluchtig geheugen te voorzien van een batterij die de voedingsspanning verzorgt wanneer het apparaat uit staat. Hiervoor leent alleen SRAM zich. De methode wordt veel toegepast vanwege de lage prijs van de geheugens die gebruikt kunnen worden.
In huishoudelijke apparatuur worden vaak instellingen bewaard. Denk maar aan de zenderinstelling op Uw TV. Dit is een voorbeeld van de toepassing van niet-vluchtig programmeerbaar geheugen. Bij de wat oudere apparatuur ziet men soms dat de instelling verloren gaat wanneer de steker uit het stopcontact wordt genomen. Dit betekent dat de instellingen hier worden bewaard in geheugen dat in principe vluchtig is maar dat uit het net wordt gevoed, ook als het apparaat uit staat. Soms betekent het ook dat het batterijtje dat de geheugens moet voeden als de steker uit het stopcontact is genomen, leeg is.
Bij zakrekenmachientjes is het vaak zo dat gegevens die in het geheugen staan, verloren gaan bij het verwisselen van de batterij. Vaak kan men echter de gegevens behouden door de batterijen binnen een bepaalde tijd te vervangen. De geheugens worden dan gedurende de periode dat er geen batterij aanwezig is gevoed uit de lading van de condensatoren die in de rekenmachine zitten. Soms wordt er voor dit doel speciaal een wat grotere condensator ingebouwd.
Geheugen lezen en schrijven
Het lezen of schrijven op een bepaald adres in het geheugen vindt als volgt plaats. Het geheugen kan worden beschouwd als een lijst. Iedere plaats op de lijst heeft een adres. De processor heeft een bepaald bereik in de adressen die kunnen worden aangestuurd. Vaak lopen de bereikbare adressen van 0 t/m 65.535
(2^16). Het aansturen van een adres gebeurt door een digitale code die met een bepaald adres correspondeert op de z.g.
adresbus te zetten. De adres-bus bestaat uit een aantal verbindingen tussen
microprocessor en geheugen. Afhankelijk van de code wordt één bepaald adres in het geheugen geactiveerd. Na het activeren van de juiste geheugenplaats geeft de
microprocessor met een ander signaal aan of er data in het geheugen moet worden geschreven of dat er data uit het geheugen moet worden gelezen. Bij het lezen uit het geheugen wordt door het geheugen de informatie uit de geactiveerde geheugenplaats op de z.g.
databus gezet. De data-bus is net als de adresbus een verzameling verbindingen tussen
microprocessor en het geheugen. De micro-controller leest dan vervolgens de gegevens van de
databus in. Bij het schrijven naar het geheugen wordt door de
microprocessor de data op de databus gezet en leest het geheugen de data in op het geactiveerde adres.
Samengevat:
Lezen
-
de CPU activeert de geheugenplaats door de juiste code op de
adresbus te plaatsen
-
de CPU geeft het signaal 'lezen', waardoor het geheugen de opgeslagen data beschikbaar maakt op de
databus
-
de CPU leest de gegevens in van de databus
Schrijven
-
de CPU activeert de geheugenplaats door de juiste code op de
adresbus te plaatsen
-
de CPU zet de te schrijven gegevens op de databus
-
de CPU geeft het signaal 'schrijven'
-
het geheugen leest de gegevens in van de databus
De adresbus wordt uitsluitend voor adressen gebruikt, de databus uitsluitend voor de uitwisseling van gegevens tussen processor en aangesloten chips. De informatie op de
adresbus gaat altijd van de processor naar het geheugen. De databus kan informatie in twee richtingen transporteren.
Byte en kilobyte
De grootte van een geheugen (het aantal geheugenplaatsen dat beschikbaar is) wordt meestal opgegeven in 'k'-byte (kilo byte.) Wanneer er 10 adreslijnen beschikbaar zijn, kunnen er met deze 10 adreslijnen
2^10 verschillende combinaties gemaakt worden, en dus 2^10 verschillende geheugenlocaties worden aangewezen. Min- of meer toevallig is
2^10 ongeveer 1000 (1024 om precies te zijn.) Vandaar dat een blok van 1024 bytes één kByte, of kB genoemd wordt. Zo kan met 20 adreslijnen
2^20 = 1048576 bytes geadresseerd worden. Dit noemt men 1MB (Mega-byte.)
De meeste micro-controllers hebben een adresbus met 16 lijnen, wat neerkomt op een geheugenruimte van 64kB. Natuurlijk hoeft niet op elke adreslocatie daadwerkelijk geheugen aanwezig te zijn.
|