Eget grafikkort med 512 x 384 pixel
Eget grafikkort med 512 x 384 pixel
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.
Prototypen är virad, därav röran
En bild från datorskärmen, skärpan är mycket bättre i verkligheten.
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.
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.
Prototypen är virad, därav röran
En bild från datorskärmen, skärpan är mycket bättre i verkligheten.
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.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Re: Eget grafikkort med 512 x 384 pixel
Snyggt jobbat!.
En ritning eller block-schema hade varit kul å se på bygget.
Ritar du 8 pixlar i höjd eller brädd per RAM-adress?.
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
Snyggt! Virning och allt, helt i min smak!
Tycker oxå ett schema vore kul!
Tycker oxå ett schema vore kul!
Re: Eget grafikkort med 512 x 384 pixel
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.
Sitter också en '163 och spottar ut pixlar.
- Mizzarrogh
- Inlägg: 20513
- Blev medlem: 10 september 2006, 12:32:49
- Ort: Somewhere over the rainbow... (Hälsingeskogen)
- bachler
- EF Sponsor
- Inlägg: 189
- Blev medlem: 23 december 2003, 13:58:24
- Skype: alexander.bachler.jansson
- Ort: Sala
- Kontakt:
Re: Eget grafikkort med 512 x 384 pixel
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.
Synd eller tur att man inte har tid att pyssla så mycket så man ger sig på sånthära.
Djupt imponerad.
- Electricguy
- Inlägg: 12307
- Blev medlem: 15 augusti 2007, 16:52:14
- Ort: Kälmä' typ..
Re: Eget grafikkort med 512 x 384 pixel
Skithäftigt
Antar att den inte stödjer 3D-acceleration då?
Antar att den inte stödjer 3D-acceleration då?
Re: Eget grafikkort med 512 x 384 pixel
Var visst många som hade kommenterat bygget över natten
Blockschemat ser ungefär ut så här:
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.......
Blockschemat ser ungefär ut så här:
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.......
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Re: Eget grafikkort med 512 x 384 pixel
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.