VHDL-kieli FPGA-suunnittelussa/VHDL:stä kortille -tutoriaali
Tutoriaalin aihe
[muokkaa | muokkaa wikitekstiä]Tässä tutoriaalissa keskitymme yksinkertaisen ja mahdollisimman kohdekorttiriippumattoman FPGA-logiikan luomiseen. Siihen miten tuo logiikka saadaan yhdistettyä kortin fyysisiin laitteisiin (pinneihin) ja miten FPGA-ydin lopulta saadaan ajettua FPGA-evaluaatiokortille ja toimimaan. Tutoriaalissa käytetään Xilinxin ISE 9.2i ohjelmistoa, ja Spartan-3E evaluaatiokorttia. Tutoriaalin seuraamiseen ei tarvita vastaavaa FPGA-evaluaatiokorttia, sillä asiat pyritään selittämään niin yleisellä tasolla, että työ pystyttäisiin suorittamaan myös muilla FPGA-korteilla.
VHDL:stä FPGA:ksi
[muokkaa | muokkaa wikitekstiä]Nykypäivän markkinoiden suuri haaste elektroniikkasuunnittelijoille on jatkuva ja nopea kehitys. Tehty tuote saattaa olla vanha jo ennen kaupan hyllylle ehtimistä. Tästä syystä suunnittelijalta vaaditaankin kyky tuoda laitteet käyttäjälle nopeasti ja kustannustehokkaasti. Perinteiset elektroniikkaprojektejen suunnitteluvaiheet ja toteutus tahtovat kuitenkin viedä aikaa ja työntekijöiden resursseja enemmän kuin niitä on tarjoilla. Tämä on todellisuudessa se syy ja markkinavaltti johon FPGA tarjoaa ratkaisun. FPGA:n voi kuvitella ohjelmana jolla on laitetason suorituskyky - ja on loppuenlopuksi laite.
Usein FPGA-logiikkaa luodaan laajentamaan laitteen sisäisiä oheislaitteita. FPGA:lla voidaan luoda virtuaalisia oheislaitteita, tai sovitinpiirejä olemassaolevalle ulkoiselle oheislaittelle. Hyvä esimerkki tästä on digiboksi, jossa on useita eri video- ja audioliitäntöjä. Nämä useat eri liitännät vaativat yleensä kukin omanlaisensa signaalinkäsittelypiirin, jotka kytketään tavalla tai toisella digiboksissa olevan mikro-ohjaimen IO-pinneihin. Myös kaikki laitteen video-enkoodaukset ja protokollat vaatisivat oman mikropiirinsä. Puhtaalla laitesovituksella saadaankin yleensä aimo annos erilaisia mikro-ohjaimia ja siksi FPGA on kompromissi, millä saadaan pienimpiin tarkoituksiin tehdyt mikropiirit poistettua ja näin laitteiston toteutuksen hintaa alennettua. Erillistä fyysistä mikro-ohjaintakaan ei tarvita, sillä FPGA-ytimen sisään voidaan luoda ohjelmallinen mikro-ohjain jota usein myös tarvitaan. Nämä tunnetaan usein nimellä microblaze tai picoblaze.
FPGA-suunnittelu yleensä aloitetaan määrittelemällä mitkä osat logiikasta halutaan toteuttaa FPGA:lla ja mitkä osat ohjelmallisesti sisäisellä mikro-ohjaimella. Usein laitteiden yleisen kokonaisuuden ajaminen tehdään mikroprosessorilla ja nopeutta vaativat tehtävät suoritetaan puhtaalla FPGA:lla. Siitä, kumpaan leiriin mikäkin toteutus tulisi tehdä, käydään yleensä kädenvääntöä.
Tässä tutoriaalissa keskitymme tuon puhtaan FPGA-logiikan luomiseen, miten tuo logiikka saadaan yhdistettyä kortin fyysisiin laitteisiin ja miten FPGA-ydin lopulta saadaan ajettua FPGA-evaluaatiokortille ja toimimaan.