Kurssi: Digitaalitekniikka, pidettiin torstaisin ajalla 2.3.2017–24.5.2018

Nyt 7. päivä jää kurssi väliin kun olen matkoilla. Vuoden viimeinen kurssikerta on siis 14. päivä ja sitten pidämme kahden viikon joululoman. Syksy on mennyt vähän suunniteltua hitaammin, niin näillä näkymin jakamme sitä helmikuun lopulle.

Viimeksi ratkesi XADC:n epälineaarisuus, se siis toimii oikein, mutta ne 3.3V -> 1V vastusjaot häiritsevät potikan käyttämistä suoraan, väliin pitäisi laittaa esimerkiksi opari puskuriksi. Sitten taas ne HALL-anturit kyllä jaksavat ajaa sitä suoraan.

Aloitimme myös HDMI:n perusteisuun tutustumisen ja demoamisen. Aika samalla tyylillä pystyisi myös ajamaan LVDS-väylällä olevia näyttöjä, Sharpin LQ104S1LG81 800x600 TFT
-näyttöjä saattaisi olla jaossa jos vaan saadaan ensin yksi kytkettyä testaukseen.

Hei,

Voisitko laittaa vähän ranskiksia, mitä pitäisi tsekata ensi torstaiksi, kun en ollut viimeksi.

Käsittelemme huomenna nopeiden digitaalisten differentiaalisignaalien generoimista. Esimerkkinä käytämme varsinkin vanhemmissa LCD-näytöissä käytettyä FPD-Linkkiä sekä HDMI/DVI ja DisplayPort-liityntöjä. Samoja periaatteita voi sitten soveltaa muidenkin nopeiden väylien kanssa ja näin harrastajalle nämä ovat hyviä koska ‘mittalaitteena’ toimii näyttö josta helposti näkee kuinka hyvin signaali menee perille.

Tässä kokoelma linkkejä refeenssiksi, saa selata etukäteen kunhan varoo informaatioähkyä:

VGA-signaalin ajoituksista

  • edelleen digitaalisissakin järjestelmissä kuva lähtetään riveittääin pikseli kerrallaan vasemmalta oikealle ja ylhäältä alas, rivien ja ruutujen välissä tyhjää jota ennen tarvittiin kuvaputken eletronisuihkun palauttamiseen, nykyään näissä tyjissä väleillä sitten siirretään audiota ja muuta dataa

FPD-Link

  • sähköisesti 2.5V LVDS (DC-coupled)
  • neljä lanea, yksi pikselikellolle ja kolmeen koodattu dataa 7-bittiä jolloin yhdellä pikselikellolla lähtettään 21-bittiä joista 3x6-bit RGB ja 3-bitillä syncit ja display enable

HDMI/DVI

  • sähköisesti 3.3V CML (DC-coupled)
  • TMDS, neljä lanea, yksi pikselikellolle, kolmeen koodattu 10-bittisenä (oma 8b/10b enkoodaus) 24-bittiä, neljällä ylimääräisellä 10-bit koodilla välitetään syncit ja display enable

DisplayPort

  • sähköisesti 2.5V LVDS (AC-coupled)
  • 1, 2 tai 4 lanea, pakettipohjainen, käytää standardia 8b/10b enkoodausta

Kurssilla olevissa kehityslaudoissa ei ole suoraan 2.5V bank-jännitettä saatavilla, jolloin LVDS_25 I/O-standardia ei virallisesti saa ulos, mutta tähän on muutamia ratkaisuja joita käydään huomenna läpi. HDMI/DVI:n TMDS_33 taas onnistuukin suoraan.

Rohkeimmat voivat näitä vähän kurkkia, ne ovat 3- ja 6-sarjalaisille, mutta niistä näkee raudan evoluutiota ja 7-sarjalaisessa on vielä tehokkaampi OSERDES jolloin homma vielä vähän yksinkertaistuu.

Sharpin LQ104S1LG81 FPD LVDS näyttö lähti toimimaan 2.5V bankkijännitteellä:
https://dl.dropboxusercontent.com/s/3vydr1t6vqc1jx7/FPD-LVDS-2V5-Sharp-LQ104S1LG81.jpg?dl=0
Mutta vaikka datasheettiä voisi tulkita että vähän yli 3.3V olisi sallittu, niin ei se hyväksynyt 3.3V TMDS-signaalia, eli väliin on pakko laittaa jotain.

Kurssi siis nyt joulutauolla ja palaamme taas zynqistelemään torstaina 4.1.2018.

Tänään teimme 400x300x6-bit framepuskurin joka juuri mahtui BRAMeihin helposti ja ajoimme HDMI-kuvaa ulos 800x600 resoluutiolla paukkulankojen läpi. Sitten teimme yksinkertaisen videosoittimen joka kopsii raakavideota USB-tikulta näytölle.

