VHDL_MaterialyNaStrone.DOC

(1424 KB) Pobierz
VHDL - język opisu sprzetu

 

 

 

 

 

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 7segmentowym              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

 


1.                Wstęp

 

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.

 

2.                Podstawowe pojęcia języka VHDL

 

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.

 

2.1.           Predefiniowane typy

 

Język VHDL posiada następujące predefiniowane typy danych:

...

Zgłoś jeśli naruszono regulamin