Samouczki VHDL: 13 ważnych pojęć

W tym samouczku VHDL omówimy niektóre podstawowe pojęcia związane z technologią VHDL i kilka przykładów z kodowaniem. Samouczek VHDL jest podzielony na następujące segmenty:

TEMATY DYSKUSJI

A. Co to jest VHDL?

B. Historia i standaryzacja

C. Procedury projektowania VHDL

D. Niektóre zasady i podstawowe informacje o VHDL

E. Składnie i kilka ważnych pojęć dotyczących pisania kodów VHDL

F. Symulatory VHDL dla samouczka VHDL

VHDL || Co to jest VHDL?

Pełna forma VHDL oznacza język opisu sprzętu bardzo szybkiego układu scalonego (VHSIC-HDL).

Jak sama nazwa wskazuje, VHDL jest językiem opisu sprzętu lub specjalnym językiem programowania, który opisuje implementacje sprzętowe systemu cyfrowego i obwodów. Jest to język silnie typowany i należy pamiętać, że nie jest to język programowania.  

Historia i standaryzacja

Departament Obrony USA ma znaczący wkład w nowoczesne pole technologiczne. Zaowocował zbyt wieloma wspaniałymi pomysłami i innowacjami. US Defense opracowało również VHDL w 1983 roku. Został on opracowany w celu dokumentowania zachowania układów scalonych specyficznych dla aplikacji.

Później niektóre pomysły zostały wdrożone z języków programowania Ada. VHDL został ustandaryzowany po raz pierwszy w 1987 roku. Dodano kilka typów danych kilku typów, w tym ciągi znaków oraz numeryczne i logiczne.

Normalizacja

VHDL lub język opisu sprzętu bardzo szybkiego układu scalonego (VHSIC-HDL) jest znormalizowany przez standard IEEE 1076. Jest aktualizowany od urodzenia i przeszedł wiele zmian. Przyjrzyjmy się niektórym standardowym poprawkom i głównym aktualizacjom.

WersjeNowości
IEEE 1076 - 1987Weryfikacja i standaryzacja z US Defense.
IEEE 1076 - 1993Pojawiło się największe wydanie i jest to najczęściej używana wersja.
IEC 61691-1-1-1: 2004IEC przyjęła wersję IEEE 1076-2002
IEEE 1076-2008Zaktualizowano kilkoma głównymi zmianami, takimi jak - Wprowadzenie typów ogólnych w pakietach i użycie nazw zewnętrznych
IEC 61691-1-1-1: 2011IEC przyjęła wersję IEEE 1076-2008
Sprawdź standaryzację tutaj, Tabela samouczków VHDL – 1

Projekt VHDL

Projekt VHDL ma kilka jednostek projektowych. Są one znane jako - jednostka, architektura, konfiguracja i pakiet.

Jednostka: Jednostka definiuje widoki zewnętrzne modelu, który jest symbolem.

architektura: Architektura definiuje funkcjonalność modelu, który jest schematyczny.

Konfiguracja: Konfiguracja służy do kojarzenia architektury z jednostką.

Pakiet: Pakiet to zbiór informacji, do których mogą się odwoływać moduły VHDL. Pakiet VHDL składa się z dwóch części. Są to - deklaracja paczki i treść paczki.

1200px Vhdl podpisany adder source.svg
Podstawowy kod zaprojektowany w samouczku VHDL, źródło obrazu - Vhdl_signed_adder.pngKs.Ragnarok Praca pochodna: Bernarda LadenthinaPodpisane źródło dodatku VHDLCC BY-SA 3.0

Deklaracja podmiotu

Ogólną strukturę deklaracji podmiotu przedstawiono poniżej -

PODMIOT < Nazwa jednostki > IS

          Deklaracje ogólne

          Deklaracje portowe

JEDNOSTKA KOŃCOWA <Nazwa jednostki>;

  • może być alfabetyczny / numeryczny lub alfanumeryczny.
  • Deklaracje ogólne służą do przekazywania informacji do modelu.
  • Deklaracje portów służą do opisu pinów wejść i wyjść.
  • Jednostka może zostać zamknięta na kilka sposobów.
    • JEDNOSTKA KOŃCOWA <Nazwa jednostki>;
    • JEDNOSTKA KOŃCOWA;
    • KONIEC;

Deklaracje portowe

Ogólną strukturę deklaracji portów podano poniżej -

PODMIOT < Nazwa jednostki > IS

          Deklaracje ogólne

          - Deklaracje portowe:

PORT (

          SYGNAŁ CLK, CLR: BIT;

          q: BIT WYJŚCIOWY

          - zwróć uwagę, że w ostatnim wierszu deklaracji nie ma średnika.

          );

JEDNOSTKA KOŃCOWA <Nazwa jednostki>;

