Labyrintspelet EDI021 Grupp 5

Relevanta dokument
Digitala projekt rapport

Digitala Projekt Konstruktion av Tamagocchi. Av: Oskar Andersson D05 & Danial Rehman D05

Temperaturmätare med lagringsfunktion DIGITALA PROJEKT EITF11 GRUPP 14, ERIK ENFORS, LUDWIG ROSENDAL, CARL MIKAEL WIDMAN

Digital- och datorteknik

Digitala Projekt (EITF11)

Minnet. Minne. Minns Man Minnet? Aktivera Kursens mål: LV3 Fo7. RAM-minnen: ROM PROM FLASH RWM. Primärminnen Sekundärminne Blockminne. Ext 15.

DAT 015 Maskinorienterad programmering 2010/2011. Uppbyggnad_och_funktion.pdf

Digital- och datorteknik

Digitala Projekt - Snake Grupp - 7. Erik Ljung, d01elj Erik Simmons, d01es 25 maj 2005

Innehållsförteckning. Figur- och tabellförteckning. Figure 1 Blockschema över hårdvaran...4 Figure 2 Blockschema över programet...

Digitala projekt Konstruktion av nummerpresentatör

Snake. Digitala Projekt (EITF11) Fredrik Jansson, I-12 Lunds Tekniska Högskola,

TETRIS. LTH, Campus Helsingborg EITA15 Digitala System

Övningsuppgifter i Mikrodatorteknik 4p/5p

Laboration 5. Temperaturmätning med analog givare. Tekniska gränssnitt 7,5 p. Förutsättningar: Uppgift: Temperatur:+22 C

Gustaf Backman, Anton Nystedt, Nicholas Peebo Battleships. Lunds tekniska högskola. EITF11 Digitala projekt

Adressrum, programmerarens bild

Digitala projekt, EDI021 Rapport Handledare: Bertil Lindvall

F2: Motorola Arkitektur. Assembler vs. Maskinkod Exekvering av instruktioner i Instruktionsformat MOVE instruktionen

LV6 LV7. Aktivera Kursens mål:

Datorsystemteknik DAV A14 Föreläsning 1

F7: I/O hantering. Asynkron och synkron busscykel Bussfördelning. Periferikretsar

DIGITALA PROJEKT Väderstation

AVR 3 - datorteknik. Avbrott. Digitala system 15 hp. Förberedelser

Innehåll. 1 Inledning 3

Växtviskaren EITF11 Digitala projekt VT15, I12

ALU:n ska anslutas hur då?

Temperaturregleringssystem

Project Echelon EDI021 Digitala Projekt lp2 HT03

Rapport Digitala Projekt EITF11 Grupp 4 Axel Sundberg, Jakob Wennerström Gille Handledare: Bertil Lindvall

Projektrapport i Digitala System

Konstruktion av en radiostyrd legobil. Digitala projekt av Arbon Vata Leonardo Vukmanovic Amid Bhatia

Periferikretsar. ADC/DAC Räknare Realtidsklocka Timer Interrupthanterare UART (Universal Asynchronous Reciever and Transmitter) Seriell dataöverföring

F8: Undantagshantering

Department of Information Technology Digitala projekt. SuperKull. Daniel Öhman Alexander Persson

Facit till övningsuppgifter Kapitel 13 Anslutning av minnes- och I/O-moduler till buss 13-1

Effektpedal för elgitarr

DEPARTMENT OF INFORMATION TECHNOLOGY. Digitala Projekt. Redovisning av Projekt - Grupp 14

Digital och Datorteknik EDA /2011. EDA 451 Digital och datorteknik 2010/2011. Uppbyggnad_och_funktion.pdf

Digitala projekt - Radiostyrd bil

HF0010. Introduktionskurs i datateknik 1,5 hp

Spotlight. EDI022 - Digitala Projekt SK. Fredrik Svensson Hans Månsson. Handledare: Bertil Lindvall

LARMANLÄGGNING. Digitala Projekt, EITF11. Oskar von Knorring Emin Karimov Henrik Akej Handledare: Bertil Lindvall

Övervakningskamera Digitala projekt 2006

Läsminne Read Only Memory ROM

Datorsystemteknik Föreläsning 7DAVA14

Digitala Projekt VT13. PING-Pong

Datorsystemteknik DAV A14 Föreläsning 1

RemoteBud. Inlämnas: Patrik Johnsson, e01pjo Viktor Karlsson, e01vk

