Extras din curs
VHDL ca un limbaj de programare
VHDL seamana cu un limbaj de programare; cei care sint familiarizati cu limbajul de programare Ada vor observa similaritati cu acest limbaj.
1.Elemente lexicale
a)Comentarii:
Comentarife in VHDL incep cu ' ' si se continua pina la sfirsitul rindului. Ele nu au semnificatie intr o descriere VHDL.
b)Identificatori:
Identificatorii in VHDL sint cuvinte rezervate sau nume definite de programator. Se formeaza dupa regula:
identificator ::= litera {[_ ] litera_sau_cifra}
Nu se face diferenta intre litere mari si litere mici, de exemplu id si Id reprezinta acelasi lucru.
c)Numere:
Numerele sint reprezentate in baza 10 (numere zecimale) sau in alta baza de numeratie (de la 2 la 16). Numerele care contin '.' sint considerate numere reale, celelalte fiind numere intregi. Numerele zecimale sint definite de:
numar_zecimal ::= intreg[.intreg][exponent]
intreg ::= cifra{[_]cifra}
exponent :.= E[+]intreg |E[-]¬intreg
Exemple:
0 1 123_456 678E9 numere intregi
0.0 0.1 2.345 67 12.3E 4 numere reale
Numerele date intr o baza de numeratie sint definite de:
numar bazat ::= baza#intreg bazat[.intreg bazat]#[exponent]
baza ::= intreg
intreg_bazat ::= cifra_extinsa{[_]cifra extinsa}
cifra extinsa ::= cifra | litera
Baza si exponentul sint in baza 10. Exponentul reprezinta puterea la care se ridica baza, cu care va fi inmultit numarul. Literele de la A la F (de la a la f) sint 'cifre extinse' si reprezinta numerele de la 10 la 15.
Exemple:
2# 1100 0100# 16#C4# 4#301 #E1 nr. intreg 196
2# 1.1111_1111_111 #E+ 11 16#F. FF#E2 nr. real 4095
d) Caractere:
Caracterele sint delimitate de ’ ’.
Exemple: 'A' 'a'
e)Siruri de caractere:
Sirurile de caractere sint delimitate de "". Pentru a include " intr un sir, ghilimelele trebuie dublate. Un sir de caractere poate reprezenta valoarea unui obiect care a un vector de caractere.
Exemple:
“Un sir in sir: “”Un sir”” “ --sir care contine "
f)Siruri de biti:
VHDL permite o reprezentare convenabila a vectorilor de biti ('0' sau ' 1'). Sintaxa este:
sir biti ::= baza_de_reprezentare"valoare_bit"
baza de_reprezentare ::= B | O | X
valoare bit ::= cifra extinsa{[ ]cifra_extinsa}
Baza de reprezentare poate fi B (in binar), O (in octal) sau H (in hexazecimal).
Exemple:
B"1010110" --lungimea sirului e 7
O"126" --lungimea a 9, B”001_010_110"
H"56" --lungimea a 8, B"0101_0110"
2.Tipuri de date si obiecte
In VHDL exista doua feluri de tipuri: tipuri SCALARE si tipuri COMPUSE.
Tipurile scalare includ numere, cantitati fizice si enumerari, si tipuri predefinite. Tipurile compuse sint vectori si inregistrari. In VHDL sint definite si tipurile 'access' (pointeri) si 'file' (fisiere).
declaratie_de_tip :.= type identificator is tip
tip ::= tip_scalar
tip_compus
tip_access
tip_file
tip_scalar ::= tip_enumerare I tip-intreg I tip_real tip_fizic
tip-compus ::= tip_tablou I tip_inregistrare
a)Tip intreg:
Tipul intreg reprezinta o multime de numere intregi dintr-un interval specificat. Sintaxa este:
tip_intreg ::= multime_in_interval
multime_in_interval ::= range
interval interval ::= expresie_simpla directie expresie_simpla
directie :.= to I downto
Expresiile care specifica intervalul trebuie sa aiba valori intregi. Limitele intervalului sint cuprinse intre -2147483647 si +2147483647.
Exemple:
type byte_int is range 0 to 255;
type signed is range -32768 to 32767;
type bit_index is range 31 downto 0;
Exista tipul predefinit 'integer', care reprezinta numere intregi cuprinse intre -2147483647 si +2147483647.
b)Tip fizic:
Tipul fizic este un tip numeric de reprezentare a unor cantitati fizice (lungime, timp, volti). Declaratia de tip include specificarea unei unitati de masura de baza si eventual un numar de unitati de masura secundare, care reprezinta multiplii ai unitatii de baza. Sintaxa este:
tip_fizic ::= constructor_interval
units
unitate_de_baza
{unitati secundare}
end units
unitate_de baza ::= identificator;
unitati_secundare ::= identificator = literal_fizic;
literal_fizic :.= [literal_abstract]nume_unit;
Exemple:
Preview document
Conținut arhivă zip
- Limbajul de Programare VHDL
- cuprins.doc
- VHDL.doc