wyjście z karty MDA (PC) - jak wyświetli

Normalnie w technice cyfrowej masz sygnaly synchroniczne, tzn. jest zegar i sygnaly zmieniaja sie w ustalenej relacji do zegara, np. po rosnacym zboczu zegara. Sygnal wideo nie zawiera zegara, wiec jesli go probkujesz uzywajac nezalezny zegar powiedzmy 15 MHz to nie wiesz ktory piksel czytasz, dany czy nastepny. Zeby w miare prosto czytac taki sygnal potrzebujesz zegar powiedzmy 4 razy szybszy, czyli rzedu 53 MHz. Jesli chcesz to robic w prosty sposob programowo to bedziesz mial kilka instrukcji na probke, czyli

200-300 MIPS.

Co do twoich tropow:

- zapomij o Arduino. Jest program AVRIsp ktory czyta sygmal USB low speed, tzn. 1.5 MHz. To jest rzezba asemblerowa ktora trudno by polepszyc.

- GPIO w rPI tez nie daje rozsanych szans. Ludzie probowali na GPIO robic podobne rzeczy i powyzej 100 kHz sa problemy. Jak napiszesz w asemblerze driver jadra to sa mozliwe wyzsze czestotliwosci, ale nie jest jasne czy bedzie lepiej niz w Arduino. Procesor w rPI moze wykonac duzo wiecej instrukcji niz procesor w Arduino ale odbywa sie to kosztem tego ze nie wiesz kiedy te instrukcje beda wykonane.

Jesli myslisz o realizacji programowej to jakis (male) szanse masz z procesorami klasy STMF4 czy STMF7 -- masz mozliwosc czytania lini GPIO z czestoscia rzedu 40 MHz. Rozsadniejszym rozwiazaniem moze byc uzycie sprzetowego SPI w procesorze -- w zasadzie SPI zbiera strumien bitow na wejsciu i zamienia go na bajty. Ale potrzebujesz procesor gdzie SPI chodzi do 50 MHz i nie ma przerw miedzy bitami. Specyfikacja SPI mowi ze transmisja jest sterowana zegarem a procesor generujacy zegar moze robic przerwy gdzie mu sie podoba (podobno procesor uzywany w Arduino robi przerwe po kazdym bajcie). Dokladniej, jesli SPI dziala w trybie master to procesor generuje zegar transmisji i teoretycznie moze robic przerwy kiedy chce. Czysto teoretycznie mozna ustawic procesor w tryb slave i podlaczyc mu zewnetrzny zegar 50 MHz (ale tryb slave czesto ma mniejsza maksymalna czestotliwosc niz master).

Co do "odczytu sygnalow 15 MHz": ty faktycznie chcesz zmiany zegara transmisji (konwersji) co wymaga wyzszych czestotliwosci. Nie jest to technicznym problemem ale jak uzyjesz staromodne uklady to bedzie ich troche. No a nowoczesne uklady maja swoje komplikacje. W przypadku procesora uzycie go do czytania sygnalu jest marnotrawstwem, uzywasz skomplikowanego urzadzenia zeby zrobic cos co robi prosty rejestr przesuwajacy. Przy malych szybkosciach to marnotrawstwo nie boli, ale przy 50 MHz rozne rzeczy ktore robi procesor moga zabierac zbyt wiele czasu by to dobrze dzialalo.

Reply to
Waldek Hebisch
Loading thread data ...

W dniu 2016-05-18 o 20:26, J.F. pisze:

Tak nie do końca. Tor wizyjny nie jest liniowy i piksel zwyczajnie nie świeci kiedy jest tylko podświetlenie. Proste, a że mogłoby być inaczej to inna sprawa.

Jarku, widzę tu pewną sprzeczność. Jeżeli myślisz o PWM, to gdzieś musisz mieć uśrednianie - wygląda, że na wzmacniaczu wizyjnym. Ale to z kolei stoi w sprzeczności z postulowaną uniwersalnością - dla przykładu wzmacniacze wizyjne 17" monitorów miały przynajmniej 108MHz pasmo, tych lepszych nawet 200. 15" miały ok 50MHz. OK, mówimy tu o zupełnie innej klasie sprzętu, ale mimo wszystko zakładanie, że wzmacniacz wizyjny będzie miał określone pasmo jest raczej kiepskim pomysłem. Tym bardziej, że jeden biegun to mogłoby być trochę mało.

