Laitteistokuvauskieli
Tähän artikkeliin tai osioon ei ole merkitty lähteitä, joten tiedot kannattaa tarkistaa muista tietolähteistä. Voit auttaa Wikipediaa lisäämällä artikkeliin tarkistettavissa olevia lähteitä ja merkitsemällä ne ohjeen mukaan. |
Laitteistokuvauskielet (engl. hardware description language, HDL) ovat ohjelmointikielten kaltaisia täsmäkieliä. Laitteistokuvauskielellä voidaan antaa formaali kuvaus tietokonelaitteistosta, esimerkiksi suorittimesta, jota voidaan käyttää muun muassa kyseisen laitteiston käyttäytymisen simulointiin ja toiminnan oikeellisuuden varmistamiseen ennen kuin laite fyysisesti valmistetaan. Kuvausta voidaan myös sopivaa ohjelmistoa käyttämällä hyödyntää logiikkasynteesissä, jossa koodista luodaan piirustukset esimerkiksi ASIC-piirille (engl. application specific integrated circuit) tai kytkennät FPGA-piirille (engl. field-programmable gate array). Laitteistokuvauskielillä on merkittävä osa nykyaikaisessa digitaalisuunnittelussa. Kaksi ylivoimaisesti käytetyintä laitteistokuvauskieltä ovat VHDL ja Verilog.
Laitteistokuvauskielet vs. ohjelmointikielet
muokkaaUseimpien laitteistokuvauskielten syntaksi perustuu johonkin ohjelmointikieleen, esimerkiksi VHDL perustuu Adaan ja Verilog C:hen. Kielet kuitenkin sisältävät laitteiston tarkkaan kuvaukseen tarvittavia erityisrakenteita ja eroavat siksi merkittävästi ohjelmointikielistä. Esimerkiksi ohjelmointikielillä kirjoitetut ohjelmat suoritetaan suurimmaksi osaksi sekventiaalisesti, eli käskyt suoritetaan yksi kerrallaan peräkkäin. Tietokonelaitteistoissa rinnakkaisuutta esiintyy paljon ja tämän johdosta laitteistokuvauskielissä on rakenteita, joiden avulla on helppo kirjoittaa rinnakkaista koodia. Laitteistokuvauskielillä on myös mahdollista mallintaa laitteistoläheisellä tavalla eri osalohkojen välistä digitaalista ja joskus myös analogista signalointia.
Tulevaisuus
muokkaaLaitteistokuvauskielillä on perinteisesti ollut huomattavasti vaikeampaa ja työläämpää toteuttaa algoritmi kuin ohjelmointikielillä. Laitteistokuvauskielet ovat viime aikoina alkaneet lähestyä ominaisuuksiltaan ja abstraktiotasoltaan korkean tasoon ohjelmointikieliä, erityisesti C++:aa. Esimerkiksi SystemC:n ja SystemVerilogin kaltaisilla kielillä on mahdollista mallintaa laitteistoa järjestelmätasolla (engl. system level) ja transaktiotasolla (engl. transaction level) siinä missä VHDL ja Verilog toimivat matalammalla rekisterisiirtotasolla (engl. register transfer level, RTL). Mooren lakia mukaileva kehitysvauhti on yksi merkittävä syy miksi korkeamman abstraktiotason työkaluille tulee olemaan yhä enemmän tarvetta.