LVDS SERDES sinchronizacija

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):
LVDS SERDES
(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.

Omni Connect USB dongle

Vienam “verslininkui” sulūžo Omni Connect USB “modemas”. Sulūžo fiziškai. Kaip senas ir lojalus klientas, jis kreipėsi į omnitelį pagalbos. Jam pasakė, kad šitas USB dongle jau negarantinis, šiuo metu kito jie neturi, remontuoti gal būt ir galima, užeikit po savaitės. Žodžiu mandagiai pasakė- “tuda nax**”. Verslininkas jis žmogus paprastas, jis net būtų nupirkęs naują “pirštuką”… Negražiai čia omnis pasielgė. Priedo čia prie tų “gerųjų” taupymo planų…
Taigi USB aparatas atkeliavo ant mūsų stalo.
Omni connect shit

Pradedam ardyti: du varžteliai, biški “užspaudimų” ir dėžutė atsidaro.
Omni connect shit
Matosi MicroSD kortelės lizdas ir grupė tantaliniu elektrolitų- čia tikriausiai energijos saugykla GSM/edge-šmedge/3G siųstuvui.
Šiaip viduje dvi PCB plokštės sujungtos viena jungtimi ir dvipusia lipnia juosta.

Omni connect shit
Čia viskas uždengta ekranais. Ekranų nelupau, nes šios vandalizacijos tikslas yra žymiai kilnesnis- remontas.

Omni connect shit
Pagaliau atsikasėm iki esmės. Šiaip gedimas primityvus- nusilankstė ir nulūžo USB kištukas. Skubiai iš donorinio MP3 grotuvėlio išlupau kištuką, perlitavau, dar kiek pritvirtinau su super glue, surinkau ir veikia. Man tik patiko įrenginio įdeologija- tai USB multi įrenginys. Jis kompiuteriui matosi kaip CDROMas su instaliaciniu softu ir kaip USB modemas. Automatiškai windozė instaliuoja CDROMą iš savo build-in draiverių ir iškarto modemas turi iš kur instaliuotis savo draiverius. Aš jau seniai svajojau, kad kokie nors dolbani USB printeriai savyje turėtu savo draiverius. Tada nereikėtų CD/DVD diskelių. Ir nebūtų problemu su perinstaliavimu, kai jau seniai CD diskeliai pamesti. O kad nebūtų chaoso, printeris galėtu išjungti virtualų CDROM po instaliacijos.

Skaitmeninis oscilografas

Labai dažnai prireikia pažiūrėti kokius nors elektros signalus, jų formas, pabandyti skaičiuoti impulsų pločius, signalo dažnius, įtampas ir dar kokį biesą. Tam tikslui naudojam oscilografus (tiesa užsieniečiai teisingiau juos vadina- osciloskopais, nes gi prietaisas lygtai ir nieko nerašo, o tik leidžia pažiūrėti). Aš jau labai senai naudojų senutį, bet jau Lietuvišką C1-112A. Iki 10MHz signalams kiek pažiūrėti gal ir tinkamas, bet mažas ekraniukas, dažnai signalas perjunginėjant režimus pabėga iš ekrano, viska reikia rankutėmis skaičiuoti, ir svarbiausia, tik vieno kanalo. Nepatogu. Darbe buvau gavęs dviejų kanalų kiek profesionalasnį oscilografą, bet pas ji buvo bloga sinchtonizacija ir kas svarbiausia, siaubingai jis cypia (ten viduje maitblokis specialus tipo aukšto dažnio yra, bet rusai debilai nesugebėjo jo padaryti ultragarsiniam dažnyje).
Tai teko paaukoti “easy money” iš interneto ($380 su atsiuntimu) ir parsisiūsdinti šitą aparatą.
Welec

Iškarto sakau, šitas aparatas yra šudinas. 🙂 Nerekomenduoju. Nebent nusipirkot jį kaip Altera FPGA dev bardą su spalvotu VGA ekranu. 🙂
Už šiuos pinigus gausite dvi Altera Cyclone II mikroschemas (EP2C35F484C8N), 16 Maxim ADC, labai grubiai surinkta analoginį traktą, LCD monitorių, maitblokį, daug mygtukų ir šviesdiodžių… Softas (tiek windozei, tiek viduje aparato) lėtas, bugavotas, su akis badančiom klaidom (sakyčiau “alfa”, net ne “beta” lygyje). Ir vaizdelis labai labai triukšmingas… Žodžiu- crap.
Toliau bus labai labai labai daug teksto, fotkių ir t.t. Manau, kad kol kas tai ilgiausias straipsnis. Continue reading →

Dalinai veikia LVDS per UTP

Kiek laiko praleidau belaužydamas galvą. Problema tokia, kad nors ir susijungia dvi plokštės su FPGA mikroschemoms per pusantro metro UTP Cat5 LAN kabelio, PLLas sinchronizuojasi, tačiau RGB matrica rodo kažkokius niekalus. Pagrindinė problema, kad nepasigauna reikiama bitų seka LVDS serializeryje/deserializeryje. Kiek paskaičius dokumentaciją, radau kad galima pasigaminti bitų poslinkio valdymo kojeles. Dabar sinchronizacija ŽYMIAI pagerėjo, bet dar neįdeali. Tačiau bent jau mąstymo gairės atsirado ir projektas pasislinko iš tupiko.

Mažoji (master) plokštelė tai antras Alteros ciklonas (kurį man antrinių žaliavų pavidalu padovanojo Lietuviška elektronikos firma su trumpu pavadinimu iš T raidės). RGB matrica– tai jau seniai iš eBay nupirkta pramoninė matrica su pirmos eilės ciklonu. Plokštės sujungtos mėlynu lanksčiu UTP LAN kabeliu nuo telekomo DSL modemų. Duomenų perdavimo greitis 2*100Mbit. Manau galimas ir didesnis, tik neaišku ar man didesnio reikia.

Sudėtingiausia “namudinė” plokštė

Mintis paprasta- reikėjo padaryti LVDS siuntiką mano RGB matricai. Nei viena turima testinė FPGA plokštė netiko. Vienintelė išeitis- darytis plokštę. Viena problėmėlė- CycloneII mikroschema turi 144 kojas ir 0.5 mm kojelių žingsnį. Buitinėm sąlygom kiek sunkokas variantas- reikia užsisakyti kokiam nors fabrikėlyje Kinijoje ar Bulgarijoje. Tačiau tokia PCB gana brangiai kainuoja. Ypač žinant tai, kad aš dar nežinau kaip kas turi būti padaryta. Todėl išmasčiau, kad “beta” versija reikia pabandyti pasidaryti namie. Tokiom mikroschemoms reikia daugiasluoksnės plokštės, tačiau namų sąlygom metalizuotos skylutės nesigauna ir šiaip problemos su sluoksnių sutapatinimu. Todėl plokštę pasidariau viensluoksnę.

Va paveiksliukas kaip turi atrodyti plokštė:
FPGA
Rausvais kvadratais pažymėtos vietos, kur padariau klaidas. Klaidos tokios:

  • FPGA I/O 2.5V, ATMEGA16 3V tačiau aš neturėjau L versijos. Todėl mega važiuoja ant maždaug 5V.
  • Megos I/O ir Ciklono I/O lygiu suderinimas. Bandom su rezistoriais.
  • Rezonatorius ??MHz buvau sugalvojęs viena, teko dėti 50MHz kuris irgi važiuoja ant 5V. Iš čia CLK lygiu suderinimas su rezistoriu ir diodu. Kiek jis duoda problemų dar nežinau.
  • FPGA PLL maitinimas. Čia jau aš kaltas, kad iki galo neįsiskaičiau į instrukcijas. Aš sujungiau PLLA ir PLLD laidelius į vieną laidą ir per ferituko ir kondiko filtrą pajungiau prie VCCINT… Galbūt dėl šito negaunu PLL LOCKED patvirtinimo LVDS išėjimo megafunkcijoje.
  • Dar nepatvirtinta, bet rodos supainiojau “p” ir “n” poras ant kištukų… nes duomenys kitame kabelio gale gavosi invertuoti :).
  • Užmiršau “apsauginius” 3.6V zenerius ant USB duomenų šynos. Ir vieną rezistorių ten pajungiau prie GND vietoje VCC5.
  • Viena LVDS pora neveikia. Nežinau kodėl. Pasirinkau vieną kojelę su “dual purpose pin” ir kažkas man ten gliučina.– radau mažyti “solder bridge”
  • Nenumačiau keletos vietų “demferiniams” kondikams, nors ant PCB ten vietos pilna.