A tu gdzieś coś mi ucieka... Co to niby miałoby być? Że co druga ramka świeci albo nie? Charakterystyka luminoforu chyba mogłaby jednak nie podpasować, ale nie wiem.

Pozdrawiam

DD

Reply to
Dariusz Dorochowicz

Dnia Wed, 18 May 2016 22:37:41 +0200, Jarosław Sokołowski napisał(a):

Znalazlem zrodlo

formatting link
i wnioski

-monitor IBM ma wejscie cyfrowe i na moj gust faktycznie 3-poziomowe. No ale bywaly tez inne monitory, z wejsciem 4-poziomowym, czy nawet tak naprawde analogowym.

-karta MDA jest dosc skomplikowana ale tak na drugi rzut oka to highlight na spacji faktycznie nic nie da. Ale kombinacja video 0 HL 1 chyba jest mozliwa. ciekawie tu pisza

formatting link
78 - dark green on green

Tak w ogole jak sie na schemak karty patrze ... IBM mial chyba jakies ambitne plany, ale ucial w polowie ?

Jest to jakis argument, ale IMO - dosc slaby, rozne mogly byc powody takiego wyboru.

Tak czy inaczej - w tamtych czasach cyfrowej transmisji video nie bardzo mi sie chce wierzyc w wyjscie analogowe w karcie. Ale chodzi mi po glowie jeszcze jedna mozliwosc - monitor byl nie tylko "Hercules", ale potrafil tez wspoldzialac z CGA - czyli mial sumator z paru innych bitow kolorow z roznymi wagami/opornikami. Choc karta HEGA, to raczej wyjscie EGA niz CGA ... monitor kompatybilny takze z EGA ?

Maja jednak 2 druciki, bo taki standard :-) A sygnal analogowy to nie wiem ska mialyby brac - Atari, Commodore? Wtyczka inna.

J.

Reply to
J.F.

Dnia Thu, 19 May 2016 08:35:15 +0200, Dariusz Dorochowicz napisał(a):

No coz, dobor opornikow byl dziwny.

Na oku, na luminoforze, na ekranie.

No wlasnie - 14 mono

A niech sobie ma duze, wyswieli pol piksela - myslisz, ze czlowiek zauwazy cienkosc i prazki, czy tylko jasnosc ? A w drugiej linii i obrazie mozna zamienic.

Swieci na zmiane poziom 2 lub 3, 0 lub 1, 1 lub 2 - zeby miganie nie bylo duze ...

W TV miales dwa polobrazy i nie narzekales :-)

J.

Reply to
J.F.

Pan Dariusz Dorochowicz napisał:

To akurat dało się zrealizować w karcie Hercules -- właśnie przez wyświetlanie na zmianę dwóch stron graficznych, można było zmieniać nawet z częstotliwością ramki. Ale z PWM mie ma to wiele wspólnego, miga jak jasna cholera.

Reply to
invalid unparseable

Użytkownik "Mateusz Viste" napisał w wiadomości Póki co mam kilka tropów:

W miare trywialna, tylko trzeba uzyc wlasciwych narzedzi, a nie upierac sie zrobic to na powolnym procesorze :-)

Potrzebujesz w zasadzie ten scan doubler, czyli uklad ktory przyjmie linie obrazu, zapamieta, i odtworzy dwa razy. W miedzyczasie przyjmujac nastepna. (mozna sie probowac wyrabiac w pol linii). Osiagniesz ~700 linii z czestotliwoscia ~36kHz - czyli w miare spokojny wspolczesny standard.

Oczywiscie mozesz sprobowac jakiegos gotowca, ktory bedzie przyjmowal cale obrazy do pamieci i odtwarzal je z zupelnie innym formacie. Tylko, ze takie juz sa we wspolczesnych monitorach, to moze szkoda roboty :-)

J.

Reply to
J.F.

Pan J.F. napisał:

Do mnie przemawia argument "się nie dało". To jest właśnie ten.

To nie te same czasy, co VGA? W VGA analogowy sygnał wybrano z rozmysłem. Tu być może nieco z przypadku -- korzystając z faktu, że monitor nazwany przez marketing "cyfrowym", jest w gruncie rzeczy analogowy.

Czarnobiałe monitory VGA też sumowałny na opornikach. A co do CGA, to może warto przypomnieć, że w trybie HiRes (640x200), karta była prawie tak kolorowa, jak Ford T -- na ekranie można było pokazać jeden z *dwóch* kolorów (wliczając w to kolor tła).

