Elektroda.pl
Elektroda.pl
X
IGE-XAOIGE-XAO
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Mikrokomputer COBRA 1

coberr 01 Sty 2020 09:33 152145 603
  • #601
    Atlantis86
    Poziom 19  
    Również próbuję obecnie złożyć swoją Cobrę, w oparciu o PCB DIP v3.0.
    Natknąłem się na pewien problem. Mianowicie początkowo nie mogłem wcale uruchomić generatora sygnału zegarowego - wyjście pozostawało martwe. Nie jestem pewien co było powodem, ponieważ chcąc zminimalizować ryzyko oderwania ścieżek, przed wylutowaniem podejrzanych elementów (filtr ceramiczny, T102, C107 i C108) zniszczyłem je, aby móc po prostu wyciągnąć wyprowadzenia. Po wlutowaniu nowych elementów generator ruszył. Tak jakby...

    Jak widać na załączonym obrazku sygnał zegarowy jest niejednorodny. Mamy serie krótkich impulsów, rozdzielone dłuższymi. Długość krótkich impulsów odpowiada częstotliwości 6 MHz, długich 4 MHz. Do pomiaru został wykorzystany tani, chiński analizator stanów logicznych na USB.

    W miejscu filtra ceramicznego wlutowałem gniazdo (kawałek listwy precyzyjnej) tak więc jestem w stanie podmieniać filtry na inne egzemplarze. Efekt występuje na każdym z nich. Niestety wszystkie pochodzą z jednej serii, od jednego producenta. Opis na obudowie to "SFM 6.5 MB"

    Niestety w chwili obecnej nie mam dostępu do cyfrowego oscyloskopu - mój stary analogowy pokazuje sygnały jak na poniższych obrazkach - o wiele bardziej regularne, ale dalekie od prostokątnej charakterystyki. Dokładnej częstotliwości tym oscyloskopem niestety nie określę.

    Wyjście wideo nie pokazuje menu. Zamiast tego na ekranie widzę regularną siatkę złożoną z kropek z których część pulsuje. Nie wiem czy jest to związane z kwestią sygnału zegarowego, czy też mam inną, niezwiązaną z nim usterkę.
  • IGE-XAOIGE-XAO
  • #602
    andrzejlisek
    Poziom 28  
    Założyłem repozytorium na GitHub https://github.com/andrzejlisek/Cobra1, umieściłem opis, kod źródłowy i skompilowaną aplikację wraz z podstawowymi obrazami pamięci.
    W samym emulatorze dodałem możliwość podawania dowolnych plików ROM, generatora i RAM, bo podmienianie plików jest karkołomne. Po uruchomieniu emulatora należy wcisnąć F9 i tam wskazać odpowiednie pliki, a potem wyzerować klawiszem F8.
    Oprócz tego, dodałem możliwość wprowadzania znaków w trybie klawiatury PC. W tym celu należy wcisnąć ESC i pod klawiaturą wybrać z listy "PC", wtedy są uwzględniane wielkie i małe litery (zmiana wielkości następuje poprzez naciśniecie SH+T, jednak w tym trybie dzieje się to automatycznie), a znaki specjalne są wpisywane wprost za pomocą klawiszy wprowadzających te znaki na PC, działają również klawisze strzałek. Oprócz tego klawisz "`" zmienia wielkość liter (wysyła samo polecenie SH+T) na wypadek, gdyby zamiast małych liter wpisywały się wielkie i na odwrót, klawisz "\" emuluje wciśnięcie klawisza SH (w trybie PC wciśnięcie samego klawisza Shift bez innego klawisza nie daje żadnego skutku w emulatorze). Dodatkowo znaki "{" i "}" odpowiadają naciśnięciom kombinacji SH+W ("CTR") i SH+P ("CLS").
  • IGE-XAOIGE-XAO
  • #603
    Atlantis86
    Poziom 19  
    Mały update. Moja Cobra-1 także już działa. Okazuje się, że winę za poprzednie problemy ponosił drobny błąd montażowy.

    Teraz zabrałem się za dodawanie modyfikacji. Na pierwszy ogień poszedł adapter DIP40-PLCC44 dla procesora Z80. Pozwala on na dodanie przełącznika do wybierania częstotliwości taktowania procesora, pomiędzy 3,25MHz oraz 6,5MHz. Początkowo testowałem go za pomocą procesora Z80B w wersji NMOS, wyprodukowanego przez ST - tylko taki miałem pod ręką. Komputer działał, jedyną zauważalną niedogodnością było lekkie "szarpanie" obrazu w menu przy szybszym taktowaniu.

    Ponieważ Z80B był w tym układzie lekko przetaktowany (nominalnie pracuje do 6 MHz) zamówiłem CMOS-ową wersję Z84C0008VEC, mogącą pracować do 8 MHz. Tutaj jednak pojawił się problem - komputer startuje, manu się wyświetla, ale jego praca potem jest niestabilna. Nie mogę na przykład uruchomić BASIC-a, zamiast niego wyświetla się pusty ekran albo losowe znaki. Gry (przynajmniej kilka tych, które testowałem) startują.

    Efekt ten pojawiał się na dwóch przetestowanych egzemplarzach Z84C0008VEC, zupełnie ustąpił natomiast po powrocie do Z80B w wersji PLCC lub Z80A w obudowie DIP.

    Jakiś pomysł co do możliwej przyczyny?
  • IGE-XAOIGE-XAO
  • #604
    andrzejlisek
    Poziom 28  
    Możliwą przyczyną może być to, że jak procesor ustawia adres pamięci i komendę (odczyt lub zapis), to któraś linia jest ustawiana zbyt późno lub zbyt krótko i tu powstaje problem z zapisem bądź odczytem wartości. Pewnie są jakieś różnice w sterowaniu tymi liniami przy różnych wersjach procesora.

    Ponieważ są to pamięci S-RAM, to mogę zaproponować testy odczytu i zapisu.

    Program napisany w C na Z80 można skompilować za pomocą darmowego kompilatora SDCC. Napisz program, który generuje pewien ciąg bajtów, który wygląda jak losowy, ale można ten ciąg powtórzyć. Niech program wypełni tym ciągiem całą pamięć RAM, a potem wygeneruje drugi raz ten sam ciąg i porówna z zapisanym. Możesz próbować różne wielkości ciągu i różne tempo zapisu i odczytu. Jeżeli stwierdzisz nieprawidłowości lub sam program testujący nie będzie działać prawidłowo (bo każdy program do swojego działania również potrzebuje pamięci RAM), to znaczy, że w działaniu pamięci RAM lub w ustawianiu pinów wyjściowych Z80 jest jakiś problem. Można próbować zamieniać miejscami moduły S-RAM i obserwować czy są różnice.