Pagaminta plokštė, kad negalvotumėte, kad svaigstu. Tas organinis stiklas tikrai padeda, nes ne vieną prietaisiuką esu pagadinęs kai nusprūsta koks oscilografo žemės laidas ir prisiliečia prie ten kur nereikia.

FPGA
(Plokštė pagaminta su fotorezistu ir lazeriniu printeriu. Takeliai išvedžioti Eagle programa)

Kol kas viskas veikia blogai. RGB LED plokštė pagauna LVDS sinchronizacija, bet vistiek bando rodyti visokius briedus. Pagyvensim pamatysim, kol kas gi mokomės. Dar nei vieno LVDS projekto nedariau.
O projekto fantazija buvo tokia, kad iš kompo informacija per USB paduodama į šią plokštę, o ji, savo ruožtu, valdo vieną arba dvi RGB matricas.
Šiuo metu, matrica prijngta 100Mbit greičiu prie “valdymo” plokštės. Jei pavyksta sekmingai sinchronizuotis, duomenys teisingai vaikšto ir matrica valdosi (per JTAG). Tačiau siuntėjo LVDS modulis “PLL LOCKED” nepakelia.

Automobilistas: LEDinis gabaritas

Eilinį kartą perdegė automobilio gabaritų galinis žibintas. Originali lemputė dar laiko, o piguva iš degalinės ėmė ir perdegė. Ir išlaikė tik nuo vasaros. Automobilio borto įtampa teisinga ir normos ribose. Todėl nutariau atgaivinti seną įdėją apie šviesos diodinį gabaritą. Tam tikslui panaudojau pigų diodą iš dealextrymo. Visa bėda, kad šitas diodas naudoja 0.3A darbinę srovę prie maždaug 3.4V įtampos kritimo. Kaip balastą panaudoti kokį rezistorių ar net LM317 nėra protinga nes prie automobilio borto įtampos, toks energijos švaistymas yra kiek sudėtingas ir neekonomiškas 🙂 (10V * 0.3A= ~3W šilumos). Taip pat netinka mano seniau naudoti LED draiveriai (1, 2, 3, 4), nes jie nepritaikyti maitintis nuo 12…14V šaltinio. Šį kartą nutariau pasinaudoti firmos National Semiconductors produktais. Pasirinkau mikroschemą LM3405A – tai kaip tik tokiam reikalui skirta mikroschema. Schemą jungiau pagal gamintojo pateiktą datasheetą ir jokių savo tobulinimų nedariau, gal tik visur naudojau keraminius kondensatorius.

