Emulator EPROM

Projekty użytkowników forum zarówno sprzętowe, jak i związane z programowaniem w dowolnym języku.
Awatar użytkownika
gaweł
Expert
Expert
Posty: 751
Rejestracja: wtorek 24 sty 2017, 22:05
Lokalizacja: Białystok

Emulator EPROM

Postautor: gaweł » 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.
EPEM0.PNG
Jednostka centralna, serce całego emulatora, pokazuje poniższa ilustracja:
EPEM1.PNG
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.
EPEM2.PNG
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.
EPEM3.PNG
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).
EPEM5.PNG
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).
Epem4.png
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).
EPEM6.PNG
Do powyższego schematu powstała płytka PCB.
EPEM_botv.PNG
EPEM_topv.PNG
EPEM_topm.PNG


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

Awatar użytkownika
Nefarious19
Newb
Newb
Posty: 80
Rejestracja: sobota 02 sty 2016, 20:45

Re: Emulator EPROM

Postautor: Nefarious19 » piątek 28 lip 2017, 09:13

Moze nie na temat ale... w jakim sofcie rysujesz schematy i PCB ;)?
Plany na przyszłość: C, C++, C#

Awatar użytkownika
tasza
Expert
Expert
Posty: 935
Rejestracja: czwartek 12 sty 2017, 10:24
Kontaktowanie:

Re: Emulator EPROM

Postautor: tasza » piątek 28 lip 2017, 09:22

A co do oprogramowania - ładuje się intel hex? bin? pewnie od strony PC też jakiś programik komunikacyjny jest, rozwiniesz temat?
___________________________________________ ____ ___ __ _ _ _ _
J​eżeli dadzą ci papier w linie, pisz w poprzek. Juan Ramón Jiménez

Awatar użytkownika
ZbeeGin
User
User
Posty: 307
Rejestracja: sobota 08 lip 2017, 17:16
Lokalizacja: GOP
Kontaktowanie:

Re: Emulator EPROM

Postautor: ZbeeGin » piątek 28 lip 2017, 15:16

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... :mrgreen:

Awatar użytkownika
gaweł
Expert
Expert
Posty: 751
Rejestracja: wtorek 24 sty 2017, 22:05
Lokalizacja: Białystok

Re: Emulator EPROM

Postautor: gaweł » piątek 28 lip 2017, 18:15

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

Awatar użytkownika
gaweł
Expert
Expert
Posty: 751
Rejestracja: wtorek 24 sty 2017, 22:05
Lokalizacja: Białystok

Re: Emulator EPROM

Postautor: gaweł » piątek 28 lip 2017, 18:19

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ę :arrow: czas)

Prawdziwe słowa nie są przyjemne. Przyjemne słowa nie są prawdziwe.
Lao Tse

Awatar użytkownika
tasza
Expert
Expert
Posty: 935
Rejestracja: czwartek 12 sty 2017, 10:24
Kontaktowanie:

Re: Emulator EPROM

Postautor: tasza » piątek 28 lip 2017, 18:25

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
___________________________________________ ____ ___ __ _ _ _ _
J​eżeli dadzą ci papier w linie, pisz w poprzek. Juan Ramón Jiménez

Awatar użytkownika
PROTON
User
User
Posty: 479
Rejestracja: czwartek 08 paź 2015, 18:35
Lokalizacja: Warszawa

Re: Emulator EPROM

Postautor: PROTON » piątek 28 lip 2017, 18:28

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.

Awatar użytkownika
gaweł
Expert
Expert
Posty: 751
Rejestracja: wtorek 24 sty 2017, 22:05
Lokalizacja: Białystok

Re: Emulator EPROM

Postautor: gaweł » piątek 28 lip 2017, 18:38

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

Awatar użytkownika
gaweł
Expert
Expert
Posty: 751
Rejestracja: wtorek 24 sty 2017, 22:05
Lokalizacja: Białystok

