Podręcznik

8. Pamięci ROM i RAM

8.1. Pamięci ROM

Ogólnie rzecz biorąc pamięci dzielimy na ulotne (ang volatile memory) i nieulotne (ang. nonvolatile memory). Pamięci ulotne to takie, w których przechowywana informacja znika po wyłączeniu zasilania (tracimy ją bezpowrotnie) a nieulotne to takie, które nie tracą zapisanej informacji po wyłączeniu zasilania.

Wyobrażamy sobie pamięć jako zestaw m rejestrów n bitowych (por. rys 25), które nazywamy komórkami (ang locations). Każda komórka ma przyporządkowany adres a \in jednoznacznie ją identyfikujący. Możemy więc powiedzieć, że pamięć to zestaw zaadresowanych rejestrów. Podstawowymi parametrem pamięci jest jej pojemność wyrażana na ogół liczbą pamiętanych bajtów oraz długość pamiętanego w pamięci słowa. Każda pamięć ma specjalne wejście tzw. wejście adresowe na które podawany jest adres wybranej komórki. Pamięci dzielimy na 2 zasadnicze grupy: pamięci ROM (tylko do odczytu) i pamięci RAM (do odczytu i zapisu).

Rys.1. Pamięć jako zestaw rejestrów (tzw. komórek) zaadresowanych liczbami całkowitymi ze zbioru ; z reguły m=2^k dla pewnego k \in N, czyli liczba komórek pamięci jest na ogół potęgą 2

 

Pamięć ROM (ang. Read Only Memory) to inaczej tzw. pamięć stała (por. Rys. 2.). Jest to pamięć, z której możemy tylko odczytywać informacje podając na wejście adresowe pamięci ROM liczbę ze zbioru  czyli adres. Adres podawany jest z reguły w kodzie NKB (naturalny kod binarny). Nie tracimy danych po wyłączeniu zasilania pamięci ROM. Pamięć ROM zaliczana jest więc do kategorii pamięci nieulotnych (ang. nonvolatile memory). Wyjście danych jest na ogół wyjściem trójstanowym. Typowa pamięć stała ma 2 wejścia sterujące \mathrm{\overline{OE}} (output enable) i \mathrm{\overline{CE}} (chip enable). Stan wysokiej impedancji wyjścia uzyskujemy dla \mathrm{\overline{OE}=1}. Sygnał \mathrm{\overline{CE}=1} wyłącza układ ROM. Jeśli \mathrm{\overline{OE}=0} i \mathrm{\overline{CE}=0}, to na wyjściu mamy słowo n-bitowe napisane w pamięci pod adresem a.

Żeby pamięć ROM była użyteczna, musi być w pewien sposób jak mówimy zaprogramowana, tzn. do jej komórek muszą być wpisane słowa, które chcemy pamiętać. Współczesne pamięci ROM mogą być albo programowane maską w fabryce albo mogą być też w łatwy sposób programowane przez użytkownika. (są to tzw. pamięci PROM od ang. Programmable ROM).

Istnieje wiele typów pamięci PROM m.in. pamięci EPROM (Electrically Programmable ROM), EEPROM (Electrically Erasable ROM) oraz pamięci typu flash. Pamięci flash stanowią odmianę pamięci EEPROM czyli pamięci kasowalnych elektrycznie. Pamięci flash dają się jednak kasować (w całości lub dużych blokach) bardzo szybko (w około 1ms).

Najczęściej stosowanymi obecnie pamięciami ROM są właśnie pamięci typu flash. Np. część systemu operacyjnego komputera nazywana BIOS (Basic Input Output System) jest zapisywana z reguły w pamięci typu flash.

Z punktu widzenia teorii układów logicznych pamięć ROM jest uniwersalnym układem kombinacyjnym. Dlatego też wygodnie jest małe pamięci ROM realizować jako tzw. układy PLA (ang Programmable Logic Array) (por. następny podrozdział). Jednocześnie za pomocą pamięci ROM można łatwo zrealizować dowolny układ kombinacyjny lub automat skończony. Istota rzeczy polega tu oczywiście na zapamiętaniu funkcji boolowskiej lub funkcji przejść i wyjść opisującej automat.

Do współczesnych pamięci PROM można z reguły dane zapisywać wielokrotnie, ale zapis nowych danych trwa relatywnie długo w porównaniu z czasem odczytu lub wymaga użycia specjalnych urządzeń programujących tzw. programatorów (por. pamięci PROM, EPROM, EEPROM).

Wszystkie pamięci ROM są pamięciami półprzewodnikowymi choć oczywiście można skonstruować pamięć w której słowa binarne będziemy pamiętać za pomocą odpowiednio włączonych przełączników mechanicznych.

Rys. 2. Pamięć stała czyli pamięć ROM