LTM170E4-L01 Uruchomienie, parę pytań

Dyskusje ogólne na temat "cyfrówki" czyli wszystko o TTL/CMOS, językach VHDL i VERILOG, bramkach, rejestrach, przerzutnikach... Dobre miejsce na pytania odnośnie uniwersalnych programatorów (np. Willem) a także podłączania własnych peryferiów do komputera PC.
ODPOWIEDZ
MichalZ
-
Posty: 40
Rejestracja: 10 gru 2008, 15:16
Lokalizacja: Kraków
Kontakt:

LTM170E4-L01 Uruchomienie, parę pytań

Post autor: MichalZ » 05 cze 2011, 13:56

Witam. Stałem się posiadaczem tej matrycy. Jest to TFT 1280x1024 sterowana przez LVDS. Oczywiście wiadomo, że chciałbym ją uruchomić.
Wyczytałem że system kolorów to RGB888 + dane sterujące ( nie ma ich w DS ).
Dla trybu DE (jedynego) napisano, że dane sterujące mają być w stanie niskim, to znaczy że ona generuje sobie je sama? Np po wysłaniu 1280x1024 pikseli nie muszę nic wysyłać aby matryca dostała VSYNC (nowa klatka) ?

Poza tym nie rozumiem dlaczego mam dwa zegary? W specyfikacji niby mam napisane, że wysyłam dwa piksele na raz (2pixel/clock), czy mogę te zegary po prostu złączyć?
Obrazek
Mam jeszcze parę pytań o to, ale to na później :smile:
W sumie to na początek wystarczyło by mi wyświetlenie np. zielonej kreski.

Awatar użytkownika
Ertew
Użytkownik
Posty: 1414
Rejestracja: 03 lip 2005, 10:36
Lokalizacja: Leszno
Kontakt:

Post autor: Ertew » 06 cze 2011, 9:24