Struktura deklaracji portowej: object_name : ;

  • Klasa: Klasa to to, co można zrobić z obiektem. Tutaj klasa jest sygnałem. Należy pamiętać, że SYGNAŁ nie jest zapisywany podczas pisania programu; raczej zakłada się i nie jest wymagane.
  • Nazwa_obiektu: To jest identyfikator.
  • Tryb: Określa kierunek.

W - Wkład

WYJŚCIE - Wydajność

WEJŚCIE - dwukierunkowa

BUFOR - Wyjście z wewnętrzną informacją zwrotną

  • Typ: Typ określa, co może być zawarte w obiekcie.

Deklaracje ogólne

Ogólna struktura deklaracji ogólnych jest podana poniżej -

JEDNOSTKAnazwa_jednostki> IS

          RODZAJOWY (

                    STAŁA tplh, tphl: czas := 5 ns;

                    tphz, tplz: CZAS := 3ns;

                    default_value: INTEGER: = 1;

                    cnt_dir: STRING := "W GÓRĘ"

                    - zwróć uwagę, że w ostatnim wierszu deklaracji nie ma średnika.

                    );

          Deklaracje portowe

          END ENTITYnazwa_jednostki>;

  • Wartości ogólne można nadpisać podczas kompilacji.
  • Generic musi mieć wytrzymałość na stałą podczas kompilacji programu.  

Zauważ, że przyjmuje się słowo kluczowe CONSTANT i nie jest wymagane do zapisu.

Architektura

  • Schemat analogii: Schemat analogii zawiera opis funkcjonalności modelu i związanego z nim synchronizacji.  
  • Architektura modelu powinna być powiązana z ENTITY.
  • Jednostka może mieć wiele powiązanych architektur.
  • Instrukcje architektury są wykonywane jednocześnie.
  • Niektóre style architektury -
  • Behawioralny: model behawioralny opisuje sposób działania projektów.

RTL: RTL opisuje, w jaki sposób projekty mogą być implementowane przy użyciu rejestrów.

Funkcjonalne: nie obejmuje czasu.

  • Strukturalny: Wykonanie struktury poziomu bramy.
  • Przepływ danych: Implementacja tabeli prawdy.
  • Architektura kończy się -
    • KONIEC ARCHITEKTURY ;
    • KONIEC ARCHITEKTURY
    • KONIEC;

Ogólna struktura pisania architektury:

ARCHITEKTURA <identyfikator> OF <identyfikator_jednostki> IS

          SYGNAŁ sygnał_1: INTEGER: = 1;

          STAŁA cnst: = BOOLEAN: = true;

          TYP PROCESU JEST (szer., X, Y, Z);

          - Deklaracje atrybutów

          - Specyfikacje atrybutów

          - Deklaracje podprogramów

          - Treść podprogramu

ZACZYNAĆ

          Instrukcje procesu

          Jednoczesne wywołania proceduralne

          Przyporządkowanie sygnału

          Generuj wyciągi

KONIEC ARCHITEKTURY <identyfikator>;

IMG18 1024x576 1
Schemat RTL bramki AND, z samouczka VHDL

systemu     

Jak omówiono wcześniej, plik cKonfiguracja służy do kojarzenia architektury z jednostką. Kojarzenie lub łączenie jest konieczne, ponieważ ENTITY nie może działać, dopóki architektura nie zostanie z nim skojarzona. Ogólna struktura konfiguracji jest podana poniżej.

KONFIGURACJA  < identyfikator > OF < Nazwa jednostki > IS

          DLA < nazwa_architektury >

                    DLA < nazwa_instancji >: nazwa_komponentu > UŻYWAĆ < jednostka > ( architektura >)

                    KONIEC DLA;

                    DLA < nazwa_instancji >: nazwa_komponentu > UŻYWAĆ < nazwa_konfiguracji >

                    KONIEC DLA;

          KONIEC DLA;

KONFIGURACJA KONIEC < identyfikator >;

pakiety

Pakiety VHDL to jedna cała jednostka całego systemu. Jest to główny cel wdrożenia VHDL. Pakiet składa się z dwóch części. Jak wspomniano wcześniej, deklaracje pakietów i treść pakietu tworzą kompletny pakiet.

VHDL dostarcza dwa wbudowane pakiety.

Kilka zasad i podstawowe informacje o samouczku VHDL

Omówmy kilka podstawowych informacji, zanim przejdziemy do zapoznania się z samouczkiem VHDL.

1. Zarezerwowane słowa kluczowe: VHDL ma niektóre słowa kluczowe jako zastrzeżone (których nie można używać do deklarowania zmiennej).

2. Części: VHDL ma dwa etapy lub części do tworzenia modelu. Jedna to symulacja, a druga to synteza i symulacja.

3. Język z uwzględnieniem wielkości liter: VHDL nie rozróżnia wielkości liter (w większości przypadków).

4. Komentowanie: Aby skomentować instrukcję w edytorze kodu VHDL, zacznij zdanie od -, na przykład:

- To jest komentarz w VHDL.

5. Wypowiedzenie: Kody VHDL i każdy pojedynczy wiersz kodu jest zakończony średnikiem (w razie potrzeby). 