Szczerze mówiąc, to ja tego HEGA nie kojarzę. Wiem, że było coś o nazwie bodaj "Hercules in Color". Ale nigdy tego nie widziałem.

Rozumiem, że z tej tajemniczej karty, którą ktoś skonstruował tak, by pasowała do niej wtyczka od monitora MDA/HGC.

Reply to
invalid unparseable

Jestem tego świadom. Jednak z braku wiedzy kurczowo trzymam się nadziei że RPi może wszystko. Ja prosty programista, więc chwytam się tego co mi znajome - bit banging na wszelakich portach wielokrotnie już praktykowałem (ale przy dużo mniejszych częstotliwościach), a alternatywnych pomysłów nie mam... Stąd post na tą grupę, licząc że ktoś coś podpowie, niestety wątek uległ pewnej degeneracji w stronę "ale to były czasy". Tak to bywa w usenecie :) ostatecznie kilka propozycji padło, wszystkie jednak sprowadzają się do "jeśli nie zadziała prostą przejściówką na dwóch opornikach to nie ma sensu kombinować".

To nie do końca jest tak że ja koniecznie *chcę* to robić programowo, po prostu nie mam pojęcia jak to można zrobić inaczej. O konieczności wysokiego zegara wiem, zastanawiałem się wczoraj nad jakimś AVR UC3 który czytałby sygnały MDA i wrzucał do SDRAM (bo SRAMu niestety za mało na pełną ramkę - UC3 ma 16K, a ja potrzebuję co najmniej 64K, a najlepiej 256K), i podawał je potem do RPi po SPI, gubiąc przy tym co drugą ramkę.

Twoja sugestia z STM32 idzie dokładnie w tą stronę.

Ano faktycznie, to może być jakiś pomysł - brzmi trochę jak nadużycie SPI, ale jeśli mogłoby zadziałać... Poszukam w datasheetach jak to wygląda. Potrzebowałbym jednak CPU które ma 2x linie SPI, a nie wiem czy to takie powszechne (bo z MDA wychodzą mi 2 linie po ~16MHz każda, jedna dla bitu video, druga dla bitu intensity).

Po wpisaniu "rejestr przesuwający" w wyszukiwarce, dowiedziałem się że wynalazek ten potrafi zamienić sznurek bitów TTL na równoległy stan X bitów.

Jeśli dobrze to rozumiem, mógłbym tym zamienić moje ~16MHz z MDA np. na równoległe 8 bitów jednocześnie, obniżając tym samym na wyjściu zegar do

2 MHz. No ok, ale co dalej? Te 2 MHz znów ciągnąć do RPi? Czuję że gdzieś tu jest jakaś oczywistość której nie widzę. Odnoszę wrażenie iż mocno przeceniasz poziom mojej wiedzy dot. elektroniki cyfrowej :)

Mateusz

Reply to
Mateusz Viste

Ależ ja się nie upieram :) Ino pomysłowość moja jest ograniczona doświadczeniem. Dlatego też pytałem kilka razy jak takie rzeczy robi się "poprawnie", niestety odpwiedzi dotychczas albo nie otrzymałem, albo nie zrozumiałem.

Zgadza się, to brzmi jak najbardziej jak dobry trop. Problem: elektronicznie patrząc, jak taki scan doubler działa? W zeszły weekend próbowałem coś wymyśleć na papierze, i wyszły mi tylko potworności w stylu jeden AVR który łyka linia po linii, przesyła do drugiego AVR który generuje VGA wypisując 2x to samo, itd. Ale te moje twory albo nie miały szansy zadziałać (np. dlatego że podczas HSYNC nie zdążę przesłać linii obrazu z jednego AVR do drugiego), albo zaczynały przyponminać hydrę (typu kilka AVRów które współdzielą tą samą pamięć SDRAM... jeden zapisuje, drugi czyta i tak w kółko).

Na 100% scan doubler nie polega na takich cyrkach...

I to byłby git. Tylko co wpisać w mądrą wyszukiwarkę żeby wiedzieć od czego w ogóle zacząć?

Mateusz

Reply to
Mateusz Viste

Bo myslisz kategoriami AVR.

