forum speccy.pl

ZX Spectrum => WSPÓŁCZESNE KLONY => Wątek zaczęty przez: trojacek w 2019.08.16, 20:45:43

Tytuł: Max 48 i VGA
Wiadomość wysłana przez: trojacek w 2019.08.16, 20:45:43
Tak sobie od paru dni siedzę i kombinuję... Czy nie dałoby się w prosty sposób przystosować wkładu w Max 48, by zamiast zwykłego monitora sterować monitorem VGA? Na razie tylko jako proof of concept, bo w tym przypadku nie da się pogodzić prostoty z jakością.

Teoretycznie da się wykorzystać podstawowy tryb VGA (640x480, 31,5kHz) tak, by każda linia screena była rysowana dwa razy. W miarę proporcjonalne byłyby też wszystkie marginesy (border). Zmieniłaby się oczywiście częstotliwość przerwań, by choć niektóre efekty borderowo-multikolorowe miały szansę zadziałać. Do realizacji tego pomysłu całkowicie wystarcza zegar 14MHz, co upraszcza sprawę.

Sporym minusem byłyby znacznie częstsze odwołania do pamięci obrazu, plus częstsze przerwania - procesor miałby mniej czasu na resztę zadań, o ile jednocześnie nie podniesie się częstotliwości zegara CPU.

Sugestie? Pomysły? Pytania?
Tytuł: Odp: Max 48 i VGA
Wiadomość wysłana przez: pear w 2019.08.16, 21:02:59
Można w jakiś sposób zbuforować 32 bajty danych do dublowania linii, żeby ograniczyć ilość odczytów z pamięci. Nie zmieni to jednak wyższej częstotliwości przy pierwszym odczycie (będzie "szarpało" ;) ).
Tytuł: Odp: Max 48 i VGA
Wiadomość wysłana przez: trojacek w 2019.08.16, 21:11:40
Teoretycznie można zintegrować obecny wkład z wkładem od scandoublera i problem odwołań do pamięci całkowicie znika.
Oczywiście trzeba wtedy dołożyć kawałek RAM jako bufor linii.

Ale ja chciałem zrobić coś prostszego. Ot, podmieniamy wkład, wyprowadzamy dwa sygnały dodatkowo (Hsync i Vsync) i to wszystko.

Drugą pieczenią na jednym rożnie miałoby być sprawdzenie trybów turbo - 7/14 MHz.
Tytuł: Odp: Max 48 i VGA
Wiadomość wysłana przez: Maryjan w 2019.08.16, 23:16:41
ALTERA się od tego nie zapali ?

Ja bym wolał w ZX Max 48 tryby Timex-owe.
Terminal dla CP/M uruchomiony na Timex-ie wświetla ładniejszą czcionkę, niż na ZX Spectrum.
Tytuł: Odp: Max 48 i VGA
Wiadomość wysłana przez: SAJ w 2019.08.16, 23:23:34
Widzialem to w Akcji i dziala.

Pozwole sobie przytoczyc, ze Pan Krzysztof z tego prtalu

https://sites.google.com/site/krzkomar/elwro-800-junior

Zbudowal sobie klona Elwro 800 Juniora, ktory wyswietla obraz na VGA.

Zrobil to na zasadzie, ze zainteresowal go tylko obszar pamieci, przypisany do ekranu.

Kiedy procesor probuje wpisac cos w ten obszar, to grafika mu w tym nie przeszkadza aby zapisal to sobie, ale do zwyklego statycznego RAMu, z ktorego moze tez sobie te dane spowrotem przeczytac, natomiast kiedy te dane sa na magistrali w czasie zapisu, to modul grafiki sobie te dane "pozycza" i zapisuje do swojego wlasnego bufora, z ktorego moze potem wyswietlac obraz z taka czestotliwoscia, z jaka tylko chce.

Proste i skuteczne i miesci sie w jednym xilinxie :)

Tytuł: Odp: Max 48 i VGA
Wiadomość wysłana przez: SAJ w 2019.08.16, 23:40:43
W miarę proporcjonalne byłyby też wszystkie marginesy (border).

