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

Ennen kuin päästään vauhtiin, on syytä vielä avata hieman tavoitteita nyt toteutuksen alla olevaan projektiin. Kyseessä on Motorolan 68000 sirun ympärille rakennettu sulautettu järjestelmä. 68000 on valittu siksi, että projektin lopputulos on FPGA-toteutus olemassa olevasta laitteesta, johon saadaan FPGA:lla paitsi yhteensopiva rautatoteutus, myös nykyaikaisiksi päivitetyt komponentit kuten vaikkapa moderni näyttö. Lisäksi 68000 on muutenkin itselleni erittäin tuttu koodaajana sekä Minimig- ja Suska-projektien kautta. Toteutustyötä teen muutaman eri FPGA kehityslaudan päälle, lopputuote käyttää omaa käyttötarkoitukseen suunniteltuaä piirilevyä. Alla on karkealla tasolla vekottimen arkkitehtuuri.

KUVA TÄHÄN

Vaikka arkkitehtuuri on kohtalaisen yksinkertainen, itse toteutus ei ole. Järjestelmän eri komponentit (CPU, muistit, näyttö, I/O sekä kontrolliblokki) toimivat eri kellotaajuuksilla ja luonnollisesti kilpailevat keskenään järjestelmän resursseista. Eri osaset on myös saatava näkyviin prosesorille ynnä näytönohjaimelle. Siksi vaaditaan osoiteväylän dekoodaukseen logiikkaa. Ja tietenkin muistin pitää olla järkevällä tavalla saatavissa kaikille sitä tarvitseville komponenteille jolloin sekä muisti- että dataväylä pitää laittaa arbiterin taakse. Arbiter siis on vekotin joka osaa ohjata esimerkiksi CPU:n muistipyynnöt oikeaan osoitteeseen (muisti, I/O, jne.) Vaikka tämän kuvittelisi olevan helppoa, on väylien toteutus yleensä yksi hankalimmista toteutuksista tämän tyyppisissä projekteissa, varsinkin kun palikat toimivat eri kellotaajuudella. Tähän palaan vielä yksityiskohtaisesti kunhan homma etenee.

Hyvän kuvan tämän tyyppisen projektitoteutuksen kokoluokasta ja vaikeudesta saa vaikka tsekkaamalla muutamat retrototeutukset läpi tuolta materiaalisivulta. Näistä itse lähdin aiheeseen tutustumaan ja mitään tolkkua toteutuksista ei aluksi saanut. Eli nöyrästi vaan alkeiden kimppuun. Riittävästi päätä seinään hakkaamalla oppii myös.

Etememisestä

Tarkoitukseni on rakentaa projektin eteneminen siten, että kirjoittelen paljon myös suunnittelun alkeista juttua. Se paitsi toimii itselle hyvänä kertauksena, antaa myös vastaavaa harrastusta aloitteleville toivottavasti pohjatietoa FPGA-toteutuksista. Samalla tulee raotettua hieman digitaalisen logiikan toimintaa yleisesti, eli aika alkeita käydään. Jos haluat lisää paneutumista tiettyyn aiheeseen, laita ihmeessä kommenttia tai sähköpostia tulemaan. Koska tässä on kyseessä nimenomaan oppimisprosessi, setvin mielelläni erilaisia asioita myös itse oppiakseni uutta.

FPGA-toteutuksen jälkeen onkin vuorossa piirilevyn suunnittelu. Siinä kohtaa käytän varmaankin vähän kokeneempaa tekijää apuna, mutta raapustelen senkin projektin tänne.

Noin muuten en ole yleensä kovin järjestelmällinen tekemisten suhteen, joten tavaraa voi ilmestyä vähän sekalaisessa järjestyksessä. Koitan koota GitHubin wikiin jonkun vähän jäsennellymmän blueprintin kun materiaalia alkaa olla enemmän koossa.

Ehdotuksia

Mikäli bongaat netistä kiinnostavia aiheeseen liittyviä projekteja niin mailia kannattaa lähettää. Olen ylipäätään kiinnostunut kaikista rautapuolen DIY-projekteista ja tarvittaessa voin tehdä käännöksiä ja hieman taustoittaa toteutuksia jos ne sitä vaativat. Meillä rautanörteillä harvemmin on tapana hirveän tarkasti kertoilla projekteista, koska nämä hommathan pitää vaan osata.

Yhteydet

Pidän projektin tuotokset kaikki avoinna GitHubissa, joten palautetta voi laittaa joko suoraan sinne kommentoimalla tai sitten kommentoimalla näitä postauksia. Mailia voi laittaa osoitteeseen wdo (at) cncd (piste) cc.