Matryca jak większość, bez kontrolera. Musisz do niej cały czas wysyłać dane ze sporą prędkością.
Myślę że bez specjalistycznych układów masz marne szanse.
MichalZ pisze:Poza tym nie rozumiem dlaczego mam dwa zegary? W specyfikacji niby mam napisane, że wysyłam dwa piksele na raz (2pixel/clock), czy mogę te zegary po prostu złączyć?
Z dokumentacji wynika że wysyłasz dane do 2 sąsiednich pikseli, po czym następuje generacja sygnału zegarowego.
W dokumentacji ( http://www.datasheetcatalog.com/datashe ... -L01.shtml str 14, 15) masz pokazane jak podłączyć matrycę z generatorem obrazu.
Jak widzisz do matrycy idzie 48 linii sygnałowych i 4 sterujące.
Przy typowych parametrach obrazu 1024x1280 /50hz musisz dostarczyć 1280*1024/2*50=32.768 milionów ramek danych na sekundę (zegar taktujący 32Mhz :!: ) co jest wartością sporą.
Przy odświeżaniu 10hz wystarczy już tylko 6.5536 Mhz, pytanie tylko co ciekły kryształ zrobi przy tak niskim odświeżaniu.

Gdy masz już komplet danych i sygnały kontrolne, trzeba je przesłać do matrycy tak, żeby nie zakłócały i nie były zakłócane przez otoczenie.
Dla tego całe 52 linie są przesyłane magistralą różnicową (z dużo większą prędkością).

Przy takiej rozdzielczości matrycy radzę odpuścić wykorzystanie interfejsu różnicowego i podpiąć się pod interfejs szeregowy.
Jeśli nie masz układów kodujących ze strony 14 lub 15, to najlepsze będzie rozebranie matrycy i ominięcie w niej układów dekodujących.
Prawdopodobnie oznacza to umieszczenie jakiegoś układu programowalnego lub szybkiego uC bardzo blisko matrycy, tak żeby dane się nie gubiły na długich kablach.
Na początek możesz połączyć każdy bajt koloru razem, może nawet kolory razem. Wtedy zamiast 48 będą potrzebne tylko 3 wyjścia kolorów + 4 sterujące.

Możesz też próbować podłączyć tą matrycę do laptopa. W laptopach nowszych jak 2000r znajduje się taki interfejs różnicowy.

MichalZ
-
Posty: 40
Rejestracja: 10 gru 2008, 15:16
Lokalizacja: Kraków
Kontakt:

Post autor: MichalZ » 06 cze 2011, 14:18

Ertew pisze:Myślę że bez specjalistycznych układów masz marne szanse.
Niestety nie mam tych układów.
Ertew pisze:Z dokumentacji wynika że wysyłasz dane do 2 sąsiednich pikseli, po czym następuje generacja sygnału zegarowego.
Właśnie tego nie rozumiem. Niby tak, ale wtedy byłby jeden zegar. Tutaj mam dwa (ODD i EVEN). Myślę o złączeniu ich, tylko czy to na pewno zadziała?
Ertew pisze:Przy typowych parametrach obrazu 1024x1280 /50hz musisz dostarczyć 1280*1024/2*50=32.768 milionów ramek danych na sekundę (zegar taktujący 32Mhz :!: ) co jest wartością sporą.
Właśnie z odświeżaniem może być kłopot. Można by dać jakiegoś ARM'a lub Motorolę (Freescale). Na tych ostatnich będzie najszybciej, bo na nich już nieco robiłem. Nie znam się na układach programowalnych
Ertew pisze:Jeśli nie masz układów kodujących ze strony 14 lub 15, to najlepsze będzie rozebranie matrycy i ominięcie w niej układów dekodujących.
W sumie to nawet niezły pomysł :smile:

Nie chcę tego zrealizować jak najprościej, tylko tak żeby się czegoś nauczyć. (edit) Dlatego nie szukam żadnych gotowych modułów VGA->LVDS :smile:
Ostatnio zmieniony 07 cze 2011, 14:28 przez MichalZ, łącznie zmieniany 1 raz.

Awatar użytkownika
tymon_x
-
Posty: 64
Rejestracja: 14 wrz 2010, 16:48
Lokalizacja: Gdańsk

Post autor: tymon_x » 06 cze 2011, 15:30

MichalZ pisze:Nie znam się na układach programowalnych
FPGA jak znalazł, mają tryb IO jako LVDS. Nauka nie jest trudna, wystarczy samozaparcie. W razie czego pomożemy. Dołożysz tanią pamięć SDRAM i zrobisz do sterowania FSM, i będziesz miał prosty driver z double bufferingiem i page-flippingiem.

Awatar użytkownika
Ertew
Użytkownik
Posty: 1414
Rejestracja: 03 lip 2005, 10:36
Lokalizacja: Leszno
Kontakt:

Post autor: Ertew » 06 cze 2011, 15:43

W mniejszych matrycach bity są zatrzaskiwane na jednym zboczu sygnału zegarowego.
W większych matrycach są zatrzaskiwane na obu zboczach.

Możliwe że tutaj jest wybór czy chcesz użyć bardziej skomplikowanego interfejsu, czy 2 prostych i mniej wymagających.

Nie bawiłem się z takimi matrycami, więc nie wiem czy mam rację.
Najlepiej będzie jak wyszukasz i porównasz dokumentację koderów DS90C383/385/387, myślę że bez ich użycia się nie obejdzie.

Awatar użytkownika
Tranzystor
Użytkownik
Posty: 889
Rejestracja: 28 sie 2005, 19:19
Lokalizacja: Świętochłowice
Kontakt:

Post autor: Tranzystor » 06 cze 2011, 16:43

Witam,
poszukaj procesora wraz z kontrolerem TFT. Np.: ARM7TDMI (LPC2478), albo coś mocniejszego. Jednak ostrzegam, że uruchomienie tej matrycy nie będzie łatwe.

Pozdrawiam ;)

