Emulator EPROM
Emulator EPROM
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
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Ostatnio zmieniony niedziela 30 lip 2017, 20:17 przez gaweł, łącznie zmieniany 1 raz.
Prawdziwe słowa nie są przyjemne. Przyjemne słowa nie są prawdziwe.
Lao Tse
- Nefarious19
- Newb
- Posty: 80
- Rejestracja: sobota 02 sty 2016, 20:45
Re: Emulator EPROM
Moze nie na temat ale... w jakim sofcie rysujesz schematy i PCB ?
Plany na przyszłość: C, C++, C#
Re: Emulator EPROM
A co do oprogramowania - ładuje się intel hex? bin? pewnie od strony PC też jakiś programik komunikacyjny jest, rozwiniesz temat?
______________________________________________ ____ ___ __ _ _ _ _
Kończysz tworzyć dopiero, gdy umierasz. (Marina Abramović)
Kończysz tworzyć dopiero, gdy umierasz. (Marina Abramović)
- ZbeeGin
- User
- Posty: 492
- Rejestracja: sobota 08 lip 2017, 17:16
- Lokalizacja: Śląsko-Zagłębiowska Metropolia
- Kontaktowanie:
Re: Emulator EPROM
Nefarious19 pisze:Moze nie na temat ale... w jakim sofcie rysujesz schematy i PCB ?
W tamtych latach nie było zbyt dużego wyboru. OrCAD 386 i Protel Traxedit były na porządku dziennym.
Problem pojawiał się wtedy, gdy ktoś miał do dyspozycji tylko Hercules-a i miał projektować dwustronny druk...
Re: Emulator EPROM
tasza pisze:A co do oprogramowania - ładuje się intel hex? bin? pewnie od strony PC też jakiś programik komunikacyjny jest, rozwiniesz temat?
Cierpliwości, wszystko będzie (za małe moce przerobowe). Na PC jest już napisany program w lazarusie. Do C51 jest program w asm.
Prawdziwe słowa nie są przyjemne. Przyjemne słowa nie są prawdziwe.
Lao Tse
Re: Emulator EPROM
Nefarious19 pisze:Moze nie na temat ale... w jakim sofcie rysujesz schematy i PCB ?
Generalnie to mój prywatny soft. Nie będę zaprzeczał, że rysowanie schematów jest wzorowane na orcad. PCB jest w AUTOTRAX 1.61, wydruk rysunków płytek →mój prywatny soft (może nadejdzie taki czas, że opiszę i opublikuję czas)
Prawdziwe słowa nie są przyjemne. Przyjemne słowa nie są prawdziwe.
Lao Tse
Re: Emulator EPROM
gaweł pisze:Na PC jest już napisany program w lazarusie.
ooo, no to doczekać się nie mogę, a na jakim komponencie masz zrobiony serial port?
gaweł pisze:....wydruk rysunków płytek →mój prywatny soft
jednak ciągle mnie zaskakujesz
______________________________________________ ____ ___ __ _ _ _ _
Kończysz tworzyć dopiero, gdy umierasz. (Marina Abramović)
Kończysz tworzyć dopiero, gdy umierasz. (Marina Abramović)
Re: Emulator EPROM
Super! Przymarzam się do większego projektu na 6502, coś takiego by się przydało, tylko może bardziej kompaktowego
Gott weiß ich will kein Engel sein.
Re: Emulator EPROM
tasza pisze:ooo, no to doczekać się nie mogę,
Najbliższe dni
tasza pisze:a na jakim komponencie masz zrobiony serial port?
Polecanym przez ciebie.
tasza pisze:jednak ciągle mnie zaskakujesz
Tyle czasu się znamy... i nie wiesz, że jestem nieprzewidywalny?
Prawdziwe słowa nie są przyjemne. Przyjemne słowa nie są prawdziwe.
Lao Tse
Re: Emulator EPROM
PROTON pisze:Super! Przymarzam się do większego projektu na 6502, coś takiego by się przydało, tylko może bardziej kompaktowego
Zawsze wszystkie PCB wykonane fabrycznie robiłem w kilku egzemplarzach, mogę sztukę wyczarterować.
Prawdziwe słowa nie są przyjemne. Przyjemne słowa nie są prawdziwe.
Lao Tse
Re: Emulator EPROM
OK. Jak projekt dojrzeje do realizacji to się odezwę w tej sprawie.
Gott weiß ich will kein Engel sein.
Re: Emulator EPROM
Reverse Engineering
Grzebiąc po archiwalnych CD-ach okazało się, że plik z PCB nie odczytuje się , co za niefart. Jednak co to znaczy determinacja. Na szczęście zachowały się oryginalne klisze do produkcji PCB, więc...
suwmiarka z elektronicznym odczytem w calach, tydzień cierpliwości, AUTOTRAX (lista połączeń jakoś się zachowała) zmontowany egzemplarz PCB i ... jakoś się dało odtworzyć.
Załącznik: PCB AUTOTRAX 1.61
Grzebiąc po archiwalnych CD-ach okazało się, że plik z PCB nie odczytuje się , co za niefart. Jednak co to znaczy determinacja. Na szczęście zachowały się oryginalne klisze do produkcji PCB, więc...
suwmiarka z elektronicznym odczytem w calach, tydzień cierpliwości, AUTOTRAX (lista połączeń jakoś się zachowała) zmontowany egzemplarz PCB i ... jakoś się dało odtworzyć.
Załącznik: PCB AUTOTRAX 1.61
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Ostatnio zmieniony niedziela 30 lip 2017, 20:20 przez gaweł, łącznie zmieniany 1 raz.
Prawdziwe słowa nie są przyjemne. Przyjemne słowa nie są prawdziwe.
Lao Tse
Re: Emulator EPROM
Spróbuj na innym napędzie CD, jak będę potrzebował takiego urządzenia to raczej pójdę na łatwiznę i zrobię coś w SMD.
Gott weiß ich will kein Engel sein.
Re: Emulator EPROM
PROTON pisze:Spróbuj na innym napędzie CD, jak będę potrzebował takiego urządzenia to raczej pójdę na łatwiznę i zrobię coś w SMD.
Ma się rozumieć, że wcześniej próbowałem na kilku napędach. Teraz to już nie ma żadnego znaczenia.
Prawdziwe słowa nie są przyjemne. Przyjemne słowa nie są prawdziwe.
Lao Tse
Re: Emulator EPROM
Program emulatora
Do obsługi emulatora został napisany odpowiedni program w języku assembler. Program ten odpowiednio sterując łącznikami trójstanowymi przyłącza zewnętrzną pamięć statyczną RAM do swojej przestrzeni lub "oddaje" tą pamięć we władanie "obcego systemu". Jednocześnie poprzez kontroler asynchronicznej transmisji szeregowej (9600 bps, N81) komunikuje się z programem w komputerze PC. Wszystkie zmienne lokalne wynikające z potrzeb programu sterującego znajdują się w wewnętrznej pamięci mikrokontrolera. Pamięć zewnętrzna jest wyłącznie na potrzeby emulacji pamięci EPROM.
Strumień danych transmitowany przez serial raczej należy zaliczyć do typu binarnego (można byłoby przesyłać w postaci znakowej jako znaki hex, ale to zwiększa dwukrotnie objętość przesyłanych danych). Każde polecenie zaczyna się od znaku ESC (o kodzie 27 dec), po którym występuje jednoznakowy wyróżnik opisujący polecenie oraz ewentualne parametry polecenia.
Z istotniejszych poleceń są:
Załącznik: program dla C51
Do obsługi emulatora został napisany odpowiedni program w języku assembler. Program ten odpowiednio sterując łącznikami trójstanowymi przyłącza zewnętrzną pamięć statyczną RAM do swojej przestrzeni lub "oddaje" tą pamięć we władanie "obcego systemu". Jednocześnie poprzez kontroler asynchronicznej transmisji szeregowej (9600 bps, N81) komunikuje się z programem w komputerze PC. Wszystkie zmienne lokalne wynikające z potrzeb programu sterującego znajdują się w wewnętrznej pamięci mikrokontrolera. Pamięć zewnętrzna jest wyłącznie na potrzeby emulacji pamięci EPROM.
Strumień danych transmitowany przez serial raczej należy zaliczyć do typu binarnego (można byłoby przesyłać w postaci znakowej jako znaki hex, ale to zwiększa dwukrotnie objętość przesyłanych danych). Każde polecenie zaczyna się od znaku ESC (o kodzie 27 dec), po którym występuje jednoznakowy wyróżnik opisujący polecenie oraz ewentualne parametry polecenia.
Z istotniejszych poleceń są:
- <ESC> T - polecenie wykonania wewnętrznego testu pamięci RAM (zewnętrznej),
- <ESC> Q - test komunikacji → generuje odpowiedź
- <ESC> O HEX4 - okreslenie poczatku obszaru ladowania, takie ustawienie początkowe ORGIN, gdzie liczba HEX4 (4-znakowa liczka w kodzie hex) określa adres, przy ładowaniu danych, wstaźnik zwiększa się automatycznie.
- <ESC> B HEX2 - określenie wielkości transmitowanego bloku, liczba HEX2 (2-znakowa w kodzie hex) określa wielkość bloku w bajtach,
- <ESC> 1 - włącza emulację pamięci 2764
- <ESC> 2 - włącza emulację pamięci 27128
- <ESC> 3 - włącza emulację pamięci 27256
- <ESC> 4 - włącza emulację pamięci 27512
- <ESC> R HEX1 - sterowanie reset (dla emulawanego systemu), parametr HEX1 jest 0/1 (tak/nie),
- <ESC> L - ładowanie EPROM, po którym występuje binarny strumień danych o wielkości określonej przez <ESC> B
- <ESC> E - emulacja EPROM (odłącza pamięć RAM udostępniając ją dla obcego systemu),
- <ESC> C - kasowanie pamięci EPROM (wypełnienie całości na 0xFF)
- <ESC> e - zapytanie o emulacje EPROM
Załącznik: program dla C51
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Prawdziwe słowa nie są przyjemne. Przyjemne słowa nie są prawdziwe.
Lao Tse
Re: Emulator EPROM
Program sterujący dla PC
Do sterowania emulatorem powstał specjalny program dla PC. Program jest napisany w środowisku Lazarus (rzeczywiści jak zauważyła @tasza, jest sporej objętości, trochę pokręciłem w opcjach i udało mi się znacząco go odchudzić). Po uruchomieniu programu mamy:
W tej fazie dostępne są jedynie:
By zakończyć pracę, należy wcześniej użyć przycisku "Rozłącz".
Załącznik: projekt w środowisku Lazarus (instalacja samego pakietu Lazarusa i odpowiednich komponentów jest opisana w [Pascal] Lazarus IDE, Free Pascal i garść industrialnych kontrolek
Do sterowania emulatorem powstał specjalny program dla PC. Program jest napisany w środowisku Lazarus (rzeczywiści jak zauważyła @tasza, jest sporej objętości, trochę pokręciłem w opcjach i udało mi się znacząco go odchudzić). Po uruchomieniu programu mamy:
W tej fazie dostępne są jedynie:
- Port - do modyfikacji wskazania na port, poprzez który realizowana jest komunikacja,
- Przycisk "Połącz" - do nawiązania nici porozumienia z emulatorem (wysyłane jest <ESC> Q na które emulator coś odpowiada),
- Przycisk "Zakończ" do wyjścia z programu.
- Przycisk "Ładuj" transmituje dane do emulatora (należy wcześniej określić typ emulowanej pamięci, gdyż to determinuje wielkość transmitowanego bloku danych),
- Przycisk "Kasuj" udaje kasowanie pamięci EPROM → wypełnia całą jej zawartość na 0xFF,
- Przycisk "Reset" generuje reset dla emulowanego systemu (reset jest trzymany tak długo, jak długo naciśnięty jest przycisk),
- Przycisk "Emuluj" przełącza urządzenia na emulację → udostępnia pamięć EPROM dla systemu obcego.
By zakończyć pracę, należy wcześniej użyć przycisku "Rozłącz".
Załącznik: projekt w środowisku Lazarus (instalacja samego pakietu Lazarusa i odpowiednich komponentów jest opisana w [Pascal] Lazarus IDE, Free Pascal i garść industrialnych kontrolek
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Prawdziwe słowa nie są przyjemne. Przyjemne słowa nie są prawdziwe.
Lao Tse
Re: Emulator EPROM
Test działania
Mam jakiś hardware z prockiem C51, który ciągnie program z zewnętrznej pamięci EPROM. Pomijając wszystkie jego peryferale, do testu wykorzystane są cztery diody LED przyłączone do portu P1 na najmłodszych pozycjach bitowych. Powstaje prościutki i krótki programik, którego zadaniem jest inkrementowanie binarnej liczby wyświetlanej na diodach LED. . Emulator przyłącza się do systemu poprzez odpowiedni wtyk pasujący do podstawek DIP28.
W emulatorze stan pracy jest sygnalizowany poprzez diody LED w następujący sposób:
Program jest następujący:
Po wygenerowaniu jego wersji binarnej powstaje plik w formacie intel-hex. Plik zawiera wersję źródłową i binarną:
Po odpaleniu całości → działa.
Mam jakiś hardware z prockiem C51, który ciągnie program z zewnętrznej pamięci EPROM. Pomijając wszystkie jego peryferale, do testu wykorzystane są cztery diody LED przyłączone do portu P1 na najmłodszych pozycjach bitowych. Powstaje prościutki i krótki programik, którego zadaniem jest inkrementowanie binarnej liczby wyświetlanej na diodach LED. . Emulator przyłącza się do systemu poprzez odpowiedni wtyk pasujący do podstawek DIP28.
W emulatorze stan pracy jest sygnalizowany poprzez diody LED w następujący sposób:
Program jest następujący:
Kod: Zaznacz cały
NAME TEST
; *****************************
;
; LSTXRF
;
R0_ADR EQU 0
R1_ADR EQU 1
R2_ADR EQU 2
R3_ADR EQU 3
R4_ADR EQU 4
R5_ADR EQU 5
R6_ADR EQU 6
R7_ADR EQU 7
;
; *****************************************************************************
;
ASEG
ORG RESET ;
;
; RESET SERVICE
; *************
;
; *******************************************************************
; *******************************************************************
; **** ****
; **** TECHNICAL PROCESSOR SERVICES ****
; **** ****
; *******************************************************************
; *******************************************************************
;
LJMP Main ;
;-----------------------------------------------------------------------------;
ORG EXTI0 ;
;
; EXT. INT. 0 SERVICE;
; *******************;
;
RETI ;
;-----------------------------------------------------------------------------;
ORG TIMER0 ;
;
; TIMER/COUNTER. INT. 0 SERVICE;
; *****************************;
;
RETI ;
;-----------------------------------------------------------------------------;
ORG EXTI1 ;
;
; EXT. INT. 1 SERVICE;
; *******************;
;
RETI ;
;-----------------------------------------------------------------------------;
ORG TIMER1 ;
;
; TIMER/COUNTER. INT. 1 SERVICE;
; *****************************;
;
RETI ;
;-----------------------------------------------------------------------------;
ORG SINT ;
;
; SERIAL INT. SERVICE;
; *******************;
;
RETI ;
;-----------------------------------------------------------------------------
Delay : ;PROCEDURE Delay ;
;**************** BEGIN (* Delay *)
MOV DPTR , # 0 ;
Del_0 : ;
INC DPTR ;
MOV A , DPH ;
ORL A , DPL ;
JNZ Del_0 ;
RET ;END (* Delay *) ;
;-----------------------------------------------------------------------------
Main : ;BEGIN (* TEST *)
MOV SP , #LOW ( STACK_AREA );
MOV A , # 00H ;
MOV LOW ( Counter ) , A ; Counter := 0 ;
Main_1 : ; LOOP
LCALL Delay ; Delay ( ) ;
MOV A , Low ( Counter ) ;
INC A ;
MOV Low ( Counter ) , A ;
CPL A ;
ORL A , # 0F0H ;
MOV P1 , A ;
LJMP Main_1 ; END (* LOOP *) ;
;END (* TEST *).
;
;
; *****************************************************************************
; *****************************************************************************
;
;
RSEG RAM
;
; RAM : RELOCATION SEGMENT : LOCAL VAR SPACE
; LINKED AT ADDRESS 0H
;
REGISTERS DS 8 ;
STACK_AREA DS 48 ;
Counter DS 1 ;
;
END
Po odpaleniu całości → działa.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Prawdziwe słowa nie są przyjemne. Przyjemne słowa nie są prawdziwe.
Lao Tse
Re: Emulator EPROM
program w Lazarusie, ale czad! no super!
na linux Mint, oczywiście COM3 nie otworzył , ale chyba coś mu zaszkodziło, bo przy zamykaniu rozpłakał się Access Violation.
ja myśle, ze dobrze byłoby przy zamykaniu aplikacji sprawdzić stan portu, ewentualnie zamknąć, nawet tak w ciemno
zastanawiam się, jak wydłubać z systemu dostępne porty szeregowe, aby jakoś do combox-a załadować do wyboru...
w windows do enumeracji zasobów jest wsparcie API, w linux /dev/ttyS* może być masę, /ttyUSB* też
muszę się zastanowić
-- edit --
szybka łatka dla windowsów
w sekcji uses dopisz proszę na końcu moduł synaser
na forme wrzuć zwykłego combobox-a (i może ustaw mu property readOnly na true)
w metodzie procedure TEPEMForm.FormCreate ( Sender : TObject ) ; na samym końcu:
to przy tworzeniu okna zainicjuje listę COM-ów, a wybrany przez użytkownika port masz ComboBox1.Text jak coś...
na linux Mint, oczywiście COM3 nie otworzył , ale chyba coś mu zaszkodziło, bo przy zamykaniu rozpłakał się Access Violation.
ja myśle, ze dobrze byłoby przy zamykaniu aplikacji sprawdzić stan portu, ewentualnie zamknąć, nawet tak w ciemno
Kod: Zaznacz cały
procedure TEPEMForm.ExittButtonClick ( Sender : TObject ) ;
begin
self.DisconnectButtonClick; (* nat. *)
Application.Terminate ;
end (* TEPEMForm . ExittButtonClick *) ;
zastanawiam się, jak wydłubać z systemu dostępne porty szeregowe, aby jakoś do combox-a załadować do wyboru...
w windows do enumeracji zasobów jest wsparcie API, w linux /dev/ttyS* może być masę, /ttyUSB* też
muszę się zastanowić
-- edit --
szybka łatka dla windowsów
w sekcji uses dopisz proszę na końcu moduł synaser
na forme wrzuć zwykłego combobox-a (i może ustaw mu property readOnly na true)
w metodzie procedure TEPEMForm.FormCreate ( Sender : TObject ) ; na samym końcu:
Kod: Zaznacz cały
ComboBox1.Items.CommaText := GetSerialPortNames;
ComboBox1.Text := ComboBox1.Items [0];
to przy tworzeniu okna zainicjuje listę COM-ów, a wybrany przez użytkownika port masz ComboBox1.Text jak coś...
______________________________________________ ____ ___ __ _ _ _ _
Kończysz tworzyć dopiero, gdy umierasz. (Marina Abramović)
Kończysz tworzyć dopiero, gdy umierasz. (Marina Abramović)
Re: Emulator EPROM
tasza pisze:na linux Mint, oczywiście COM3 nie otworzył , ale chyba coś mu zaszkodziło, bo przy zamykaniu rozpłakał się Access Violation.
ja myśle, ze dobrze byłoby przy zamykaniu aplikacji sprawdzić stan portu, ewentualnie zamknąć, nawet tak w ciemno
Z tego powodu jeżeli nie zostanie kliknięte na "Rozłącz" (tam jest zamknięcie kanału szeregowego), to przycisk "Zakończ" jest nieaktywny. By zakończyć program konieczne jest przejście przez "Rozłącz", chyba, że klikniesz na krzyżyk na belce.
tasza pisze:zastanawiam się, jak wydłubać z systemu dostępne porty szeregowe, aby jakoś do combox-a załadować do wyboru...
w windows do enumeracji zasobów jest wsparcie API, w linux /dev/ttyS* może być masę, /ttyUSB* też
muszę się zastanowić
Miałem taki zamiar, ale w pierwszym przybliżeniu wersji programu zrezygnowałem z tego, nie znaczy, że na zawsze...
tasza pisze:w sekcji uses dopisz proszę na końcu moduł synaser
Do czego to służy, bo nie kojarzę.
Prawdziwe słowa nie są przyjemne. Przyjemne słowa nie są prawdziwe.
Lao Tse
Re: Emulator EPROM
aaa, oki, no u mnie coś nie zagrało, ale to jeszcze popatrzę...
synaser to unitek z niskopoziomowa obsługą portu szeregowego, on m.in. definiuje klasę TBlockSerial której używa potem komponent TSdpoSerial, warto zerknąć to tam we środku, na kompilacji warunkowej jest wsparcie dla różnych OS-ów, no i ta GetSerialPortNames co dłubie w rejestrze win.
synaser to unitek z niskopoziomowa obsługą portu szeregowego, on m.in. definiuje klasę TBlockSerial której używa potem komponent TSdpoSerial, warto zerknąć to tam we środku, na kompilacji warunkowej jest wsparcie dla różnych OS-ów, no i ta GetSerialPortNames co dłubie w rejestrze win.
______________________________________________ ____ ___ __ _ _ _ _
Kończysz tworzyć dopiero, gdy umierasz. (Marina Abramović)
Kończysz tworzyć dopiero, gdy umierasz. (Marina Abramović)
Re: Emulator EPROM
tasza pisze:synaser to unitek z niskopoziomowa obsługą portu szeregowego, on m.in. definiuje klasę TBlockSerial której używa potem komponent TSdpoSerial, warto zerknąć to tam we środku, na kompilacji warunkowej jest wsparcie dla różnych OS-ów, no i ta GetSerialPortNames co dłubie w rejestrze win.
Dzięki za info.
Generalnie program jest do update, właśnie wczoraj wypatrzyłem jedną plombę. Przez jakiś czas się "urlopowałem" więc nie miałem ze sobą hardware a jedynie kompa. Mogłem sobie dłubać, ale trzeba było "znieczulić" soft na brak hardware. Jak widać nie wszystko zostało odkręcone, ale nie mylą się jedynie ci, co nic nie robią. Poza tym generują się nowe pomysły, więc temat będzie jeszcze rozwijany.
Prawdziwe słowa nie są przyjemne. Przyjemne słowa nie są prawdziwe.
Lao Tse
Re: Emulator EPROM
Emulator w akcji
Ten biało-żółty kabelek to prowizoryczne podłączenie resetu do procka. W trakcie działania resetnołem system z programu na PC (widać "mrugnięcie" diody LED od reseta).
Ten biało-żółty kabelek to prowizoryczne podłączenie resetu do procka. W trakcie działania resetnołem system z programu na PC (widać "mrugnięcie" diody LED od reseta).
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Prawdziwe słowa nie są przyjemne. Przyjemne słowa nie są prawdziwe.
Lao Tse
Re: Emulator EPROM
gaweł pisze:Generalnie to mój prywatny soft. Nie będę zaprzeczał, że rysowanie schematów jest wzorowane na orcad. PCB jest w AUTOTRAX 1.61, wydruk rysunków płytek → mój prywatny soft (może nadejdzie taki czas, że opiszę i opublikuję czas)
No więc nadszedł taki moment, gdzie przedstawiony jest jeden z programów wykorzystywanych w szeroko pojętym procesie projektowym [Lazarus] Program do przeglądania plików PCB AUTOTRAX
Prawdziwe słowa nie są przyjemne. Przyjemne słowa nie są prawdziwe.
Lao Tse
Re: Emulator EPROM
Update softu sterującego emulatorem.
Biorąc pod uwagę sugestie Nataszy oraz własne wypatrzone niedociągnięcia, lazarusowy soft doczekał się nowej wersji.
Załącznik: projekt w Lazarus
Biorąc pod uwagę sugestie Nataszy oraz własne wypatrzone niedociągnięcia, lazarusowy soft doczekał się nowej wersji.
Załącznik: projekt w Lazarus
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Prawdziwe słowa nie są przyjemne. Przyjemne słowa nie są prawdziwe.
Lao Tse
Re: Emulator EPROM
Emulator EPROM
w wersji prehistorycznej
Namierzyłem dokumentację od swojego pierwszego emulatora EPROM, nazwijmy ją jako wersja 1.00 (wyżej opisana to wersja 3.00). Na dokumentacji jest data: 2 listopada 1992. To już nawet nie jest wersja średniowieczna, to wersja baaardzo starożytna. Oznaczoną jako 2.00 również namierzyłem, ale nie miała ona swojej realizacji fizycznej i w gruncie rzeczy jest praktycznie tożsama z wersją 3.00. Różnica jest taka, że w wersji numer 2 jest wyświetlacz szyny adresowej jako ileś cyfrowy wyświetlacz 7-segmentowy LED. Zrezygnowałem z tego rozwiązania, gdyż w rzeczywistości taki wyświetlacz praktycznie wyświetlałby „mgłę” → to żadna cenna informacja, więc ten kawałek został usunięty.
Wracając do wersji 1...
Schematy to: W tym rozwiązaniu na schemacie do portu P1 procka C51 jest przyłączona mała klawiaturka (ilustracja 3). W rzeczywistości na fizycznym rozwiązaniu jej nie ma. Pamięć RAM, która udaje pamięć EPROM, to dwa układy pamięci statycznej typu 61256 (32k*8). Być może na świecie wtedy były większe pamięci, ale na pewno nie były łatwo dostępne (w wersji 3.00 opisanej wyżej jest zastosowany jeden układ pamięci). Rozdzielenie na dwa układy ma swoje implikacje (w sumie negatywne). Problem polega na tym, że z racji bardziej złożonej logiki do obsługi sygnałów typu chip select, zwiększa się czas propagacji. Stwierdzenie, że w wyniku eksperymentu i doświadczenia należy wnieść na przyszłość korektę, nie jest zbytnio odkrywcze. Pomimo że pierwsza wersja miała wiele wad, miała jedną istotną zaletę: była. To pozwoliło na ewolucję wielu innych rozwiązań. Można rzec, ten sprzęt był „bezcenny”, ratował d..pę w wielu opresjach i pracach. Koncepcja klawiatury: w sumie element, który nie zaistniał. Komunikacja via serial, to żadne odkrywcze rozwiązanie. Logika przyłącza złączki emulującej EPROM. To zespół łączników trójstanowych. Poniżej dosyć krytyczny element: wygenerowanie sygnałów wyboru dla pamięci RAM. Redukcja tego fragmentu to skrócenie czasu dostępu do pamięci. Do powyższego schematu zaistniała płytka PCB. Jak ona wyglądała w czasach starożytnych pokazują poniższe fotki. Stwierdzenie, że w takim przypadku bardzo łatwo popełnić pomyłkę, która skutkuje długotrwałym i żmudnym ściganiem problemu jest wręcz oczywiste. Ile to trzeba wykonać działań by dotrzeć do finału to wie tylko ten, co to ma za sobą.
w wersji prehistorycznej
Namierzyłem dokumentację od swojego pierwszego emulatora EPROM, nazwijmy ją jako wersja 1.00 (wyżej opisana to wersja 3.00). Na dokumentacji jest data: 2 listopada 1992. To już nawet nie jest wersja średniowieczna, to wersja baaardzo starożytna. Oznaczoną jako 2.00 również namierzyłem, ale nie miała ona swojej realizacji fizycznej i w gruncie rzeczy jest praktycznie tożsama z wersją 3.00. Różnica jest taka, że w wersji numer 2 jest wyświetlacz szyny adresowej jako ileś cyfrowy wyświetlacz 7-segmentowy LED. Zrezygnowałem z tego rozwiązania, gdyż w rzeczywistości taki wyświetlacz praktycznie wyświetlałby „mgłę” → to żadna cenna informacja, więc ten kawałek został usunięty.
Wracając do wersji 1...
Schematy to: W tym rozwiązaniu na schemacie do portu P1 procka C51 jest przyłączona mała klawiaturka (ilustracja 3). W rzeczywistości na fizycznym rozwiązaniu jej nie ma. Pamięć RAM, która udaje pamięć EPROM, to dwa układy pamięci statycznej typu 61256 (32k*8). Być może na świecie wtedy były większe pamięci, ale na pewno nie były łatwo dostępne (w wersji 3.00 opisanej wyżej jest zastosowany jeden układ pamięci). Rozdzielenie na dwa układy ma swoje implikacje (w sumie negatywne). Problem polega na tym, że z racji bardziej złożonej logiki do obsługi sygnałów typu chip select, zwiększa się czas propagacji. Stwierdzenie, że w wyniku eksperymentu i doświadczenia należy wnieść na przyszłość korektę, nie jest zbytnio odkrywcze. Pomimo że pierwsza wersja miała wiele wad, miała jedną istotną zaletę: była. To pozwoliło na ewolucję wielu innych rozwiązań. Można rzec, ten sprzęt był „bezcenny”, ratował d..pę w wielu opresjach i pracach. Koncepcja klawiatury: w sumie element, który nie zaistniał. Komunikacja via serial, to żadne odkrywcze rozwiązanie. Logika przyłącza złączki emulującej EPROM. To zespół łączników trójstanowych. Poniżej dosyć krytyczny element: wygenerowanie sygnałów wyboru dla pamięci RAM. Redukcja tego fragmentu to skrócenie czasu dostępu do pamięci. Do powyższego schematu zaistniała płytka PCB. Jak ona wyglądała w czasach starożytnych pokazują poniższe fotki. Stwierdzenie, że w takim przypadku bardzo łatwo popełnić pomyłkę, która skutkuje długotrwałym i żmudnym ściganiem problemu jest wręcz oczywiste. Ile to trzeba wykonać działań by dotrzeć do finału to wie tylko ten, co to ma za sobą.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Ostatnio zmieniony poniedziałek 17 cze 2019, 22:35 przez gaweł, łącznie zmieniany 1 raz.
Prawdziwe słowa nie są przyjemne. Przyjemne słowa nie są prawdziwe.
Lao Tse
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 7 gości