Byg en komplet 80C31-computer på breadboards

Philips P80C31SFPN er en ROM-løs processor i 8051-familien. Den skal have ur, reset, ekstern program-ROM og en lås, som skiller den lave adressebyte fra databussen. Her tilføjer vi 8 KB ekstern RAM og to status-LED'er. Alle aktive dele nedenfor findes i iManias butik; derudover bruges almindelige passive komponenter, ledning, reguleret 5 V og et værktøj til at programmere ROM'en. Dette er en gennemarbejdet ledningsvejledning, ikke en påstand om at den færdige opstilling er prøvet på bordet.

Blokdiagram over 80C31, adresselås, program-ROM og data-RAM
Systemets fire IC'er og signaler. Stryg til siden på telefon.

Dele

  • 1 × Philips P80C31SFPN, DIP-40 — 80C31 CPU — Processor uden intern program-ROM.
  • 1 × SN74ALS873BNT, DIP-24 — 8-bit adresselås — Fastholder A0–A7.
  • 1 × AT27C512R-55PC, DIP-28 — 64 KB OTP-ROM — Programlager; programmeres først.
  • 1 × HM6264LP-15, DIP-28 — 8 KB SRAM — Ekstern datahukommelse.
  • 1 × 11,0592 MHz HC49/SMT-krystal — NKG-krystal — Ur; lod to korte ben på til breadboard.
  • 2 × breadboards med 630 kontaktpunkter — MCBB630 — Plads til de fælles busser.
  • 2 × hvide hulmonterede LED'er — Vishay TLWW76 — Bestået/fejl.

Brug også en reguleret 5 V-forsyning, forbindelsesledninger, én 100 nF keramisk kondensator helt tæt ved hvert IC, én 10 µF over forsyningsskinnerne, to 22 pF til krystallet, én 10 µF til reset, én 10 kΩ modstand, to 1 kΩ LED-modstande og eventuelt en sluttekontakt til manuel reset. En DIP-40-sokkel er valgfri. SMT-krystallet må ikke klemmes direkte ned i breadboardet: lod to korte ledninger på. ROM-programmereren bruges før opbygningen og indgår ikke i det kørende kredsløb. En blank OTP-ROM kan ikke starte processoren.

Sådan virker én hukommelsescyklus

CPU'en lægger først A0–A7 på port 0 og A8–A15 på port 2. Når ALE er høj, følger SN74ALS873BNT indgangene; når ALE falder, holder låsen A0–A7. Derefter bruges port 0 som databus D0–D7. Lav PSEN lader ROM'en levere en instruktion. Lav RD lader RAM'en levere data ved MOVX; lav WR skriver til RAM. ROM og RAM deler dataledninger, men har hver sit adresserum og hver sin udgangsaktivering. Forbind aldrig deres OE-ben sammen: så kan begge drive bussen samtidig.

