Pomówmy o pamięciach EPROM


      Zapewne każdy, słyszał co nieco o pamięciach typu EPROM. Jest ich pełno w sprzęcie komputerowym i nie tylko. Co jak co, ale jest to jedna z niewielu dziedzin w której konstruktorzy doszli do pewnych uzgodniej i konsekwentnie się ich trzymają. Dzięki temu jest mniejszy bałagan w oznaczaniu końcówek, czego nie można powiedzieć o innych "seriach". Ale do rzeczy...

      Do czego służy pamięć EPROM? Jak sama nazwa wskazuje, do "pamiętania" zapisanych w niej danych. A te reprezentować mogą cokolwiek, np. stanowić ciąg rozkazów dla naszego kochanego procesorka 6502. Tak na dobrą sprawę pamięci EPROM powstały, bo to co istniało nie spełniało do końca oczekiwań. Pamięć stała, raz zapisana (zaprogramowana) nadawała się tylko do jednego, - do wmontowania w opracowany dla niej układ. Pamięć RAM jak każdy wie, ma jedną wadę, po zaniku zasilania, znika też to co w niej zapisano. A użytkownik chciałby sam sobie, w domu zaprogramować jakąś pamięć (prawda piraci!?). Wymyślono zatem coś takiego co można zaprogramować (zapisać), i wtedy działa to jak najzwyklejsza pamięć typu ROM, ale gdy się znudzi, to można to wykasować i ponownie zaprogramować w/g potrzeb nie wydając grosza! Mało tego, wyłączenie napięcia zasilania niczego nie psuje!

      Pora na konkrety. Sądzę że każdy wie co to linie danych i linie adresowe. Właśnie scalaczek, a ściślej mówiąc pamięć EPROM ma osiem wejść/wyjść danych oznaczanych D0-D7 oraz w zależności od pojemności kilka(naście) wejść adresowych. Dla innych systemów komputerowych stosuje się pamięci o szesnastu wejściach danych (D0-D15) i pojemności do 8MB, ale nasza Atarynka ma szynę danych ośmiobitową, więc pamięci ośmiobitowe są dla niej najodpowiedniejsze! Podając jakiś ciąg zer i jedynek na wejścia adresowe, wybieramy z szeregu komórek pamięci właśnie tą która została w ten sposób zaadresowana. I wtedy na wyjściach pojawia się to co "siedzi" w zaadresowanej komórce. Na tym nie koniec. Zazwyczaj tak jest że jeden scalaczek, to za mało. Przydałoby się więcej pamięci, wtedy wystarczy dokupić drugą i połączyć równolegle do pierwszej, nie zapominając o zbudowaniu odpowiedniego sterownika do tego.

      Ale... zaraz, zaraz, jak to równolegle? No tak, odnośne końcówki danych i adresowe łączymy z sobą, a że mądrzy ludzie pomyśleli, więc dodali jeszcze jedną końcówkę (pin) oznaczany CE z kreseczką na górze. Właśnie ta kreseczka (inaczej negacja) informuje o tym że aktywnym stanem jest stan zera logicznego. I teraz, podanie na ten pin (CE) zera logicznego powoduje że pamięć staje się aktywna, albo jak mówią inni dostępna dla procesorka. Widać stąd wyraźnie, że sterownik, to takie urządzenie które steruje wyborem odpowiednich modułów pamięci, by nie dochodziło do zwarć na szynie danych. A mogłoby to się zdarzyć w takim wypadku, gdyby dwie pamięci były aktywne, i np. na linii D0 jednej z nich pojawiłoby się zero logiczne a na drugiej jedynka logiczna! Gdy sygnał CE jest jedynką, to pomomo że pamięć jest wlutowana w układ, zachowuje się tak jakby jej nie było! Jest to możliwe dzięki temu, że tak wysterowana pamięć przełącza swe wyjścia w stan tzw. wysokiej impedancji, inaczej mówiąc są odłączone od szyny danych i procesorek "nie widzi" jej. Nieco wyżej napisałem że pamięć posiada końcówki oznaczane jako wejścia/ wyjścia. Jak to, ktoś powie. Po co takie dziwactwo. Chodzi o to, że tych samych pinów (końcówek) używa się na dwa sposoby. O tym jaką spełniają funkcję decyduje sygnał OE. Jest to jeszcze jeden pin, który znajdziemy na schematach pamięci EPROM. Jeżeli na tą końcówkę podana jest jedynka logiczna, to końcówki D0-D7 zachowują się jak wejścia, i w czasie programowania można na nie podawać to co ma zostać zapisane w pamięci. Jeżeli natomiast na tą końcówkę poda się zero logiczne, to końcówki D0-D7 służą jako wyjścia i na nich pojawia się zawartość zaadre sowanej komórki pamięci.