Re: Emulator EPROM

Postautor: gaweł » piątek 28 lip 2017, 18:40

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

Awatar użytkownika
PROTON
User
User
Posty: 479
Rejestracja: czwartek 08 paź 2015, 18:35
Lokalizacja: Warszawa

Re: Emulator EPROM

Postautor: PROTON » piątek 28 lip 2017, 20:27

OK. Jak projekt dojrzeje do realizacji to się odezwę w tej sprawie.
Gott weiß ich will kein Engel sein.

Awatar użytkownika
gaweł
Expert
Expert
Posty: 751
Rejestracja: wtorek 24 sty 2017, 22:05
Lokalizacja: Białystok

Re: Emulator EPROM

Postautor: gaweł » sobota 29 lip 2017, 11:35

Reverse Engineering

Grzebiąc po archiwalnych CD-ach okazało się, że plik z PCB nie odczytuje się :oops: , co za niefart. Jednak co to znaczy determinacja. Na szczęście zachowały się oryginalne klisze do produkcji PCB, więc...
epem02_01.jpg
epem02_02.jpg

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
EPEM.ZIP
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

Awatar użytkownika
PROTON
User
User
Posty: 479
Rejestracja: czwartek 08 paź 2015, 18:35
Lokalizacja: Warszawa

Re: Emulator EPROM

Postautor: PROTON » sobota 29 lip 2017, 12:08

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.

Awatar użytkownika
gaweł
Expert
Expert
Posty: 751
Rejestracja: wtorek 24 sty 2017, 22:05
Lokalizacja: Białystok

Re: Emulator EPROM

Postautor: gaweł » sobota 29 lip 2017, 12:16

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

Awatar użytkownika
gaweł
Expert
Expert
Posty: 751
Rejestracja: wtorek 24 sty 2017, 22:05
Lokalizacja: Białystok

Re: Emulator EPROM

Postautor: gaweł » sobota 29 lip 2017, 12:37

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ą:
  • <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
c51.zip
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

Awatar użytkownika
gaweł
Expert
Expert
Posty: 751
Rejestracja: wtorek 24 sty 2017, 22:05
Lokalizacja: Białystok

Re: Emulator EPROM

