FPGA Reseues Scope od Dumpster

Zawsze szukam dodatku jakości do mojego laboratorium, który szanowałby mój ścisły budżet. Ostatnio znalazłem, że pcham Barierę Hertza z każdym innym projektem, który robię, a tym samym rozpaczliwie pożądany zakres wysokiego przepustowości. Niestety, dopiero niedawno wynosi 70 MHz do 100 MHz, staje się naprawdę przystępny, podczas gdy nowy oscyloskop Quan Channel w zakresie 500 MHz do 1 GHz nadal kosztuje fortunę do zdobycia. Moją jedyną opcją było znalezienie absolutnego cudu w postaci starego zakresu wysokiego przepustowości.

Wydawało się, że bogowie dłoni mnie Elektronika uśmiechali się na mnie, gdy znalazłem ten śmietnikowy przeznaczony HP 54542C. Wyglądało na to, że jest w dobrej formie i był najlepszym psów w swoim dniu. Ale coś musiało być złamane? na pewno ekran był wyraźnie wadliwy i nieczytelny. Chcesz wiedzieć, jak go naprawiłem? Cztery litery: FPGA.

Problem
Niektóre płytkie badania nad tym zakresem ujawniły pewną ciekawą historię. Było to przyprowadzone do pierwszego poziomu wysokiego końcowego HP z LCD i był również prekursorem do serii RECINIUIUIU, które trafiły do ​​wytycznego rynku. LCD poczuł się jako refleksji. Zakres miał podobny wariant z wyświetlaczem CRT, a wersja nabyta po prostu przeprowadziła wyeliminowane przewody pokarmowe CRT, a kolor LCD zainstalowany przez HP. Mam nadzieję, że LCD był wina, a nie prowadził go Asic’a, wydawało się to dobrym zakładem, ponieważ delikatny kran w niektórych przypadkach przynieś ekran z powrotem do życia!

Zacząłem badać korzeniową przyczynę i zacząłem od rozrywki LCD. Odkryłem, że niektórzy płyn został rozlany na nim; Nic nie skorodowało, ale czyszczenie i ponowne zainstalowanie nie miało różnicy. Ponowne połączenie zakresu z śmietnikiem nie było opcją, ponieważ oprócz LCD, zakres wyczuł jak absolutny skarb. Mimo że płyta Chauffeur LCD była teraz całkowicie bezużyteczna, przybyła od czasu, gdy branża nie przeniósł się jeszcze na podzespołu subatomowe na złącza z drutu do pokładu. To dorozumiało, że mogłem wygodnie lutować na konwencjonalnej telewizji kablowej 26-pinowej wstążki, aby wykorzystywać wszystkie wymagane sygnały i rozpocząć proces inżynierii odwrotnej w użyciu protokołu.

Odwrotna inżynieria protokoły LCD

Telewizor kablowy wstążki lutowane na istniejącym złączu
Pierwszym krokiem procesu było zidentyfikowanie sygnałów na złączu. Wyglądałem na najbardziej ogólny zestaw sygnałów wymaganych do prowadzenia LCD. Powinno to obejmować kilka ściśle okresowych sygnałów, para nieco przypadkowych sygnałów i oczywiście typowej mocy i ziemi. Sygnały okresowe byłoby wielu prawdopodobnie zegar pikseli i sygnały synchronizacji, które oznaczałyby początek nowej linii i ramki; Z drugiej strony losowe sygnały będą wyświetlane rzeczywiste dane pikseli. Oczekuje się, że oczekuje się dość łatwego protokołu. Przeprowadziłem to intuicję, zacząłem sondować złącze i wkrótce miałem wszystkie 25 sygnałów.

Znalazłem tylko dwa doskonale okresowe sygnały: jeden, stosunkowo niski sygnał 31,25 kHz zamknięty w podejrzanym 60 Hz, a druga fala kwadratowa 25 MHz. Pierwszy musiał być zintegrowany sygnał synchronizacji. 60 Hz było martwym prezentem, ponieważ odpowiadało mu nominalnej szybkości ramki. Sygnał podstawowy 31,25 kHz powinien następnie odpowiadać poziomej szybkości linii w ramce. Wreszcie sygnał 25 MHz musiał być zegar dla całego systemu, w rzeczywistości był to zegar pikseli.

Następnie musiałem zrozumieć losowe sygnały, które były najwyraźniej dane pikseli. Po pierwsze, potrzeba złącza 25-pinowego wyraźnie nawiązuje do jakiejś równoległej konfiguracji RGB. W sumie znalazłem dziewięć takich sygnałów, które doskonale dzieli się o trzech i owiniętych, że LCD stosuje się odpowiednio na dziewięć bitów na piksel oraz trzy bitów na kanał kolorowy R, G i B odpowiednio.