Krótka "tablica prawdy", podsumuje nasze wywody:
      __
      CE - 0 wybór pamięci, aktywna, 1 pamięć odłączona (wysoka impedancja)
      __
      OE - 0 piny D0-D7 pracują jako wyjścia, 1 piny D0-D7 pracują jako wejścia (w czasie programowania)

      Aby można było pamięć zaprogramować należy na końcówkę oznaczaną Vp podać napięcie programujące, nie jest to nic innego jak napięcie około +12.5V, bo tyle się stosuje w nowoczesnych pamięciach. Starsze typy wymagały by napięcie to miało wartość +21V a jeszcze wcześniejsze by było to +25V.

      Aby mógł zajść właściwy proces programowania (zapamiętania) czegokolwiek bez możliwości uszkodzenia pamięci, impuls progamujący powinien trwać bardzo krótko, kilka(naście) milisekund. Taki impuls wymusza się na końcówce oznaczanej PGM. Normalnie końcóka ta podłączona jest do plusa zasilania, tylko w czasie programowania wymusza się na niej krótki impuls programujący, czyli podaje się zero logiczne o ściśle określonym czasie. Trudno tu podać go precyzyjnie bo różne rodzaje pamięci wymagają by impuls ten był różnej długości, najlepiej zajrzeć do katalogu. Działanie sygnałów Vp i PGM opisuje poniższa tabelka.

      Vp      
+5V      
+12.5V
noramlna praca
napięcie programujące
      PGM      
+5V      
  0
normalna praca
krótki impuls programujący (1ms, 10ms itp...)

      W bardziej pojemnych pamięciach, by nie dokładać dodatkowych końcówek jest to rozwiązane inaczej, te same końcówki pełnią dwie funkcje. I tak, pamięci 2732 i 27512 nie mają wejść Vp i PGM, ale za to mają wejście oznaczane OE/Vp. Na to wejście w czasie programowania podaje się napięcie programujące +25V dla EPROM 2732, i i +12.5V dla EPROM 27512. Natomiast krótkie impulsy programujące podaje się na wejście CE. Z kolei w pamięci EPROM 27256 brak wejścia PGM. Tutaj rolę wejścia, na które podaje się krótkie impulsy programujące, pełni tylko wejście OE, a napięcie programujące +12.5V podaje się na końcówkę Vp.

      Co z tego wszystkiego wynika dla programisty? Ano nic, wystarczy że wie, że do pamięci EPROM w czasie normalnej pracy komputera nie można niczego wpisać, można tylko dokonać z niej odczytu. Ale już "rasowy" elektronik powinien wiedzieć jak używać poszczególnych końcówek by zaprogramować taką pamięć. Wypada dodać, że programowanie przeprowadza się na urządzonku które się zowie PROGRAMATOREM!

      A co zrobić by wykasować, taką pamięć? Nie jest to takie proste, należy zaopatrzyć się w lampę kwarcową i przez okres kilkunastu minut naświetlać ją promieniamu ultrafioletowymi. Wtedy, podobnie jak w czasie formatowania dysku, zniknie zapisana w niej informacja. Z tym że na zaformatowanym dysku w sektorach pojawiają się zera, natomiast wykasowana, (pusta) EPROM'ka ma w swoich komórkach same jedynki, czyli odczyt pustej pamięci daje same liczby 255 ($FF).

UWAGA! w czasie naświetlania nie można dopuścić by obudowa pamięci EPROM nagrzała się, o co bardzo łatwo pod lampą kwarcową. Dojdzie wtedy do trwałego uszkodzenia komórek i wyjdą "nici" w czasie kolejnego procesu programowania. Pamięć do kosza!

I jeszcze jedno, literatura podaje, by natężenie światła ultrafioletowego wynosiło 15-25Ws/cm kwadratowy. Jak to zmierzyć!? Intuicja podpowiada że nie obejdzie się bez prób, Doświadczenie uczy, że wystarczy lampą o mocy około 100W naświetlać pamięć z odległości około 30-40cm przez okres 15-45 minut.

Schemat przebiegów elektrycznych jakie występować powinny na wybranych końcówkach pamięci EPROM.

Opis przebiegu programowania pamięci EPROM 27512

  • Do wejścia OE/Vp podłączamy napięcie +12V, (+12.5V)
  • Na wejścia adresowe A0-A15 podajemy w kodzie binarnym adres komórki która ma zostać zaprogramowana. np. 0000000000000001 (zaadresowana jest druga komórka!)
  • Na wejścia danych D0-D7 podajemy w kodzie binarnym, wartość danej do zaprogramowania, np. 00111001
  • Na wejście oznaczone CE podajemy krótki impuls programujący, o czasie trwania 1ms (pamięci wykonane w różnych technologiach wymagają by ten impuls był dłuższy/któtszy, patrz katalog)
  • proces powtarzamy dla zaprogramowania innej komórki....

Zenon/DIAL