Kurssi: Digitaalitekniikka, pidettiin torstaisin ajalla 2.3.2017–24.5.2018

Mielestäni kevään tavoite saavutettiin hyvin, vaikka emme AXI4-Lite -modulistamme täysiveristä IP-lohkoa vielä paketoineetkaan. Tämmöisenä RTL-modulinakin se toimii hyvin ja näin lohkojen kehittäminen kannattaakin aloittaa.

Runko omien I/O-laitteiden tekemiseen löytyy kolmannesta tutoriaalista. Projektin luomiseen tulee vielä ohjeet myöhemmin jos ei mene vielä rutiinilla.

Kaikkien jäsenten olisi pitänyt saada kutsu labin Slackiin, mailaa hallitukselle jos et ole saanut. Siellä kanavalla #digitaalitekniikka tai täällä voi kysellä kesän aikana jos tulee ongelmia.

Viime kerralla (8.6.) esittelemäni yksinkertainen wav-soitin löytyy yleisön pyynnöstä nyt täältä: https://github.com/JKN0/player_r2r.

Kurssi jatkuu taas torstaisin ja tässä alustavaa agendaa:

31.8.

  • kertaamme Verilogin kombinaatio- ja sekvenssilogiikan
  • kertaamme AXI-protokollan peruskättelyn
  • aloitamme oman Ubuntu-pohjaisen käyttöjärjestelmä rakentamisen Zynqille

7.9.

  • harjoituksena teemme yksinkertaisen AXI-Full Master lohkon joka ACP-rajapinnan kautta kirjoittaa ja lukee DDR-muistia

14.9.

  • oman Linuxin kernel modulin (‘ajurin’) kääntäminen joka huolehtii AXI-rajapinnat ja keskeytykset ilman /dev/mem -mappauksia

Tämän jälkeen kokonaisuuden pitäisi olla siinä vaiheessa, että pääsemme täysipainotteisesti tekemään varsinaisia projekteja kehityslautojen sensoreilla ja niille käyttöliittymia Linuxilla.

  • Red Pitayan nopeiden AD/DA-muuntimien signaalin käsittelyä
  • framepuskuri Linuxiin ja HDMI-kuvanmuodostus
  • äänikortti Linuxiin FPGA:lla tehdyillä 1-bit AD/DA-muuntimilla
  • HTTP-palvelimella käyttöliittymä omalle projektille

Saatamme myös jättää SystemVerilogin väliin ja hypätä käyttämään Vivadon High-Level Synteesiä monimutkaisemmille lohkoille.

Torstaina mukaan kannattaa ottaa tyhjä min. 8 GB microSD-kortti, niin ei tarvitse vielä edellistä käyttistä jyrätä. Myöskin tämä kurssin oma Zybuntu on vielä mallia v0.0.1 ja tulee moneen kertaan jyrätyksi syksyn aikana.

Ensimmäinen varsinainen projekti kurssilla tulee olemaan yksinkertaisen signaalinkäsittelyn tekeminen AXI4-Stream -lohkoilla. Teemme omia ja sotkemme väliin myös Xilinxin Vivadon mukana tarjoamia.

Lähdemme liikkeelle audio-taajuuksista ja generoimme alkuun signaalin suoraan I/O-pinnistä 3.5mm plugiin (labin hyllyista löytyvistä osista kasattuja), mutta jotta välttyisimme kurssilla täydelliseltä kakofonialta, kannattaa ottaa mukaan nappikuulokkeet.

Esimerkiksi nämä on hyväksi havaittu: http://www.clasohlson.com/fi/Kuulokemikrofoni/38-7281-4

Aloittelimme Stream-lohkoilla leikkimisen, mutta koska tämä on niin tärkeä aihe ja muutenkin on saattanut jäädä rästiin, niin pidän tiistaina labilla vielä parin tunnin kertauksen. Tiistaisin on tietysti labilla härdelliä muutenkin, mutta eiköhän me johonkin nurkkaan mahduta.

Kello 18-20 voisi olla hyvä rako.

Ensi viikolla pidetään syyslomaa, eli 19.10. ei kurssia.

Alkaako uusi kurssi milloin seuraavaksi?

Tai onko mahdollista liittyä vielä mukaan, FPGA-kokemusta ei ole, muuten digiperusteita on jonkin verran.

Vielä jos löytyy joku, joka ei ehkä olekaan ehtinyt enää olla mukana, ja löytyisi lainaksi FPGA-lautaa kurssikäyttöön, olisin kiinnostunut ja mahdollisuus myös ehkä ostaa lauta pois…

Tämän kurssin perään olisi tarkoitus keväällä pitää Epäteoreettista signaalinkäsittelyä, mahdollisesti samoilla laudoilla, mutta ilman että tarvitsee niiden sielunelämästä sen kummemmin ymmärtää.

Digitaalitekniikkaa mahdollisesti taas alkeista sen jälkeen, eli joskus huhtikuussa. Se varmaan etenisi vähän nopeammin ja järjestelmällisemmin kun on kertaalleen noilla laudoilla jo harjoiteltu.

Mutta jos on digitaalitekniikka jotenkin tuttua, eikä pelota se että alussa varmasti tulee infoähky, niin kurssille mukaan vaan. Alkuun ainakin saa multa torstaisin devauslaudan lainaan.

Koppi! Eli nyt vaan jäseneksi hacklabiin, laitatko mulle privana tai tähän vielä laudan tiedot, ja jos joku muu pläjäys, käytän huomisen ympäristön ihmettelyyn ja tulen paikalle :slight_smile:

Asennanko mä ton Vivadon, vai jotain muuta?

Tämän viikon kurssi peruttu kun labilla siivotaan vesivahingon jälkeen tehtyjä löytöjä.

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.