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.
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ä
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.
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.
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
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.
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ä:
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
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
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
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.
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.
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.