Ensi kerralla jatkamme ja yritämme siirtää videomuistin DRAMiin jotta saamme kunnon resoluutiot käyttöön.

Voisko projektista saada pdf-kuvan githubiin?

Tässä ruudunkaappaus block designistä:
20-hdmi-blockdesign

Ja Clocking Wizardiin

  • Clocking Options -tabilta: MMCM, Freq.synth+Phase.align
  • Output Clocks -tabilta: clk_out1 = 40MHz, clk_out2 = 200MHz, molempien toiseksi viimenen sarake, Drives = No buffer ja sivun alhaalta pois kaikki Enable Optional Inputs/ Outputs

Mutta näillä tiedoilla ei välttämättä vielä saa tyhjästä luotua toimivaa projektia. Mutta kunhan tästä saadaan parin viikon sisällä joku hyvä standalone demo aikaiseksi, teen tarkat ohjeet kuinka projekti rakennetaan millekin laudalle.

Labin lattioita rempataan ja maalataan torstaina, eli pidetään nyt hiitolomaa tämä viikko.

Kurssia ei siis torstaina 1.2.2018.

Lattiat on maalattu ja pitäisi olla kävelyn kestävä, mutta emme laita vielä kiinteitä kalusteita sen päälle tällä viikolla.

Eli kurssia ei myöskään torstaina 8.2.2018.

Huomenna 15.2. jatkamme kurssia taas normaalisti kun lattianmaalausprojekti vihdoin saatu pois jaloista.

FPD/LVDS-korteista on yksi ladottu ja testattu, että homma toimii. Siinä on tosin pari haastavampaa kohtaa juottamisen kanssa, mutta ihmetellaan niitä tarkemmin huomenna ja sitten sovitaan päivä jolloin niitä rakennellaan.

Huomenna myös pikainen esittely kuinka laudalla kiinteänä olevalle flashpiirille (yleensä 16MiB) mhtuva BusyBox/Toybox-linux voidan ottaa testikäyttöön.

Tänään testailimme adapterilevyä kaikkilla devauslaudoilla:


Projektin sorsat löytyy gitlabista, projetin kasaamisen tutoriaali tulee myöhemmin.

Levyt ladotaan ja uunitetaan pintaliitoskomponenttien osalta tiistaina Antin johdolla ja sitten sen jälkeen jokainen saa juottaa liitimet niihin itse. Myös näyttöjä pitäisi olla jaossa torstaina.

Päätimme tilata korjataun revision levyistä, eli ei vielä tulevana tiistaina kasaamista.

Seuraavalla kerralla katsastamme pari ToF sensoria, 1x1px ja 80x60px. Nuo sopivat FPGA:n kylkeen hyvin jos vaikka robotia on tekemässä.

Lisäksi katsotaan kuinka Buildroot-projektilla voi tehdä oman Busybox ‘distron’ joka mahtuu tarvittaessa kehityslaudan flash-muistille jolloin projekti toimii ilman SD-korttiakin, mutta kuitenkin käyttäen samaa kerneliä.

Tässä melkein on oltava joku Desktop Linux virtuaalikoneessa, muuten menee kääntäminen liian hitaaksi.

Torstaina 1.3. jää taas kurssi väliin kun labin aktiiveista moni on HSF-tapahtumassa Jyväskylässä.

Nyt saatiin kasattua kokeeksi pari LVDS-levyä uudesta revisiosta ja hyvin toimii:
CML2LVDS

Vieläkö jatkuu ja onko tänään ?

Tänään jatkuu, ensi torstai 29.3. menee pääsiäsvalmisteluissa joten jätetään silloin väliin.

Tänään saatiin kaikki CML-LVDS -levyt juotettua kasaan. Kaikki toimivat heti kerrasta, kiitettävä suoritus:

Kurssia ei tosiaan pääsiäsen alusviikolla pidetä.

Sen jälkeen vähän pivotoimme ja jatkamme kurssia enemmän workshop-hengessä. Eli jokainen ottaa oman projektinsa jota alkaa edistämään ja on ainakin kerran viikossa allokoitua aikaa sen edistämiseen. Ideana tarjota vertaispainetta ja tukea jotta projektit edistyvät, mutta kuitenkin niin että ei tarvitse stressata jos ei omalla ajalla aina kerkiä sitä edistämään.

Kurssi on nyt saatu pidettyä ja tavoitteetkin varmaan saavutettiin. Syksyllä mahdollisesti olisi tulossa kurssia epäteoreettisesta signaalinkäsittelystä jossa yhtenä vaihtoehtona on käyttää kurssille valikoituneita FPGA-kehityslautoja, mutta tästä tarkempaa tietoa loppukesästä.

Myös kurssin aloittaminen alkeista Arduino Vidor:lla saattaa olla mahdollista jos vetäjä löytyy.

Kiitos kurssilaisille, paljon on opittu ja varmasti myöhemmin näkyy labilla toteutetuissa projektessakin.