PC VGA karta a Arduino

Odpovědět
Uživatelský avatar
gilhad
Příspěvky: 779
Registrován: 07 bře 2018, 11:22
Reputation: 0

PC VGA karta a Arduino

Příspěvek od gilhad » 26 kvě 2019, 17:40

Mám doma nějaké staré VGA karty pro PC, které už dávno nemám a tak mě napadlo, zda by ty karty nešlo nějak ovládat Arduinem.

Před asi milion lety jsem na 286 dokázal zapisováním na nějaké porty ovládat pixely na obrazovce, přepínat režimy a psát písmenka, ty VGA karty měly vlastní RAM na své desce tak si řikám, zda by to nešlo nějak zopakovat v dnešní době.

Moje představa je asi taková, že připojím (případně přez nějaké posuvné registry, kvůli počtu nožiček) arduino ke konektoru VGA karty a budu tam posílat nějaké hodnoty - pokud byla VGA karta v PC namapovaná do paměti od nějaké adresy, tak by stačilo tu adresu vygenerovat, vygenerovat data a dát příkaz k zápisu a mohlo by to fungovat obdobně jako v tom PC. Pak by to chtělo napsat funkce pro kreslení čar, obdélníků, kruhů, písmen a tak. Asi by to nebylo kvůli komunikaci extra rychlé, ale kvalitní VGA karta by mohla dát stabilní obraz se spoustou barev, značným rozlišením a tak (a držet si ho ve své vlastní paměti), zatímco Arduina by to používaly jako dálnopis/nebo posílaly požadavky na obrazce (nakresli červený obdélník 100,150 x 60,80), aniž by musely mít všechny body ve své omezené paměti.

Asi by to byl docela záhul pro to Arduino, tak bych to udělal tak, že jedno Arduino by prostě komunikovalo s tou kartou na jedné straně a na druhé straně by přez nějaký jednoduchý protokol (třeba I2C, nebo serial) přijímalo příkazy už od libovolného Arduina, co by něco užitečného dělalo a chtělo nějaký výstup. (Prostě taková grafická karta na I2C, stejně jako se tam připojují ty několikařádkové displeje, nebo sedmisegmentovky či jiné moduly)

----

Otázka zní - viděl někdo někde jak by se taková věc dělala? Má to nějaké zádrhele (jako že se do karet nedá zapisovat tak pomalu nebo podobně)? Raději bych vyšel z už existujícího projektu, než začínat s pokusy od úplné nuly.

marh
Příspěvky: 37
Registrován: 19 bře 2018, 15:13
Reputation: 0

Re: PC VGA karta a Arduino

Příspěvek od marh » 26 kvě 2019, 19:04


Wojta
Příspěvky: 184
Registrován: 22 črc 2017, 16:39
Reputation: 0

Re: PC VGA karta a Arduino

Příspěvek od Wojta » 26 kvě 2019, 19:34

Na doplnění, protože si myslím že to co si dostal není úplně odpověď na otázku, teoreticky to možné bude. Podle toho jak je karta stará, tudíž na jakém rozhraní vlastně pracuje. Když o ní najdeš dost informací, zjistíš jak běží a třeba nějaký datasheet k čipu na desce (pokud bude existovat) tak můžeš udělat hodně. Ale prakticky to je asi k ničemu. Myslím si že než se snažit komunikovat s takovou kartou (i když by to byla hezká výzva) bude jednodušší VGA generovat přímo z ardu, ušetříš si hodně nervů.

Uživatelský avatar
gilhad
Příspěvky: 779
Registrován: 07 bře 2018, 11:22
Reputation: 0

Re: PC VGA karta a Arduino

Příspěvek od gilhad » 26 kvě 2019, 20:56

Problém s generováním přímo VGA z Arduina je, že Arduino moc nestíhá:

Tady je knihovna, co zvládá 120x60 rozlišení
https://github.com/smaffer/vgax

Tady někdo vyhonil 640x480 za cenu 27% chybovosti, omezených barev a na hraně možností Arduina (v podstatě už nestíhá nic jiného)
https://dqydj.com/how-to-produce-640x48 ... n-arduino/

Mě by se líbilo "pomalounku, polehounku" zapisovat jednotlivé pixely do grafické karty, která by "sama od sebe" v pohodě zvládala držet čistou VGA/SVGA/ještě lepší rozlišení ze své vlastní (velké a rychlé) paměti, svými vlastními rychlými obvody (stejně jako to dělala v PCčkách).

V podstatě stejně, jako to dělají počítače - program nějak vymyslí, co chce zobrazovat, nějak pomalu to nacpe do grafické karty (třeba smyčkou v BASICu a přímým PEEK/POKE i s celou přilehlou režií) a dál se o ta data nestará. Grafická karta se sama stará, aby na VGA konektoru (nebo HDMI, nebo čemsi jiném) byla data včas a správně, bez ohledu na to, jak pomalu jí přibývají písmenka a body k zobrazování)

