Autor Wątek: Easy Z80 Sergey'a Kiseleva - co robię nie tak?  (Przeczytany 2907 razy)

Atlantis

  • ***
  • Wiadomości: 100
  • Miejsce pobytu:
    Kraków
Easy Z80 Sergey'a Kiseleva - co robię nie tak?
« dnia: 2021.10.24, 20:54:39 »
Jakiś czas temu naszła mnie ochota, żeby złożyć sobie jakiś komputerek kompatybilny z CP/M oraz standardem RC2014. Wybór padł na Easy Z80 wg projektu Sergey'a Kiseleva. Udało mi się kupić płytkę, jednak montaż trwał opornie z uwagi na obecne problemy z zakupem części. Kilka dni temu w końcu dotarła do mnie przesyłka z ostatnim układem scalonym, więc zabrałem się za uruchamianie. Niestety, po podłączeniu zasilania nic się nie dzieje - terminal podłączony do pierwszego złącza RS232 nie pokazuje niczego.
Sytuacja wygląda następująco:
  • Układ jest taktowany generatorem kwarcowym 10 MHz
  • Wszystkie układy z serii Z80 są w wersji CMOS, na 10 MHz
  • Wszystkie układy logiczne 74 są w wersji HC
  • Do ROM-u wgrany RomWBW-v3.0.1 pobrany z GitHuba i skompilowany. Konkretnie plik EZZ80_std.rom
  • Układ logiczny ATF16V8B zaprogramowany wsadem easy_z80_wdog.jed, próbowałem też easy_z80_no_wdog.jed
  • Niestety nie udało mi się kupić układu MAX693. Zastąpiłem go MAX691ACPE, który miałem w swoich zapasach. Lista elementów wymienia MAX691 jako "possible alternative". Jednak czy te ukłdy są bezpośrednio wymienne?

Jak to dalej debugować? Wydaje mi się, że cokolwiek powinno się pojawić na interfejsie szeregowym po podłączeniu zasilania. Niestety nigdzie nie mogę znaleźć bardziej szczegółowej instrukcji uruchamiania tego komputerka...

Docelowo płytka ma stanowić bazę do większego projektu. Planuję wykonać backplane w stylu RC2014 i umieścić na nim dodatkowo kartę CF, układ graficzny TMS9918 oraz kontroler klawiatury 8242. Te dwa ostatnie będą zapewne wymagały modyfikacji firmware'u...

« Ostatnia zmiana: 2021.10.24, 21:20:08 wysłana przez Atlantis »

steev

  • *****
  • Wiadomości: 1272
  • Miejsce pobytu:
    inode 42
Odp: Easy Z80 Sergey'a Kiseleva - co robię nie tak?
« Odpowiedź #1 dnia: 2021.10.24, 21:31:18 »
Ja bym zaczął od wyciągnięcia sondy logicznej, lub oscyloskopu...
Machines should work. People should think.

tapy

  • ***
  • Wiadomości: 161
Odp: Easy Z80 Sergey'a Kiseleva - co robię nie tak?
« Odpowiedź #2 dnia: 2021.10.24, 22:24:34 »
Mam niejasne podejrzenia, że JP1 i JP2 nie zostały użyte...

Atlantis

  • ***
  • Wiadomości: 100
  • Miejsce pobytu:
    Kraków
Odp: Easy Z80 Sergey'a Kiseleva - co robię nie tak?
« Odpowiedź #3 dnia: 2021.10.24, 22:50:52 »
Mam niejasne podejrzenia, że JP1 i JP2 nie zostały użyte...

Te zworki przecież są domyślnie ustawione w pozycji 1-2 za pomocą ścieżki. W przypadku ustawienia 2-3 trzeba by ją najpierw przeciąć.

tapy

  • ***
  • Wiadomości: 161
Odp: Easy Z80 Sergey'a Kiseleva - co robię nie tak?
« Odpowiedź #4 dnia: 2021.10.24, 22:55:51 »
Ok, to ostatnia rzecz jaką możesz bez przyrządów zrobić, to wyjmij MAX232 dla drugiego portu SIO. Jak to nie pomoże, to tylko sonda logiczna lub oscyloskop.

Atlantis

  • ***
  • Wiadomości: 100
  • Miejsce pobytu:
    Kraków
Odp: Easy Z80 Sergey'a Kiseleva - co robię nie tak?
« Odpowiedź #5 dnia: 2021.10.24, 23:21:06 »
Nie pomogło. Upewniłem się także czy potencjometr przy MAX691 jest ustawiony tak, aby na NMI był stan wysoki.
Co w pierwszej kolejności powinienem sprawdzić, poza sygnałami zegarowymi CPU i UART?

I jeszcze jedno: zauważyłem, że na schemacie i w spisie elementów zaznaczone są układy MAX232A. Ja miałem pod ręką jedynie zwykłe MAX232. Czy to możliwe, że tu może leżeć przyczyna? To znaczy zwykły MAX232 (bez "A" na końcu) przy prędkości 115200 i kondensatorach 100nF nie przepuści niczego?
« Ostatnia zmiana: 2021.10.24, 23:44:10 wysłana przez Atlantis »

steev

  • *****
  • Wiadomości: 1272
  • Miejsce pobytu:
    inode 42
Odp: Easy Z80 Sergey'a Kiseleva - co robię nie tak?
« Odpowiedź #6 dnia: 2021.10.25, 01:31:05 »
Nie pomogło. Upewniłem się także czy potencjometr przy MAX691 jest ustawiony tak, aby na NMI był stan wysoki.
Co w pierwszej kolejności powinienem sprawdzić, poza sygnałami zegarowymi CPU i UART?
Tak na dzieńdobry?
Napięcia zasilania.
Potem - czy CPU dostaje zegar. Jakie są stany /Reset, /Nmi, /Int, /Busrq, /Wait. Czy CPU adresuje pamięć (zmienia się A0, A1, Aktórykolwiek, /Rd, /Wr, /Mreq, /M1)  Czy CPU dostaje program (zmieniają się D0, D1 .. D7)

