Język opisu sprzętu VHDL
Materiały pomocnicze dla przedmiotu
"Technika cyfrowa i mikroprocesorowa" II/III RA
Krzysztof Kołek
Katedra Automatyki, Akademia Górniczo-Hutnicza
Al. Mickiewicza 30, 30-059 Kraków
tel. (0-12) 617-20-97
kko@ia.agh.edu.pl
Spis treści
1. Wstęp 5
2. Podstawowe pojęcia języka VHDL 7
2.1. Predefiniowane typy 7
2.2. Logika wielowartościowa 7
2.3. Komponenty 8
2.4. Pakiety 9
2.5. Podprogramy 9
2.6. Operatory 10
2.7. Sygnały, zmienne, stałe 11
2.8. Definicja i użycie typów 14
2.9. Równoległe oraz szeregowe wykonanie instrukcji. Koncepcja procesu 15
2.10. Zawieszanie wykonania procesu 17
2.11. Instrukcje wykonywane szeregowo 19
2.12. Cykl "delta" 21
2.13. Atrybuty 22
2.14. Pozostałe cechy języka 23
2.15. Przeładowanie operatorów 23
3. Strukturalny opis sprzętu 24
3.1. Sumator 4-bitowy. Opis strukturalny 24
3.2. Generator numerów górników. Projekt w postaci schematu elektrycznego 30
4. Behawioralny opis sprzętu 34
4.1. Wielokrotne wywołanie procesu 34
4.2. Definiowanie rejestrów 35
4.3. Czterobitowy rejestr z równoległym ładowaniem i asynchronicznym zerowaniem 37
4.4. Czterobitowy binarny licznik asynchroniczny 38
4.5. Konwerter kodu BCD na kod wyświetlacza siedmiosegmentowego 39
4.6. Multiplekser 4 na 1 39
4.7. Czterobitowy rejestr przesuwający 40
4.8. Czterobitowy licznik synchroniczny z wejściem zezwalającym na zliczanie, asynchronicznym zerowaniem i synchronicznym ładowaniem 40
4.9. Bufor trójstanowy 41
4.10. Funkcja konwersji typu bit_vector do typu integer 41
4.11. Automat o skończonej liczbie stanów 42
4.12. Implementacja układów z rodziny TTL 43
4.12.1. Implementacja układu 7400 44
4.12.2. Implementacja układu 74138 44
5. Wykaz funkcji języka VHDL 46
5.1. Atrybuty 46
5.2. Definicja tablic 47
5.3. Instrukcja case 48
5.4. Scalanie wartości (ang. aggregate) 49
5.5. Typ Bit 50
5.6. Typ Bit_Vector 50
5.7. Typ Boolean 51
5.8. Typ Character 51
5.9. Pakiet 51
6. Przykłady 52
6.1. Konwerter liczby binarnej na kod BCD. Wyświetlenie liczby BCD na wyświetlaczu 7‑segmentowym 54
6.2. Częstotliwościomierz 58
6.3. Generator numerów górników 62
6.4. Generator sygnału wizyjnego dla monitora monochromatycznego 68
Język VHDL (skrót pochodzi od dwóch innych skrótów: V - Very High Speed Integrated Circuit oraz HDL - Hardware Description Language) rozwijany był na początku lat 80-tych do opisu niezależnych metod opisywania układów elektronicznych przez American Department of Defence (ang. DoD). Po raz pierwszy został zestandaryzowany w roku 1983, a następnie standaryzację powtórzono w latach 1987 oraz 1993.
Główne cechy języka VHDL to:
· równoległość przejawiająca się w możliwości zdefiniowania potrzeby oraz wykonywania równoległego (jednoczesnego w czasie) przetwarzania różnych porcji informacji,
· strukturalność oznaczająca możliwość hierarchicznego opisywania projektów. W opisie hierarchicznym projekt zbudowany jest z połączonych bloków o mniejszym stopniu złożoności, które z kolei zbudowane są z prostszych bloków, które zawierają w sobie jeszcze prostsze bloki i tak dalej aż dochodzimy do bloków podstawowych, którymi np. w przypadku układów cyfrowych są bramki logiczne. Strukturalność oznacza możliwość opisu sprzętu od poziomu systemu do poziomu bramki,
· "redesign" - typowy projekt cyfrowego układu elektronicznego zawiera w sobie do 80% fragmentów z innych projektów. Nowe projekty nie powstają w pustce. Projektanci wykorzystują poprzednio zdobyte doświadczenia przenosząc opracowane i poznane uprzednio rozwiązania do nowych projektów. Proces ten określa się pochodzącym z języka angielskiego słowem redesign,
· możliwość wykonywania instrukcji sekwencyjnie (czyli w sposób przeciwstawny do wykonywania równoległego) oznaczająca możliwość definiowania czynności wykonywanych jedna po drugiej, w sposób analogiczny jak w tradycyjnych językach programowania. ,
· zdolność do jednolitego opisywania struktury układów zbudowanych w oparciu o różne technologie stwarzająca możliwość przenoszenia projektów pomiędzy różnymi platformami sprzętowymi,
· możliwość symulowania projektowanych układów; możliwość tworzenia sekwencji sygnałów testujących. Istnieje możliwość wbudowania sygnałów testowych w projekt,
· "samodokumentowanie" osiągnięte dzięki prostej i przejrzystej strukturze,
· modelowanie układów z uwzględnieniem upływającego czasu.
Programowanie w języku VHDL może odbywać się na różnych poziomach abstrakcji. Są to:
· warstwa topograficzna (ang. layout) specyfikująca połączenia z uwzględnieniem również zależności czasowych i efektów analogowych. Przykładowo realizuje opóźnienia propagacji sygnału oraz blokowanie sygnałów poniżej minimalnej zadanej szerokości,
· warstwa logiki zawierająca informację o funkcjach, architekturze, technologii i szczegóły zależności czasowych. Podstawowo opisuje zależności logiczne między blokami,
· warstwa RTL (ang. Register Transfer Level) - zawiera opis każdego rejestru oraz logiki między nimi. Zawiera informacje o architekturze ale nie o technologii. Zależności czasowe nie są specyfikowane. Istotna jest tylko informacja o zegarach taktujących,
· warstwa behawioralna (ang. behavioural) opisująca funkcje projektu. Zawiera tak dużo informacji o zależnościach czasowych, jak jest to niezbędne do opisaniu funkcji projektu.
Każdy element opisywany w języku VHDL może posiadać dowolną liczbę definicji w każdej z omówionych warstw. Umożliwia to skupienie się w różnych fazach projektu na różnych jego aspektach.
Język przypomina języki programowania typu C lub Pascal jednak jego podstawowym celem nie jest wykonywanie obliczeń. Zadaniem języka jest wspieranie całości procesu projektowania układów cyfrowych poczynając od symulacji poprzez modelowanie, testowanie, implementacje oraz tworzenie dokumentacji. Podstawowym celem języka VHDL jest "zaprogramowanie" programowalnego układu logicznego niezależnie od technologii w jakiej ten układ został wytworzony (ASIC, FPGA, PLD, itp.). Dotyczy to również układów opracowywanych w przyszłości, których parametry nie są jeszcze aktualnie znane.
Podstawowym ograniczeniem języka VHDL jest, iż pierwotnie był projektowany wyłącznie do systemów cyfrowych. Aktualnie trwają prace nad standaryzacją wersji dla układów analogowych oraz nad opracowaniem analogowych programowalnych i konfigurowalnych układów scalonych o podobnym stopniu elastyczności jaki osiągnęły układy FPGA w technice cyfrowej.
Dostępne oprogramowanie wspomagające użytkowanie języka zwykle automatycznie tworzy i optymalizuje struktura komórek i połączeń podczas programowanie programowalnych układów logicznych. Język VHDL wydaje się być szczególnie użyteczny dla układów FPGA o 10-20 tysiącach komórek. Narzędzia języka HVDL dla układów FPGA kosztują od 1 do 20 tysięcy USD (w porównaniu z cenami 50-100 tysięcy USD dla układów ASIC).
Niniejsze opracowanie przedstawia skrótowy opis struktur języka VHDL ukierunkowany na wykorzystanie do programowania programowalnych układów logicznych firmy XILINX z wykorzystanie firmowego oprogramowania wspomagany przez pakiet oprogramowanie ORCAD w wersji 7.11. Należy zwrócić uwagę na występujące różnice między opisem standardu języka VHDL oraz jego implementacją w programie ORCAD. Praktyczna implementacja zawiera bowiem istotne ograniczenia w stosunku do ogólnej specyfikacji języka podyktowane kłopotami w realizacji niektórych cech w oparciu o aktualną technologię. Specyfikacja języka, będąc bardzo elastyczną, uwzględnia cechy, które aktualnie mogą być wyłącznie symulowane w sposób programowy (nie jest możliwa ich praktyczna realizacja z zastosowaniem okładów firmy XILINX) nie należy jednak wykluczyć ich praktycznej realizacji w oparciu o nowe rozwiązania technologiczne.
Poniżej przedstawiono podstawowe pojęcia występujące w opisie języka VHDL. Należy pamiętać, iż język VHDL został zaprojektowany jako język opisu sprzętu. Powoduje to istotne różnice w stosunku do języków programowania ogólnego przeznaczenia. Język VHDL wykazuje duże podobieństwa składniowe do języków typu Pascal lub C niemniej podobnie wyglądające instrukcje mogą charakteryzować się dramatycznie odmiennym zachowaniem. W szczególności dotyczy to zasad określania zależności czasowych oraz pracy równoległej.
Język VHDL posiada następujące predefiniowane typy danych:
...
Transport-materialy