Tutaj dorzuce troche doswiadczen, ktore nabylem, kiedy budowalem terminal do Bosmana i bawilem sie w wyswietlanie obrazu w VGA w roznych predkosciach i rozdzielczosci. Wydawaloby sie to proste, gdyby nie fakt, ze nawet monitory CRT tak dlugo jak sa kolorowe, to maja jakas rozdzielczosc i dobrze jest w ta rozdzielczosc trafic. To nie jest tak, ze wyrzucisz 256 pixeli na ekran kiedy Ci sie to podoba i beda wygladaly slicznie, bo to przeciez VGA, tylko to musi sie zsynchronizowac z rastrem i pixele musza trafiac w punkty zwlaszcza, kiedy wyswietlaczem jest panel LCD. W Przeciwnym wypadku efekt jest taki, ze np Litera "I" bedzie miala rozna grubosc, a litera m bedzie miala kazda nozke inna, zaleznie od miejsca w ktorym jest na ekranie, a jesli dochodzi kolor, to jeszcze kolory sie zaczna rozjezdzac.

W zalaczniku jest mniej wiecej demonstracja efektu co sie dzieje, gdy to co wyswietlasz nie trafia w pixele na ekranie. Nalepiej widac na literze m.

Teraz przy rozdzielczosci 640x480@60Hz musisz udezyc w ekran 800 razy w 32us. Z zegara 14Mhz, to nie bedzie mozliwe. Grafika bedzie musiala miec swoj wlasny osobny zegar i dzialac asynchronicznie do reszty ukladu, co oznacza, ze takie sprawy jak IRQ musza byc przeanalizowane jeszcze raz.

Tytuł: Odp: Max 48 i VGA
Wiadomość wysłana przez: trojacek w 2019.08.17, 01:24:53
Nawet przy 14MHz będzie lepiej, niż po composite. Zwłaszcza na monitorze CRT, który nie ma pikseli.
A na LCD, przyjmując minimalną rozdzielczość poziomą 1280px (tyle ma mój Samsung 19"), wystarczy, że spectrumowy piksel będzie się składał z około 3 pikseli fizycznych. Jak któraś kreska będzie nieco cieńsza (2 piksele), to nic złego się nie stanie.

Cytuj
Kiedy procesor probuje wpisac cos w ten obszar, to grafika mu w tym nie przeszkadza aby zapisal to sobie, ale do zwyklego statycznego RAMu, z ktorego moze tez sobie te dane spowrotem przeczytac, natomiast kiedy te dane sa na magistrali w czasie zapisu, to modul grafiki sobie te dane "pozycza" i zapisuje do swojego wlasnego bufora, z ktorego moze potem wyswietlac obraz z taka czestotliwoscia, z jaka tylko chce.

Tak działa znany scandoubler, tak działa ZX-HD Bena, tak działa ZX-VGA, tak działa Spectra mający złącze SCART.
Ale mi nie o to zupełnie chodziło.
Niemniej dzięki za insight :)
Tytuł: Odp: Max 48 i VGA
Wiadomość wysłana przez: trojacek w 2019.08.17, 01:26:44
Ja bym wolał w ZX Max 48 tryby Timex-owe.
Terminal dla CP/M uruchomiony na Timex-ie wświetla ładniejszą czcionkę, niż na ZX Spectrum.

A ja bym wolał timexowy hires na monitorze VGA, i to najlepiej bez borderu :)
Ale do tego potrzebny jest zegar minimum 20MHz. I know-how, którego mi brak.
Baby steps...
Tytuł: Odp: Max 48 i VGA
Wiadomość wysłana przez: Maryjan w 2019.08.17, 13:00:29
So, steb by step.
Do sukcesu :)

Choć ostatnio usłyszałem od jednej osoby, że takie nowoczesności, to już nie retro.
Są jeszcze zatwardziali retro-maniacy  ;D
Tytuł: Odp: Max 48 i VGA
Wiadomość wysłana przez: trojacek w 2019.08.17, 13:17:32
To nie retro, zgoda, to raczej taki pomysł na własne potrzeby. Dla mnie osobiście prostszy w realizacji niż montaż ZX-Uno :D
Tytuł: Odp: Max 48 i VGA
Wiadomość wysłana przez: SAJ w 2019.08.17, 20:53:23
... Zwłaszcza na monitorze CRT, który nie ma pikseli.

