Loading AI tools
język programowania Z Wikipedii, wolnej encyklopedii
VHDL (ang. Very High Speed Integrated Circuit Hardware Description Language) – język opisu sprzętu używany w komputerowym projektowaniu układów cyfrowych typu FPGA i ASIC.
Język powstał w latach 80. w ramach projektu finansowanego przez Departament Obrony USA. Miał być używany do dokumentowania zachowania układów ASIC. W 1987 roku stał się standardem IEEE. Język ten ma rozbudowaną składnię, dzięki czemu jest bardzo elastyczny.
VHDL ma składnię podobną do języka Pascal i Ada[1]. Jest niejako potomkiem języka ALGOL. VHDL nie jest case sensitive, tzn. nie rozróżnia wielkości liter w kodzie.
Początkowo języka używano do dokumentowania układów ASIC, ale pomysł symulowania układów opisanych językiem VHDL był na tyle kuszący, że szybko opracowano symulatory logiczne mogące czytać pliki VHDL. Zmieniła się więc funkcja języka, gdyż zaczęto używać go do tworzenia i testowania modeli układów ASIC. Obecnie można układ zdefiniowany przy pomocy VHDL nie tylko zasymulować, ale także stworzyć jego fizyczną aplikację, np. w ramach architektury FPGA. W razie potrzeby nie nastręcza trudności zmiana technologii docelowej, gdyż jest ona niezależna od samego opisu projektu w VHDL.
Standard języka był rewidowany trzykrotnie: w latach 1993, 2002 i 2008. Wersja z roku 1993 (IEEE Std 1076-1993) jest obecnie najpopularniejsza (większość narzędzi jest zgodna z tym standardem). Na początku roku 2009 opublikowano najnowszą wersję standardu – IEEE Std 1076-2008[2], popularnie zwaną VHDL 2008. Ten dokument prezentuje nową, znacznie usprawnioną wersją języka, zawierającą rozszerzoną składnię, większy zestaw operatorów, uporządkowane standardowe pakiety biblioteczne, dołączony interfejs proceduralny dla C/C++ (VHPI), podzbiór języka PSL itp.
VHDL jest przede wszystkim językiem opisu sprzętu. Może być jednak używany jako język programowania ogólnego przeznaczenia, pod warunkiem że ma się dostęp do symulatora, na którym można uruchomić kod.
Do zapisu i pamiętania danych w języku VHDL służą obiekty. Podstawowymi obiektami języka VHDL są sygnały, zmienne, stałe i pliki. Podczas deklarowania obiektów muszą być także zdefiniowane typy, które służą do wyrażania wartości obiektów.
Przykładowa deklaracja zmiennej:
variable nazwa_zmiennej : nazwa_typu [ograniczenie] [:=wartosc_poczatkowa];
Obiekty operują na różnych typach danych. Typy określa się poprzez podanie nazwy, zbioru wartości oraz zbioru operacji. Wyróżnia się typy skalarne (numeryczne, wyliczeniowe oraz fizyczne), typy złożone (tablice oraz rekordy) oraz typy wektorowo-skalarne.
Atrybuty pozwalają na identyfikację pewnych cech deklarowanych typów i obiektów. Atrybut związany jest z typem lub obiektem przez apostrof i zwraca wynik stanowiący poszukiwaną cechę obiektu lub typu. W komercyjnych zastosowaniach stosowane są także specyficzne atrybuty, opisane w dokumentacji użytkowej. Można również definiować własne atrybuty.
Pakiety (ang. package) są to zbiory, w których umieszczane są deklaracje typów i podtypów, stałych i sygnałów, a także funkcje i procedury. Pakiety stosowane są w projektach, aby nie opisywać typowych prostych modeli np. przerzutników, multiplekserów czy rejestrów (modele te określane są "prymitywami"). Pakiety mogą być standardowe (ujęte w normach IEEE) lub niestandardowe (tworzone indywidualnie).
Instrukcje współbieżne to wszystkie instrukcje, które można bezpośrednio w ciele architektury. Zachowanie układu jest niezależne od kolejności instrukcji przyporządkowania sygnałów. W języku VHDL istnieje sześć takich instrukcji:
Instrukcje sekwencyjne służą do opisu sekwencyjnych oraz kombinacyjnych układów cyfrowych. Stosowane są, gdy trzeba wprowadzić kolejność operacji lub uwarunkowania czasowe wewnątrz opisywanych układów. Istnieją dwie takie instrukcje:
Funkcja jest podprogramem, którego parametrami są wyłącznie syngały wejściowe i który jako wynik zwraca jedną wartość określonego typu. Funkcja jest traktowana jako wyrażenie, które można stosować tylko w obrębie procesu lub podprogramu. Funkcja przed wywołaniem musi być zadeklarowana. Deklarację funkcji umieszcza się globalnie w odrębnym i zadeklarowanym pakiecie lub lokalnie w nagłówku procesu.
Procedura jest podprogramem, który na liście parametrów ma zarówno wejścia i wyjścia. Wywołanie procedury jest traktowane jak instrukcja, która może być współbieżna lub sekwencyjna, zależne od miejsca jej użycia. Procedura może zwracać więcej niż jeden wynik. Podobnie jak funkcja, procedura musi być zadeklarowana globalnie lub lokalnie.
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.