6. Wrażliwość na przestrzeń: VHDL nie jest wrażliwy na białe znaki.

Składnie i niektóre ważne koncepcje samouczka VHDL dotyczące pisania kodów VHDL

  1. Tablica z przykładami
  2. Proces z przykładami
  3. IF - THEN - implementacja ELSIF z przykładami.
  4. Instrukcja CASE
  5. DLA PĘTLI

A. Tablica

Tablica przechowuje wartość. Jest to typ danych zdefiniowany przez użytkownika do przechowywania wartości. Tablica może zawierać zmienne typu signal, constants.

Ogólna struktura deklarowania tablicy jest podana poniżej:

TYP nazwa_tablicy IS SZYK (zasięg) OF typ danych;

Dla przykładu,

TYPE lambdageeks IS ARRAY (od 0 do 9) OF std_logic_vector (0 UPTO 9);

B. Instrukcja procesu

Proces to równoczesna i zsynchronizowana instrukcja. Wprowadza twierdzenia chronologiczne. Jeśli model jest potrzebny, wiele procesów działa równolegle.

Proces składa się z dwóch części. Wykonują proces, a następnie czekają na następny warunek.

SKŁADNIA:

wygląda tak lista_ wrażliwości

          Oświadczenia

zacząć

          informacje chronologiczne;

koniec procesu;

C. JEŚLI - WTEDY - wdrożenie ELSIF

Te instrukcje służą do implementacji warunku i ich wyniku.

Warunek if może mieć nieskończoną liczbę gałęzi zgodnie z wymaganiem. Możliwa jest również znaczna liczba stanów elsif. Ale w pętli if może istnieć tylko jeden warunek. Pętla if jest zakończona instrukcją end if. Jeśli podany warunek jest prawdziwy, to wejdzie w pętlę i wykona instrukcję. Jeśli to się nie powiedzie, przejdź do instrukcji else lub elsif.

Składnię instrukcji podano poniżej.

SKŁADNIA

          if Conditional_boolean_expression następnie

                    instrukcja 1

          elsif Conditional_boolean_expression następnie

                    instrukcja 2

          . . .

          więcej

                    instrukcja 3

          zakończenia if;

D. Oświadczenie CASE

Instrukcja Case sprawdza, która instrukcja zostanie wykonana. Instrukcja case może być również rozgałęziona jako pętle IF-ELSE.

SKŁADNIA

[etykieta]: walizka < wyrażenie warunkowe > is

          jeśli chodzi o komunikację i motywację < wybór> =>

                    instrukcja 1

          jeśli chodzi o komunikację i motywację <wybór> =>

                    instrukcja 2

          ...

          jeśli chodzi o komunikację i motywację <wybór> =>

                    oświadczenie

zakończenia walizka [etykieta];

E. pętla FOR

Pętla for to ciągłe wykonywanie instrukcji zgodnie z warunkami brzegowymi.

Dla każdej pętli FOR potrzebujemy iteratora, który wykona operacje w pętli for. Jest również znany jako identyfikator. Domyślnie jest to liczba całkowita i nie ma potrzeby deklarowania iteratora. Jest to jedna z najczęściej używanych pętli do tworzenia złożonych modeli. Jest bardziej znany niż pętle while.

SKŁADNIA

[etykieta]: dla iterator in zasięg pętla

          Oświadczenie 1

          Oświadczenie 2

          ...

          Oświadczenie nr

pętla końcowa [etykieta];

Symulatory VHDL dla samouczka VHDL

Poniżej wymieniono niektóre ze słynnych symulatorów VHDL używanych do implementacji VHDL.

  1. Xilinx Vivado: Najbardziej znanym symulatorem VHDL jest Xilinx Vivado. Xilinx dostarcza programowalne urządzenia logiczne. Użyjemy tego symulatora w następnej części samouczka VHDL. 
  2. Kadencja Incisive: Poprzednia wersja była znana jako NC-VHDL.
  3. Porównanie VHDL: Rozwija ją Symphony EDA. To jest bezpłatne dla konsumentów. 
  4. GDL: Jeden ze słynnych darmowych symulatorów VHDL. 
  5. Bagażnik: Symulator opracowała organizacja Freerangefactory. 
  6. NVC: Nick Gasson opracował kompilator open source VHDL. 
  7. Plac zabaw EDA: Kolejna darmowa wersja oparta na przeglądarce internetowej. 
  8. Opis VCS-MX.
Symulatory dla VHDL, użyjemy XILINX w naszym samouczku VHDL Image Credit - ™ / ®Xilinx, Inc., Logo Xilinx, oznaczony jako domena publiczna, więcej informacji na ten temat Wikimedia Commons

Stwórz swój pierwszy projekt przy użyciu VHDL. Sprawdź następną część samouczka VHDL.

Aby uzyskać więcej artykułów związanych z elektroniką, kliknij tutaj!

Zostaw komentarz