Guide til retrocomputere · Del 2

Sådan vælger en 74HC138 en hukommelseschip

CPU’en giver hver byte en adresse. 74HC138 omsætter en del af adressen til et signal om, hvilken chip der må svare. Vi bygger forklaringen op trin for trin.

Ny på busserne? Begynd med del 1

Hvorfor skal noget vælges?

RAM, ROM og I/O-chips deler CPU’ens otte dataledninger. Under en læsning må én chip lægge en værdi på ledningerne, mens de øvrige er tavse. Derfor har hver chip en indgang til chip-enable eller chip-select, ofte skrevet /CE eller /CS. At »vælge en enhed« betyder at aktivere indgangen for det adresseområde, den har fået. Det er noget andet end at vælge en bestemt byte inde i chippen.

CPU’en har adresselinjerne A0 til A15. De nederste kan vælge en byte inde i en hukommelseschip. De øverste kan vælge, hvilken chip der aktiveres. En 74HC138 læser tre binære indgange, A, B og C, og aktiverer én af otte udgange. Skråstregen foran et udgangsnavn betyder, at lavt niveau vælger den.

Find først benene

74HC138-benoversigt set ovenfra med A, B, C, enable-indgange, otte udgange, forsyning og jord.
Set ovenfra med hakket i den ende, hvor ben 1 sidder. Bennumre og funktioner følger producentens diagram over kapslingen med 16 ben. En skråstreg (/) betegner et aktivt lavt signal.

I et enkelt eksempel, hvor kredsen altid er aktiv, forbindes ben 6 (G1) til højt niveau og ben 4 og 5 (/G2A, /G2B) til lavt niveau. Chippen skal have forsyning på ben 16 og jord på ben 8. Sæt en 0,1 µF afkoblingskondensator tæt ved forsyningsbenene. Det er principforbindelser, ikke et komplet printdiagram: Kontroller logikniveauer og timing, før du bygger.

Del adresserne i otte vinduer

Forbind CPU’ens A13 til dekoderens indgang A (ben 1), A14 til B (ben 2) og A15 til C (ben 3). Hvorfor netop dem? De nederste 13 bit, A0–A12, kan tælle fra 0 til 8191: 8 KB positioner i ét vindue. De næste tre bit bestemmer, hvilket af de otte vinduer CPU’en bruger.

Y0 · $0000–$1FFF

A15 A14 A13 = 000. Udgangsben 15 bliver lavt.

Y1 · $2000–$3FFF

001. Udgangsben 14 bliver lavt.

Y2 · $4000–$5FFF

010. Udgangsben 13 bliver lavt.

Y3 · $6000–$7FFF

011. Udgangsben 12 bliver lavt.

Y4 · $8000–$9FFF

100. Udgangsben 11 bliver lavt.

Y5 · $A000–$BFFF

101. Udgangsben 10 bliver lavt.

Y6 · $C000–$DFFF

110. Udgangsben 9 bliver lavt.

Y7 · $E000–$FFFF

111. Udgangsben 7 bliver lavt. Dette område indeholder resetvektoren.

Otte adresseområder på 8 KB vælges af Y0 til Y7; $E000–$FFFF hører til Y7.
Med A15–A13 som indgange dækker hver aktivt lav udgang et vindue på 8 KB. Det fremhævede område indeholder $E123.

Gennemgå adressen $E123

  1. CPU’en lægger $E123 på A0–A15. De øverste bit A15 A14 A13 er 111.
  2. Den aktiverede 74HC138 trækker /Y7 lav (ben 7). Alle øvrige Y-udgange forbliver høje.
  3. Hvis en ROM på 8 KB har sin /CE forbundet til Y7, vælges den. Dens egne A0–A12-indgange ser $0123, forskydningen inde i ROM’en.
  4. Ved læsning kan ROM’en lægge byten på den adresse på D0–D7. RAM og I/O skal forblive inaktive.
Vigtige begrænsninger. En hukommelseschip på 32 KB er større end ét vindue på 8 KB; én Y-udgang giver kun adgang til en fjerdedel af den. En VIA har langt færre end 8 KB registre, så registrene gentages (»spejles«) gennem hele vinduet, medmindre du dekoder flere adressebit. Styr også læse-/skrivesignalerne korrekt, og kontroller forsinkelsen, så to enheder aldrig driver databussen samtidig.

Se dernæst, hvordan en 74HC245 styrer retningen på en 8-bit databus, når adressen har valgt enheden.

Butikken fører en MC74HC138AD i SOIC-16 til overflademontering. Den passer ikke direkte i et loddefrit forsøgsbræt; brug en adapter, eller find en udgave til gennemgående montering, hvis det passer bedre til dit projekt.

Se retro-IC’er