Ero sivun ”VHDL-kieli FPGA-suunnittelussa/VHDL:stä kortille -tutoriaali” versioiden välillä

Wikikirjastosta
Poistettu sisältö Lisätty sisältö
Shinpou (keskustelu | muokkaukset)
Ei muokkausyhteenvetoa
Shinpou (keskustelu | muokkaukset)
Rivi 6: Rivi 6:
Nykypäivän markkinoiden tekemä 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.
Nykypäivän markkinoiden tekemä 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:ta voidaan käyttää luomaan virtuaalisia oheislaitteita, tai käyttää sovittimena olemassaolevalle ulkoiselle laitteelle. Hyvä esimerkki tästä on esimerkiksi digiboksi, jossa on useita eri video- ja audioliitäntöjä. Nämä useat eri liitännät saattavat vaatia normaalilla laitesuunnittelulla useita erilaisia mikropiirejä jotka tarjoavat mahdolliselle mikroprosessorille liitännät näihin oheislaitteisiin. Kaikki laitteen video-enkoodaukset ja protokollat vaatisivat oman piirinsä joka hoitaisi työn. Usein piirejä tarvitaan siksi, että mikroprosessorin sisäinen nopeus ei riitä esim nopeutta vaativiin video-operaatioihin. Tälläisessä tilanteessa rahaa ja aikaa säästetään luomalla video-enkooderit ja dekooderit sekä mahdollisten ulkoisten oheislaitteiden sovitinpiirit FPGA-suunnittelulla. Mikro-ohjaintakaan ei tarvita, sillä FPGA-ytimen sisään voidaan luoda ohjelmallinen mikro-ohjain jota usein myös tarvitaan.
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.
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.
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.

Versio 16. syyskuuta 2008 kello 05.44

Tutoriaalin aihe

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

Nykypäivän markkinoiden tekemä 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.


Tämä sivu tai sen osa on keskeneräinen. Voit auttaa Wikikirjastoa täydentämällä sivua.