Tytuł: Odp: Max 48 i VGA
Wiadomość wysłana przez: trojacek w 2019.08.17, 21:00:22
To nie są piksele. A rysunek nawet nie odzwierciedla struktury luminoforu monitorów CRT, tylko starych telewizorów.
Dlatego ja CRT wszystkie tryby grafiki są jednakowo... rozmazane :)
Przykładem z życia wziętym jest Trinitron,  który nie ma kropek (dots), tylko ciągłe paski luminoforu. Rozdzielczość pozioma jest więc teoretycznie nieskończona (w praktyce ograniczona pasmem sygnału i elektroniki monitora).
Tytuł: Odp: Max 48 i VGA
Wiadomość wysłana przez: SAJ w 2019.08.17, 21:02:03
Cytuj
Nawet przy 14MHz będzie lepiej, niż po composite.

Moze nie byc. Kiedy probjesz wyswietlic pixel w momencie, gdy raster jest miedzy pixelami na ekranie, to naprawde nie wyglada ladnie. W kolorze jest jeszcze gorzej, bo oprocz samych pixeli jeszcze rozjezdza sie kolor.







Tytuł: Odp: Max 48 i VGA
Wiadomość wysłana przez: SAJ w 2019.08.17, 21:05:39
To nie są piksele.

Ok, aczkolwiek z autopsji wiem, ze dobrze jest w czasie w to trafic, cokolwiek to jest.
Tytuł: Odp: Max 48 i VGA
Wiadomość wysłana przez: trojacek w 2019.08.17, 21:07:33
Cytat: sajmosia link=topic=5194.msg79710#msg79710
W kolorze jest jeszcze gorzej, bo oprocz samych pixeli jeszcze rozjezdza sie kolor.

Hicolor jest mono.
I naprawdę nie ma znaczenia, czy na jeden piksel timexowy załapią się 2 czy 3 piksele matrycy LCD. Rozmazanie jest całkiem znośne.
Tytuł: Odp: Max 48 i VGA
Wiadomość wysłana przez: trojacek w 2019.08.17, 21:09:58
Cytat: sajmosia
Ok, aczkolwiek z autopsji wiem, ze dobrze jest w czasie w to trafic, cokolwiek to jest.

W CRT nie ma to żadnego znaczenia,  na LCD trochę widać.Ale  im większa przepaść między rozdzielczością źródła i matrycy, tym lepiej :)
Tytuł: Odp: Max 48 i VGA
Wiadomość wysłana przez: SAJ w 2019.08.17, 21:10:25
Rozmazanie jest całkiem znośne.

Z daleka tak, ale gdy sie przyjzysz, to przyklad masz powyzej.
Tytuł: Odp: Max 48 i VGA
Wiadomość wysłana przez: SAJ w 2019.08.17, 21:12:43
W CRT nie ma to żadnego znaczenia

Dobra, nie bede sie klocil. Opisalem tylko co mi sie przydarzylo, domyslam sie, ze kiedy zaczniesz eksperymentowac, to potencjalne problemy same wyjda "w praniu" :)
Tytuł: Odp: Max 48 i VGA
Wiadomość wysłana przez: trojacek w 2019.08.17, 21:22:34
Akurat to zjawisko mam przećwiczone, bo LCD to obecnie mój jedyny ekran do Spectrum/Timexa. Rozmycie, które pokazałeś na obrazku, jest mi znane i uważam je za akceptowalne.
Zauważ,  że korzystając z monitora LCD po  VGA niemal zawsze jest rozmycie. Bo albo korzysta się z rozdzielczości innej niż natywna, albo z natywnej, ale piksele nie trafiają. Niektóre monitory mają regulację fazy do korygowania tego problemu. I w ten sposób matryca 1280x1024 w miarę poprawnie wyświetli tryb 640x480 (z marginesami góra- dół), co jest punktem wyjścia do moich gdybacji  :)
Dziękuję za Twój wkład w temat.
Tytuł: Odp: Max 48 i VGA
Wiadomość wysłana przez: SAJ w 2019.08.17, 21:44:35
Dziękuję za Twój wkład w temat.

A nie ma sprawy, od tego jest forum :)

W kazdym razie postanowilem ktoregos dnia nie zaakceptowac tych przemieszczen i pomeczyc sie troche, zeby wygladalo to troche lepiej.
Wszsytko to sprowadza sie do czasu. Jesli bedziemy mierzyc czas w stylu "aj tam niech bedzie" to faktycznie zostanie nam tylko zakceptowac co wyjdzie na ekranie, ale jesli faaktycznie robimy cos, zeby ta grafika wygladala lepiej, to mozna sie do tego troche przylozyc.