Forbindelser, trin for trin

  1. Forsyning og reset. Afbryd strømmen. Placer alle fire IC'er over breadboardenes midterriller med hak i samme retning. Forbind alle +5 V-skinner og alle jordskinner; mange breadboard-skinner er afbrudt på midten. CPU ben 40, lås ben 24, ROM ben 28 og RAM ben 28 til +5 V. CPU ben 20, lås ben 12, ROM ben 14 og RAM ben 14 til jord. Sæt 100 nF tæt ved hvert IC og 10 µF over skinnerne. CPU EA ben 31 skal til jord, så den ROM-løse CPU altid henter programmet eksternt. CPU RST ben 9 får 10 kΩ til jord og 10 µF til +5 V (elektrolyttens plus mod +5 V); en valgfri knap forbinder RST til +5 V. Reset er aktiv høj og skal holdes høj, til oscillatoren er startet.
  2. Ur. Forbind 11,0592 MHz-krystallet mellem CPU XTAL1 ben 19 og XTAL2 ben 18. Sæt én 22 pF fra hvert krystalben til jord. Hold disse ledninger meget korte. Krystallet er SMT og skal have påloddede ledninger, som fastgøres sikkert før strøm tilsluttes. Denne CPU-variant er specificeret til 16 MHz, så 11,0592 MHz ligger inden for området.
  3. Fælles adresse-/databus. For hvert bit n=0…7 forbindes CPU P0.n til lås Dn, ROM On og RAM I/On. CPU P0.0…P0.7 er ben 39, 38, 37, 36, 35, 34, 33, 32. ROM og RAM D0…D7 er ben 11, 12, 13, 15, 16, 17, 18, 19. Lås D0…D7 er ben 3, 4, 5, 6, 7, 8, 9, 10. Port 0 bruger interne pull-ups, når den udsender adresser på ekstern bus; her kræves ingen separat modstandspakke.
  4. Lav adresse. Lås Q0…Q7 er ben 22, 21, 20, 19, 18, 17, 16, 15. Forbind dem til tilsvarende ROM- og RAM-adresser A0…A7, ben 10, 9, 8, 7, 6, 5, 4, 3 på begge hukommelseschips. CPU ALE ben 30 til lås LE ben 23 og 14. Aktiv-lav OE ben 2 og 11 til jord; aktiv-lav CLR ben 1 og 13 til +5 V. Begge låsens firebitshalvdele skal aktiveres.
  5. Høj adresse. CPU P2.0…P2.7, ben 21…28, går til ROM A8…A15 på ben 25, 24, 21, 23, 2, 26, 27, 1 i samme rækkefølge. RAM har kun A8…A12: forbind P2.0…P2.4 til RAM ben 25, 24, 21, 23, 2. P2.5…P2.7 forbindes ikke til RAM.
  6. Styresignaler. ROM CE ben 20 til jord; ROM OE/VPP ben 22 kun til CPU PSEN ben 29. RAM aktiv-lav CS1 ben 20 til jord og aktiv-høj CS2 ben 26 til +5 V. RAM OE ben 22 kun til CPU RD/P3.7 ben 17; RAM WE ben 27 kun til CPU WR/P3.6 ben 16. Uden adressedekoder spejles 8 KB RAM gennem hele det eksterne data-adresserum. Det er tilsigtet her; lad software bruge 0000h–1FFFh til RAM.
  7. Statuslamper. For hver LED: +5 V → 1 kΩ → LED-anode; LED-katode til CPU P1.0 ben 1 eller P1.1 ben 2. Lavt output tænder LED'en. Brug aldrig LED uden seriemodstand.
Ben set oppefra på 80C31 og SN74ALS873BNT
Ben set oppefra; kontrollér hakket på hver chip. Stryg til siden på telefon.

Programmering og første opstart

Det vedlagte testprogram i assembler og 64 KB ROM-binærfil starter på kodeadresse 0000h. Programmet skriver 5Ah til ekstern RAM på 0000h og læser tilbage. Ved korrekt værdi blinker P1.0; ved fejl lyser P1.1 konstant. Programmer binærfilen i en blank AT27C512R-55PC med en programmer, der udtrykkeligt understøtter netop dette IC, og læs den tilbage til bytevis kontrol. OTP kan kun programmeres én gang; et forkert image kræver en ny blank chip. Afbryd strøm før chips sættes i eller tages ud.

Brug en strømbegrænset, reguleret 5 V-kilde. Mål 5 V og jord ved hver chip. Ved opstart skal P1.0 blinke og P1.1 være slukket. Hvis intet sker, kontrollér at reset falder igen, at uret kører, EA er lav, ALE pulser, ROM OE styres af PSEN, og de første tre kodebytes på 0000h. Hvis P1.1 lyser, kontrollér RAM's to chip-select-signaler, RD/WR og adresse-/databussen. En tung oscilloskopprobe kan stoppe krystaloscillatoren. Opstillingen er ikke fysisk prøvet; lange breadboard-ledninger kan gøre 11 MHz upålidelig.

Datablade

Ben og tidsforløb er kontrolleret mod Philips 80C31/80C32, TI SN74ALS873B, Microchip AT27C512R og det originale datablad for Hitachi HM6264LP-15 (Hitachi IC Memories Data Book 1985, side 158). Kontrollér hak og mærkning på de faktiske chips før spænding tilsluttes.