Blog:Pamäťové rozšírenie 256kB RAM

Z PMD 85 Infoserver

Pamäťové rozšírenie 256kB RAM pre PMD 85-2A a PMD 85-3

Pamäť RAM 64kB v PMD 85-2A a PMD 85-3 je tvorená ôsmimi čipmi DRAM 4164 (65536 x 1bit). Ich nahradením za 8 čipov DRAM 41256 (262144 x 1bit) a pridaním stránkovacej logiky, je možné rozšíriť pamäť RAM na 256kB. Keďže mikroprocesor môže adresovať maximálne 64kB pamäti, 256kB pamäte sa tzv. stránkuje, či mapuje do adresného priestoru mikroprocesora.

  • 256kB pamäti sa delí na 16 stránok po 16kB: PG00PG15
  • pamäťový priestor CPU sa delí na 4 oblasti (regióny):
    • REG0 - od adresy 0000h po 3FFFh
    • REG1 - od adresy 4000h po 7FFFh
    • REG2 - od adresy 8000h po 0BFFFh
    • REG3 - od adresy 0C000h po 0FFFFh

Ak nie je pre nejakú oblasť zvolená iná stránka, tak je v nej namapovaná zodpovedajúca základná stránka PG00PG03.

Stránky PG03 a PG07 zdieľa aj Video-procesor. Ten pristupuje ku týmto stránkam nezávisle od CPU a teda tieto stránky vôbec nemusia byť namapované v adresnom priestore CPU.

  • stránka PG03 je VRAM-0
  • stránka PG07 je VRAM-1

stránkovanie

Stránkovanie je prístupné na porte 6Dh. Z portu je možné zapísanú hodnotu aj prečítať. Po resete je port vynulovaný, čo znamená, že sú v pamäťovom priestore namapované všetky základné stránky a zobrazuje sa VRAM-0.

7 6 5 4 3 2 1 0
VRAM REGION1 REGION0 PAGE3 PAGE2 PAGE1 PAGE0
  • bity PAGE<x> určujú číslo stránky, ktorá bude namapovaná do oblasti určenej bitmi REGION<x>
  • ktorákoľvek stránka tak môže byť namapovaná do ktorejkoľvek oblasti
  • mapovanie je platné vždy iba pre jednu konkrétnu stránku a oblasť!
  • bit VRAM určuje, ktorá VideoRAM sa bude zobrazovať: 0=PG03, 1=PG07
  • ROM sa stránkuje obvyklým spôsobom na 4. bite portu PC sytémovej 8255 (viď. AllRAM)
  • ak je ROM nastránkovaná, zápis do časti RAM pod ROM je možný, ako obvykle

príklad použitia

Z popisu stránkovacieho portu je vidieť, že voľba banky s rovnakým číslom, ako je číslo oblasti znamená, že v pamäťovom priestore sú vždy základné stránky a teda zápis hodnôt 00h, 11h, 22h alebo 33h na port 6Dh je ekvivalentné. To je možné využiť na test prítomnosti pamäťového rozšírenia.

        MVI     A,33h           ; test na prítomnosť pamäťového rozšírenia
        OUT     6Dh
        IN      6Dh             ; prečítaj zapísanú hodnotu
        CPI     33h
        JZ      MEM256_OK       ; pamäťové rozšírenie je prítomné
        JNZ     MEM256_NO       ; pamäťové rozšírenie sa nenašlo

        MVI     A,82h           ; povolenie a zapnutie AllRAM
        OUT     0F7h

        MVI     A,09h           ; ROM pripojená
        OUT     0F7h

        MVI     A,08h           ; ROM odpojená - AllRAM
        OUT     0F7h

        MVI     A,16h           ; stránka 6 do oblasti 1, zobrazuje sa VRAM-0
        OUT     6Dh             ; v pamäťovom priestore sú stránky 0,6,2,3

        MVI     A,7Fh           ; stránka 15 do oblasti 3, zobrazuje sa VRAM-1
        OUT     6Dh             ; v pamäťovom priestore sú stránky 0,1,2,15

        MVI     A,07h           ; stránka 7 do oblasti 0, zobrazuje sa VRAM-0
        OUT     6Dh             ; v pamäťovom priestore sú stránky 7,1,2,3

        MVI     A,6Ch           ; stránka 12 do oblasti 2, zobrazuje sa VRAM-1
        OUT     6Dh             ; v pamäťovom priestore sú stránky 0,1,12,3

hardvérové riešenie

Stránkovacia a mapovacia logika je pomerne "komplikovaná" a jej realizácia klasickými TTL obvodmi by bola veľmi zložitá. Preto je použité hradlové pole Xilinx XC9536, ktoré okrem samotného mapovania pamäti obsahuje aj porty a logiku pre prerušenie od video procesora, VGA Konvertor, Keyface a prípadne aj interný MIF 85.

Schému a detailneší popis zapojenia doplníme neskôr.