Zeby uzyskac 800 jednostek czasowych w 32 us to kazda jednostka bedzie miala po 40ns., z czego linia na ekranie sklada sie z 16 + 96 + 48 + 640 takich jednostek. mozna to podzielic np na 2 i zrobic tylko 400 jednostek po 80ns i wyjdzie 8 + 48 + 24 + 320, gdzie  w 320 mozna wcisnac 256 bardzo ladnych pixeli i jeszcze zostaje po 32 na ramke.

Wszystko to bedzie wygladalo super, gdy kazda jednostka bedzie miala po 80ns. To jest maksymalne minimum , jakie jest potrzebne, zeby wyswietlic cos w najnizszym trybie graficznym obslugiwanym przez dzisiejsze monitory tak, zeby to wygladalo ladnie.

Teraz zeby uzyskac jednostke 80ns potrzebny jest zegar o czestotliwosci 12.5 Mhz.  Przy zegarze 14Mhz jeden cykl trwa 71.4285714 ns, zamiast 80ns, ktore jest nam potrzebne.

Jak bys tego nie podzielil i na jaki bys tego monitor nie wyrzucil, to przy tej czestotliwosci to nie bedzie wygladalo dobrze w VGA.

Natomiast masz racje, ze jesli wyswietlisz to samo na monitorze 8K, to wtedy wyrzucaj pixele gdzie chcesz i nie bedzie roznicy, ale wtedy nie wcisniesz tego w Altere na 5V.

Wystarczy wymierzyc wszystko w czasie i bedzie wygladalo dobrze na kazdym ekranie.

Pozdr.
Tytuł: Odp: Max 48 i VGA
Wiadomość wysłana przez: trojacek w 2019.08.17, 22:02:24
Tak. Dokładnie przy 25,175 MHz / 2 będzie idealnie.
25,175 to standardowa częstotliwość Pclk dla 640x480, trybu,  który każdy monitor musi obsłużyć.
Ale jak pisałem na początku, jestem na etapie PoC i z rozmyciem się pogodziłem. Jak się uda i będzie sens kontynuować,  to wrócimy do tematu i dokładnych wyliczeń :)
Tytuł: Odp: Max 48 i VGA
Wiadomość wysłana przez: KWF w 2019.08.18, 00:43:08
Nie żebym wschodził między wódkę a zakąskę, ale połączenie obu jest w ZX UNO, tryby Timexa i scandoubler. Źródła w verilogu wiszą na githubie.
Tytuł: Odp: Max 48 i VGA
Wiadomość wysłana przez: trojacek w 2019.08.18, 01:03:15
No i nie czytałeś, co napisałem:

To nie retro, zgoda, to raczej taki pomysł na własne potrzeby. Dla mnie osobiście prostszy w realizacji niż montaż ZX-Uno :D
Tytuł: Odp: Max 48 i VGA
Wiadomość wysłana przez: KWF w 2019.08.18, 10:31:44
Czytałeś, ale Ty mnie nie zrozumiałeś. Nie pisałem, że masz używać ZX-UNO, ale zajrzeć do źródeł, jak tam było zrobione i z tych źródeł wybrać co potrzebujesz.
Tytuł: Odp: Max 48 i VGA
Wiadomość wysłana przez: trojacek w 2019.08.18, 10:39:47
Aaa, ok, nie tak to odebrałem :)
Ale źródeł ZX Uno się boję, bo są wielkie ;)
Tytuł: Odp: Max 48 i VGA
Wiadomość wysłana przez: KWF w 2019.08.18, 10:45:22
W sumie potrzebujesz zajrzeć do 3 źródeł:

https://github.com/zxdos/zxuno/blob/master/cores/Spectrum/new_memory.v

https://github.com/zxdos/zxuno/blob/master/cores/Spectrum/vga_scandoubler.v

https://github.com/zxdos/zxuno/blob/master/cores/Spectrum/ula_radas.v

Tytuł: Odp: Max 48 i VGA
Wiadomość wysłana przez: trojacek w 2019.08.18, 11:50:20
Dzięki. Popatrzę, jak będę miał dostęp do komputera.