VHDL

Wikipediasta
(Ohjattu sivulta IEEE 1076)
Siirry navigaatioon Siirry hakuun

VHDL eli VHSIC Hardware Description Language (engl. Very High Speed Integrated Circuit, VHSIC) on suosittu laitteistokuvauskieli. Kielestä on IEEE:n standardi IEEE 1076.[1]

Toisin kuin perinteisissä ohjelmointikielissä (esimerkiksi C-kieli tai Java) VHDL:n periaatteena on kuvata laitteiston, erityisesti digitaalipiirien, toimintaa tai rakennetta tekstimuotoisesti. Kieli on kehitetty alun perin Yhdysvaltojen puolustusministeriön aloitteesta, ja sen syntaksi perustuu Ada-ohjelmointikieleen. VHDL on nykyään Verilogin ohella laajimmin käytössä olevia laitteistokuvauskieliä mm. elektroniikkateollisuudessa.

VHDL:llä kirjoitetun koodin suoritus jäljittelee laitteiston käyttäytymistä, siksi oletuksena koodi suoritetaan rinnakkaisesti. Toisaalta myös peräkkäin suoritettavaa koodia on mahdollista kirjoittaa. VHDL-mallin toiminnallisuutta simuloidaan ajamalla koodia kehitysympäristössä joka sisältää simulaattorin (esim. Mentor Modelsim). VHDL:llä kirjoitettuja malleja hyödynnetään usein myös logiikkasynteesissä, jossa malli muunnetaan synteesiohjelmiston avulla piirustuksiksi fyysisesti toteuttamiskelpoiselle mikropiirille (erityisesti usein ASICille) tai ohjelmointitiedostoksi FPGA-piirille. Laitteistosynteesiin kelpaavan VHDL-mallin kirjoittaminen vaatii erityishuomiota kirjoittajalta, sillä kaikki kielen rakenteet eivät ole toteuttamiskelpoisia fyysisessä piirissä joko ollenkaan tai tehokkaasti.

Yksinkertaisimmillaan VHDL:llä voidaan kuvata logiikkapiirejä, pitemmälle kehitettäessä voidaan myös kuvata kokonaisia järjestelmiä kuten tietokoneita. Koska suunniteltavat piirit muuttuvat koko ajan monimutkaisemmiksi, ei niitä juurikaan enää suunnitella käsin vaan VHDL:n kaltaisilla laitteistokuvauskielillä. Toisaalta nykyään monimutkaisimpien piirien kanssa VHDL:nkin ilmaisuvoima alkaa osoittamaan rajansa, ja siksi sen korvaamista korkeamman abstraktiotason tarjoavilla kielillä tutkitaan.

Esimerkkikoodi

[muokkaa | muokkaa wikitekstiä]

Esimerkkilohko, jossa ulostulosignaali on sisään tulevien signaalien looginen AND-operaatio.

-- Tämä on VHDL-kommentti
 
-- tuodaan IEEE-kirjastosta mm. std_logic-tyyppi
library IEEE;
use IEEE.std_logic_1164.all;
 
-- entity-osa määrittelee lohkon rajapinnan eli sisäänmenot ja ulostulot
entity ANDGATE is
  port ( 
         IN1 : in std_logic;
         IN2 : in std_logic;
         OUT1: out std_logic);
  end ANDGATE;

-- architecture-osa määrittelee lohkon toteutuksen
architecture RTL of ANDGATE is
  begin
 
  OUT1 <= IN1 and IN2;
 
end RTL;

Aiheesta muualla

[muokkaa | muokkaa wikitekstiä]
Tämä tekniikkaan liittyvä artikkeli on tynkä. Voit auttaa Wikipediaa laajentamalla artikkelia.