Przykład: schemat patio VGA
Dowiedz się, że schemat i pin-out był częścią wyzwania. Prawdopodobnie znacznie bardziej niezbędne określił czasy sygnałów w użyciu. Prawie zawsze, surowe sygnały wyświetlające mają to, co nazywa się “gankami”. Można je uważać za regiony w każdej ramce, w której nie można napisać dane. Pochodziły one w dniach CRT, w których fizyczna wiązka elektronów poświęciła czas od końca linii z powrotem do początku drugiego, a nawet z dołu ekranu na górę. Chociaż mniej wyraźne w nowoczesnych ekranach elektronicznych, te regiony nadal istnieją, ponieważ kontroler LCD wymaga przetwarzania czasu i przechowywania danych przychodzących.

Określanie czasów

Aby wyodrębnić czasy, które próbowałem korelować dane pikseli za pomocą sygnałów synchronizacji. Szukałem żadnych regionów, w których piksele były konsekwentnie niezapomniane.

Czasy poziome
Po gapianiu się na chwilę, był oczywiste, że LCD użył prostego, pojedynczego schematu patio zarówno na poziomej i pionowej części zintegrowanego sygnału synchronizacji. Było to łatwe do zidentyfikowania, ponieważ piksele zostały ustawione nawszystkie wysokie lub wszystkie niskie w tym okresie. Kiedyś wskazałem te regiony, użyłem kursorów do pomiaru ich czasu trwania i przetłumaczył ten czas na równoważną liczbę pikseli.

Była to istotna informacja, która gwarantuje stabilną i odpowiednią reprodukcję monitora VGA. Planem było nakarmić te wartości jako stałe w Verilog i używać liczników do “podróży” odpowiedniej logiki, aby uzyskać wymagane przebiegi.

Pionowe czasy
Wreszcie rozdzielczość LCD musiała zostać zidentyfikowana, ponieważ musiałbym uruchomić monitor zastępczy w tych samych ustawieniach. Wykonano to, po prostu mierząc różne okresy aktywne i porównując je do innych sygnałów, takich jak zegar pikseli, który miał okres 40 ns. Poziomy czas aktywny został określony, że wynosi około 25,7 nas, stanowiąc w sumie 642,5 pikseli i podobnie jak pionowy okres aktywny wynosił 15,42 ms i z okresem poziomym 30 USD, który odpowiada 481 linii. Najwyraźniej był to konwencjonalny wyświetlacz 640 x 480 o rewitalizacji wskaźnika 60 Hz.

Znalezienie zdolnego zastąpienia

8-calowy wybawiciel
Istniejący wyświetlacz [okazał się] dość powszechny w końcu, a wymiana wydawała się całkowicie wiarygodna. Niestety rozmiar był nieco dziwny; Łatwo jest znaleźć siedem calowych ekranów, ale osiem? Mimo że nie mogłem znaleźć dość drogiego spadku w wymianie w sieci, wielkość stała się taka sama jak używana przez liczne nowoczesne instalacje LCD po rynku na samochodach. Są to dobre tanie “Eyyo” ekrany najwyższej jakości (50 £) i zaakceptują dosłownie wszystkie opracowywanie danych wejściowych wideo ze wszystkich analogowych do VGA, a nawet HDMI. Wspierają również znacznie wyższą rozdzielczość 1024 * 768. Jestem zdumiony, że ten ekran nie jest masowo popularny w społeczności Raspberry PI.

Wreszcie wszystko wydarzyło się razem. Nie tylko mógłbym zastąpić LCD z tym monitorem VGA, idealnie pasowałoby do zakresu, ponieważ jest to odpowiedni miejsce na CRT!

Dokładnie, w jaki sposób wykonuje konwersję LCD do VGA? Oczywiście z FPGA!

Konwersja sygnału.

W tym momencie jedyną rzeczą stojącej między mną a funkcjonującym zakresem 500 MHz został pomyślnie przekształcony wcześniej wymienione sygnały LCD do VGA. Było jasne, że takie stosunkowo szybkie przetwarzanie można było zrobić tylko na FPGA, ale który? Moim celem było w pewnym momencie, pozostaw FPGA wewnątrz zakresu z ekranem, więc potrzebowałem czegoś małego i taniego. Na szczęście Ebay wydaje się mieć mnóstwo tych starych płyt rozwoju opartych na Altera CyClone II na umysł boggling 10 GBP! Są one raczej zdolne FPGA, trzymając o elementach logicznych 4K i optymalny dla w takim projekcie na małą skalę.

Powszechny sposób, w jaki wykonane są konwersje wyświetlacza, używają buforów ramek. Pomysł jest buforować całą ramkę, przeprowadzić konwersję i wypluła go na drugim końcu. Niestety to wzywa do szanowanego wspomagającego się pamięci RAM na FPGA. Te płyty FPGA są notoryczne, że nie ma żadnej zewnętrznej pamięci RAM, dlatego ten schemat był poza pytaniem. Po odrobinie myślenia dotyczyłem świadomości, że sygnały LCD i VGA nie były takie odmienne. Co jeśli mógłbym konwertować z jednego do drugiego na zasadzie liniowej i obejść potrzebę w ogóle bufora ramki?