PlantPuppy Räddaren för den som inte kan hålla växterna vid liv

DANCING ROBOT. EITF11, Grupp 10. Kajsa Salomonsson, Hugo Hedin och Petter Mårtensson

Föreläsningsanteckningar till Konstruktionsmetoder

Projekt Rapport. SUNe. Datum: Henrik Henriksson E99. Handledare: Bertil Lindvall

2 UPPBYGGNAD OCH FUNKTION

Digital Projekt EDI 021 Konstruktion av talande nummerpresentatör VT1 2004

Avbrottshantering. Övningsuppgifter

Adressavkodning - busskommunikation

TEMPERATUR OCH VINDMÄTARE MED HÖGTALARFUNKTION

Program kan beskrivas på olika abstrak3onsnivåer. Högnivåprogram: läsbart (för människor), hög abstrak3onsnivå, enkelt a> porta (fly>a 3ll en annan ar

The Secure Light. Digitala Projekt EITF11. Hanna Tinglöf, I-12 Anna Horvath, I-12 Filippa Österlin, I-12. Handledare: Bertil Lindvall

Rapport. Fyra i rad-spel. Rapport Digitala Projekt EITF11 Grupp 9 Emma Rasmusson & Louise Ragnarsson Handledare: Bertil Lindvall

EDI022. Digitala Projekt. Rapport. Björn Åkesson 5/20/2011

Övning1 Datorteknik, HH vt12 - Talsystem, logik, minne, instruktioner, assembler

Institutionen för elektro- och informationsteknologi, LTH

Datorteknik. Föreläsning 5. Realtidssystem och realtidsprogrammering. Institutionen för elektro- och informationsteknologi, LTH.

TENTAMEN Datorteknik (DO2005) D1/E1/Mek1/Ö1

In- och Utenheter. Fö 3: In/Ut matning och kopplingsstruktur. Några exempel. Egenskaper. In- och Utenheter. Styrning.

Polling (cyklisk avfrågning) Avbrott

Accelerometer. Rikard Ekström Mattias Kindborg. Informationsteknologi Lunds Universitet

Digital- och datorteknik

Vad är kommunikation? Vad är datorkommunikation? Dataöverföring; Inledning

Uppgift 1: a) u= a c + a bc+ ab d +b cd

5:3 Datorn och datorns delar

Digitalteknik EIT020. Lecture 15: Design av digitala kretsar

MIKRODATORTEKNIK 2012 INNEHÅLLSFÖRTECKNING

Digitala Projekt(EITF40) - Larm

Provmoment: Ladokkod: Tentamen ges för: Tentamen TE111B El3. Namn: Personnummer: Tentamensdatum: Tid: 14:00-18:00.

Introduktion till Arduino

Projekt EITA15. Väckarklocka. LTH Ingenjörshögskolan vid Campus Helsingborg Datateknik

Projektarbete. Nummerpresentatör

Laboration 4: Knappstuds Drivrutiner för att eliminera störningar.

'HOWHQWDPHQ 6\VWHPNRQVWUXNWLRQ

Elektroteknik MF1016 föreläsning 9 MF1017 föreläsning 7 Mikrodatorteknik

Systemkonstruktion SERIEKOMMUNIKATION

Pulsmätare med varningsindikatorer

The Intelligent Timer

DIGITAL ELEKTRONIK. Laboration DE3 VHDL 1. Namn... Personnummer... Epost-adress... Datum för inlämning...

Datorteknik 1 (AVR 1)

Formula Blue. Digitala Projekt 8p. Jesper Ferm E02 Carl Hakenäs E04

Datorprojekt, del 1. Digitala system 15 p

UDPong - Pong over UDP

TSEA22 Digitalteknik 2019!

Programallokering. Programtyper. Att placera program i flashrespektive. Program i FLASH-minne. Program i RAM-minne

Konstruktionsmetodik för sekvenskretsar

Tentamen den 18 mars svar Datorteknik, EIT070

Avkodning av minnen (och I/O)

Uppmätning, lagring och presentation av samtalstider i det fasta telenätet

Föreläsningsanteckningar 3. Mikroprogrammering II

Laboration i digitalteknik Introduktion till digitalteknik

Tentamen i Digitalteknik, EIT020

Transkript:

Labyrintspelet EDI021 Grupp 5 Kristian Sylwander d04ks@student.lth.se Emil Wasberger d03ew@student.lth.se Michael Winberg d04mwi@student.lth.se 16 maj 2008

