Pagaliau kiek paaiškėjo kaip veikia LVDS SERDES (serializer- deserializer) sinchronizacija.
Iš pradžių, galvojau kad užtenka padaryti LVDS megafunkcija ir viskas išsispręs automatiškai. Deja, gavosi bet koks niekalas. Tada aptikom “rx_data_akign” piną. Trumpas impulsas perstumia gautą baitą per vieną bitą. Bet to neužteko. Tada atradom “rx_data_align_reset” piną, kuris nustato bitų postumį į standartinę padėtį. Bet ir šitas nepadėjo. Tada įjungiau “pll_areset” piną. Pinas, kuris pilnai rezetuoją LVDSin megafunkcijos PLLą. Gavosi maždaug toks monstras (dalis imtuvo schemos):
(didesnis paveiksliukas)
Kadangi naudojam 2 poras duomenim, vieną porą CLK ir x6 serializavimo faktorių, tai per vieną “pirstelėjimą” perduodam 12 bitų. 8 bitai naudingų duomenų (nors praktiškai užtenka 7 ar net 6 – akis nepastebi skirtumų, o ir nulinis bitas net teoriškai nedalyvauja matematikoje…) ir dar lieka 4 bitai sinchronizacijai.
Vienas bitas naudojamas kaip kadrų sinchronizacija (VSYNC, beja itariu, kad pas mane kadrų dažnis gavosi kraupiai didelis. Patikslinimas- vaizdas atnaujinamas 1000 fps greičiu. Gal kiek daugoka 🙂 ), o likusieji 3 bitai naudojami SERDES modulio sinchronizacijai.
Aš perskaičiau daugybe datasheetų apie gigabitinius ethernetus, optinius kabelius… Sužinojau apie Hummingo kodą, apie 8b10b kodavimą ir visokius kitokius IP. Bet viskas čia man pernelyg sudėtinga ir visai nereikalinga RGB matricai- nedidelė bėda, jei dėl trugdžio bus koks nors nedidelis atsitiktinis pasimirguliavimas.
Todėl sinchronizacija labai paprasta: jei neatinka 3 bitų seka, pastumiam bitus (inst:105, 101, 103, 106..). Jei per sakysim keliolika bandymų nepavyksta gauti rezultato, darom bitų postumio rezet (inst:110, 104, 102, 108, 109). Jei po keliolikos rezetų vistiek nepavyksta gauti vaizdelį- rezetuojam PLLą ir kartu visą LVDS modulį (inst:111, 112). Kodėl tiek daug bandymų iki pilno numetimo? Ogi todėl, kad kartais sugeba susisinchronizuotis su atsitiktiniu vaizdo gabalėliu ir vaizdas pasidaro stabilus, bet neteisingas. Todėl reikia kiek palaukti, kad pralėktu daugiau video informacijos ir suveiktu klaidų detektorius.
Va koks gavosi rezultatas. Čia įjungiu visą mašinerija ir smaukau UTP kabelį. Kai išjungiu kabeli kažkiek triukšmo ištrina matricos viršų. Kartais jungiant prisigaudo visokių gliukų, bet pilnai įsmeigus kabelį, vaizdas stabilizuojasi.