Postautor: gaweł » sobota 29 lip 2017, 13:30

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:
epem03-01.png
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.
Po nawiązaniu połączenia z emulatorem dostępne stają się kolejne przyciski, między innymi można wybrać typ emulowanego EPROM'a oraz wczytać plik (w formacie intel-hex).
epem03-02.png
epem03-03.png
Używając przycisku "Otwórz hex" można wczytać do programu plik, który ma zostać przesłany do emulatora (istnieje możliwość przeciągnięcia myszką pliku i upuszczenia na formę programu → działa tak samo [w przypadku upuszczenia kilku plików łapany jest tylko pierwszy).
epem03-04.png
Po otwarciu pliku hex dostępne stają się kolejne przyciski:
epem03-05.png
Używając przycisku "Bufor hex" można "zobaczyć" zawartość pliku (w formie binarnej jako cyfry hex oraz w formie znakowej /jeżeli jest to znak pisarski/).
epem03-06.png
Funkcje kolejnych przycisków są następujące:
  • 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.
Przy ładowaniu zawartości pamięci zablokowane są wszystkie przyciski, zapalona lampka "Czekaj" i należy zaczekać, aż zgaśnie, jest to sygnał, że operacja transmisji danych do emulatora jest zakończona.
epem03-07.png

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
laz.zip
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

Awatar użytkownika
gaweł
Expert
Expert
Posty: 751
Rejestracja: wtorek 24 sty 2017, 22:05
Lokalizacja: Białystok

Re: Emulator EPROM

Postautor: gaweł » sobota 29 lip 2017, 14:58

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.
epem04-02.jpg
. Emulator przyłącza się do systemu poprzez odpowiedni wtyk pasujący do podstawek DIP28.
epem04-03.jpg

W emulatorze stan pracy jest sygnalizowany poprzez diody LED w następujący sposób:
epem04-01.jpg

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 wygenerowaniu jego wersji binarnej powstaje plik w formacie intel-hex. Plik zawiera wersję źródłową i binarną:
c51.zip

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

Awatar użytkownika
tasza
Expert
Expert
Posty: 935
Rejestracja: czwartek 12 sty 2017, 10:24
Kontaktowanie:

Re: Emulator EPROM

Postautor: tasza » sobota 29 lip 2017, 18:42

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

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ś...
___________________________________________ ____ ___ __ _ _ _ _
J​eżeli dadzą ci papier w linie, pisz w poprzek. Juan Ramón Jiménez

Awatar użytkownika
gaweł
Expert
Expert
Posty: 751
Rejestracja: wtorek 24 sty 2017, 22:05
Lokalizacja: Białystok

Re: Emulator EPROM

Postautor: gaweł » sobota 29 lip 2017, 22:46

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

Awatar użytkownika
tasza
Expert
Expert
Posty: 935
Rejestracja: czwartek 12 sty 2017, 10:24
Kontaktowanie:

Re: Emulator EPROM

Postautor: tasza » niedziela 30 lip 2017, 06:13

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.
___________________________________________ ____ ___ __ _ _ _ _
J​eżeli dadzą ci papier w linie, pisz w poprzek. Juan Ramón Jiménez

Awatar użytkownika
gaweł
Expert
Expert
Posty: 751
Rejestracja: wtorek 24 sty 2017, 22:05
Lokalizacja: Białystok

Re: Emulator EPROM

Postautor: gaweł » niedziela 30 lip 2017, 09:11

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

Awatar użytkownika
gaweł
Expert
Expert
Posty: 751
Rejestracja: wtorek 24 sty 2017, 22:05
Lokalizacja: Białystok

Re: Emulator EPROM

Postautor: gaweł » niedziela 30 lip 2017, 10:17

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).
epem.mov
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

Awatar użytkownika
gaweł
Expert
Expert
Posty: 751
Rejestracja: wtorek 24 sty 2017, 22:05
Lokalizacja: Białystok

Re: Emulator EPROM

Postautor: gaweł » poniedziałek 28 sie 2017, 22:09

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ę :arrow: 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

Awatar użytkownika
gaweł
Expert
Expert
Posty: 751
Rejestracja: wtorek 24 sty 2017, 22:05
Lokalizacja: Białystok

Re: Emulator EPROM

Postautor: gaweł » poniedziałek 28 sie 2017, 23:02

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
laz-2017_08_28.zip
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

Awatar użytkownika
gaweł
Expert
Expert
Posty: 751
Rejestracja: wtorek 24 sty 2017, 22:05
Lokalizacja: Białystok

Re: Emulator EPROM

Postautor: gaweł » sobota 25 maja 2019, 22:13

Emulator EPROM
w wersji prehistorycznej


vee_00.jpg


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:
vee_01.png
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.
vee_02.png
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 rzecz, ten sprzęt był „bezcenny”, ratował d..pę w wielu opresjach i pracach.
vee_03.png
Koncepcja klawiatury: w sumie element, który nie zaistniał.
vee_04.png
Komunikacja via serial, to żadne odkrywcze rozwiązanie.
vee_05.png
Logika przyłącza złączki emulującej EPROM. To zespół łączników trójstanowych.
vee_06.png
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.
vee_07.png
Do powyższego schematu zaistniała płytka PCB. Jak ona wyglądała w czasach starożytnych pokazują poniższe fotki.
vee_08.jpg
vee_09.jpg
vee_10.jpg
vee_11.jpg
vee_12.jpg
vee_13.jpg
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.

Prawdziwe słowa nie są przyjemne. Przyjemne słowa nie są prawdziwe.
Lao Tse


Wróć do „DIY”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 1 gość