EasyZ80 - ciąg dalszy walki z retro komputerkiem (2023 Update)

Atlantis snipped-for-privacy@wp.pl Wrote in message:r

Ten pull-up to 470R miał, oidp. Masz pamięci dynamiczne? Szeregowe rezystory 33R na adresach.

jp

Reply to
Jacek
Loading thread data ...

Na początku roku pisałem o swoich próbach uruchomienia retro komputerka, pracującego pod kontrolą CP/M. Zapis tej dyskusji jest dostępny tutaj:

formatting link
Dokumentację można znaleźć na GitHubie:
formatting link

Tytułem przypomnienia:

  1. Płytka została złożona z elementów pochodzących ze źródeł godnych zaufania. Ma to znaczenie o tyle, że obecnie można natknąć się na sporo chipów retro, których oznaczenia zostały zmienione przez chińskich sprzedawców i nigdy nie ma pewności czy to faktycznie wersja CMOS pod daną częstotliwość taktowania. Układy z serii Z80 zostały kupione bodajże w Mouserze, a układy logiczne (przynajmniej te, które się dało) przetestowałem TL868.
  2. Po podłączeniu zasilania widać jakąś aktywność na szynie danych, szynie adresowej i liniach sterujących. Linia reset reaguje na naciskanie przycisku, a jego wciśnięcie jest widoczne na magistrali.
  3. Widać także sygnały taktujące UART i procesor. Jednak na oscyloskopie zegar CPU wyglądał podejrzanie - nie był to prawidłowy przebieg prostokątny, ale z powodu mocno nachylonych zboczy bliżej mu było do trójkąta albo sinusoidy.

Najważniejsze jednak jest to, że za nic nie mogłem zmusić tej konstrukcji do prawidłowego działania. Po włączeniu zasilania (albo kolejnym przyciśnięciu resetu) w terminalu szeregowym nie pojawiała się żadna treść. Tymczasem powinno się wyświetlić menu startowe.

Dzisiaj wyciągnąłem tę płytkę z szuflady i postanowiłem jej dać jeszcze jedną szansę. Właściwie jedyną zmianą jaką wprowadziłem było dodanie rezystora pull-up 2k na linii zegara CPU (oryginalnie go brakowało, chociaż widzę go w wielu konstrukcjach na Z80).

Nie wiem czy pomogła akurat ta zmiana, czy dzisiaj zwyczajnie miałem więcej szczęścia, jednak za którymś podłączeniem zasilania/resetem udało mi się już coś uzyskać w terminalu. Początkowo były jakieś szczątki właściwych komunikatów:

formatting link
Za którymś razem udało mi się jednak uzyskać wspomniane menu:
formatting link
Niestety nie dało się wybrać żadnej z opcji - prawdopodobnie po wyświetleniu tej zawartości komputer zawiesił się.

Mamy jednak dowód, że hardware nie jest zupełnie martwy, jednak jest problem ze stabilnością. Czy ktoś ma pomysł jak to debugować? Przychodzi mi teraz jeszcze do głowy pomysł wymiany generatora kwarcowego, którym jest taktowany CPU. Coś jeszcze mogę zrobić/sprawdzić?

Reply to
Atlantis

Dnia Wed, 28 Dec 2022 17:18:19 +0100, Atlantis napisał(a):

Ja bym zaczął od przylutowania wielu różnych kondensatorów blokujących zasilanie do masy w różnych miejscach, uzupełniając te które już są.

Co prawda, nie wiadomo czym i jak mierzysz ten przebieg ale jeśli masz możliwość to wymień, nie zaszkodzi a pomóc może.

Reply to
Jacek Maciejewski

To potrafi byc efekt oscyloskopu - obciazenia przez niego, lub na koncu kabla.

To nie wyglada tak zle

A moze zawartosc dysku zła? te inne opcje to tez z dysku, czy z ROM?