Machines should work. People should think.

Maryjan

  • *****
  • Wiadomości: 6122
  • Miejsce pobytu:
    Skarżysko-Kam.
  • Scotch whiskey and West Highland Terrier
Odp: Easy Z80 Sergey'a Kiseleva - co robię nie tak?
« Odpowiedź #7 dnia: 2021.10.25, 15:41:54 »
Tam oryginalnie nie powinien siedzieć GAL 16v8 od Lattice ?
"... podobno są dwie szkoły, Falenicka i Otwocka."

steev

  • *****
  • Wiadomości: 1272
  • Miejsce pobytu:
    inode 42
Odp: Easy Z80 Sergey'a Kiseleva - co robię nie tak?
« Odpowiedź #8 dnia: 2021.10.25, 17:40:55 »
BOM mówi AF16V8B15PU
Machines should work. People should think.

jackfinch

  • ****
  • Wiadomości: 399
  • Miejsce pobytu:
    uk
Odp: Easy Z80 Sergey'a Kiseleva - co robię nie tak?
« Odpowiedź #9 dnia: 2021.10.25, 19:47:44 »
A próbowałeś rom EZZ80_std.rom w wersji v2.9.1 ?

Atlantis

  • ***
  • Wiadomości: 100
  • Miejsce pobytu:
    Kraków
Odp: Easy Z80 Sergey'a Kiseleva - co robię nie tak?
« Odpowiedź #10 dnia: 2021.10.26, 14:38:07 »
W wolnej chwili spróbuję innej wersji ROM-u i posprawdzam sygnały na magistrali analizatorem logicznym.
W międzyczasie ktoś mógłby powiedzieć jak zachowuje się MAX232 w przypadku zastosowania za małych kondensatorów w stosunku do wersji i wybranej prędkości. Żeby korzystać z kondensatorów 100nF i pracować powyżej 60 kpbs potrzebuję wersji MAX232A. Ja mam MAX232 (bez "A"), kondensatory 100nF, a układ domyślnie pracuje na 115200 bps.
W takim przypadku możliwe jest, że nic nie będzie przechodziło przez port, czy jednak powinienem się raczej spodziewać "krzaczków"?

jackfinch

  • ****
  • Wiadomości: 399
  • Miejsce pobytu:
    uk
Odp: Easy Z80 Sergey'a Kiseleva - co robię nie tak?
« Odpowiedź #11 dnia: 2021.10.26, 16:02:19 »
Wyjmij U3 z podstawki, zewrzyj RXDA z TXDA (max 232 pin 9 i 10), odpal terminal na 115200 i sprawdź czy masz echo jak piszesz na klawiaturze. Będziesz wiedział czy max232 działa na 115200.

Atlantis

  • ***
  • Wiadomości: 100
  • Miejsce pobytu:
    Kraków
Odp: Easy Z80 Sergey'a Kiseleva - co robię nie tak?
« Odpowiedź #12 dnia: 2021.10.27, 21:09:58 »
Rom w wersji v2.9.1 też nie wyświetla niczego w terminalu.
Po wyjęciu U3 oraz zwarciu pinów 9 i 10 MAX232 mam echo w terminalu, a więc najwyraźniej działa prawidłowo z kondensatorami 100 nF przy prędkości 115200.
No cóż... Będę musiał sprawdzić sygnały na magistrali...

Atlantis

  • ***
  • Wiadomości: 100
  • Miejsce pobytu:
    Kraków
Odp: Easy Z80 Sergey'a Kiseleva - co robię nie tak?
« Odpowiedź #13 dnia: 2022.01.23, 12:24:19 »
Ok, znalazłem trochę czasu i posługując się tanim, chińskim analizatorem stanów logicznych (na USB) sprawdziłem aktywność na poszczególnych liniach.
- Na UART_CLK jest prawidłowy sygnał zegarowy 1.84 MHz.
- Na CPU_CLK jest jakiś sygnał zegarowy, jednak albo jest niestabilny, albo mój analizator nie jest już w stanie prawidłowo go odczytać. Stawiam na to drugie. Sygnał jest nieregularny i waha się pomiędzy 8 i 12 MHz.
- Na A0-A15 widać aktywność. Sygnały mają cykliczny, powtarzający się charaktery.
- Widać również sygnały na WR, RD, IOREQ i MREQ.
- Linia RESET reaguje na wciskanie przycisku RESET. Aktywowanie linii reset wpływa na system, co widać np. po liniach adresowych.
- Na liniach TX zupełny brak aktywności

Jakieś hipotezy? Co mogę jeszcze sprawdzić?

steev

  • *****
  • Wiadomości: 1272
  • Miejsce pobytu:
    inode 42
Odp: Easy Z80 Sergey'a Kiseleva - co robię nie tak?
« Odpowiedź #14 dnia: 2022.01.23, 15:05:32 »
Możesz sprawdzić, czy SIO_CS i CTC_CS bywają aktywne, ie. czy CPU w ogóle z tymi układami chce/może gadać.
Możesz też np. wrzucić do flasha program, który zablokuje przerwania i co 100 (przykładowo) cykli zegara będzie wyrzucał na dowolny port IO dowolną daną.
Albo zrobi OTIR/OTDR
Jeśli IORQ będzie pulsował regularnie, to będziesz wiedział że CPU Działa, że zegar jest stabilny i będziesz mógł wyliczyć częstotliwość. 3-in-1 ;)
Machines should work. People should think.