forum speccy.pl

ZX Spectrum => HARDWARE => Wątek zaczęty przez: KWF w 2021.01.11, 12:14:03

Tytuł: Dekoder adresów na 74LS138
Wiadomość wysłana przez: KWF w 2021.01.11, 12:14:03
Przyglądam się dekoderowi adresów na 'LS138 i pewna rzecz nie daje mi spokoju. Sytuacja wygląda tak, 'LS138 jest wykorzystany do dekodowania następujących portów:

Do 'LS138 są podpięte następujące sygnały:

Na wyjściach są dekodowane :

Z wyjść Q2, Q3 i Q7 są formowane sygnały BC1 i BDIR dla AYka.

Wszystko wygląda poprawnie, ale przyjrzałem się jeszcze kilku innym podobnym rozwiązaniom i one różnią się w jednym szczególe. Na wejście E3 jest podawany stan linii A12 lub /M1. O ile rozumiem, że dodanie A12 w stanie wysokim zapewni większą selektywność działania dekodera, szczególnie przy wykorzystaniu wyjścia Q0 (0x1FFD). O tyle nie do końca rozumiem potrzebę badania stanu linii procesora /M1. Co próbowano osiągnąć w ten sposób? Wiem, że jej stan niski zablokuje dekoder dla operacji "op code fetch" i "interrupt acknowledgment". Czy jest to konieczne? Które rozwiązanie jest najlepsze (Vcc, A12 czy /M1 na wejście G1)?
Tytuł: Odp: Dekoder adresów na 74LS138
Wiadomość wysłana przez: matofesi w 2021.01.11, 13:01:30
Szczerze mówiąc jak czytam dokumentację procesora to nie rozumiem użycia /M1 w dekoderze... Dekoder ma rozpoznać moment zapisu/odczytu do/z konkretnych portów czyli moment w którym wystawione jest /IORQ i konkretny adres. /M1 w momencie zapisu do portu zawsze będzie wysokie... i właśnie zrozumiałem ;) G1 jest active-high czyli /M1 w cyklu dostępu do danych da na nim wysoki stan włączając dekoder. /IORQ+/M1 może wystąpić tylko jako potwierdzenie przerwania - prawdopodobieństwo zbiegu okoliczności - dekodowany adres na szynie, i potwierdzenie przerwania jest w zasadzie pomijalne. Moim zdaniem nie ma praktycznej różnicy między użyciem Vcc a /M1 natomiast jak sam napisałeś użycie A12 ma sens bo zwiększa precyzję dekodowania - pytanie tylko, czy skoro w oryginalnym sprzęcie jest Vcc to nie znajdzie się jakiś cwany programista używający adresów z A12 ustawionym na zero ;)

Ale to i tak tylko dywagacje z punktu widzenia dokumentacji - może z punktu widzenia sprzętowego jest jeszcze jakaś dająca się zauważyć różnica między użyciem ciągłego Vcc a "mrugającego" /M1.
Tytuł: Odp: Dekoder adresów na 74LS138
Wiadomość wysłana przez: KWF w 2021.01.11, 13:17:51
Dzięki mat. Co prawda jest jeszcze jedna wariacja tego dekodera, w którym na wejście sterujące E3 (aktywne w stanie wysokim) jest podawany sygnał /IORQGE.
Tytuł: Odp: Dekoder adresów na 74LS138
Wiadomość wysłana przez: tapy w 2021.01.11, 19:38:52
W systemach Z80 strob dekodera adresów I/O przez /M1 i /IORQ jest wymagany, tylko i wyłącznie przy używaniu wektorowych przerwań, który może się pokrywać z dekodowanymi adresami I/O. W pozostałych przypadkach, jak w ZX Spectrum jest to jednak róża do kożucha .
Tytuł: Odp: Dekoder adresów na 74LS138
Wiadomość wysłana przez: trojacek w 2021.01.11, 19:54:20
Może wariant z /M1 to jakiś rosyjski klon, który ma na pokładzie Z80 DMA, CTC lub SIO?
Tytuł: Odp: Dekoder adresów na 74LS138
Wiadomość wysłana przez: KWF w 2021.01.11, 21:35:29
/M1 jest wykorzystane w Harlequinie 128 wydanie 3B oraz późniejszych. Możliwe, że chodzi o tryb ALL RAM?
Tytuł: Odp: Dekoder adresów na 74LS138
Wiadomość wysłana przez: tapy w 2021.01.11, 22:44:45
Nie sądzę, badanie /M1 w czasie dekodowania adresów I/O nie ma znaczenia, jeśli to nie jest ten, jedyny moment w cyklach CPU, gdyż taki dekoder nie uzna wektora przerwania (a dokładnie jego skoku) jako dekodowanego adresu I/O, bo tu jest ewentualne miejsce na konflikt (znam to z bolesnej autopsji, kiedyś się prawie poddałem, bo nie umiałem namierzyć powodu nieoczekiwanych zwiechów).
Tytuł: Odp: Dekoder adresów na 74LS138
Wiadomość wysłana przez: KWF w 2021.01.14, 21:49:28
tapy: dzięki. W takim razie czy taka sytuacja jest możliwa w ZX Spectrum? Domyślam się, że to co opisujesz ma znaczenie w trybie przerwań IM2, a ZX Spectrum chodzi w IM1. Jak często jest jest wykorzystywany tryb przerwań IM2 w przypadku ZX Spectrum?
Tytuł: Odp: Dekoder adresów na 74LS138
Wiadomość wysłana przez: trojacek w 2021.01.14, 23:30:21
Jak często jest jest wykorzystywany tryb przerwań IM2 w przypadku ZX Spectrum?

Przez znakomitą większość gier. Tyle, że nie jest wykorzystywana fizyczna "wektoryzacja" z I/O, dlatego budowana jest tablica wypełniana tą samą wartością.
Tak naprawdę jedynym sensem trybu 2 z wektorem I/O jest korzystanie z układów rodziny Z80 (DMA, CTC, PIO, SIO...).
Tytuł: Odp: Dekoder adresów na 74LS138
Wiadomość wysłana przez: KWF w 2021.04.10, 06:41:39
Jeszcze dołożę, aby bardziej zamieszać z tym dekoderem. Yarek, w jednym ze swoich opisów, sugeruje, aby taki dekoder odczulić od portów wykorzystywanych w Timexach (tj. 0xF4, 0xF5 i 0xF6), poprzez badanie linii adresowej A3. Dekoder powinien tylko odzywać się, kiedy A3 jest w stanie wysokim, czyli na wejście E3 należałoby podpiąć ten sygnał.