V tom BASICu procesor interpretuje jednotlivé příkazy a po nějaké době dojde k názoru, že na adresu 0xA0000 plus něco uloží jeden byte (a provede to plnou rychlostí sběrnice jako zápis do paměti) a pak zase chvíli počítá a interpretuje a pak zase plnou rychlostí sběrnice uloží byte další (přičemž ten předchozí už dávno zapoměl)

Tak tohle bych rád dělal taky, akorát s "pomalejší sběrnicí", kterou by Arduino snadno stíhalo. Ale zatím jsem jen nacházel, jaké maximální rychlosti sběrnice co zvládá, nikoli, zda to tam nejde zapisovat taky výrazně pomaleji.

Příklad:
Treba tady si chlápek staví 8bitový počítač, má tam integráče (a paměti) zvládající 20MHz+ a celé to taktuje ručním mačkáním tlačítka - zjevně dolní mez frekvence sběrnice tohoto počítače je 0Hz
https://www.youtube.com/channel/UCS0N5b ... UrhCEo8WlA

---

Takže můj problém je, zda jde použít tu grafárnu na pomalé sběrnici, pokud by to šlo, a základní protokol by nebyl moc složitý (což imho není - na pár adres se zapíše rozlišení a tak a pak se jen spočte adresa v paměti odpovídající pixelu a na tu se zapíše hodnota odpovídající barvě), tak by to ani nemusel být zas takový opruz, jako stíhat časování VGA analogového vstupu a přitom komunikovat a přitom přepočítávat obrazce a fonty

Wojta
Příspěvky: 184
Registrován: 22 črc 2017, 16:39
Reputation: 0

Re: PC VGA karta a Arduino

Příspěvek od Wojta » 27 kvě 2019, 07:45

Tak jsem konečně našel co jsem chtěl. Pokud by byla karta kterou máš v té éře PCI, PCIe tak ten není zespoda omezen rychlostí, dokonce se údajně používají nižší rychlosti kvůli úspoře energie. Takže si myslím že je opravdu dost reálný s kartou komunikaci rozchodit. Obvzlášť když by, jak sám říkáš, ten protokol neměl být nijak náročný. S arduinem to asi ještě nikdo nezkoušel ale možná bych kouknul na nějakej projekt s FPGA, tam by mohla být nějaká inspirace.

Jinak souhlas s tím co říkáš, je pravda že ta stabilita při vyšších rozlišeních prostě ardu chybí, tohle by řešilo hodně.

Uživatelský avatar
gilhad
Příspěvky: 779
Registrován: 07 bře 2018, 11:22
Reputation: 0

Re: PC VGA karta a Arduino

Příspěvek od gilhad » 27 kvě 2019, 09:17

Skvělé :) Mohl bys poslat i link, nebo co hledat? (Dej muži rybu, nakrmíš ho na den, nauč ho rybařit, nakrmíš ho na celý život :) )


Ale obávám se, že zrovna tahle je AGP - ale ještě prohrabu další šuplíky ...

Wojta
Příspěvky: 184
Registrován: 22 črc 2017, 16:39
Reputation: 0

Re: PC VGA karta a Arduino

Příspěvek od Wojta » 27 kvě 2019, 10:49

Jojo, zapomněl jsem tam dodat ten odkaz :D našel jsem zde https://www.fpga4fun.com/PCI1.html

Klíčová slova v googlu "fpga interface PCI" protože při hledání technické specifikace PCI jsem furt nemohl najít tu min. rychlost, stejně jako ty :D

Na AGP bych taky kouknul, třeba bychom se s tou náročností komunikace dostali ještě níž, ale uvidíš.

Uživatelský avatar
gilhad
Příspěvky: 779
Registrován: 07 bře 2018, 11:22
Reputation: 0

Re: PC VGA karta a Arduino

Příspěvek od gilhad » 27 kvě 2019, 12:03

Skvělé :)

PCI is synchronous
The PCI bus uses one clock. The clock runs at 33MHz by default but can run lower (all the way down to idle = 0MHz) to save power, or higher (66MHz) if your hardware supports it.

Pokud může běžet níž až na nulu, tak si data prostě nashiftuju a pak dám jeden hodinový tik, nashiftuju další, dám tik ... a poběží to tak rychle, jak rychle (nebo pomalu) budu zrovna schopný ta data generovat :)

Wojta
Příspěvky: 184
Registrován: 22 črc 2017, 16:39
Reputation: 0

Re: PC VGA karta a Arduino

Příspěvek od Wojta » 27 kvě 2019, 14:20

Přesně, shift register a je vystaráno :D tak snad se k té komunikaci s kartou fakt dostaneš, teď už by to nemusel být takový oříšek. Rozhodně sem dávej cokoliv na co přijdeš, jsem napnutej jak to dopadne.

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 13 hostů