VHDL/Składnia
W tym rozdziale omówiona zostanie składnia języka VHDL, która to jest podobna do składni języków takich, jak Pascal i Ada.
Komentarze
[edytuj]Komentarz w języku VHDL rozpoczyna się dwoma myślnikami (--), a jego ważność ogranicza koniec linii. Komentarz nie musi rozpoczynać linii.
-- To jest komentarz
kod VHDL
Stosowanie komentarzy pozwala na opisanie kodu, co znacznie pomaga w jego zrozumieniu, szczególnie osobom, które nie są jego autorami.
Identyfikatory
[edytuj]Identyfikatorem może być dowolny ciąg alfanumeryczny (łącznie ze znakami podkreślenia) spełniający następujące warunki:
- zaczyna się od litery,
- kończy się znakiem innym niż podkreślenie,
- nie ma dwóch znaków podkreślenia następujących zaraz po sobie.
Uwaga!
|
Przykłady identyfikatorów:
-- te identyfikatory są równoznaczne:
MojaZmienna
mojazmienna
mOjAZMIENNa
-- ale ten już jest innym identyfikatorem niż powyższe:
Moja_Zmienna
Liczby
[edytuj]Reprezentacja dziesiętna
[edytuj]Liczby mogą być reprezentowane zarówno w systemie dziesiętnym, jak i każdym innym, gdzie baza mieści się pomiędzy 2 i 16. Jeśli w ciągu cyfrowym znajdzie się znak kropki (.), to ciąg ten jest interpretowany jako liczba zmiennopozycyjna, w przeciwnym wypadku - gdy kropki nie ma - jako liczba całkowita. W ciągu tym może również znajdować się znak podkreślenia (_) wykorzystywany do czytelnego zapisu długich liczb. Podkreślenie nie może być jednak ani pierwszym znakiem, ani ostatnim - nie może również następować zaraz po sobie. Do wyrażenia liczb w formacie wykładniczym stosuje się (zaraz po ciągu cyfr) znak E, za którym określa się wykładnik. Wykładnik może zaczynać się od znaku plus (+) lub minus (-) i zawiera jedynie cyfry. Przykłady zapisu liczb:
-- liczby całkowite:
0 1 123_456_789 987E6
-- liczby zmiennopozycyjne:
0.0 0.5 2.718_28 12.4E-9
Inne systemy liczbowe
[edytuj]Liczby o innej bazie niż 10 zapisuje się w ten sposób:
- liczba dziesiętna określająca bazę (np. 16),
- znak #,
- właściwa liczba (o jej zapisie poniżej),
- znak #,
- ew. wykładnik (rozpoczynany znakiem E).
Ogólnie format zapisu wspomnianej właściwej liczby jest taki sam, jak dla liczb dziesiętnych z tą różnicą, że dla systemów, gdzie baza jest większa od 10, stosuje się początkowe litery alfabetu łacińskiego (wielkość znaków nie gra roli), a wykładnik (wyrażony dziesiętnie) można określić dopiero po znaku #. Dziesiętną liczbę całkowitą 196 można zapisać zatem tak:
2#1100_0100# 16#C4# 4#301#E1
a liczbę zmiennopozycyjną 4095.0 tak:
2#1.1111_1111_111#E+11 16#F.FF#E2
Znaki
[edytuj]W języku VHDL można używać jedynie znaków ASCII. Pojedynczy znak otacza się apostrofami ('), na przykład:
'A' '*' ''' ''
Ciągi znaków
[edytuj]Ciąg znaków otacza się cudzysłowami ("). Jeśli istnieje potrzeba, aby zawrzeć w ciągu sam cudzysłów, należy napisać go podwójnie. Ciągi znaków mogą być używane jako wartości dla obiektów będących tablicą znaków. Przykłady ciągów znaków:
"Jestem napisem" -- zwykły ciąg znaków,
"" -- pusty ciąg,
"Napis w napisie: ""Jestem napisem"". " -- ciąg zawierający cudzysłów.
Uwaga! |
Ciągi bitów
[edytuj]Język VHDL wprowadza strukturę zwaną ciągiem bitów wykorzystywaną do przypisywania wartości tablicom bitów. Ciąg bitów nie musi być zapisany w systemie dwójkowym (B od Binary) - mogą to być systemy ósemkowy (O od Octal) i szesnastkowy (X od heXadecimal). Aby parser wiedział jakiego systemu liczbowego użyto, taki ciąg należy poprzedzić znakiem go specyfikującym: B, O lub X. Po specyfikatorze zapisuje się liczbę otoczoną - podobnie jak ciągi tekstowe - cudzysłowami. Znakami użytymi do zapisania tej liczby mogą być tylko cyfry odpowiednie dla danego systemu i znak podkreślenia, który nie może być ani pierwszym znakiem, ani ostatnim, ani występować zaraz po sobie. Użyta tu liczba może być tylko liczbą całkowitą. Przykłady ciągów bitów:
B"1010110" -- długość ciągu wynosi 7,
O"126" -- długość ciągu wynosi 9, jest to odpowiednik zapisu B"001_010_110",
X"56" -- długość ciągu wynosi 8, jest to odpowiednik zapisu B"0101_0110".