Va senos, perdegusios lempos patronas ir jau pagaminta PCB:
LED gabaritas

Visos detalės jau sulituotos ir plokštė išbandyta. PCB dvisluoksnė, bet apačioje tik 33uH induktyvumas ir išėjimo kondikas, rodos 22uF keramika:
LED gabaritas

Šioje, nekokybiškoje nuotraukoje jau matosi surinkta šviesos diodų lemputė. Pats LEDas pritvirtintas prie nedidelio varinio radiatoriaus, kuris prilituotas prie lempos patrono. PCB taip pat prilituota prie patrono. Dėl galvaninio ryšio (nesu tikras ar aš čia nekaltas), diodo padas priglaustas per silikoninę izoliacinę tarpinę prie radiatoriaus. Visa diodo šiluma perduodama per radiatoriaus kojeles į lempos patroną. Manau užteks ploto, kad ataušinti 1W diodą. Viskas apsnargliuota termo klijais- jie hermetizuoja elektroniką, kiek sklaido šviesą ir šilumą:
LED gabaritas

Surinktos lemputės testas “laboratorijoje”:
LED gabaritas

Lempa įkišta į mano golfiuką:
LED gabaritas

Išorinis testas. Lempa kairėje- 1W šviesos diodas originalioje VW armatūroje. Dešinėje- standartinė 5W lemputė.
LED gabaritas
Fotografuojant lempos šviečia maždaug vienodai. Žiūrint žmogaus akimis, LEDinė lemputė labiau raudona. Originali lemputė kiek gelsvesnė.

SAVEL ir Levas nerekomenduoja keisti automobilio konstrukciją ir modifikuoti apšvietimą. Tokie pokyčiai galimi tik atlikus sertifikavimą ir gavus E ženklą. Važinėjimas su tokiom lemputėm kogero pažeidžia kokius nors įstatymus. Šis eksperimentas padarytas tik pažintiniais tikslais ir dar nereiškia, kad aš važinėju su LED žibintais.

Extrymas 2: motininės remontas

Kai pagaliau atsirado laiko kiek palituoti, nutariau pabaigti straipsniuką apie kompiuterio motininės plokštės remontą.
Pradėjau nuo plokštės ant kurios gedimas tiesiog badė akis. Motininė, tai pigi, PGA478 procesoriaus plokštė ASRock GE PRO-M2. Su vienu AGP, dviem PCI, dviem DDR ir vienu AMR lizdais. Gedimas standartinis- išsipūtė kondensatoriai. Šį kartą, išsiputė ne CPU antrinio maitinimo šaltinio kondensatoriai (Rubycon), bet 5V (ir kogero 3.3V) grandinės kondikai išmėtyti po visą plokštę:

Motinine remontas
Viso reikia pakeisti 12 kondensatorių. Visi kondikai TAICON firmos, 1000uF x 6.3V. Beja, šiandien sutvarkiau ir COBA King 420W ATX maitblokį su išsipūtusiais budinčio režimo kondikais- 1000uF x 10V- pakeičiau į 470uF x 16V prieš droselį ir 1500uF x 10V už droselio… nesvarbu… Spauskit toliau, kad pamatyti daugiau: Continue reading →

Extrymas: motininių plovimas ir remontas

Trumpas foto-video pasakojimas kaip bovijamės su kompiuterių motininėm plokštėm. T.y. kaip jas grubiai reikia plauti ir remontuoti. Čia pirma dalis kuri aprašo plovimo-džiovinimo procedūras.

Sumetam į vonią, biški indų ploviklio…
Mainboard cleaning and repairing

Geriau vieną kartą pamatyti, nei šimtą kartų išgirsti- va filmukas:

(Dėl kokybės nepykit, filmavau su fotiku, o ir vonioje tamsu kaip šiknoje).

Daugiau fotkių ir teksto: Continue reading →

Fakyrui fokusas (ne)pavyko

Jau senai norėjau pabandyti tokį fokusą- perlituoti DIMM mikroschemas ant kitos, laisvos pusės ir pabandyti padvigubinti atmintį. Kol SDRAM DIMM atmintys buvo brangios ir sudeginti kompiuteriai buvo didelė bėda, tol nenorėjau daryti šį eksperimentą. Dabar, tiek atmintis, tiek tokio lygio kompai nieko nekainuoja, todėl pabandžiau…

Pradžiai susiradau donorus- du vienetus po 128Mb ir vieną DIMMą po 256Mb. Visi DIMMai visiškai vienodi, to pačio gamintojo, atminties mikroschemos visiškai vienodos: PQ3S168E75 – tai permarkiruotos mikroschemos, todėl neaiškus nei gamintojas, nei jų parametrai. Greičiaisiai tai koks nors Synchronous DRAM 128Mb x 4, x8 ar x16.
SDRAM DIMM HACK

Pradžiai “nurengiam” čipukus:
SDRAM DIMM HACK

Prilituojam, pagal pavyzdį perlituojam jumperius- rezistorius. Perrašom Serial Epromą, kad kompas žinotu, kad čia 256M DIMMas.

SDRAM DIMM HACK

Deja, fakyrui fokusas nepavyko 🙂 Kompas visiškai nemato DIMMo ir visiškai nereaguoja. Ismeigus kartu su kitu, geru DIMMu nieko geresnio nepasiekiam- kompas nepasileidžia. Čipai visi šalti, trumpo jungimo tarp kojyčiu nėra. Matyt, visdėlto, perkaitinau aš tuos SDRAM čipus.

Papildymas po valandos- pavyko! Continue reading →

Kamertonas

Va kokį daiGčiuką radau:

Kamertonas

Tai kamertonas. Tai plieninis daikčiukas, kuris virpa pastoviu dažniu. Dėl konstrukcijos ypatybių, stuktelėtas kamertonas gana greitai pradeda skambėti tik pagrindinių tonu- visos kitos harmonikos labai greitai užslobsta. (Šiaip kamertonas turi tik 6 1/4 eilės harmonikas- dvi su puse oktavos aukštyn, palyginkit su plienines styga, kurios harmonikos kartojasi kas viena oktava ir dėl to gražiai skamba visokiuose pianinuose) .
Tai kaip ir garso etalonas- pagrindinio tono dažnis labai stabilus nes priklauso tik nuo fizinių kamertono išmatavimų ir metalo sudėties. Metalas specialiai parenkamas, kad kiek galima mažiau plėstusi nuo temperatūros.

Ant mano kamertono parašyta C3 ir 1024. Skambėjimo dažnis labai artimas (pagal klausa) 1Khz. Neradau mikrofono, kad pajungti prie dažnimačio, o oscilografas rodo, kad virpėjimo dažnis daugiau už 1000Hz ir mažiau už 1048. Kogero tai 1024Hz dažnis kaip ir parašyta ant kamertono… Tik įdomu, kodėl parinktas toks “binarinis” dažnis? Juk šitas kamertonas pagamintas prieš 30…40 metų.