MichalZ
-
Posty: 40
Rejestracja: 10 gru 2008, 15:16
Lokalizacja: Kraków
Kontakt:

Post autor: MichalZ » 10 cze 2011, 20:08

Hmm na początku myślałem nad wykonaniem jak najprostszego sterownika przy użyciu czegoś z rodziny HC08 (wyrabiają do 48MHz) oraz driverów LVDS. Nie wiem jednak co z zegarem czy powinienem go złączyć, czy jak :???:
Wygląda na to, że te kości mają 24 bitowy interfejs + sterowanie (28 bitów łącznie). Tak przynajmniej piszą w dokumentacji DS90C385.
Czy to nie jest tak, że on po prostu dzieli to co mu podamy na 5 paczek i wysyła przez interfejs? Upewnię się jeszcze co do tego sterowania, bo tego posta piszę trochę na szybko więc nie mogę wszystkiego sprawdzić :)
Coś marnie z znalezieniem opisu tego układu co w matrycy siedzi (DS90C386), ale:
DTC34LF86L to jego zamiennik.

(EDYCJA)
Udało mi się dostać do elektroniki tego LCD, ale uznałem że będzie za dużo roboty przy takich rozmiarach złącz. Zamówiłem sample DS90C383BMT od Nationala. Ciekawe czy przyjdą :roll:
Jeżeli tak to spróbuję podłączyć to pod jakąś Motorolę. Póki co wykonam może dla jednego piksela, drugi pewnie będzie tylko podłączony pod CLK (wiadomo, DC na krysztale). Myślę, że to może zadziałać. Jak myślicie?

MichalZ
-
Posty: 40
Rejestracja: 10 gru 2008, 15:16
Lokalizacja: Kraków
Kontakt:

Post autor: MichalZ » 10 lip 2011, 1:18

Witam ponownie. Przepraszam od razu że piszę post pod postem, ale w przypadku modyfikacji nie pojawia się info o nowym poście :cry:
Czekam nadal na sample od nationala (ds90c383bmt), dostałem już jedną przesyłkę więc jest szansa.
Nie robiłem nigdy z PLD, ale zamierzam jednak nauczyć się VHDL'a (zaczynam go rozumieć - pisałem dużo w Delphi, i C na urządzenia embedded) bo niczym innym nie uda mi się ruszyć tego LCD z sensowną szybkością :) Niestety procki mają niską szybkość I/O.
Pierwsze co zamierzam zrobić to wyświetlenie byle czego - powiedzmy np zapełnić cały LCD dowolnym kolorem.
Później być może jakiś framebuffer na SDRAM. Wyliczyłem okres dla 40MHz ( w takt tego zegara zatrzaskiwane są dane do pikseli). Wynosi 25ns, więc przy pamięciach PC133 (7,5ns) teoretycznie byłbym w stanie odczytać te 3x8bajtów dla jednego piksela. Oczywiście to nie musi być start, można czytać chociażby po 16bit, np w formacie RGB565. Na szczęście większość teraz SDRAMów to kości 16bitowe, więc przy 7,5ns odczytałbym jeden piksel. Nieco czasu zostaje na inne operacje (np odświeżenie - które być może będzie zbędne przy czytaniu w kółko danych z niej - czy takie rozwiązanie może być zastosowane? W końcu odczyt powoduje odświeżenie komórki). Czekam na wskazówki. Myślę że to nie jest nie do zrobienia :wink:

P.S. Przyjrzałem się nieco w DS tych kontrolerów LVTTL->LVDS (np ds90c383) i myślę że nie ma potrzeby implementacji LVDS w FPGA bo potrzebna byłaby bardzo duża częstotliwość i dziwny format danych, a tak kupując/zamawiając układ mam tą część gotową i nie trzeba z tym kombinować :wink:

ODPOWIEDZ