Hardware Description Language ( HDL från hardware description language ) är ett specialiserat datorspråk som används för att beskriva strukturen och beteendet hos elektroniska kretsar , oftast digitala logiska kretsar.
Hårdvarubeskrivningsspråk liknar utåt programmeringsspråk som C eller Pascal , program skrivna i dem består också av uttryck, operatorer, kontrollstrukturer. Den viktigaste skillnaden mellan konventionella programmeringsspråk och HDL-språk är den explicita inkluderingen av begreppet tid i hårdvarubeskrivningsspråk.
Hårdvarubeskrivningsspråk är en viktig del av CAD , speciellt för komplexa kretsar som ASIC , mikroprocessorer och programmerbara logiska enheter .
De huvudsakliga hårdvarubeskrivningsspråken i praktiken är Verilog och VHDL ; det finns också flera dussin alternativa språk.
Den första moderna HDL, Verilog , skapades av Gateway Design Automation 1985 för att beskriva VLSI. År 1987 utvecklades VHDL ( VHSIC HDL ) [1] på basis av Ada- språket på order av det amerikanska försvarsdepartementet .
Inledningsvis användes både Verilog och VHDL för att dokumentera och modellera kretslösningar implementerade i en annan form (till exempel som kretsar). Modellering med HDL har gjort det möjligt för ingenjörer att arbeta på en högre abstraktionsnivå än modellering på kretsnivå, och gör det därför lättare att modellera konstruktioner med tusentals transistorer eller fler.
Införandet av logisk kretssyntes från HDL har gjort det till det primära språket för att skapa digitala kretsar. Syntes CAD-system kompilerar källfiler (skrivna i en delmängd av HDL som kallas RTL - eng. Registeröverföringsnivå - Registeröverföringsnivå ) till en kretsbeskrivning i form av länklistor ( nätlista , som specificerar anslutningarna av ventiler och transistorer . Skriva en syntetiserad RTL-kod kräver övning och efterlevnad av ett antal regler från designern. Jämfört med traditionell kretsdesign är skapandet av syntetiserad RTL mindre mödosamt, men leder ofta till något större och mindre produktiva kretsar.
Inom några år blev VHDL och Verilog de viktigaste HDL-språken inom mikroelektronikindustrin, och de tidiga språken föll gradvis i bruk. Men både VHDL och Verilog har liknande begränsningar: de är inte lämpliga för analog eller blandad digital-analog simulering, de har inte språkkonstruktioner för att beskriva rekursivt genererade logiska strukturer; i detta avseende skapas olika specialiserade HDL, som syftar till att eliminera dessa begränsningar för de två huvudspråken. Alternativa språk skapas vanligtvis på grundval av allmänna programmeringsspråk, till exempel utvecklades SystemC på basis av C ++ , JHDL på basis av Java , och Bluespec , HHDL , Hydra , Lava utvecklades på basis av Haskell .
Under decennierna sedan starten har båda stora språken modifierats och förbättrats avsevärt. Den senaste versionen av Verilog-språket, standardiserad som IEEE 1800-2005 SystemVerilog , har många nya funktioner (klasser, slumpvariabler, egenskaper och kontrolloperatörer) för att möta de växande behoven av slumpmässig testning , hierarkisk design och kodåteranvändning. Den senaste VHDL-standarden publicerades 2002.
Beskrivningen av utrustningen på VHDL och Verilog kan göras på nivåerna dataflöden ( dataflöde ), beteende ( beteende ), strukturer ( strukturellt ). Ett exempel på en beskrivning av dataflöden i VHDL (en beskrivning av "not1"-entiteten, som har 1 ingångsport på 1 bit och 1 utgångsport på 1 bit; denna enhet negerar ingångsvärdet):
bibliotek iEEE ; använd iEEE.STD_LOGIC_1164. ALLA ; använd iEEE.STD_NUMERIC_STD. ALLA ; entitet not1 är port ( a : in STD_LOGIC ; b : ut STD_logic ); slut inte1 ; arkitektur beteende av not1 är start b <= inte a ; slut beteendemässiga ;