Porównanie: VGA VS LCD. Ten diagram dotyczy segmentów poziomych i pionowych
W podsumowaniu:

LCD ma:

Zegar pikseli

Połączone sygnały synchronizacji

Tylko przednie patio.

mając na uwadze, że VGA ma:

Brak zegara pikseli

Oddzielne sygnały synchronizacji

Patio z przodu iz tyłu z okresem synchronizacji

Zintegrowany sygnał synchronizacji
Wyszczególnij szczegółowo, jak działa VGA poza zakresem tego artykułu, ale naprawię to później. Na razie, jeśli po prostu zbadamy szkic czasu, widzimy, że jedyną różnicą między dwoma sygnałami jest liczba zdarzeń i lokalizacji ganków i umieszczenie prawidłowych danych.

Szkic sprawia, że ​​konwersja wygląda łatwo, ale jest ważna tylko wtedy, gdy dwie klatki są w kompletnej synchronizacji. Aby powiedzieć FPGA, aby rozpocząć wytwarzanie odpowiedniej ramki LCD nad VGA, powinniśmy najpierw zidentyfikować początek nowej ramki pochodzącej z złącza LCD, abyśmy mogli zsynchronizować. Jest to prawdopodobnie najtrudniejsza część procesu, ponieważ jedynie badanie krawędzi zintegrowanego sygnału synchronizacji z LCD nie jest wystarczające.

Powinniśmy zamiast tego zmierzyć czas między dwoma krawędziami i flagą występowanie nowej ramki. Reszta jest stosunkowo prostym zestawem bram logicznych, które wytwarza powyższy diagram czasu. Wreszcie, ponieważ LCD nie ma tył pulsu lub impuls synchronizacji, przychodzące dane RGB powinny być równoważone w czasie za pomocą małego FIFO, aby idealnie dostosowuje się do tego, gdzie go monitor VGA spodziewa się. Po zakończeniu równowagi powyższe w Verilog, przystąpiłem do sprzętu.

Konfiguracja sprzętu

Ustawienia sprzętowe.
Konfiguracja sprzętowa była na szczęście bardzo minimalistyczna. HP nie był bardzo wykorzystujący LCD do pełnego potencjału. Sprawdzanie poszczególnych bitów eKanał ACH ujawnił dużo redundancji: Różne bity były praktycznie zawsze identyczne, co wskazuje na bardzo płytkie wykorzystanie pełnej dziewięciu bitowych palety kolorów. Nie było to szokujące, ponieważ HP było głównie ponowne wykorzystanie oprogramowania z wersji CRT zakresu. Wszystko to dorozumiało, że uciekłem po prostu podłączeniem MSB każdego kanału kolorów z praktycznie żadną straty w ostatecznym obrazie. To oszczędzało mi nawet znacznie cenniejszą pamięć na FPGA.

Najważniejszym problemem było to, że LCD przy użyciu sygnałów 5 V TTL. FPGA może zaakceptować w najlepszych sygnałach 3,3 V, aby przeprowadzić konwersję poziomu. Zdecydowałem wykorzystywać wejście diody zaciskowe w niektórych buforach logicznych serii 74HC, aby przeprowadzić tę konwersję. Dotyka to znacząco zniszczyć wzrosty / upadek. Na przykład 74HC4050 ma nawet rezystory polisilikowe w serii z diodą w matrycy, przemieszczającą potrzebę zewnętrznego rezystora serii. Grałem bezpiecznie i dodałem rezystory serii 1 kΩ do wejścia tego bufora i wyjście zostało wprowadzone do FPGA. Wyjście wyjść HSYNC i VSYNC FPGA zostały podłączone bezpośrednio do monitora, podczas gdy linie RGB były połączone przez rezystory 330 Ω.

Sukces

Sukces!
Po oswojaniu 25 MHz zegar pikseli, aby zachowywać się na breadboard i podłączyć FPGA do nowego zewnętrznego

Port VGA monitora, zakres został przywrócony do jego formalnej chwały! Chociaż wszystko działało idealnie, ta konfiguracja była dość podatna na hałas. Wystarczy zrobić teraz PCB i przyznaj VGA monitorować stałe miejsce zamieszkania w zakresie.

Więc co dalej pytasz? Cóż, obecnie jedynym sposobem oszczędzania ekranów przechodzi przez datowany napęd dyskietek. Ale ponieważ mamy teraz dane LCD przechodzące przez FPGA, dlaczego nie pisać do karty SD?

ava
category

Leave a Comment

Your email address will not be published. Required fields are marked *