1 Inledning Syftet med kursen EDI021 är att bygga ett datorsystem där både hårdvara och mjukvara ingår. En kravspecifikation togs fram för att under kursens gång realisera denna i en fungerande konstruktion. Konstruktionen denna rapport behandlar bygger på processorn Motorola 68008 som har sitt ursprung i det glada 80-talet. Mycket sladdar och hårdvara är inblandat i uppbyggnaden av konstruktionen. Detta trots att 68008 bara har en 8-bitars databuss. Labyrintspelet går ut på att navigera genom en labyrint till en utgång. Då en nivå är avklarad genereras en ny svårare labyrint. Nivåerna genereras slumpmässigt 1 och varieras från gång till gång. Labyrinten visualiseras på en LCD och spelaren navigeras med fyra knappar. 2 Kravspecifikation Nedan följer kravspecifikationen i sitt orginalutförande: Vi skall tillverka ett spel beståendes av en styck motorola-cpu, lcd-skärm, knappar/joystick samt allt som behövs för att koppla ihop allt plus annat såsom minne etc. Spelet är ett labyrintspel där spelaren navigerar sig i labyrinten. Krav: Grafik på LCD-skärm i form av en labyrint. Styrenhet. Antingen joystick eller 4 knappar. I mån av tid: Vi ska exprimentera med hur snabbt man kan rita på LCD-skärmen och om det går att göra en väldigt simpel 3d-labyrint. Annars blir det en tråkig 2d-motsvarighet. Egengenererat ljud med D/A-omvandlare och högtalare. 3 Hårdvara 3.1 Komponenter Processor Hjärnan i systemet är en Motorola 68008. Den kan adressera 1 Mb minne, har en 8 bitars databuss och räknar med 32 bitar internt. Den snurrar på i 10 MHz m.h.a. en extern oscillator. Under utvecklingsfasen används en ICE, In Circiut Emulation, vilket är en stor klump hårdvara och mjukvara som kommunicerar med en PC. Denna ersätter processorn och gör det möjligt att debugga systemet. 1 Egentligen är det pseudoslumpmässigt, om ens det 2

Minne Två typer av minne används i konstruktionen. Dels används ett RAM, dels ett ROM. Ett ROM programmeras varefter det behåller sin data även utan strömförsörjning. Ett ROM går inte att skriva till. Det används för programkod och statisk data som processorn eller programmet behöver för att exekvera. Ett RAM behåller inte dess data när strömförsörjningen bryts. Det kan både skrivas till och läsas från. RAM-minnet används till stacken, globala variabler och annan icke statisk programdata. Storleken på dessa valdes i planeringsfasen till 8 Kb ROM och 4 Kb RAM. Dock används 16 Kb ROM och 32 Kb RAM p.g.a. tillgänglighet. Display Displayen är en LCD med upplösning 128x64 bildpunkter. Internt består displayen av två stycken 64x64 displayer med kontrollkretsar. Den har därför två stycken chip select. Till displayen kan det skickas både data och instruktioner. Instruktionerna används bl.a. till att ändra var i bildminnet datan ska skrivas. Sättet som detta görs på är anpassat till att rita rader av tecken. Detta medför att uppritningen av enstaka pixlar kompliceras något. Displayen är synkron och processorn är asynkron. En asynkron krets skickar en signal DTACK när en dataöverföring är klar och processorn kan gå vidare. Detta görs inte av en synkron krets och därför krävs ett externt nät för att sätta processorn i ett synkront läge. Knappar Kontrollerna till spelet utgörs av fyra knappar vilka används för att navigera genom labyrinten. Knapparna är kopplade till en data-latch, 74HC373, som gör det möjligt att avläsa deras status över databussen. Styrlogik Eftersom flera komponenter delar på samma adress- och databuss krävs hårdvara som gör det möjligt att välja vilken komponent som ska läsas från eller skrivas till. Alla komponenter i systemet har en signal CS, chip select. När signalen är inaktiv är in- och utgångar till och från bussarna i ett högimpedivt läge och lämnar på så sätt dessa fria. Genom att utnyttja några utav adressbitarna från processorn går det att bestämma vilken CS som blir aktiv. Detta utförs av en programmerbar logikkomponent, PAL22V10. Eftersom vissa av adressbitarna används till detta ändamål går en del av adressrymden förlorad men det är inget problem i detta fall. Avbrott Två av processorns insignaler bestämmer om och vilket avbrott som ska genereras. För att generera avbrott med lagom intervall används en räknare som delar ner oscillatorns klockpuls med en faktor 2 14. Det medför att ett avbrott genereras ca 60 gånger per sekund. 3

