Autor Wątek: 8085 i karta CF  (Przeczytany 6706 razy)

Atlantis

  • ****
  • Wiadomości: 319
  • Miejsce pobytu:
    Kraków
Odp: 8085 i karta CF
« Odpowiedź #30 dnia: 2025.02.11, 17:12:07 »
Może jeszcze podepnę się pod ten wątek. Zbudowałem nową wersję płyty procesorowej dla tego komputerka na 8085. Różnice są niewielkie i głównie mają na celu wprowadzenie ROM shadowingu.
Podczas wstępnych testów okazało się, że coś jest nie tak. Teoretycznie po resecie pierwsza połowę przestrzeni adresowej powinien zajmować EPROM, drugą natomiast jeden z chipów RAM. W przypadku wymuszonego wykonywania instrukcji NOP (linie D0..D7 podciągnięte do masy rezystorami) ich sygnały CS powinny mieć współczynnik wypełnienia 50% i znajdować się w przeciwfazie. W rzeczywistości CS_EPROM zajmuje jakieś 25%, CS_RAM około 75%.
Sprawdzając poszczególne sygnały zauważyłem, że tym razem zatrzaskiwane linie A0..A7 wyglądają w porządku. Kolejne sygnały na liniach mają współczynnik wypełnienia 50% i każda kolejna linia ma dwa razy mniejszą częstotliwość. Natomiast na liniach A8..A15 mam szybkie impulsy o częstotliwościach kilkuset kHz, których charakterystyka nie jest idealnie stabilna.
Próbowałem podmiany procesora na inny egzemplarz, ale on zachowuje się dokładnie tak samo, więc najwyraźniej problem leży gdzieś w układzie. W załączniku załączam zrzuty ekranu oscyloskopu. Ktoś ma jakiś pomysł?

Atlantis

  • ****
  • Wiadomości: 319
  • Miejsce pobytu:
    Kraków
Odp: 8085 i karta CF
« Odpowiedź #31 dnia: 2025.02.19, 10:13:23 »
Ok, problem rozwiązany. Okazuje się, że te impulsy na wyższym bajcie magistrali adresowej są czymś normalnym przy próbie wymuszenia NOP za pomocą podciągnięcia D0..D7 do GND. Sprawdziłem i dokładnie taka sama sytuacja występuje też na starszej wersji hardware'u. Skupiłem się na debugowaniu tego zachowania, a tymczasem bug był gdzie indziej - dawno temu projektując którąś z kolei płytkę popełniłem błąd, podłączając pin P układu pamięci EPROM do linii A14. Wszystko było w porządku tak długo, jak EPROM znajdował się pod adresem 0xC000 - przy każdej próbie odczytu wejście P znajdowało się w stanie wysokim, tak więc pomyłka pozostawała niezauważona i kopiowałem ją do kolejnych płytek. Teraz jednak pamięć znalazła się na początku przestrzeni adresowej, więc nie był możliwy poprawny odczyt.