VHDL eli VHSIC Hardware Description Language (engl.Very High Speed Integrated Circuit, VHSIC) on suosittu laitteistokuvauskieli. Kielestä on IEEE:n standardiIEEE 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.
Esimerkkilohko, jossa ulostulosignaali on sisään tulevien signaalien looginen AND-operaatio.
-- Tämä on VHDL-kommentti-- tuodaan IEEE-kirjastosta mm. std_logic-tyyppilibraryIEEE;useIEEE.std_logic_1164.all;-- entity-osa määrittelee lohkon rajapinnan eli sisäänmenot ja ulostulotentityANDGATEisport(IN1:instd_logic;IN2:instd_logic;OUT1:outstd_logic);endANDGATE;-- architecture-osa määrittelee lohkon toteutuksenarchitectureRTLofANDGATEisbeginOUT1<=IN1andIN2;endRTL;