Spowolnic zegar dwukrotnie, to bym sprobował. Jesli to problem predkosci - zaraz wyjdzie.

A jakis analizator, chocby ten Saleae masz?

Choc tu juz raczej nie pomoze - za duzo działa, za trudno bedzie sledzic co sie dalej dzieje.

Podlacz oscyl do linii adresu, danych - ladniejsze tam przebiegi?

J.

Reply to
J.F

Pod tym względem płytka akurat wydaje się być zaprojektowana poprawnie - kondensatorów blokujących zasilanie jest na niej sporo i są one poumieszczane chyba przy wszystkich pinach VDD.

Reply to
Atlantis

Pomiary były robione na przyzwoitym i względnie współczesnym Siglencie. Wydaje mi się, że powinien sobie poradzić z sygnałem 10 MHz...

W tej chwili tam nie ma żadnego (fizycznego) dysku. EasyZ80 jest komputerem zgodnym z magistralą RC2014. Został jednak zaprojektowany w ten sposób, że może działać jako SBC, gdyż wszystkie podstawowe komponenty są już na płytce. Podejrzewam, że to widoczne na screenie IDE0 w tym wypadku oznacza opcjonalną kartę CF. Widać zresztą, że system jej nie znajduje. Nie powinna być ona jednak wymagana do odpalenia systemu, gdyż:

  1. W ROM-ie mamy m.in. program monitora i dwa interpretery BASIC-a, które do działania nie wymagają pamięci dyskowej.
  2. W ROM-ie rezyduje także CP/M, który powinien ruszyć z wbudowanego ROM dysku i móc korzystać z RAM dysku. Widać, że system rozpoznaje te nośniki.

Problem w tym, że nawet jeśli uda się wyświetlić to menu, to nie mogę wybrać żadnej z tych opcji, bo system jest na tym etapie kompletnie nieresponsywny,

Właśnie od analizatora zaczynałem. Tak doszedłem do wniosków, o których napisałem na początku (widać aktywność na magistrali, widać reakcję na reset). Oscyloskopu potrzebowałem tak naprawdę aby upewnić się co do kształtu przebiegu na linii zegara CPU, bo Saleae już sobie nie radził z interpretacją (pokazywał nieregularny sygnał prostokątny o wahającej się częstotliwości).

Trudno będzie mi w tej chwili ustalić w ten sposób coś więcej skoro wiadomo, że system działa i wykonuje kod, tylko z jakiegoś powodu jest niestabilny.

Reply to
Atlantis

Opierałem się na innym projekcie ze współczesną wersją CMOS procesora Z80 - Sizif 512. Tam na linii zegara zastosowano rezystor 2k.

Nie ma tam żadnych pamięci dynamicznych. Cały RAM mieści się w jednej kostce statycznej pamięci 512 kB. :)

Reply to
Atlantis

Dnia Wed, 28 Dec 2022 20:18:58 +0100, Atlantis napisał(a):

Nie żebym się upierał ale w projekcie na pewno były innego typu kondensatory niż te co użyłeś :) Jakaś doza nieufności pożądana.

Reply to
Jacek Maciejewski

A co to za kość?

Reply to
Marek

A kabel z sondą?

Patrze na schemat - tam jest jest gotowy generator QC1? No to powinien miec mocne wyjscie i sobie z pojemnoscią kabla poradzic.

Tak sie jakos spodziewałem.

CP/M normalnie ładuje BDOS z dyskietki. BIOS jest w ROM, ale BDOS nie. Ale tu moze jakos inaczej.

Jesli chodzi o te monitory i basic, to moze byc jakis problem ze stronnicowaniem ROM. Ale program schemat i program jak rozumiem - sprawdzony.

dalbym wolniejszy zegar, jak zadziala, to wiadomo gdzie szukac.

Te kondensatory od innego kolegi - tez dobry pomysl.

Jeszcze mozna lekko podgrzac suszarką - ale jak pomoże, to raczej kwestia predkosci.

