logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Z80 - Jak działa stronicowanie pamięci 256k z dekoderami i adresowaniem?

Gothel 04 Wrz 2012 21:14 2310 1
REKLAMA
  • #1 11279115
    Gothel
    Poziom 2  
    Posty: 2
    Mam nadzieję, że dział prawidłowy, bo z pogranicza fantastyki to chyba nie jest.

    Otóż, interesuje mnie jakiś ogólny, pogądowy schemat wraz z wyjaśnieniem realizacji stronicowania przy użyciu Z80.

    Z80 - Jak działa stronicowanie pamięci 256k z dekoderami i adresowaniem? Z80 - Jak działa stronicowanie pamięci 256k z dekoderami i adresowaniem?

    Mam coś takiego.
    Czego nie rozumiem:
    Rozpiska "zadania" na drugim zdjęciu, jakie znaczenie mają numerki? Poza tym, że 256k to 16 stron po 16k? (Chodzi mi o relację przedstawioną za pomocą strzałek z pamięci B do A).

    W samym rozwiązaniu, ogólnie prosił bym o wyjaśnienie step by step.

    Samo 256k pamięci jest adresowane na 18 bitach, stąd od A0 do A17.
    Z80 ma 16 bitów adresowych (A0 do A15), które umożliwiają zaadresowanie do 64k. Stąd konieczność zastosowania stronicowania.

    Do czego zmierzam. Proszę o wyjaśnienie jaką dokładnie funkcję spełniają w tym wypadku 2 dekodery (wybór i aktywacja rejestrów, ok ale JAK? dlaczego sygnałami z A0, A1 A14, A15 i skąd dodatkowe A16 i A17).
    Przede wszystkim jednak największą czarną magię stanowi dla mnie OR spinający IORQ, WR (to jeszcze jestem w stanie zrozumieć) z NAND A2..A7 (Woot and why?)

    Nie bardzo potrafię przeanalizować ten schemat i wyciągnąć prawidłowe wnioski. Nawet nie wiem czy jest w pełni poprawny.

    Jeśli ktoś dysponuje, prosiłbym również o inne przykłady stronicowania.
  • REKLAMA
  • #2 11279793
    krru
    Poziom 33  
    Posty: 1819
    Pomógł: 230
    Ocena: 214
    Ja kiedys zrobiłem fajne stronicowanie na dwóch kostkach 7489 (to taka mała TTLowa pamięć 4 * 16 słów) i paru bramkach.
    7489 ma rozdzielone wejścia i wyjścia. W normalnym trybie pracy cztery nastarsze bity adresowe wybierają 8 bitowe (2 kostki po 4 bity) słowo z tej pamięci i te linie robią za najstarsze bity adresowe, zamiast 4 dostajemy 8 linii - o 4 więcej. W sumie 20 linii adresowych - 1MB obszaru.
    Do wpisywania zawartości pamięci stron wejścia danych tej pamięci podłączone są do szyny danych procka i drobna logika na IORQ umożliwia steruje zapisem. Trzeba używać instrukcji OUT (C) bo wtedy jest kontrola nad najstarszymi bitami adresowymi w operacjach IO.
    W wyniku mamy podział obszaru 64KB na 16 stron po 4KB, każda z tych stron może być dowolne zmapowany na jeden z 256 obszarów w przestrzeni 1MB. W najprostszym układzie nie ma możliwości odczytania zawartości pamięci stron, trzeba gdzieś w systemie trzymać kopię lub dorobić jakiś bufor łączący wyjścia danych pamięci z szyną danych procka i wtedy można ją czytać. Układ jest o niebo prostszy i bardziej elastyczny od tego pokazanego na tych rysunkach wyżej. Jedynie nie wiem, jak z dostępnością układu 7489, nie był on zbyt popularny.


    W twoim układzie górny dekoder pracuje autonomicznie (jest cały czas aktywny) i wybiera odpowiedni rejestr w czasie normalnej pracy procka. Steruje wejściami OE rejestrów czyli wybiera z którego rejestru będzą pochodziły starsze linie adresowe w zależności od A14,A15. Dolny dekoder steruje zapisem do rejestrów, tak by procek mogł ustawiać mapowanie pamięci. Steruje wejściami CLK rejestrów (a więc zapisem) Używa A0 A1 i IORQ więc zapis jest wykonywany poprzez instrukcję OUT. Dodatkowa bramka dekoduje pozostałe linie adresowe i powoduje, że zapis reaguje jedynie na adresy 111111XX.
    W sumie robi to właśnie za 4 słowową pamięc o słowie 8 bitowym (nie wiem, czemu są narysowane tylko 4 wyjścia, skoro jest podłączone wszystkie 8 wejść rejestrów) o rozdzielonych wejściach i wyjściach. Jednak prosciej użyć gotowej kostki pamięci niż składać ją z elementów.
REKLAMA