Elektroda.pl
Elektroda.pl
X
Elektroda.pl
PCBway
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

DVI - protokól przesyłania danych do LCD

18 Wrz 2009 12:43 2196 18
  • Poziom 13  
    Mam problem z ilością danych na złaczu DVI. Załóżmy że monitor LCD ma rozdzieloczość 1280x1024 i odświeżane 60Hz. Czyli w ciągu 1s monitor musi odebrać 1280x1024=1310720x60Hz = 78 643 200 bitów dla jedego koloru np. "R"
    Jednak każdy punkt na monitorze może świecić z rozdzielczością 256 odcienia. Czyli 78 643 200 x 8bitów = 629 145 600. Niby wszystko ok. Ale częstotliwośc zegara wynosi dla powyższej rozdzielczości około 108MHz. W rzeczywistości dane o są kodowane w systemie 8b/10b czyli danych jest jeszcze więcie o około 25%.
    I tu moje pytanie gdzie popełniam błąd przy obliczeniach?
  • PCBway
  • Poziom 18  
    108MHz to zegar taktujący piksle. To więcej niż 1280x1024x60Hz, ponieważ trzeba uwzględnić synchronizację. Jeden piksel to 3x8 bitów.
  • VIP Zasłużony dla elektroda
    1280 x 1024 / 60Hz

    H
    Resolution: 1280 pixels
    Front porch: 48 pixels
    Sync pulse: 112 pixels
    Back porch: 248 pixels

    V
    Resolution: 1024 lines
    Front porch: 1 lines
    Sync pulse: 3 lines
    Back porch: 38 lines

    1280+48+112+248=1688 pixels / 1024+1+3+38=1066 lines.

    1688*1066*60Hz = ~ 108MHz (Pixel clock frequency)

    http://www.tkk.fi/Misc/Electronics/faq/vga2rgb/calc.html
  • Poziom 43  
    I jeszcze to 8 albo 10 bitów jest przesyłane równolegle, a nie szeregowo.
  • PCBway
  • Poziom 13  
    Własnie w tym problem. Dane przesyłane są szeregowo przez kabel DVI. Dla ścisłości przez trzy pary przewodów plus jedna para dla zegara. A skoro tak to jak przesyłana jest informacja o jasności świecenia każdego z kolorów?
  • Poziom 13  
    Skoro mamy rozdzielczość 1280 x 1024 i wychodzi częstliwość 108MHz to do tego trzeba jescze dodać 8 bitów na każdy kolor, które trzeba przesłąć szeregowo.
    Według mnie wynik 108MHz x 8 bitów.
    Wiem, że to niemożliwe. Prawdopodobnie gdzieś popełniam błąd.
  • Poziom 43  
    A dlaczego niemożliwe? Możliwe. Nie popełniasz błędu. To będzie 864MHz.
  • Poziom 19  
    Wikipedia (wersja angielska):

    Specifications
    Digital
    Minimum clock frequency: 25.175 MHz
    Maximum clock by cable quality (up to 7.92 Gbit/s)
    Pixels per clock cycle: 1 (single link) or 2 (dual link)
    Bits per pixel: 24 (single and dual link) or 48 (dual link only)


    w innym miejscu jeszcze jaśniej:

    The DVI data channel operates at a bit-rate multiple of 10 times the frequency of the clock signal. In other words, for every DVI clock there are 10 bits provided on each of the three data channels.

    a więc 10 bitów na 1 cykl zegara, te 10 bitów zawiera 8 bitową informację o kolorze.
  • Poziom 13  
    Tak to wszystko wiem. Ale!!!
    Jak te dane sa przesyłane. Zega np. 25.175 MHz danych 10 razy więcej (10 bitów na 1 cykl zegarowy. Przy transmisji szeregowej bez pakowania to neimozliwe.
    Fizycznie jak to jest rozwiązane? Dalej tego nie łapie.

    Dodano po 5 [minuty]:

    I jeszcze jedno. Gdyby było 10bitów szeregowych na 1 cykl zegarowy to jaki FPGA by to odebrał przy maksymalne czestotliwości zegara 165MHz?
  • Poziom 13  
    Znam tego pdf'a. Niestety nie ma tam szczegółowych przebiegów.
  • Specjalista - Mikrokontrolery
    nerysiek napisał:
    Skoro mamy rozdzielczość 1280 x 1024 i wychodzi częstliwość 108MHz to do tego trzeba jescze dodać 8 bitów na każdy kolor, które trzeba przesłąć szeregowo.
    Według mnie wynik 108MHz x 8 bitów.
    Wiem, że to niemożliwe. Prawdopodobnie gdzieś popełniam błąd.



    Visible area 1280
    Front porch 48
    Sync pulse 112
    Back porch 248
    ------------------
    Whole line 1688

    Visible area 1024
    Front porch 1
    Sync pulse 3
    Back porch 38
    -------------------------
    Whole frame 1066


    1688 x 1066 = 1799408
    1799408 x 60 = 107964480

    i to jest na CLK DVI

    CLK jest wykorzystywany nie do synchronizacji poszczególnych bitów tylko bajtów, które są już za TMDS

    www.siliconimage.com/docs/SiI-WP-007-A.pdf

    Cytat:
    TMDS Transmitter:
    The TMDS transmitter receives the 24 bits of parallel data and then prepares the data for
    transmission by encoding and serializing it. Each RGB color component and the clock are
    transmitted on separate channels in a process known as differential signaling. There are a total of
    four channels (differential pairs): three for RGB and the fourth for the clock.

    TMDS Receiver
    The TMDS receiver receives the serial data, including the clock, via the four channels and then
    decodes the data and outputs the data in parallel to the display controller.

    Zakodowane 10 bitów jest przesyłane wraz z zegarem. Dekoder z tych danych odzyskuje zegar dla poszczególnych bitów wykorzystując do tego lokalne PLL zsynchronizowane z sygnałem CLK.
  • Poziom 13  
    michalko12 to zrozumiałem. Ale nie łapie co jest na kablu.
    Jeżeli w każdym CLK jest jeden bajt to z jaką częstotliwością sa one przesyłane przez kabel przecież nie razy 10.

    Przepraszam że dopiero teraz się odzywam ale byłem na krótkim wypoczynku.
  • Poziom 20  
    nerysiek napisał:
    to z jaką częstotliwością sa one przesyłane przez kabel przecież nie razy 10.


    Pomalu i po kolei: Podstawowa wersja DVI ma 4 kanaly:
    - kanal 0: kolor niebieski (8 bitow), HSYNC, VSYNC - 2 bity
    - kanal 1: zielony(8), sygnaly kontrolne CTL0, CTL1 (2)
    - kanal 2: czerwony(8), sygnaly kontrolne CTL2, CTL3 (2)
    - kanal C: zegar o czestotliwosci rownej czestotliwosci probkowania obrazu (pixel clock):
    Fc = Vrefresh [Hz] * Htotal * Vtotal, gdzie Htotal i Vtotal to dlugosc calego cyklu odswiezania poziomego i pionowego (troche wiecej niz rozdzielczosc obrazu), z uwzglednieniem wygaszania i czasu na powrot plamki - tak jak w monitorach CRT.

    Na kazdy kanal danych przypada po 10 bitow. DVI jest interfejsem szeregowym - to znaczy, ze dane sa przesylane bit po bicie. W zwiazku z tym serdes (konwerter rownoleglo-szeregowy) w nadajniku pracuje z zegarem 10 razy wiekszym niz Fc, wytwarzanym przez generator PLL. Dane rownolegle sa kodowane (patrz specyfikacja, strona 29) i serializowane:

    Code:

    clk pixel:  __|^^^^^^^^^^^^^^^^^^^^^^^^^^^^^|_____________________________|^^^^^^^^^^^
    clk serdes: __|^^|__|^^|__|^^|__|^^|__|^^|__|^^|__|^^|__|^^|__|^^|__|^^|__|^^|__|^^|__
    DANE:          D0    D1    D2    D3    D4    D5    D6    D7    D8    D9    D0    D1


    Odbiornik DVI mnozy zegar z kabla razy 10 za pomoca PLLa i za jego pomoca odbiera sekwencje po 10 bitow, ktore pozniej sa dekodowane i wystawiane na magistrali rownoleglej.

    Pozdr,
    TWl
  • Poziom 13  
    Jak dobrze zrozumiałem to na kablu łaczacym kartę z monitorem na parach różnicowych jest czestotliwośc zegara x 10 ?
  • Poziom 13  
    Dzięki teraz to jest jasne.
    Zamykam temat