J.

Reply to
J.F

Atlantis napisał(a):

Sygnał 10MHz generatora jest wysyłany na pin wyjściowy przez rezystor dopasowujący

50 om. Obciążeniem dla generatora z tego co widzę są ścieżki + 3 czy 4 wejścia zegarowe uP, na oko wyjdzie ze 35-40 pF. Wymiana generatora nic Ci nie da. Jak chcesz coś poprawić daj między generator a uP bramkę TTL coby taktować uP prostokątem.

Tu gościu ustawił sondę na 1:1, zdaje się błędnie, ale tu jest obciążenie 35pF i u Ciebie też pi x oko 35pF) Bardzo możliwe że uP dostaje takie coś na wejście:

formatting link
I nie wiadomo na ile twoje MOS`y są tolerancyjne na niesymetryczny sygnał zegarowy, tym bardziej że wykorzystujesz full możliwą częstotliwość.

Reply to
alojzy nieborak

Mówimy o jakimś rezystorze wewnątrz generatora? Na schemacie go nie widzę...

Z tego co widzę wyjście zegarowe jest podłączone do:

- Pinu 6 mikroprocesora Z80

- Pinu 15 układu UART Z84C30

- Pinu 20 układu Z84C40 Wychodzą więc trzy piny. Dodatkowo sygnał ten jest wyprowadzony na złącze magistrali systemowej. Więc jeśli faktycznie tutaj leży przyczyna, to sytuacja pogorszy się jeszcze bardziej po wpięciu płytki w płytę główną i podłączeniu dodatkowych modułów.

Aż tak źle wygląda sytuacja z tymi generatorami? Nie ma dostępnej wersji, która posiadałaby już wbudowany bufor o odpowiedniej wydajności prądowej? Jeśli nie, to po prostu spróbuję sobie cos takiego zbudować w formie modułu na elementach SMD, który można by wcisnąć w podstawkę na miejscu obecnego generatora. Zastanawia mnie fakt, że to przecież nie jest mój własny projekt istniejący w jednym prototypie - to dość popularna konstrukcja, zbudowana przez człowieka znanego w Internecie z tworzenia takich konstrukcji retro i zreplikowana przez innych konstruktorów. Na zdjęciach w internecie widać, że ludzie stosują generatory podobne do mojego, w metalowych obudowach.

Lista elementów podaje, że tym oscylatorem powinien być "10 MHz, CMOS oscillator, Half Can". Na Mouserze:

formatting link
Możliwe, że to czego ja użyłem ma po prostu nieodpowiednią charakterystykę wyjścia?

Faktycznie, wygląda to chyba dość podobnie do tego, co widziałem na linii zegarowej sprawdzając układ oscyloskopem. Znaczne zmniejszenie prędkości (np. 4 MHz lub nawet 1 MHz) przez wymianę generatora da szansę na to, że układ testowo ruszy?

Reply to
Atlantis

Zgadza się. Rezystor 50 om jest wewnątrz generatora.

To jeszcze gorzej.

Takie są.

Nie wiem. Ten który zapodałeś z mousera też ma max. I out 10mA dla zasilania 5V.

Na piechotę od zera:

formatting link
jak klepałem wcześniej, przetnij linię zegara i wepnij bramkę.

Reply to
alojzy nieborak

Ok, po kilku miesiącach wróciłem do projektu i udało mi się zdebugować przyczynę problemu. Okazało się, że nie ma ona nic wspólnego z linią zegarową. Na takie zachowanie urządzenia tak naprawdę składały się dwie przyczyny:

  1. Główna - okazało się, że w układzie GAL zastosowałem zły wsad. Na Githubie autora dostępne są dwa pliki jed - "wdg" i "no_wdg". Jeden z nich generuje sygnał resetujący watchdoga MAX691 na podstawie aktywności na magistrali, drugi tego nie robi. Użyty powinien być wsad generujący ten sygnał - druga wersja przeznaczona jest dla osób, które chciałyby zmodyfikować projekt i zastosować jakiś prostszy układ nadzorujący zasilanie, niewyposażony w WDT. Okazało się, że nazwy plików są mylące i to "no_wdt" generuje potrzebny sygnał. Efekt był taki, że układ cyklicznie mi się resetował.

  1. Dodatkowo nałożyły się na to problemy z UARTEM powodowane tym, że Z84C40 najwyraźniej nie do końca kontaktował z podstawką. Dociśnięcie scalaka pomogło.

Teraz komputerek działa już od kilkunastu godzin, nawet na kwarcu 10 MHz i bez rezystora pull-up na linii zegarowej. Zauważyłem tylko, że jest relatywnie wrażliwy na wstrząsy - raz na jakiś czas mocniejsze trącenie płytki powoduje rzucenie błedem przez BIOS. Jednak jeśli leży spokojnie na stole, to działa stabilnie.

Reply to
Atlantis

Nie stosujesz aby podstawek precyzyjnych z allegro?

Kupiłem ich w sumie kilka rodzajów od różnych sprzedawców.

*WSZYSTKIE* są uszkodzone. Nie łączą z nogami scalaków.

Przypuszczalnie dlatego, że wsadzali jedną w drugą i tak to leżało 10 lat, sprężyny się odkształciły.

Takie same podstawki kupione z metra (tzn w osłonie z tworzywa) nie maja takiego objawu, scalaki wchodzą cieżko i nie ma problemu ze stykami.

Zajeło mi kilka dni znalezienie problem u z moim Harlequiem, gdzie nie łączyło kilka scalaków i byłem przekonany że to każdy mozliwy powód, ale nie podstawka, w końcu precyzyjna, a nie badziewie...

Reply to
heby

W podstawkach precyzyjnych chyba raczej nie ma sprężyn, tam jest tylko stożkowa tulejka zakleszczająca pin. Być może faktycznie składowanie jeden w drugi może odkształcić tulejkę. Element sprężynujący jest w zwykłych podstawkach... Swoją drogą nie bardzo wiadomo czemu te "precyzyjne" nazywają się precyzyjne skoro nie posiadają elementu sprężynującego.

Reply to
Marek

Ta tulejka jest nacięta i pełni rolę sprężyny dociskowej:

formatting link
Strona 11 i dalsze.

Reply to
heby

Chyba cos ci jeszcze nie styka. Ewentualnie zimny lut lub pekniecie scieżki. Delikatnie postukac w róźne miejsca.

J.

Reply to
J.F

Samo naciecie chyba by nie zadzialalo - na rysunku widac o co chodzi.

No coz - moze to na siłę za bardzo rozgięli.

Swoją drogą - da sie takie piny kupic luzem?

Bo dawniej myslałem, żeby takie używać do domowych płytek dwustronnych jako przejsciowke/via. Tzn to mozna zalutowac z dwóch stron i nadal uzywać jako podstawkę.

Gdzies nawet mam fabryczną płytkę - tam są takie bardzo niskie ...

J.

Reply to
J.F

Odnoszę wrażenie, że:

  1. Dociśnięcie układów do podstawek pomogło - problem występuje, ale konstrukcja zdaje się być na niego nadal wrażliwa.
  2. Chodzi chyba generalnie bardziej o wibracje niż ostukiwanie konkretnego miejsca. Gdy płytka leżała luźno na stole, w pewnym momencie mocniejsze stuknięcie w któryś z układów (albo ogólnie trącenie PCB) powodowało bład. Jednak jeśli w tym czasie płytka była dociskana do podłoża, to nawet znacznie mocniejsze uderzenia nie powodowały problemu.

Stawiam na to, że jakiś styk w podstawce wpada w drgania tracąc kontakt z układem.

Reply to
Atlantis

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.