• No results found

TSEA83 : Datorkonstruktion Fö7

N/A
N/A
Protected

Academic year: 2021

Share "TSEA83 : Datorkonstruktion Fö7"

Copied!
11
0
0

Loading.... (view fulltext now)

Full text

(1)

TSEA83 : Datorkonstruktion Fö7

Grafik + Projekt

Fö7 : Agenda

• Grafik förr

• VGA-signalen

• Direktdriven grafik eller bildminne

• Bitmap-grafik

• Tile/teckenbaserad grafik

• Spritebaserad grafik

• Kollisionskontroll

Datorkonstruktion 2

• Labbar och projekt

• Projektdemo

1

(2)

Grafik ”förr”, typ tjock-TV

Datorkonstruktion

En elektronkanon skjuter elektroner genom spolarnas magnetfält. Elektronerna viker av olika mycket åt nåt håll beroende på magnetfältets styrka och träffar bildrutan i en punkt och lyser upp. Olika färg fås genom att träffa på olika delar (röd, grön eller blå del) inom punkten.

...

...

VGA-signalen

Datorkonstruktion

VGA-interfacet:

• Tre analoga signaler (Röd, Grön, Blå)

• Två synkpulser (vertikal och horisontal)

• (DDC2: EN I2C-buss för indentifiering av bildskärm)

Synlig bild

Vsync

Hsync

R G B Hsync Vsync

Blank (bildsläck)

Blank (linjesläck) Blank släcker R,G,B och ger svart färg

3

4

(3)

VGA-signalen

Datorkonstruktion X (pixelräknare)

Y (radräknare)

Alla signaler : Video (synlig bild, RGB), Hsync, Vsync, Blank kan skapas vid lämpliga värden på X och Y.

En viss upplösning uppnås via rätt timing, dvs rätt avstånd och längd på synkpulserna Hsync och Vsync.

Synktiming kan inte vara godtycklig, utan måste följa VGA-standard.

Datablad för Nexys3

640 x 480 (synlig yta) i 60Hz bildfrekvens

Kräver 25 MHz pixelklocka

Direktdriven vs Bildminnesdriven grafik

Datorkonstruktion

CPU

Display

Display

CPU Bild-

m inne

VGA- m ot or Direktdriven

• CPU:n måste leverera pixlar i exakt rätt takt

• Fördel : billigare hårdvara

• Nackdel : programmet blir extremt tidskritiskt

Bildminnesdriven

• CPU:n behöver endast fixa förändringar av bilden

• Fördel : mycket enklare programmering

• Nackdel : dyrare hårdvara 5

(4)

Bitmap-grafik (svart-vit)

Datorkonstruktion

0 0 0 0 0 1 0 1 0 0 0 1 1 0 0 0

$000

$001

$002

svart / vit

[X,Y]

Bildminne Display

• Värdet för varje pixel sparas bitvis i minnet

• 1 bit motsvarar om pixeln är svart eller vit

• 640x480 kräver 300 kbit block-RAM, Nexys3 har 576 kbit

Bitmap-grafik (8-bitars färg)

Datorkonstruktion

$70 (röd)

$1C (grön)

$000

$001

$002 $02 (blå)

$8C (gul)

$FF (vit)

[X,Y]

Bildminne Display

• Värdet för varje pixel sparas per adress i minnet

• Varje pixel kan anta 1 av 256 färger

• 640x480 kräver 2400 kbit block-RAM, Nexys3 har 576 kbit 7

8

(5)

Bitmap-grafik (4-bitars färg med 8-bitars palett)

Datorkonstruktion

$000

$001

$002

...

$8C

$70

...

$35

$46

0 0 1 0

...

[X,Y]

Bildminne Display

Palett1

Palett2

• Använd 4 bitar till att indexera ett palettminne om 8 bitar

• 640x480 kräver 1200 kbit > 576 kbit (Nexys3)

• Genom att ändra paletten kan man göra vissa animationer, t ex rinnande vattenfall

Bitmap-grafik

Datorkonstruktion

• Ska man göra riktig 3D-grafik krävs bitmap-grafik, och en snabb CPU förstås

• Bitmap-grafik kräver mycket minne

• Dubbelbuffring är vanligt vid bitmap-grafik, kräver dock dubbla mängden minne

• Alla moderna datorer och spelkonsoller använder bitmap-grafik idag

• Problem 1: FPGA:n på Nexys3 har för lite minne för vettig bitmap-grafik

• Lösning 1: Använd extern RAM (problem för låg bandbredd)

• Problem 2 : Det krävs en mycket snabb CPU för att uppdatera hela bitmap-minnet

• Lösning 2 : Använd lägre upplösning, t ex 320x200 pixlar

• Lösning 3 : Använd inte bitmap-grafik 9

(6)

Tile/tecken-baserad grafik

Datorkonstruktion

$000

$001

$002

Tile 7 Tile 1

Tile 1, 0:0 Tile 1, 0:1 Tile 1, 0:2

Tile 7, 0:0

...

...

Bildminne Display

[X,Y]

Tileminne

• Skärmen består av tiles (t ex 8x8 pixlar stora) vars utseende bestäms av ett tileminne

• Bildminnet bestämmer vilka tiles som ska synas på skärmen

• Fördel : Kräver ganska lite minne

Tile/tecken-baserad grafik

Datorkonstruktion

Räkneexempel 8x8 tiles i 256 färger

• En tile är 8x8 pixel och vi vill ha t ex 32 olika tiles

