Sida 1 av 2

Eget grafikkort med 512 x 384 pixel

Postat: 9 november 2010, 20:50:46
av YD1150
Fick igång ett eget "grafikkort" med upplösning 512 x 384 pixlar
endast svart / vit ( 1-bit per pixel alltså! )

Går bra att använda med en datorskärm, H-synk ligger inte
på 31,5kHz utan på 31,25kHz men det utgör inga problem.

Pixlarna klockas ut med 20MHz med hjälp av ett 8-bitars skiftregister
(74LS166) men bildminnet går endast med en 1/8-dels hastighet (2,5MHz)

Övervägande delen är uppbyggd av (gamla) 74XX TTL-kretsar så den har
inga specialkretsar som är svåra att få tag på.

40-pin IC:n är en PIC18F4520 som skriver till bildminnet
på 32kB (cacheminne från skrotad 486:a )
PIC:en är inte inblandad i själva bildgenereringen, det
gör resten av kretsarna.
Grafikkortet_512x384_pixel.jpg
Prototypen är virad, därav röran :)
Maskbo.jpg
En bild från datorskärmen, skärpan är mycket bättre i verkligheten.
Skärmbild.jpg
Det tar ett tag att göra alla "fonter", allt får göras för hand.
Använde mig av 8 x 8 pixlar.

Re: Eget grafikkort med 512 x 384 pixel

Postat: 9 november 2010, 21:00:44
av Dennis_F
Riktigt häftigt :)

:tumupp:

Re: Eget grafikkort med 512 x 384 pixel

Postat: 9 november 2010, 21:02:16
av Walle
Häftigt!

Vad har du för input?

Re: Eget grafikkort med 512 x 384 pixel

Postat: 9 november 2010, 21:05:16
av Fagge
Snyggt jobbat!. :bravo:
En ritning eller block-schema hade varit kul å se på bygget.
Ritar du 8 pixlar i höjd eller brädd per RAM-adress?.

Re: Eget grafikkort med 512 x 384 pixel

Postat: 9 november 2010, 21:26:18
av grym
:tumupp: :)

Re: Eget grafikkort med 512 x 384 pixel

Postat: 9 november 2010, 21:29:34
av nablaman
Snyggt! Virning och allt, helt i min smak! :D :tumupp:
Tycker oxå ett schema vore kul!

Re: Eget grafikkort med 512 x 384 pixel

Postat: 9 november 2010, 21:57:29
av jesper
Kul, påminner lite om mitt goda gamla grafikkort från '84 med MC6845, fast det hanterade endast text format.
Sitter också en '163 och spottar ut pixlar.

Bild

Re: Eget grafikkort med 512 x 384 pixel

Postat: 9 november 2010, 22:00:19
av Mizzarrogh
8) :tumupp:

Re: Eget grafikkort med 512 x 384 pixel

Postat: 9 november 2010, 23:39:50
av bachler
Fasen va ballt!
Synd eller tur att man inte har tid att pyssla så mycket så man ger sig på sånthära.

Djupt imponerad.

Re: Eget grafikkort med 512 x 384 pixel

Postat: 9 november 2010, 23:54:30
av Electricguy
RIKTIGT häftigt! snyggt jobbat!! :)

Re: Eget grafikkort med 512 x 384 pixel

Postat: 10 november 2010, 00:35:09
av gOry
Får du 100fps i CS med det där eller? :bravo:

Re: Eget grafikkort med 512 x 384 pixel

Postat: 10 november 2010, 00:45:43
av jesse
Det där var roligt att se. Respekt! :bravo:

Re: Eget grafikkort med 512 x 384 pixel

Postat: 10 november 2010, 00:51:22
av blueint
Skithäftigt :tumupp: :tumupp:

Antar att den inte stödjer 3D-acceleration då? :vissla:

Re: Eget grafikkort med 512 x 384 pixel

Postat: 10 november 2010, 10:45:58
av YD1150
Var visst många som hade kommenterat bygget över natten :shock:

Blockschemat ser ungefär ut så här:
Blockschema.pdf
Om det är någon som tänker bygga något liknande så använd
i så fall antalet horisontella pixlar i multiplar om två, typ 256, 512 eller kanske 1024
det sista kräver rätt hög frekvens på pixelklockan.

Blir enklast då med minnesadresseringen, allt ligger "efter varandra" i minnet.
Väljer man något mer udda som t.ex 403 pixel så blir det "oanvända luckor"
i "adressrymden", räkna själva :!:

I fallet med 512 horisontella pixlar, blir det då 512 / 8 = 64 bytes per rad.
Har man då 384 linjer vertikalt så blir det 64 x 384 = 24576 bytes totalt
ett 32kB statiskt RAM har 32768 bytes så det räcker mer än väl.

24kB för att visa en bild är överkomligt. Skulle man ta bort skiftregistret
och sätta en 8-bit (video) D/A så får man 256 gråtoner i stället men då måste
man höja klockfrekvensen 8ggr till räknarna + mer minne förstås
( typ 200kB RAM för 512 x 384 med 256 gråtoner ! )

Genom mindre modifieringar kan man köra grafikkortet på en TV i stället.

Serieporten plus några av RA-X ingångarna är lediga på PIC:en.
Kan ha ett seriellt interface mellan grafikkortet och resterande "mätinstrument"
som ger data som man vill visa på en datorskärm.

3 bytes bör räcka via serieporten om man ger horisontell koordinat ( X = 0-63 )
vertikalt (Y = 0-383 ) och 8-bitar data = 8-pixlar i rad om man packar datan
väl som sänds till PIC:en.

X: 0-63 = 7-bitar krävs
Y: 0-383 = 9-bitar
data: 8-bitar

så flyttar man över en bit från Y till X så blir det 8-bitar i varje "datapaket"

------------------------------------------------------------------------

Klockan är på 20,0MHz, division med 8 ger 2,5MHz till Horisontal-räknarna (Column)
2,5MHz delat med 80 ger 31,250kHz -> ger H-synk så småningom samt
klocksignal till Vertikal-räknarna (Row)

31,250kHz delat med 480 ger ~65.1Hz i V-synk vilket datorskärmen klarar av bra.

Båda räknarna nollställs m.h.a. några grindar. De ger samtidigt ut signal för
blanking så det "skräpet" som hamnar utanför de pixlar man vill visa, släcks ner

Synkpulserna kan man också ta fram genom att koda av räknarna med ett gäng logiska grindar
men jag valde en smidigare lösning genom att använda blanking-signalen
och fördröja den med två "MMV" typ 4528, den ena fördröjer och den andra ger synkpulsens
bredd. (allt detta gånger 2 för H och V )
Gav färre delar att använda MMV än koda av räknarna med logik.

Strömförbrukningen ligger på ca 260mA vid 5V. Byter man ut kretsarna mot 74HC/HCT
så drar den nog mindre med ström.

Hoppas detta gav några ideer för framtida byggen....... :wink:

Re: Eget grafikkort med 512 x 384 pixel

Postat: 10 november 2010, 14:44:15
av blueint
Man kan deaktivera klocksignalen till addressräknaren under synkperioder mm. Så kan man ha vilken X-Y storlek som man vill. En separat räknare får dock mäta upp när linjen är "klar". Under vertikalsynken nollställer man alltihop.