🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.misc.elektronika
Article #795777

Problem z dekoderem adresów

#795777
From: Atlantis
Date: Wed, 16 Apr 2025 08:14
67 lines
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-mail

Show 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