Dwie pamieci. Jeden uklad z licznikiem adresuje kolejne bity/bajty i wprowadza obraz video. Drugi uklad z licznikiem tez adresuje kolejno w celu wyprowadzenia danych. Ale po dojsciu do konca robi to drugi raz. I zegar dziala dwa razy szybciej. Oba dzialaja na roznych pamieciach, a po odebraniu calej linii zamieniamy pamieci. Tzn przelaczamy liczniki i inne uklady, do ktorych sa podlaczone. Albo i nie, bo tu licznik, tam licznik - moze wystarczy tylko zamienic sterowanie licznikami.

Oczywiscie do tego jeszcze troche roznej logiki sterujacej potrzeba, kolejne liczniki, zegary.

Mozna tez zrobic na jednej pamieci - trzeba multipleksowac dostepy obu licznikow i zmieniac im najstarszy bit adresu.

Mozna tez zrobic na inne sposoby, np zorganizowac w FPGA dwa dlugie rejestry szeregowe, do jednego wprowadzamy obraz, po zakonczeniu linii przepisujemy rownolegle do drugiego, a ten drugi zapetlic, zeby w kolko odtwarzal linie.

No to moze tak jak wyzej - nie przesylac, tylko zamieniac funkcje ? AVR najpierw czyta linie, a potem ja dwa razy wypuszcza ... a drugi AVR robi to samo, tylko na przemian z pierwszym :-)

A przetestowac mozna na jednym -

Musi zapamietac tresc, zeby ja dwa razy odczytac. I odczytywac z innym tempem. To wychodzi to, co napisalem. Ulatwila by np pamiec dwuportowac, ale ona sama jest utrudnieniem.

A jak ma dzialac uniwersalnie, to cyrki oczywiscie sa, ale od czego te miliardy tranzystorow dostepne w ukladach :-)

J.

Reply to
J.F.

W dniu 2016-05-19 o 10:57, Mateusz Viste pisze:

Znajdź procesor działający na jakiś 50-60 MHz z dobrym elastycznym układem zegara i na podstawie impulsów synchronizacji odtwórz zegar pikseli i dzięki temu czytaj wejście "tylko" na 12 MHz. Albo czytaj wejście kilkoma "powolnymi" rejestrami przesuwającymi sterowanymi z pewnym przesunięciem czasowym. Cztery rejestry na 12MHz dają efektywną "częstotliwość próbkowania" 48 MHz.

Poszukaj jakiego rozwiązania z programowalną logiką, może coś od Lattice, a może Maximator lub PSoC z Cypressa? Te ostatnie są prawie za darmo:

formatting link
A to ma chyba VGA i HDMI
formatting link

Reply to
Andrzej W.

Użytkownik "J.F." <jfox snipped-for-privacy@poczta.onet.pl> napisał w wiadomości news:y7b1g81ctekj$. snipped-for-privacy@40tude.net...

9-pinowa, pasuje jak ulał, osobiście ze swego C128D pędziłem herkulesowego bursztyna. Więc i monitor EGA powinien podejść, możliwe też w drugą stronę, że monitor Commodore da radę na karcie MDA, choć nie wiem, jak z synchronizacją, ale elektronik chyba sobie poradzi? W każdym razie sygnałologia identyczna/kompatybilna, sprawdzałem specyfikację.
Reply to
ACMM-033

No wlasnie nie bardzo. Z tego co czytalem to machanie portami GPIO w malinie to okolice 1.2MHz ludzie osiągali...

Podobnie nawet scalaki z zegarami 50-66MHz jak tu niżej proponują tez mogą nie nadążyć. Bo odczytanie portu - 1 cykl. zapis pamięci - 1cykl. zwiekszenie indeksu 1 cykl. I juz z tych 12MHz robi sie 36 i może być cienko. Bo jeszcze coś z tym trzeba zrobić i komus gdzies to wysłać.

Ale spróbowac nie zawadzi. Poszukaj jakiegoś kitu uruchomieniowego na 32bitowy avr i sie pobaw. Nawet jak nie zrobisz to sie nieco nauczysz, a kit zostanie i cos z nim zrobisz.

To jest jakiś pomysł.

I tu sie pojawia ten rejestr. Mając 8 takich analizatorów opuszczasz szybkość z jaką te bity trzeba łapać o 8 sztuk. To to juz 20MHZ atmega by ogarnęła... Ale czy wyjdzie to nie wiem, za mały jestem :)

