Mikolas Hämäläinen bio photo

Mikolas Hämäläinen

Tekniikasta, tieteistä ja maailmasta innostunut ATK-säätäjä.

Twitter Facebook LinkedIn Github Last.fm

Olen päättänyt vihdoinkin alkaa kirjoittamaan jotain blogin tyyppistä päiväkirjaa seikkailuistani rautasuunnittelun maailmassa ja muustakin asiaa liippaavasta, lähinnä erilaisista DIY-projekteista ja plaformeista jotka sattuvat kiinnostamaan. Koska monet asiaan opintojen ja työelämän kautta vihkiytyneet voivat katsoa tätä touhua jopa hieman huvittuneena, lienee syytä ensiksi esitellä vähän omaa taustaani.

Ohkaiset lähtökohdat

Minulla ei ole minkäänlaista muodollista koulutusta mitä elektroniikan ja logiikkapiirien suunnitteluun tulee. Olen aloittanut oman koodipolkuni jo joskus seitsemänvuotiaana aloittaen assemblerin koodaamisesta VIC-20:n 6502 prosessorilla ja sittemmin Z80-assemblerilla MSX:llä. Siitä siirryin hiljalleen demokoodaukseen Amigalla, 68000 assemblerilla. Korkeamman tason kielet ovat old school mallilla lähteneet C:n ja C++:n kautta Javaan ja C#:iin. Vapaa-ajalla olen viime aikoina tutustunut Scalaan ja Javascriptiin, mutta kummassakaan en nyt ihan samalla tasolla ole kuin C:n sukuisissa (olio)kielissä. Tietenkin olen enemmän tai vähemmän tsekannut myös muita ohjelmointikieliä kuten Pythonia ja Rubya sekä koodaajapiireissä viime aikoina hehkuteltuja funktionaalisia kieliä.

Ja perä edellä puuhun

Entistä enemmän kiinnostus on kuitenkin koko ajan siirtynyt raudan kanssa pelaamiseen ja varsinkin viime vuosien retrobuumin myötä tutuksi ovat tulleet FPGA:t ja niiden ohjelmointi HDL-kielillä kuten Verilog ja VHDL. Näissä oppimiskynnys on kertaluokkaa hankalampi kuin perinteisissä ohjelmointikielissä, johtuen koko alla olevan infran täydellisestä erilaisuudesta perinteiseen ohjelmointiystävälliseen tietotekniikaan verrattuna. Eli sillä polulla ollaan. Aloitin tämän luonnollisesti haukkaamalla välittömästi liian suuren kakun. Kyllähän sitä koodaaja yhden muistikontrollerin ja väylät tuosta vaan koodaa. Olenkin nyt entistä enemmän aloittanut freesaamaan osaamistani peruslogiikan, lineaaristen piirien sekä ihan asiaan liittyvän fysiikan kanssa. Ja tietenkin tämän kokonaisuuden liimana sulautetut järjestelmät ovat tulleet mukaan kuvaan, mutta nämä ovat minulle jo aiemmin jossain määrin tuttuja kernelikoodaamisen ja sellaisen myötä.

Opiskelu on kovaa työtä

Itseopiskelua nykymaailmassa auttaa valtava määrä oppimateriaalia netissä. Suosittelenkin asiasta kiinnostuneille yliopistokurssien itseopiskelua. Kerään näihin liittyvää materiaalia omalle sivulleen, jota ylläpidän sitä mukaa kun törmään mielenkiintoisiin luentosarjoihin ja nettisivuihin. Lisäksi suosittelen aika pragmaattista lähestymistä tiedonhankintaan ja omaksumiseen. Nykyään on liiankin helppo leikkiä asiantuntijaa Googlen avulla. Se ei kuitenkaan anna oikeita työkaluja ongelmanratkaisuun. On siis parempi pitää Google kiinni ja ottaa paperia ja taskulaskin kouraan. Tarkoituksena on oppia eikä pelkästään leikata ja liimata rautaa kasaan.

Suunnittelutyön suhteen olen itse kantapään kautta oppinut sen, että vaikka rautaa voi nykyään periaatteessa mallintaa kuin normaalia koodia, mikään ei toimi jos datasheetit ja peruslaskut sekä terminologia eivät ole hallussa. Jos et tiedä miksi flip-flop on yksi tärkemmistä (tai no, mielestäni tärkein) digitaalisen logiikan kytkennöistä, kannattaa todellakin kerrata tai opiskella digitaalisen logiikan perusteet. Tämän lisäksi komponentti- ja piirikytkentätaso kannattaa hallita välttävästi. Muuten edessä on unettomia öitä (kokemusta löytyy) erikoisia väyläbugeja ja muistikontrollereita debuggaillessa. Signaaliviiveiden ja heijastumien olemassaolo on hyvä tiedostaa, koska ne ykköset ja nollat kulkevat viime kädessä piuhoja pitkin myös siellä piilastun sisällä :-)

Miksi mä?

Sitten vielä se tärkeä kysymys: mitä järkeä on vapaa-ajalla opiskella jotain tällaista? Omalla kohdalla kyse on paitsi haasteesta, myös yhdestä lisätyökalusta tekniikan ymmärtämiseen. Rautasuunnittelu pakottaa erilaiseen järjestelmäajatteluun kuin perinteinen koodaaminen ja vaatii valtavan kokonaisuuden hahmottamista mikäli lopputulokseksi haluaa itse suunnitellun sulautetun tietokoneen. Muutenkin itsensä (=päänsä) pakottaminen oppimaan jotain uutta on aina hyödyllistä ja kehittää kykyä ymmärtää ympäröivää maailmaa. Ja eihän sitä ikinä tiedä jos vaikka tästä tulisi oikea työ.

Mutta oikeastihan ainoa syy on se, että koska voin. Niinhän se meillä nörteillä yleensä menee.