Emulator EPROM
: czwartek 27 lip 2017, 23:43
Emulator pamięci EPROM 27C64, 27C128, 27C256, 27C512
Pamięci EPROM mają różnorodne zastosowania. Poczynając od typowych zastosowań (jak pamięci na program w różnych systemach z użyciem mikroprocesorów) kończąc na zastosowaniach nietypowych (jak choćby monitor szyny opisany w ….). Nie jest dziwne, że tworząc zawartość tej pamięci konieczne jest wykonanie iluś tam testów, poprawek, modyfikacji. W tym miejscu napotykamy trochę mało sympatyczną cechę tego typu układów, mianowicie zaprogramowana pamięć wymaga pewnych zabiegów by ją „oczyścić”. Proces filozoficznie jest dość prosty, należy taką pamięć naświetlić odpowiednim widmem światła UV. W rzeczywistości nie wygląda to tak różowo, gdyż przede wszystkim zajmuje to ileś czasu. Można, rzecz jasna, posiłkować się odpowiednio dużą ilością tych układów i dokonywać kasowania EPROM'ów hurtem. Mając kilkanaście (kilkadziesiąt) układów można je podzielić na dwie grupy i zanim zdążymy jeden zestaw „pobrudzić”, drugi może przejść proces „prania”. Nie jest to rozwiązanie doskonałe, ale zawsze … jakieś. Poza tym każde zaprogramowanie pamięci skraca jej żywotność, istnieje limit (dość spory, ale istnieje) liczby zaprogramowań.
Najbardziej sensownym rozwiązanie jest zbudowanie urządzenia, które będzie udawać pamięć EPROM. Oparte o pamięć statyczną nie ma żadnego limitu przeprogramowań, nie wymaga żadnych operacji kasowania. Koncepcja urządzenia sprowadza się do tego, że jakiś mikrokontroler „posiądzie” statyczną pamięć RAM, dokona odpowiednich zapisów i cały układ (pamięci RAM) „odda” we władanie komuś innemu. Z całej gamy różnych mikrokontrolerów doskonale do tego celu nadaje się 80C51, gdyż ma możliwość obsłużenia zewnętrznej pamięci RAM o pojemności 64kB. Dodatkowo ma troszkę własnej, wewnętrznej pamięci RAM, która będzie wykorzystana na potrzeby procka C51.
Konstrukcja tego emulatora pamięci pochodzi z lat 90-tych ubiegłego wieku, więc nie należy się dziwić, że na schemacie występują układy logiczne z rodziny 74LS, w obecnych czasach powszechnie stosowane są układy 74HCT lub 74HC (funkcjonalnie są to identyczne układy, różnią się jedynie technologią wykonania).
Schemat blokowy pokazuje poniższa ilustracja. Jednostka centralna, serce całego emulatora, pokazuje poniższa ilustracja: Zawiera ona klasyczne rozwiązanie dla procesora 80C51 (80C31 – jest wersją ROMLESS procesora 80C51), czyli do samego mikrokontrolera (U101) dodany jest zatrzask 74LS573 (U102) oraz pamięć na program dla mikrokontrolera 27C64 (U103). Wraz z elementami do generowania sygnału reset dla proca (C101, R101), obwodem generatora sygnału zegarowego (X101, C102, C103) stanowią standardową aplikację procka z rodziny C51. Układ Max232 (U108 wraz z okolicami) tworzy kanał komunikacyjny z odpowiednim programem w komputerze PC do sterowania emulatorem pamięci EPROM. Zestaw łączników trójstanowych 74LS245 (U104, U105, U106) pozwala ma „przyłączenie” lub „odcięcie się” do układu pamięci statycznej RAM. Na bramkach 74LS00 (U107) wypracowany jest sygnał aktywacje zewnętrznej pamięci RAM. Sama pamięć RAM (U201), tu zastosowany jest popularny układ pamięci o pojemności 128kB, jest sterowana przez sygnały pochodzące od mikrokontrolera (port MCSM) lub od środowiska, w którym emulowany jest EPROM (port CCSM). Te sygnały sterujące są komutowane przez zestaw łączników trójstanowych 74LS125 (U202). Zastosowana pamięć o pojemności 128kB jest przewymiarowana, ale w tym przypadku „górę” wzięła dostępność układu na polskim rynku (istnieją układy pamięci RAM o pojemności 64kB, ale są, a przynajmniej wtedy były, mało popularne).
Kolejna ilustracja przedstawia „dostęp” do pamięci EPROM (udawany przez RAM) od strony systemu, w którym emulowany jest EPROM. Podstawkę na pamięć EPROM w „obcym systemie” udaje złącze P301. Sygnały z tego złącza poprzez zestaw łączników trójstanowych 74LS245 komutują odpowiednie sygnały do wewnętrznej szyny danych i adresowej do pamięci RAM. Wszystkie emulowane typy EPROM mają obudowy o 28 wyprowadzeniach i poprzez właściwy zestaw łączników trójstanowych 74LS244 komutujących ze złącza emulatora właściwe linie adresowe dla pamięci RAM.
W skład urządzenia wchodzi zestaw lampek LED sygnalizujących stan pracy emulatora oraz obwód pozwalający na wygenerowanie reseta dla obcego systemu (ilustracja poniżej). Generowanie sygnału reset dla obcego systemu jest zrealizowane w oparciu o przekaźnik. Nie zawsze wejście reset w procesorze jest zwarciem do masy (jak w AVR, Z80, ARM), czasem wymaga podania innego potencjału (jak przykładowo w C51). Rozwiązanie z przekaźnikiem pozwala uzyskać pełną uniwersalność (wyjście reset z emulatora jest zwierno/rozwierne). W trakcie ładowania zawartości do udawanej pamięci EPROM, obcy procesor może być trzymany w stanie reset.
Całość uzupełnia złącze do „śledzenia” co poczynia z pamięcią obcy system (ilustracja poniżej). Zostało to przewidziane jako rozszerzenie do emulatora (dodatkowa płytka z elektroniką wpięta w złącze mogłaby pokazywać przykładowo adres i dane na wyświetlaczu).
Całość zamyka zasilicz (bez jakiejkolwiek finezji). Do powyższego schematu powstała płytka PCB.
Lista elementów:
Szt.
1 - 80C31PLCC, mikrokontroler z rodziny C51 - U101
1 - 27C64, EPROM - U103
1 - CXK591000, statyczna RAM - U201
5 - 74LS245, układ cyfrowy - U104,U105,U106,U302,U303
1 - 74ALS573, układ cyfrowy - U102
1 - 74LS125, układ cyfrowy - U202
1 - 74LS32, układ cyfrowy - U301
1 - 74LS00, układ cyfrowy - U107
3 - 74LS244, układ cyfrowy - U304,U305,U306
1 - 74LS139, układ cyfrowy - U309
1 - MAX232, interfejs RS232 - U108
1 - BC547, tranzystor - Q501
1 - LM7805, stabilizator napięcia - U601
1 - PNP, tranzystor mocy w obudowie TO220 - Q601
3 - 1N4001, dioda - D501,D601,D602
2 - LED ŻÓŁTA, LED fi 5 - D405,D406
1 - LED ZIELONA, LED fi 5 - D409
7 - LED CZERWONA, LED fi 5 - D401,D402,D403,D404,D407,D408,D502
1 - 11.0592, rezonator kwarcowy - X101
10 - 220, rezystor - R401,R402,R403,R404,R405,R406,R407,R408,R409,R502
1 - 10k, rezystor - R501
1 - 2.2, rezystor - R601
1 - 8k2, rezystor - R101
9 - 4k7, rezystor - R102,R103,R104,R105,R106,R107,R201,R202,R203
1 - 2200u, kondensator elektrolityczny - C601
6 - 10u, kondensator elektrolityczny - C602,C101,C104,C105,C106,C107
18 - 100n, kondensator, C603,CB101,CB102,CB103,CB104,CB105,CB106,CB107,CB201,CB202,CB301,CB302,CB303,CB304,CB305,CB306,CB309,C604
2 - 20p, kondensator, C102,C103
1 - listwa GOLDPIN 2x17 PIN - JP401
1 - ZŁĄCZE KĄTOWE Z ŁAPKAMI - P301
1 - RELAY SPDT - K501
1 - listwa GOLDPIN 3 piny - JP501
4 - ZŁĄCZE ŚRUBKOWE 2-PINOWE - P601,P602,P603,P604
1 - TRAFO SIECIOWE 2*9VAC - T601
1 - DB9 kątowe mękie - P101
Pamięci EPROM mają różnorodne zastosowania. Poczynając od typowych zastosowań (jak pamięci na program w różnych systemach z użyciem mikroprocesorów) kończąc na zastosowaniach nietypowych (jak choćby monitor szyny opisany w ….). Nie jest dziwne, że tworząc zawartość tej pamięci konieczne jest wykonanie iluś tam testów, poprawek, modyfikacji. W tym miejscu napotykamy trochę mało sympatyczną cechę tego typu układów, mianowicie zaprogramowana pamięć wymaga pewnych zabiegów by ją „oczyścić”. Proces filozoficznie jest dość prosty, należy taką pamięć naświetlić odpowiednim widmem światła UV. W rzeczywistości nie wygląda to tak różowo, gdyż przede wszystkim zajmuje to ileś czasu. Można, rzecz jasna, posiłkować się odpowiednio dużą ilością tych układów i dokonywać kasowania EPROM'ów hurtem. Mając kilkanaście (kilkadziesiąt) układów można je podzielić na dwie grupy i zanim zdążymy jeden zestaw „pobrudzić”, drugi może przejść proces „prania”. Nie jest to rozwiązanie doskonałe, ale zawsze … jakieś. Poza tym każde zaprogramowanie pamięci skraca jej żywotność, istnieje limit (dość spory, ale istnieje) liczby zaprogramowań.
Najbardziej sensownym rozwiązanie jest zbudowanie urządzenia, które będzie udawać pamięć EPROM. Oparte o pamięć statyczną nie ma żadnego limitu przeprogramowań, nie wymaga żadnych operacji kasowania. Koncepcja urządzenia sprowadza się do tego, że jakiś mikrokontroler „posiądzie” statyczną pamięć RAM, dokona odpowiednich zapisów i cały układ (pamięci RAM) „odda” we władanie komuś innemu. Z całej gamy różnych mikrokontrolerów doskonale do tego celu nadaje się 80C51, gdyż ma możliwość obsłużenia zewnętrznej pamięci RAM o pojemności 64kB. Dodatkowo ma troszkę własnej, wewnętrznej pamięci RAM, która będzie wykorzystana na potrzeby procka C51.
Konstrukcja tego emulatora pamięci pochodzi z lat 90-tych ubiegłego wieku, więc nie należy się dziwić, że na schemacie występują układy logiczne z rodziny 74LS, w obecnych czasach powszechnie stosowane są układy 74HCT lub 74HC (funkcjonalnie są to identyczne układy, różnią się jedynie technologią wykonania).
Schemat blokowy pokazuje poniższa ilustracja. Jednostka centralna, serce całego emulatora, pokazuje poniższa ilustracja: Zawiera ona klasyczne rozwiązanie dla procesora 80C51 (80C31 – jest wersją ROMLESS procesora 80C51), czyli do samego mikrokontrolera (U101) dodany jest zatrzask 74LS573 (U102) oraz pamięć na program dla mikrokontrolera 27C64 (U103). Wraz z elementami do generowania sygnału reset dla proca (C101, R101), obwodem generatora sygnału zegarowego (X101, C102, C103) stanowią standardową aplikację procka z rodziny C51. Układ Max232 (U108 wraz z okolicami) tworzy kanał komunikacyjny z odpowiednim programem w komputerze PC do sterowania emulatorem pamięci EPROM. Zestaw łączników trójstanowych 74LS245 (U104, U105, U106) pozwala ma „przyłączenie” lub „odcięcie się” do układu pamięci statycznej RAM. Na bramkach 74LS00 (U107) wypracowany jest sygnał aktywacje zewnętrznej pamięci RAM. Sama pamięć RAM (U201), tu zastosowany jest popularny układ pamięci o pojemności 128kB, jest sterowana przez sygnały pochodzące od mikrokontrolera (port MCSM) lub od środowiska, w którym emulowany jest EPROM (port CCSM). Te sygnały sterujące są komutowane przez zestaw łączników trójstanowych 74LS125 (U202). Zastosowana pamięć o pojemności 128kB jest przewymiarowana, ale w tym przypadku „górę” wzięła dostępność układu na polskim rynku (istnieją układy pamięci RAM o pojemności 64kB, ale są, a przynajmniej wtedy były, mało popularne).
Kolejna ilustracja przedstawia „dostęp” do pamięci EPROM (udawany przez RAM) od strony systemu, w którym emulowany jest EPROM. Podstawkę na pamięć EPROM w „obcym systemie” udaje złącze P301. Sygnały z tego złącza poprzez zestaw łączników trójstanowych 74LS245 komutują odpowiednie sygnały do wewnętrznej szyny danych i adresowej do pamięci RAM. Wszystkie emulowane typy EPROM mają obudowy o 28 wyprowadzeniach i poprzez właściwy zestaw łączników trójstanowych 74LS244 komutujących ze złącza emulatora właściwe linie adresowe dla pamięci RAM.
W skład urządzenia wchodzi zestaw lampek LED sygnalizujących stan pracy emulatora oraz obwód pozwalający na wygenerowanie reseta dla obcego systemu (ilustracja poniżej). Generowanie sygnału reset dla obcego systemu jest zrealizowane w oparciu o przekaźnik. Nie zawsze wejście reset w procesorze jest zwarciem do masy (jak w AVR, Z80, ARM), czasem wymaga podania innego potencjału (jak przykładowo w C51). Rozwiązanie z przekaźnikiem pozwala uzyskać pełną uniwersalność (wyjście reset z emulatora jest zwierno/rozwierne). W trakcie ładowania zawartości do udawanej pamięci EPROM, obcy procesor może być trzymany w stanie reset.
Całość uzupełnia złącze do „śledzenia” co poczynia z pamięcią obcy system (ilustracja poniżej). Zostało to przewidziane jako rozszerzenie do emulatora (dodatkowa płytka z elektroniką wpięta w złącze mogłaby pokazywać przykładowo adres i dane na wyświetlaczu).
Całość zamyka zasilicz (bez jakiejkolwiek finezji). Do powyższego schematu powstała płytka PCB.
Lista elementów:
Szt.
1 - 80C31PLCC, mikrokontroler z rodziny C51 - U101
1 - 27C64, EPROM - U103
1 - CXK591000, statyczna RAM - U201
5 - 74LS245, układ cyfrowy - U104,U105,U106,U302,U303
1 - 74ALS573, układ cyfrowy - U102
1 - 74LS125, układ cyfrowy - U202
1 - 74LS32, układ cyfrowy - U301
1 - 74LS00, układ cyfrowy - U107
3 - 74LS244, układ cyfrowy - U304,U305,U306
1 - 74LS139, układ cyfrowy - U309
1 - MAX232, interfejs RS232 - U108
1 - BC547, tranzystor - Q501
1 - LM7805, stabilizator napięcia - U601
1 - PNP, tranzystor mocy w obudowie TO220 - Q601
3 - 1N4001, dioda - D501,D601,D602
2 - LED ŻÓŁTA, LED fi 5 - D405,D406
1 - LED ZIELONA, LED fi 5 - D409
7 - LED CZERWONA, LED fi 5 - D401,D402,D403,D404,D407,D408,D502
1 - 11.0592, rezonator kwarcowy - X101
10 - 220, rezystor - R401,R402,R403,R404,R405,R406,R407,R408,R409,R502
1 - 10k, rezystor - R501
1 - 2.2, rezystor - R601
1 - 8k2, rezystor - R101
9 - 4k7, rezystor - R102,R103,R104,R105,R106,R107,R201,R202,R203
1 - 2200u, kondensator elektrolityczny - C601
6 - 10u, kondensator elektrolityczny - C602,C101,C104,C105,C106,C107
18 - 100n, kondensator, C603,CB101,CB102,CB103,CB104,CB105,CB106,CB107,CB201,CB202,CB301,CB302,CB303,CB304,CB305,CB306,CB309,C604
2 - 20p, kondensator, C102,C103
1 - listwa GOLDPIN 2x17 PIN - JP401
1 - ZŁĄCZE KĄTOWE Z ŁAPKAMI - P301
1 - RELAY SPDT - K501
1 - listwa GOLDPIN 3 piny - JP501
4 - ZŁĄCZE ŚRUBKOWE 2-PINOWE - P601,P602,P603,P604
1 - TRAFO SIECIOWE 2*9VAC - T601
1 - DB9 kątowe mękie - P101