Nie ważne, ważne że kombinujesz i próbujesz, cos tam sie nauczysz :)

Reply to
sczygiel

Nie wiem jak w RPi, ale generalnie bylo pare szybszych projektow na wspolczesnych uC. programowe USB, generacja video ... PIC, AVR

Jest jeszcze sprawa, ze to dane bitowe i mozna zgrupowac w bajty. Czy wbudowanym portem szeregowym, czy zewnetrznym.

Co 8 bitow odczytujesz rejestr, zapamietujesz jako caly bajt ... po czym caly bajt zapisujesz do drugiego rejestru, ktory wypuszcza po 8 bitow.

I masz 8x wiecej czasu.

J.

Reply to
J.F.

Użytkownik "Jarosław Sokołowski" napisał w wiadomości grup dyskusyjnych: snipped-for-privacy@falcon.lasek.waw.pl... Pan J.F. napisał:

Nie pamietam dokladnie, ale to szybko szlo, wiec na pewno zblizone. Szczegolnie ze sie to nakladalo - IBM sprzedawal VGA od 1987, a biedni ciagle kupowali Herculesa.

Tym niemniej - EGA cyfrowa, CGA cyfrowa, MDA/Hercules cyfrowy - chcesz wyskoczyc z analogowa karta do wspolpracy z monitorami EGA i Hercules ?

Jak widac - nie zawsze.

No ale tam sygnal byl jednak analogowy.

Ale miala tez inne tryby :-)

No bo to taka rzadkosc byla. Nawet bym tego nie tknal, gdyby kolega nie przyszedl i nie powiedzial ze duzo kolorow/szarosci daje. Wiec poszukalem monitora od Herculesa ... i faktycznie daje. Cuda.

Ale karta to wynalazek malo znany, a monitor dostosowany do standardow powszechnie obowiazujacych :-)

J.

Reply to
J.F.

Pan J.F. napisał:

...a bogaci wkrótce jakieś SVGA z wyższymi rozdzielczościmi, których nie dawał IBM.

Gdybym chiał zrobić dobrze i tanio, to tak, chciałbym.

Konkretnie jeden, jeśli chodzi o tryby graficzne -- 320x200, w którym dało się wybrać aż cztery kolory. Pewnymi sztuczkami dało się pokazać obrazek w rozdzielczości 160x100 pikseli w 16 kolorach, ale to było wykombinowane z trybu tekstowego.

Reply to
invalid unparseable

Użytkownik "Jarosław Sokołowski" napisał w wiadomości grup dyskusyjnych: snipped-for-privacy@falcon.lasek.waw.pl... Pan J.F. napisał:

I wyzszymi trybami, bo prawde mowiac ta VGA to nadal byla malo kolorowa :-)

No, czy to by bylo tanio ... jakbys zrobil dobrze, to by z tego wyszla SVGA i wymagala monitora SVGA :-)

J.

Reply to
J.F.

Pan J.F. napisał:

Na pewno taniej niż prowadzeniue ośmiu drutów w celu pokazania

256 poziomów jasności. Zdarzały sie i takie pomysły. A tu skoro monitor MDA potrafił pokazać więcej niż trzy poziomy jasności, to czemu z tego nie skorzystać tworząc lepszą kartę?
Reply to
invalid unparseable

Użytkownik "Jarosław Sokołowski" napisał w wiadomości grup dyskusyjnych: snipped-for-privacy@falcon.lasek.waw.pl... Pan J.F. napisał:

a) szybkie DAC byly widac kiepskie i drogie, skoro tak nie zrobiono wczesniej, b) czesc monitorow tego nie pokaze, i bedzie jeszcze gorzej niz przy

2-bit sygnale.

J.

Reply to
J.F.

Pan J.F. napisał:

Kilkubitowy DAC, to parę oporników. Szybki jest. I niespecjalnie drogi. Więc nie to. Pepesza, która potrafi wystrzelić tyle bitów w krótkim czasie była droga.

Dzisiaj to by była zaleta -- można ludziom sprzedać nowy monitor. Ale wtedy rozwój wyglądał tak, że dopasowywano się do istniejących rzeczy. Działało z większością dostępnych monitorów MDA/HGC -- więc był powód do uciechy. Te wczesne standardy (CGA, MDA) projektowano tak, by można było skorzystać z seryjnie produkowanych kineskopów i układów odchylania telewizorów.

Reply to
invalid unparseable

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.