мини|VHDL kod za označeni sabirač.
-{VHDL}- () je jezik za opis hardvera koji se koristi u automatizaciji elektronskog dizajna za opisivanje digitalnih sistema i mešovitih-sistema kao što su FPGA () odnosno integrisana strujna kola dizajnirana da budu konfigurisana od strane potrosača nakon proizvodnje. VHDL se takođe može smatrati paralelnim programskim jezikom opste namene, kreiranim za programiranje paralelnih računara.
Istorijat Početkom 1983, VHDL je originalno razvijen prema zahtevu Ministarstva odbrane Sjedinjenih Američkih Država sa namerom da se dokumentuje ponašanje ASIC-a (), integrisanog kola prilagođenog za određenu upotrebu, koji su bili sastavni deo opreme kojom su snabdevani. Standard MIL-STD-454N u Zahtevu 64 odeljak 4.5.1 „ ASIC dokumentacija u VHDL-u“ eksplicitno zahteva dokumentaciju „ Mikroelektronskih Uređaja“ u VHDL-u.
Ideja da se ASIC može simulirati samo na osnovu ove dokumentacije je bila toliko atraktivna da su razvijeni posebni logički simulatori koji su mogli da čitaju VHDL fajlove. Sledeći korak je bio razvoj alata za sintezu logičkih kola, koji će čitati VHDL fajlove, i na izlaz propagirati fizičku definiciju implementacije strujnih kola.
Ministarstvo odbrane je zahtevalo da se što je više moguće sintakse preuzme iz programskog jezika Ada, kako bi se izbeglo izumiranje koncepta koji je vec detaljno testiran i proveren prilikom razvoja jezika Ada, pa je VHDL podosta nasledio, i koncept i sintaksu, od programskog jezika Ada.
Prvobitna verzija VHDL-a, dizajnirana prema IEEE standardu IEEE 1076-1987, uključivala je širok spektar tipova podataka, uključujući numeričke tipove(integer i real), logičke (bit i boolean), znakovne tipove character i vremenske (time), kao i nizove bit-ova koji se zovu bit_vector i nizove character-a zvane string.
Problem koji nije bio rešen ovim izdanjem, bila je „ višenamenska logika“, gde se uzima u obzir jačina protoka signala (bez signala, slab ili jak signal) kao i nepoznata vrednost. To je opisano u standardu IEEE 1164, koji je definisao 9-vrednosne logičke tipove: skalarni std_logic i njegova vektorska verzija std_logic_vector.
Ažurirana verzija standarda IEEE 1076, 1993. godine, učinila je sintaksu konzistentnijom, omogućila veću fleksibilnost pri imenovanju i uveden je veći broj karakterskih tipova kako bi podržala ISO-8859-1 karaktere, dodat je i operator negacije ekskluzivne disjunkije(xnor) itd.
Manje promene u standardu (2000 i 2002) dodale su ideju zaštićenih tipova (slično konceptu klase u C++) i uklonjena su odredjena ograničenja koja se odnose na pravila mapiranja portova.
Pored IEEE standarda 1164, uvedeno je i nekoliko detskih standarda (eng. child standards) kako bi se proširila funkcionalnost jezika. IEEE standard 1076.2 poboljšao je upravljanje realnim i kompleksnim tipovima. IEEE standard 1076.3 predstavio je označene i neoznačene tipove i time pojednostavio aritmetičke operacije nad vektorima. IEEE standard 1076.1 (poznatiji kao VHDL-AMS) je proširio dizajn analognih i mešovitih-signala strujnih kola.
Neki drugi standardi podržavaju širu upotrebu VHDL-a, naročito VITAL () i proširenju mikrotalasnih električnih kola.
U Junu 2006 godine, VHDL tehnički odbor Accellera (koji je delegirao IEEE za rad na sledećem ažuriranju standarda) odobrio je takozvani Draft 3.0 VHDL-a 2006. Održavajući potpunu kompatibilnost sa starijim verzijama, ovaj predloženi standard obezbeđuje mnoge nadogradnje koje čine VHDL kod lakšim za pisanje i održavanje. Ključne promene se odnose na uključivanje detskih standarda (1164, 1076.2, 1076.3) u glavni 1076 standard, prošireni skup operatora, fleksibilniju sintaksu za generisanje izjava, ugradnja VHPI (VHDL Procedural Interface) (interfejs za jezike C/C++) i podskup PSL jezika (). Ove promene treba da pobojšaju kvalitet VHDL koda, i omoguće širu upotrebu VHDL jezika za sistemski opis.
U februaru 2008. godine Accellera je odobrila VHDL 4.0, neformalno poznat kao VHDL 2008, koji je adresirao više od 90 problema otkrivenih tokom probnog perioda za verziju 3.0 i uključio poboljšane generičke tipove. Tokom 2008. Godine, Accellera je objavila glasanje da VHDL 4.0 IEEE bude uključen u u IEEE 1076-2008. VHDL standard IEEE 1076-2008 je objavljen u januaru 2009. godine.
Standardizacija IEEE standard 1076 definiše VHSIC jezik za opis hardvera za VHDL. On je prvobitno razvijen na osnovu ugovora F33615-83-C-1003 sklopljenog sa vazduhoplovnim snagama Sjedinjenih Američkih Država koji je dodeljen 1983. godine timu sa Intermetrics-a, kao stručnjacima za jezike i glavnim izvođačem, Texas Instruments-u kao ekspertu za dizajn čipova i IBM-u kao ekspertima za izradu računarskih sistema. Jezik je prošao kroz brojne revizije i ima različite sub-standarde koji su povezani sa njim, koji ga proširuju.
Standard 1076 je bio i nastavlja da bude prekretnica u dizajnu elektronskih sistema.
Revizije IEEE 1076-1987 prva standardizovana revizija verzije 7.2 jezika iz vazduhoplovstva Sjedinjenih Američkih Država. IEEE 1076-1993 (takođe objavljena sa. ) sadrži značajna poboljšanja koja su proistekla iz nekoliko godina povratnih informacija i rezultata. Verovtano je najšire korišćena verzija sa najvećom podrškom za alat prodavača. IEEE 1076-2000 mala revizija. Uvodi upotrebu zaštićenih (eng. protected) tipova. IEEE 1076-2002 mala revizija verzije 1076-2000. Rasterećena su pravila vezana za buffer port-ove. IEC 61691-1-1: 2004 IEC usvaja IEEE 1076-2002 IEEE 1076-2008 IEC adoption of IEEE 1076-2002 IEEE 1076-2008 (ranije poznat pod nazivom 1076-200x) velika revizija objavljena 2009-01-26. Među ostalim promenama, ovaj standard sadrži osnovni podskup PSL-a, omogućava generisanje paketa i podprograma i uvodi upotrebu spoljašnjih imena IEC 61691-1-1: 2011 IEC usvaja IEEE 1076-2008
Srodni standardi IEEE 1076.1 VHDL Analogni i mešoviti signal (VHDL-AMS) IEEE 1076.1.1 VHDL-AMS Standardni paketi (stdpkgs) IEEE 1076.2 VHDL Matematički paketi IEEE 1076.3 VHDL Sintetizovani paketi (vhdlsynth) IEEE 1076.3 VHDL Sintetizovani paketi - Floating Point (fphdl) IEEE 1076.4 Podešavane vremena (VHDL Inicijativa ka ASIC bibliotekama: vital) IEEE 1076.6 VHDL Sinteza interoperabilnosti IEEE 1164 VHDL Višenamenska logika (std_logic_1164)
Dizajn
VHDL se obicno koristi za pisanje tekstualnih modela koji opisuju logička kola. Takav model se obrađuje sinteznim programom, samo ako je deo logičkog dizajna. Simulacioni program se koristi za testiranje dizajna logike korišćenjem simulacionih modela za predstavljanje logičkih kola koja su u skladu sa dizajnom. Ova grupa simulacionih modela se obično naziva testbench.
VHDL simulator je obično simulator koji pokreće događaj. To znači da se svaka transakcija dodaje u red za tačno određeno vreme. Na primer, ako prenos signala treba da se desi nakon jedne nanosekunde, događaj se dodaje u red za vreme +1ns. Nulto odlaganje je takođe dozvoljeno, ali ga i dalje treba zakazati: za ove slučajeve se koristi Delta odlaganje, što predstavlja beskrajno mali vremenski korak. Simulacija se menja između dva režima: izvršenje izvođenja, gde se aktivirani iskazi procenjuju i obrada događaja, gde se događaji u redu obrađuju.
VHDL ima konstruktore koji se bave paralelizmom svojstvenim za hardverske projekte, ali ovi konstrutkori(procesi) se razlikuju u sintaksi od paralalenih konstruktora u Adi(zadaci). Kao u Adi, VHDL je strogo tipiziran i nije osetljiv na mala i velika slova. Da bi direktno predstavljali operacije koje su uobičajene u hardveru, ima mnogo karakteristika u VHDL-u koje nisu pronađene u Adi, kao što je prošireni skup Boolean operatora uključujuci negaciju konjukcije(nand) i negaciju disjunkcije(xor).
VHDL ima ulazno-izlazne mogućnosti i može da se koristi kao opšti jezik za obradu teksta, ali datoteke se najčešće koriste od strane simulacionog modela testbench za podatke o stimulaciji ili verifikaciji. Postoje neki VHDL kompajleri koji grade izvršne binarne datoteke. U ovom slučaju, možda bi bilo moguće koristiti VHDL da napiše testbench da bi potvrdio funkcionalnost dizajna pomoću datoteka na računaru domaćina da definiše stimulanse, da interaktuje sa korisnikom i da uporedi rezultate sa očekivanim. Međutim, većina dizajnera ostavlja ovaj posao simulatoru.
Relativno je lako neiskusnom programeru da proizvede kod koji uspešno simulira, ali koji se ne može integrisati u pravi uređaj, ili je preveliki da bi bio praktičan. Jedna posebna zamka je slučajna proizvodnja prozirnih reza više nego D flip-flopova kao elemenata za skladištenje.
U VHDL IDE-u se može dizajnirati hardver (za FPGA implementaciju kao što su Xilinx ISE, Altera Quartus, Synopsys Synplify ili Mentor Graphics HDL Desinger) za proizvodnju šeme željenog strujnog kola. Posle toga, generisana šema može biti verifikovana pomoću simulacionog softvera koji prikazuje grafike ulaza i izlaza kola nakon generisanja odgovarajućeg testbench-a. Da biste generisali odgovarajući testbench za određeno kolo ili VHDL kod, unosi moraju biti pravilno definisani. Na primer, za unos sata, potrebna je petlja ili iterativni izraz.
Krajnji cilj je da kada se VHDL model prevede na "kapije i žice" koji su mapirani na programabilni logički uređaj kao što je CPLD ili FPGA, onda je tekući hardver konfigurisan, umesto da se VHDL kod “izvršava” kao na nekom obliku procesorskog čipa.
Prednosti
Ključna prednost VHDL-a, kada se koristi za dizajn sistema, jeste da omogućava ponašanje potrebnog sistema da bude opisano (modelirano) i verifikovano(simulirano) pre nego što alati sinteze prevode dizajn u stvarni hardver (kapije i žice).
Druga prednost je što VHDL dozvoljava opis paralelnog sistema. VHDL je jezik za protok podataka, za razliku od proceduralnih računskih jezika kao što su BASIC, C i asembler, koji svi rade sekvencijalno, jednu instrukciju istovremeno.
VHDL projekat je višenamenski. Kada se jednom kreira, blok za izračunavanje može se koristiti u mnogim drugim projektima. Međutim, mnogi formacijski i funkcionalni blok parametri se mogu podesiti (parametri kapaciteta, veličina memorije, baza elemenata, sastav bloka i medjusobno povezane strukture).
VHDL projekat je prenosiv. Kada se kreira za jednu bazu elemenata, projekat računarskog uređaja može se preneti na drugu bazu elemenata, na primer VLSI sa različitim tehnologijama.
Velika prednost VHDL-a u poređenju sa originalnim Verilog-om jeste to što VHDL ima sistem s punim tipom. Dizajneri mogu da koriste sistem tipa da napišu mnogo više strukturiranog koda (posebno deklarišući vrste zapisa).
Sintetizabilni konstrukti i VHDL šabloni
VHDL se često koristi za dva različita cilja: simulacija elektronskih dizajna i sinteza takvih dizajna. Sinteza je proces u kojem se VHDL kompajlira i mapira u tehnologiju implementacije kao što je FPGA ili ASIC. Mnogi FPGA proizvođači imaju besplatne (ili jeftine) alate za sintetizaciju VHDL-a za upotrebu sa svojim čipovima, gde su ASIC alati često veoma skupi.
Nisu svi konstrukti u VHDL primereni za sintezu. Na primer, većina konstruktora koji se eksplicitno bave vremenom kao što je čekanje od 10 ns; nisu sintetizovani uprkos tome što su validni za simulaciju. Iako različiti alati za sintezu imaju različite mogućnosti, postoji zajednički sintetizovani podskup VHDL-a koji definiše koji jezički konstrukti i idiomi mapiraju u obični hardver za mnoge alate za sintezu. IEEE 1076.6 definiše podskup jezika koji se smatra zvaničnim podskupom sinteze. Uopšteno se smatra "najboljom praksom" za pisanje vrlo idiomatskog koda za sintezu, jer rezultati mogu biti netačni ili suboptimalni za nestandardne konstrukcije.
O kašnjenjima Jezik VHDL uz niz ključnih reči koje služe za modeliranje funkcionalnosti kola nudi i neke jezične konstrukte koji omogućavaju specificiranje kašnjenja. Na primer, već smo se upoznali s naredbom oblika:
f <= a AND b AFTER 10 ns ;