Article View: pl.misc.elektronika
Article #795777Problem z dekoderem adresów
From: Atlantis
Date: Wed, 16 Apr 2025 08:14
Date: Wed, 16 Apr 2025 08:14
67 lines
4424 bytes
4424 bytes
Jakiś czas temu zacząłem pracować nad projektem komputera na 8085, pierwotnie przyjmując następujące założenia co do organizacji pamięci. 0x0000-0x7FFF - RAM1 (62256) 0x8000-0xBFFF - RAM2 (62256 podzielony na dwa banki) 0xC000-0xFFFF - EPROM Takie podejście całkiem fajnie sprawdzało się w przypadku BASIC-a, ale okazało się beznadziejne, gdy zabrałem się za uruchamiania CP/M - brakowało pamięci żeby uruchomić niektóre programy. Przygotowałem więc jeszcze jedną wersję płyty procesorowej, ze zmodyfikowanym dekoderem adresów (pierwotna wersja używała układów 74HCT, tym razem użyłem GAL-a). Złożyłem to, zmodyfikowałem system, wszystkie zadziałało. Tym razem organizacja pamięci wygląda następująco: 0x0000-0x7FFF - EPROM lub RAM1 w zależności od stanu linii ROM_SHADOW ustawianej na rejestrze 74273. Po resecie domyślnie startuje EPROM, potem można to zmienić. 0x8000-0xFFFF - RAM2, dostępny cały czas. Przyszło mi jednak do głowy, żeby dwa wcześniej złożone wcześniej prototypy też zmodyfikować w ten sposób, aby pracowały z taką organizacją pamięci. Ujednolicenie tego z nową wersją przez wciśnięcie GAL-a wymagałoby zbyt dużych przeróbek, więc zastosowałem inne podejście. Usunąłem układ 74HCT139 i na jego miejsce wlutowałem nowy moduł dekodera adresów, zbudowany na elementach SMD (74HCT139 + pojedyncza bramka AND). Połączenia wyglądają następująco: Wejście A połówki 74HCT139 - sygnał SHADOW_ROM Wejście B połówki 74HCT139 - linia adresowa A15 Wejście G połówki 74HCT139 - sygnał MEM_EN (z istniejącej logiki, która interpretuje sytuację na magistrali, stary dekoder tez z niego korzystał) Wyjście Y0 połówki 74HCT139 - CS_EPROM Wyjście Y2 połówki 74HCT139 - CSRAM1 Wyjścia Y1 i Y3 połówki 74HCT139 - do wejść bramki AND, której wyjście stanowi sygnał CS_RAM2. Wejścia niewykorzystanej połówki 74HCT139 są połączone z masą. Konieczne było też wprowadzenie paru innych modyfikacji (m.in. wywalenie istniejącego układu do tymczasowego ustawiania linii A14 i A15 po resecie (żeby kod wykonywał się z EPROM-u w górnej części przestrzeni adresowej) oraz doprowadzenie A14 do RAM2. Generalnie przyglądałem się schematowi dziesiątki razy i nie widzę powodu, dla którego miałoby to nie działać. Połączenia odpowiadają logice, którą zaimplementowałem w GAL-u we wspomnianej wersji, która działa. Sprawdziłem też połączenia multimetrem aby upewnić się, że wszystkie sygnały dochodzą tam, gdzie trzeba. Co dzieje się w rzeczywistości? Po resecie kod zaczyna wykonywać kod z EPROM-u, posiada też dostęp do RAM2 (bo tam trzyma stos i niektóre zmienne). Uruchamia się bootloader, który ładuje CP/M z karty pamięci do pewnego obszaru w RAM2. Operacja kończy się powodzeniem i wykonany zostaje skok do tej lokalizacji. Tutaj też jeszcze kod działa, bo kolejne instrukcje są wykonywane. Aż do momentu, kiedy próbuję przestawić stan linii ROM_SHADOW, aby mieć dostęp do RAM1. Wtedy wszystko się zawiesza. Jak wspominałem, w przypadku rozwiązania z GAL-em wszystko działało, więc problem nie leży po stronie kodu. Ktoś ma pomysł co może być przyczyną takiego zachowania? Sytuacja objawia się tak samo w przypadku obydwu zmodyfikowanych egzemplarzy. Jakiś problem z timingami zastosowanych elementów SMD?
Technical Details
Message-ID:
<vtnosv$tih$1@news.chmurka.net>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.chmurka.net!.POSTED.byj101.neoplus.adsl.tpnet.pl!not-for-mailShow Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.chmurka.net!.POSTED.byj101.neoplus.adsl.tpnet.pl!not-for-mail From: Atlantis <marekw1986NOSPAM@wp.com> Newsgroups: pl.misc.elektronika Subject: Problem z dekoderem adresów Date: Wed, 16 Apr 2025 10:14:23 +0200 Organization: news.chmurka.net Message-ID: <vtnosv$tih$1@news.chmurka.net> MIME-Version: 1.0 Injection-Date: Wed, 16 Apr 2025 08:14:23 -0000 (UTC) Injection-Info: news.chmurka.net; posting-account="Atlantis"; posting-host="byj101.neoplus.adsl.tpnet.pl:83.30.29.101"; logging-data="30289"; mail-complaints-to="abuse-news.(at).chmurka.net" User-Agent: Mozilla Thunderbird Cancel-Lock: sha1:GPuitqIngUgGkXkMM8GRBvTqnHI= sha256:uyfEGoiosjFNXGbpzq43Jbo7uubLtU/3kGxWNK5fP6E= sha1:2QMS1IZHfYgJ+9lzicEdYkoOFJE= sha256:h2baJqfhG00uutkvcV+Cqn2sQX1lnbh5a6U0AngLP5Q= Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit