Space Invaders 2001 - The Classic Arcade Game

Ritning

Processor MC68008
Microprocessorn vi valde finns i två versioner, 48 respektive 52 pins. Då emulatorn endast kan hantera 48 pins versionen valdes denna. 48 pins versionen saknar bl a några adressledningar och begränsar därmed det adresserbara minnet till 1 Mb.

MC68008 är en bantad version av storebror MC68000. Den möjliggör design av kostnadseffektiva system med 8 bitars databuss men med 32 bitars processorarkitektur. All kommunikation med periferienheter är normalt asynkron, dock finns stöd även för synkrona enheter.

En asynkron busscykel (write):
  1. Processorn lägger ut en adress på adressbussen.
  2. Processorn aktiverar adress-stroben (AS) - indikerar att giltig adress finns på adressbussen.
  3. Processorn lägger ut data på databussen.
  4. Processorn aktiverar data-stroben (DS) - indikerar att giltig data finns på databussen.
  5. Periferienheten läser data från databussen.
  6. Periferienheten aktiverar data-acknowledge (DTACK).
Vi gör en förenklad lösning av ovanstående busscykel - vi antar att DTACK kan genereras efter en bestämd tid och förusätter därmed att periferienheten hinner med att läsa in data från databussen under en viss förutbestämd tid. DTACK genereras i en PAL krets och dess grindfördröjning får tjäna som konstant tidsfördröjning.

En asynkron busscykel (read):
  1. Processorn lägger ut en adress på adressbussen.
  2. Processorn aktiverar adress-stroben (AS).
  3. Processorn aktiverar data-stroben (DS).
  4. Periferienheten lägger ut data på databussen.
  5. Periferienheten aktiverar data-acknowledge (DTACK).
  6. Processorn läser in data från databussen.
Vi förenklar ovanstående busscykel på samma sätt som tidigare - en PAL krets genererar DTACK istället för periferienheten.

En synkron busscykel (read):
  1. Processorn lägger ut en adress på adressbussen.
  2. Processorn aktiverar adress-stroben (AS).
  3. Processorn aktiverar data-stroben (DS).
  4. JK vippan aktiverar 'valid peripheral address' (VPA), vilket får processorn att gå in i synkront läge.
  5. JK vippan genererar 'valid memory address' (VMA), vilket aktiverar periferienheten för läsning.
  6. Busscykeln avslutas när 'enable' (E) genomlöpt en cykel.
Under en synkron busscykel får inte DTACK genereras då VPA är aktiv. Om både DTACK och VPA aktiveras går MC68008 in i ett obestämt tillstånd.

Datablad
Emulator
Utvecklingsmiljö



EPROM - 27C256 32K
Standard EPROM som raderas med UV-ljus och programmeras elektriskt.

Datablad
Hex-kod



SRAM - 43256 32K
Statiskt RAM.

Datablad



PAL - CE22V10
Vi har valt att generera alla 'chip select' samt övrig logik med hjälp av PAL kretsar. Fördelen med att programmera logik istället för att koppla med standard TTL logik är att realiseringen blir kompakt samt enkel att ändra.

Vid programmering av en PAL krets används en konfigurationsfil som beskriver logiken. Filen används som indata till ett program som via en extern enhet programmerar PAL kretsen elektriskt.

Datablad
Minnesmappning
Konfigurationsfil för 'chip select'
Konfigurationsfil för avbrott



LCD - Batron 128x64 LCD
Displayen består av två segment om vardera 64x64 pixel. Segmenten aktiveras och matas med data oberoende av varandra. Varje segment har 8 kolumner, vilka i sin tur är uppdelade i 40 rader. De olika segmenten pekas ut med 'chip select' (CS1 och CS2).

De operationer som kan utföras på displayen är:
  • On/off
  • Sätta offset för scrollning
  • Peka ut rad (0-39)
  • Peka ut kolumn (0-7)
  • Skriva data till minne.
  • Läsa data från minne.
Då en viss kolumn och rad har lästs eller skrivits (8 bitar), inkrementeras aktuellt radindex automatiskt. En fullständig omritning av ett segment är sålunda relativt enkelt att utföra.
    för alla 8 kolumner
    {
      aktivera kolumn
      aktivera rad 0 i aktiv kolumn
      mata display med 40 byte data (40 rader)
    }
Datablad för Batron LCD
Datablad för styrkrets (1)
Datablad för styrkrets (2)

LCD



Systemklocka
Systemklockan är uppbyggd av en inverterare som är kopplad enligt figur 2 i nedanstående ritning. Klockan är konstruerad för att generera en frekvens på 10 MHz.

Ritning



JK-vippa
Används för att synkronisera processorn mot de periferienheter som kräver synkron kommunikation. I vårt fall är det endast LCD displayen som kommunicerar synkront.



D-latch
Används för att separera spelknapparna från databussen.



Avbrottstimer - 74LS292
Kretsen delar ner systemklockan med ett värde som laddas in i 292-kretsen. Den genererade utfrekvensen triggar sedan interruptnivå 5.

Vi använder för närvarande inte något interrupt i programmet, men har byggt in funktionen för framtida behov.

Datablad



Spelknapp
En switch matad med 5 volt via ett motstånd. Signalen är ansluten till en D-latch och används som input till spelet.

Kopplingen medför att nedtryckt spelknapp genererar en nolla och ej nedtryckt spelknapp genererar en etta på respektive knapps bitposition:
  • 0 - Vänster
  • 1 - Höger
  • 2 - Avfyrning


Reset - DS 1233
Resetkretsen är byggd kring en DS 1233 och har två funktioner. Vid påslag av spänning samt vid användarinitierad reset håller kretsen resetsignalen viss tid.

Datablad



Spänningsmatning
Extern källa - 5 volt.