Autor Wątek: Dekoder adresów na 74LS138  (Przeczytany 3559 razy)

KWF

  • *****
  • Wiadomości: 6832
  • Miejsce pobytu:
    trzecia planeta od Słońca
  • "I co ja robię tu, u-u, co Ty tutaj robisz ..."
    • PCBway
Dekoder adresów na 74LS138
« dnia: 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:
  • 0x1FFD - wraz z linia D2 do sterowania bankami ROM w +3
  • 0x7FFD - przełącznik banków pamięci w 128K
  • 0xBFFD - dekoder AYka
  • 0xFFFD - dekoder AYka

Do 'LS138 są podpięte następujące sygnały:
  • we A0 = A14
  • we A1 = A15
  • we A2 = /WR
  • we /E1 = /IORQ
  • we /E2 = A1
  • we E3 = Vcc

Na wyjściach są dekodowane :
  • Q0 = 0x1FFD (A14, A15 i A1 w stanie niskim)
  • Q1 = 0x7FFD (A15 i A1 w stanie niskim)
  • Q2 = 0xBFFD (A14 i A1 w stanie niskim)
  • Q3 = 0xFFFD (zapis do portu)
  • Q7 = 0xFFFD (odczyt z portu; /WR w stanie wysokim)

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)?
KWF
-----
R Tape loading error 0:1
Moje zabawki: https://github.com/McKlaud76

matofesi

  • *****
  • Wiadomości: 2048
  • Miejsce pobytu:
    Toruń/Poland
Odp: Dekoder adresów na 74LS138
« Odpowiedź #1 dnia: 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.

KWF

  • *****
  • Wiadomości: 6832
  • Miejsce pobytu:
    trzecia planeta od Słońca
  • "I co ja robię tu, u-u, co Ty tutaj robisz ..."
    • PCBway
Odp: Dekoder adresów na 74LS138
« Odpowiedź #2 dnia: 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.
KWF
-----
R Tape loading error 0:1
Moje zabawki: https://github.com/McKlaud76

tapy

  • ***
  • Wiadomości: 223
  • Z80 & CP/M
Odp: Dekoder adresów na 74LS138
« Odpowiedź #3 dnia: 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 .

trojacek

  • *****
  • Wiadomości: 6840
  • Miejsce pobytu:
    Warszawa
Odp: Dekoder adresów na 74LS138
« Odpowiedź #4 dnia: 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?

KWF

  • *****
  • Wiadomości: 6832
  • Miejsce pobytu:
    trzecia planeta od Słońca
  • "I co ja robię tu, u-u, co Ty tutaj robisz ..."
    • PCBway
Odp: Dekoder adresów na 74LS138
« Odpowiedź #5 dnia: 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?
KWF
-----
R Tape loading error 0:1
Moje zabawki: https://github.com/McKlaud76

tapy

  • ***
  • Wiadomości: 223
  • Z80 & CP/M
Odp: Dekoder adresów na 74LS138
« Odpowiedź #6 dnia: 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).

KWF

  • *****
  • Wiadomości: 6832
  • Miejsce pobytu:
    trzecia planeta od Słońca
  • "I co ja robię tu, u-u, co Ty tutaj robisz ..."
    • PCBway
Odp: Dekoder adresów na 74LS138
« Odpowiedź #7 dnia: 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?
KWF
-----
R Tape loading error 0:1
Moje zabawki: https://github.com/McKlaud76

trojacek

  • *****
  • Wiadomości: 6840
  • Miejsce pobytu:
    Warszawa
Odp: Dekoder adresów na 74LS138
« Odpowiedź #8 dnia: 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...).

KWF

  • *****
  • Wiadomości: 6832
  • Miejsce pobytu:
    trzecia planeta od Słońca
  • "I co ja robię tu, u-u, co Ty tutaj robisz ..."
    • PCBway
Odp: Dekoder adresów na 74LS138
« Odpowiedź #9 dnia: 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ł.
KWF
-----
R Tape loading error 0:1
Moje zabawki: https://github.com/McKlaud76