Då processorn befinner sig i avbrottshanteringsläge blir signalerna FC0-2 aktiva. Dessa utnyttjas till att återställa processorn till normalt läge och bekräfta att avbrottet hanterats. Detta kan medföra problem om avbrottsrutinen tar för lång tid (mer än 1/60 sekund). En alternativ lösning är att bekräfta avbrottet via mjukvara genom att utnyttja styrlogik för att generera samma signal. Processorn har två olika typer av avbrott. Autovektoravbrott som kör en avbrotssrutin på en förprogrammerad adress samt en annan typ som läser adressen från adressbussen. Labyrintspelet använder autovektoravbrott. 4 Mjukvara 4.1 Avbrottshantering Labyrintspelet har ingen egentlig användning för avbrott. De inkluderades i inlärningssyfte och används för att läsa knapparnas status på jämna intervall. Utan avbrott hade det gått precis lika bra att läsa deras status i början av programmets huvudloop. Som en eftertanke används avbrottsrutinen även för att göra slumpgeneratorn mer slumpmässig. Slumpgeneratorns seed ändras varje gång avbrotssrutinen körs. Därmed blir labyrinten annorlunda även vid omstart av systemet. 4.2 Labyrintgenerering Labyrinten genereras med en algoritm kallad Depth-First Search 2. Algoritmen lämnar mycket att önska vad gäller labyrintens svårighetsgrad. Dock är den lätt att implementera. Dessutom gör den begränsade ytan att algoritmens brister blir extra tydliga. Labyrinten består av rutor i ett rutnät. Dess ursprungsläge är att alla rutor har väggar. Algoritmen fortsätter sedan med följande steg: 1. Börja på en slumpmässig ruta 2. Leta efter en granne som inte är besökt tidigare 3. Om en obesökt granne hittas, flytta dit och slå ner väggen mellan rutorna. Om ingen hittas så flytta tillbaka till föregående ruta. 4. Repetera steg 2 och 3 tills alla rutor är besökta Slumptalsgenerering Standardbiblioteket som medföljde kompilatorn undveks eftersom det enda som saknades var en funktion för att generera slumptal. Att generera slumptal visade sig vara mer komplicerat än vad som först antogs. Efter flera misslyckade försök föll valet på en algoritm som räknar ut CRC. Resultatet för denna uträkning används som indata till nästa uträkning och därmed genereras en till synes slumpmässig talföljd. 2 http://www.mazeworks.com/mazegen/mazetut/index.htm 4

5 Sammanfattning I planeringsfasen blev vi övertalade att använda Motorolan istället för AVR. I efterhand visade det sig att vi lärde oss mycket mer med Motorolan än vad vi gjort om vi använt AVR ATMega. Våra initiala planer på att bygga ljudkretsar visade sig innebära mer arbete än vad tiden tillät. Vi valde därför på ett tidigt stadie att utesluta ljudkretsen helt. Om mer tid funnits hade enkel 3D-grafik beståendes av linjer absolut varit möjligt. Skärmen var tillräckligt snabb för detta ändamål och processorn likaså. Kursen har gett oss en större förståelse för hur ett datorsystem och dess individuella komponenter samverkar med varandra. Den största utmaningen för oss låg i att förstå och designa hårdvaran. 5

6 Kod för styrlogik Title Digital Project Pattern PAL1 Author digp05 Date 16 April 2008 device 22V10 A14 2 Används inte A15 3 A16 4 A17 5 A18 6 VPA 7 AS 8 DS 9 RW 10 VMA 11 INTRESET 13 CSEPROM 14 CSRAM 15 CSDISP1 16 CSDISP2 17 CSBUTTONS 18 RD 19 WR 20 DTACK 21 VPACPU 22 SYNCKRETS 23 start CSEPROM /= /AS * /A15 * /A16 * /A17; CSRAM /= /AS * A15 * /A16 * /A17; CSDISP1 /= /VMA * /A15 * A16 * /A17; CSDISP2 /= /VMA * A15 * A16 * /A17; CSBUTTONS /= /AS * /A15 * /A16 * A17; RD /= /DS * RW; WR /= /DS * /RW; DTACK /= /CSEPROM + /CSRAM + /CSBUTTONS; SYNCKRETS = /AS * A16 * /A17; VPACPU /= /VPA + /INTRESET; end 6

7 Kretsschema 7