Digitaalitekniikan peruskurssi

Syksyn aikana pidetyn dEEP-kurssin jatko on nyt nimetty Digitaalitekniikan peruskurssiksi. Tämä threadi toimii kurssin tiedotuskanavana.

Kurssilla siirrytään kiinteistä logiikkapiireistä ohjelmoitaviin: käydään lyhyesti läpi PAL/GAL-piirit ja loppuaika vietetään CPLD-piirien parissa. Tavoitteena on oppia VHDL- tai Verilog-kielen (jää päätettäväksi) perusteet ja päästä sinuiksi kehitystyökalujen kanssa sen tasoisesti, että on mahdollista siirtyä FPGA:den maailmaan. Tämä tapahtuu sitten Digitaalitekniikan jatkokurssilla myöhemmin kevään aikana.

Käytössä on Xilinxin piirit ja kehitysympäristö. Jos osallistujilla on kokemusta muista valmistajista (Altera, Lattice,…), näihin on hyvä tehdä vertailuja, mutta käytännön syistä on pakko pysytellä yhden valmistajan kaluissa.

Ensimmäinen istunto pidetään Takkatiellä 8.1. klo 18 alkaen ja siitä eteenpäin joka torstai. Tavoitteena on saada tämä osuus vedettyä läpi 6 istunnon aikana, katsotaan miten onnistuu.

Kurssi saatiin käyntiin ja ensimmäisellä istunnolla käytiin läpi tiukka paketti PLD-piirien perusteita. Käytännön harjoituksiin ei vielä päästy, mutta seuraavilla kerroilla sitten. Läpikäyty slideset löytyy täältä .

Testilaudatkin saatiin jo jakoon. Halpis kun on, niin valmistajan tarjoama dokumentaatio rajoittuu valokuvaan. Itse piirtämäni kytkentäkaavio kortista löytyy täältä.

Seuraava istunto on 15.1. Silloin katsotaan hiukan tarkemmin esimerkkipiiriämme XC9572XL, ja demotaan ISE-softan käyttöä. Tavoite on myös, että kukin saisi asennettua ISE:n omaan koneeseensa. Kokemusten mukaan Windows ei yleensä aiheuta ongelmia, Linuxit ja Macit ovat haasteellisempia.

Kannattaa tehdä valmiiksi tunnukset Xilinxin sivuille, ne tarvitaan, kun lisenssiä haetaan. Varsinainen lisenssin hakeminen tapahtuu ISE:n asennuksen jälkeen.

Jos joku haluaa harjoitella asennusta omin päin, tässä download-linkki. Tästä ladataan siis ISE, ei Vivadoa. Paketti on aika iso (4 x 2GB) joten lataus saattaa kestää. Seuraavassa kurssi-istunnossa pistämme paketin jakoon USB-tikulla, joten sillä säästää lataukseen kuluvan ajan.

EDIT: Lisenssin voi näköjään hakea etukäteenkin tällä sivulla.

Kurssin epävirallinen sivu on http://kirjoitusalusta.fi/hacklab-x-digi-perus ja ensi kerralla jatkamme yksinkertaisten kytkentöjen tekemistä, nyt Verilogilla, mutta vain copy-paste tyylisesti, eli vähän totuttaudumme kirjoittelemaan sanelusta.

Sitä seuraavalla kerralla sitten aletaan piirtelemään joitain toimivia laitteita ja niitä sitten pikkuhiljaa toteutamme Verilgilla.

Noniin, nyt sain sen ohjelmointilaitteen toimimaan Ubuntussakin. Tuolla asennusohjeita:

laittakaa kommenttia jos joku kohta ei mene tai pitää olla selkeämpi ohje. Joku näppärä saa tehdä windowsiin asennuksesta vastaavan, varmasti paljon lyhyempi.

Kirjoittelin sepustuksen Windows-asennuksesta. Toivotaan ettei siihen tullut mokia kun tein sen muistin varasta enkä asentanut juuri nyt mitään.

Rajasin tulevan torstain aihealueen nyt Verilog HDL-kielen alkeisiin ja ISE:n asentamiseen lopuillekin koneille:

Viime kerran tapahtumista en ole kovin tarkkaan selvillä, mutta ilmeisesti ISE:t saatiin asennettua ja Verilogin perusteisiin päästiin jo tutustumaan.