• Med upplösningen 640x480 får vi plats med 80x60 tiles (kräver 4800 bytes bildminnesutrymme)

• Minnesutrymme för tile-utseende : 8x8x32 byte = 2048 bytes

• Jämför med bitmap-baserat minne : 640x480 byte = 307200 bytes

• Spel som lämpar sig för tile-grafik : Snake, Tetris, Sokoban

• Trick: Genom att snabbt växla tiles i bildminnet så kan du få till en del roliga effekter varje gång skärmen ritas upp, typ animering.

• Nackdel med tiles : objekt måste röra sig i steg om 8x8 pixlar, lösning  använd sprites

11

12

(7)

Sprite- baserad grafik

Datorkonstruktion

$000$001

$002

Tile 7 Tile 1

Tile 1, 0:0 (vit) Tile 1, 0:1 (vit) Tile 1, 0:2 (grön)

Tile 7, 0:0

...

...

Sprite 1, 0:0 Sprite 1, 0:1 Sprite 1, 0:2

Sprite 2, 0:0

...

...

Xpos (dx) Ypos (dy)

Xpos (dx) Ypos (dy)

K

Offra en färg -->

"transparent pixlar"

Bildminne Display

[X,Y]

Tileminne

Spriteminnen

Pixel- väljare

if P1=”transparent” then if P2=”transparent” then

color <= P3 else color <= P2 else color <= P1

P1P2 P3

• En sprite är ett objekt som ligger ovanpå spelplanen och kan flyttas i steg om en pixel

• Utseendet för en sprites lagras (lämpligtvis) i ett separat minne

• Lämpliga spel för tiles+sprites:

-Space invaders (shoot-em-ups) -Bilspel

-Breakout

Kollisionskontroll

Datorkonstruktion

K Pixelfärg Kollision Display CPU

Tileminne

Spriteminne1

Spriteminne2

Pixelväljare/

kollisionsdetektor

• Alt 1 : Mjukvarukontroll

Kan kräva mycket beräkningar. Passar bäst för tiles. Svårt för sprites.

• Alt 2 : Hårdvarukontroll  När två objekt ska ritas ut samtidigt, alltså på samma pixel, så har dom

kolliderat.

13

(8)

Rörelse : Hastighet och riktning

Datorkonstruktion

0 1 0 1 1 0 1 0

0 0 1 1 1 0 1 1

0 0 1 1

1 0 0 0

Xpos

Ypos X

Y

För ”godtyckliga” riktningar, dela upp positionen i en heltalsdel och en decimaldel. (subpixelupplösning) Låt endast heltalsdelen användas vid utritning.

Att flytta ett objekt en pixel per bilduppdatering (60 Hz) tar > 10 s för 640 pixlars bredd. Hur kul är det?

Men vad händer om man ökar hastigheten, dvs flyttar flera pixlar per bilduppdatering?

Lösning ? : Gör alla objekt väldigt tjocka

En generell lösning är svår. Får lösas från fall till fall.

Scrolland bakgrund/förgrund

Datorkonstruktion

K

PixelfärgKollision DisplayCPU

Tileminne

Spriteminne1

Spriteminne2

Pixelväljare/

kollisionsdetektor

Bakgr.minne1

Bakgr.minne2 startadr.

startadr.

slutadr.

slutadr.

P1 P2 P3

P4 P5

• Kan läggas till utan att påverka övrig funktionalitet

• Ett relativt enkelt sätt att få visuellt imponerande effekter

• Genom att scrolla flera bakgrunder i olika hastighet kan perspektiv åstadkommas

Genom att flytta start- och slut-pekarna  vid varje bilduppdatering så kommer bakgrundsminnets innehåll att få en visuell scrolleffekt.

15

16

(9)

Labbar och projekt

Labbar

Datorkonstruktion

• Behöver ni hjälp?

-Använd kanalen LabChat -Fråga via mail

-Kolla med en kurskamrat

• Extra-lab?

-Jag kan kolla läget ...

17

(10)

Bilda projektgrupp

Datorkonstruktion

• Projektanmälan

-Skriv upp er i gruppbildningsdokumentet i kanalen Gruppbildning

• Utan grupp, inget projekt!

Projektdemo

19

20

(11)

www.liu.se Anders Nilsson

21

References

Related documents

Att få mer och bättre vetskap om vad det finns för olika metoder att använda vid läsinlärning och på vilket sätt man som pedagog avgör vilken metod som passar den enskilda

Jag har studerat hur den inre biologiska klockans cykellängd och blomningstiden varierar i olika delar av världen, och hur denna variation avspeglas i små skillnader i hur

Beskrivning: Ett efter producerat och klippt ihop collage från två olika tagningar. Instrumentering: Sampler, piano, trumpet, säckpipa, altsaxofon, trummor. Detalj: Ett

Verbet багроветь betecknar förändring till en mer mättad färg (lila), och äger en högre intensitet. Ordet алеть tas också upp. Författaren hävdar att orden алеть

När jag spelade in den här låten fick jag det ännu en gång bevisat för mig att det inte alltid behöver vara så mycket som händer, Less is more helt enkelt.. Men live har man

-Mål, Resultat från tidigare år, Förändringar till årets kurs..

Skapa en stor räknare som börja räkna klockpulser när startpulsens negativa flank hittats (rx1=0, rx2=1) Använd räknaren för att generera pulserna sp och lp, vid

architecture func of cpu is -- micro Memory component component uMem. port(uAddr : in unsigned(5