Od jakiegoś czasu pracuję nad projektem komputerka retro. Powstało już kilka wersji sprzętu na procesorach 8080 i 8085. Ostatnio zabrałem się za montaż nowej wersji płytki CPU, która wprowadza pewne zmiany w stosunku do poprzedniej rewizji. Żeby nie wchodzić w zbędne szczegóły powiem, że chodzi o dodanie ROM shadowingu, aby odpalony na tym CP/M mógł mieć RAM w całej przestrzeni adresowej. W każdym razie jakieś 90% projektu jest identyczne z poprzednią wersją.
Po resecie urządzenie powinno zacząć wykonywać kod z pamięci EPROM, od adresu 0x0000. Wrzuciłem na EPROM prostego blinka, ten się jednak nie wykonał. Wyciągnąłem z podstawek wszystkie pamięci, linie D0..D7 podciągnąłem rezystorami do masy (wymuszenie wykonywania rozkazu NOP) i zacząłem się przyglądać temu, co się dzieje na magistrali.
Pierwsza rzecz, która zwróciła moją uwagę, to zachowanie linii CS_EPROM i CS_RAM2. Impulsy na tych liniach powinny mieć taką samą długość, wypełnienie 50% i znajdować się w przeciwfazie (EPROM aktywny gdy A15=0, RAM gdy A15=1). Tak jednak nie jest - EPROM jest aktywny przez jakieś
25% czasu, RAM przez 75%.
Przyjrzałem się sytuacji na magistrali adresowej. O ile mniej znaczący bajt (linie A0..A7, zatrzaskiwane w rejestrze 74574) wyglądają normalnie (współczynnik wypełnienia 50%, impulsy na każdej kolejnej linii dwa razy dłuższe niż na poprzedniej) to na liniach A8..A15 (dostępnych bezpośrednio na pinach procesora) dzieje są coś dziwnego - mam tam krótkie impulsy o częstotliwości 250-500 kHz, które nie są idealnie stabilne (oscyloskop nie łapie idealnej synchronizacji, a odczyt częstotliwości pływa).
Próbowałem kilku różnych egzemplarzy 8085 (od różnych producentów) - nic. Próbowałem oglądać płytkę pod kątem błędu w montażu - nic nie widzę. Najprawdopodobniej winę za taki stan rzeczy ponosi jakaś moja pomyłka, ale za nic nie mogę jej zlokalizować.
Ktoś może ma pomysł jaki błąd (albo w jakiej części projektu) może być odpowiedzialny za takie dziwne zachowanie górnego bajtu magistrali adresowej?