Seuraava istunto joka tapauksessa 29.1. Silloin piirrellään joitakin yksinkertaisia kytkentöjä ISE:lle kytkentäkaaviona. Vanhan kunnon ledivilkun avulla siirrytään sekvenssilogiikan puolelle, ja samalla päästään opettelemaan kortilla olevan 50 MHz kellotaajuuden jakamista jotenkuten inhimillisiin arvoihin. Myös kytkentäkaavion ja Verilogin yhteyttä yritetään ymmärtää.

Viimeksi saatiin tehtyä suunnilleen se, mitä oli tarkoituskin, eli piirreltiin muutama kytkentäkaavio ISE:llä ja saatiin ledi vilkkumaan testikortilla, jotkut jopa kaksikin lediä. Verilogin perusteitakin jatkettiin toteuttamalla kytkentäkaaviona tehty porttilogiikka Verilogilla.

Seuraava kerta pidetään 5.2. Silloin palataan vielä lyhyesti kytkentäkaavio-ledivilkkuun, ja sen jälkeen tehdään sama Verilogilla. Jos aikaa jää, aletaan tutustua 7-segmenttinäytön ohjaamiseen Verilogilla.

Peruskurssi jatkuu taas 12.2. Viimeksi päästiin jo vauhtiin Verilogin kanssa ja tehtiin muutama variaatio ledivilkusta. Tällä kerralla jatketaan ja käydään Verilogia systemaattisemmin läpi.

Tämä on alkuperäisen suunnitelman mukainen viimeinen peruskurssin istunto, mutta homma jatkuu vielä seuraavillakin kerroilla suurelta osin CPLD-pohjalta. Eli siirtymä jatkokurssin aiheisiin ja FPGA-maailmaan tulee olemaan liukuva.

Siinä sivussa jokainen voi mietiskellä, minkälaisilla FPGA-testilevyillä haluaisi jatkaa. Niiden kanssa ei enää välttämättä mennä “jokaisella samanlainen lauta”-mentaliteetilla. Myös valinnanvaraa on FPGA-levyissä ihan eri tavalla kuin CPLD-puolella.

Hiihtolomasta huolimatta digitaalitekniikka jatkuu 19.2. Viime kerran teoreettisemman osuuden jälkeen jatketaan 7-segmenttinäytön ohjauksen parissa.

Valveutuneimmat kurssilaiset ovatkin jo huomanneet tulleensa huijatuksi: emme ole toistaiseksi tehneet mitään, mitä ei olisi voinut tehdä Arduinolla. Senpä takia käydään projektiesittelyluonteisesti läpi Romulaattori, esimerkkinä CPLD-projektista, jota ei voi tehdä mikrokontrollerilla.

Torstaina otetaan vielä pikakertaus Verilogin syntaksista, erityisesti kombinaatio- ja sekvenssilogiikan rakenteista, eli tämän sivun sisältöä kannattaa katsella huolellisesti:

Sitten puhutaan vaikka metastabiilisuudesta ja tehdään laskuri joka laskee nappien painalluksia ja näyttää niitä segmenttinäytössä. Ja kun huomataan, että homma ei toimi odotetusti, tehdään debouncer-kytkentä Verilogilla korjaamaan tilannetta.

Muutamalla viime kerralla läpikäydyt ledivilkuttimet ja 7-segmenttilaskurit löytyvät alla olevasta linkistä. Valmiita ISE-projekteja siellä ei ole, mutta Verilog-sourcet kommentoituna ja UCF-tiedostot.

https://dl.dropboxusercontent.com/u/39562463/Verilog_harjoituksia.zip

Nyt olisi sitten peruskurssi pulkassa ja ensi torstaina 5.3. labilla SATSin pitämä rakettikurssi, eli jatkokurrsi ja FPGA-piireihin tutustuminen seuraavan kerran torstaina 12.3.

– M

Kurssilla on muutamaan kertaan puhuttu, että Impactin käyttö pitäisi saada yksinkertaisemmaksi, jotta sitä ei tarvitsisi joka kerta käynnistää ja määritellä alusta saakka. Tein tästä nyt kirjoitusalustalle ohjeen, joka helpottaa käyttöä, mutta kuten lopussa olevasta huomautuksesta näkyy, ei tämäkään aivan ongelmaton tapa ole.

http://kirjoitusalusta.fi/hacklab-x-digi-impact-projekti

Homma jatkuu Digitaalitekniikan jatkokurssi