VHDL_2_2005.pdf
(
695 KB
)
Pobierz
Język VHDL
Wykład w ramach przedmiotu
Projektowanie systemów cyfrowych
Telekomunikacja III rok
J.Kasperek P.J.Rajda
Pojęcia leksykalne
•
literały
napisy reprezentujące dane - ze sposobu ich zapisu
wynikają ich wszystkie właściwości, w tym ich
wartości
•
identyfikatory (nazwy)
ciągi liter i cyfr, rozpoczynające się od litery
•
obiekty
stałe, zmienne, sygnały
•
wyrażenia
wzory ujmujące operatory i argumenty,
określające sposób obliczenia lub określenia
wartości
Język VHDL
J.Kasperek P.J.Rajda © 2005 Katedra Elektroniki AGH Kraków
Pojęcia leksykalne - literały
Literały pojedyncze (skalary)
character
- pojedynczy znak objęty apostrofami, np:
‘A’
lub
‘a’
bit
- reprezentuje wartość binarną
‘1’
lub
‘0’
std_logic
- reprezentuje wartość sygnałów wg. IEEE 1164:
U
niezainicjalizowany
X
nieznany (
forcing an unknown
)
0
silne zero (
forcing 0
)
1
silne jeden (
forcing 1
)
Z
wysoka impedancja
W
słaby nieznany (
weak unknown
)
L
słabe zero (
weak 0
)
Poza pakietem
STANDARD
H
słabe jeden (
weak 1
)
-
nieistotny (
don’t care
)
Język VHDL
J.Kasperek P.J.Rajda © 2005 Katedra Elektroniki AGH Kraków
Biblioteka std_logic.vhd
-----------------------------------------------------------------
-- resolution function
-----------------------------------------------------------------
CONSTANT resolution_table : stdlogic_table := (
--
---------------------------------------------------------
--
| U X 0 1 Z W L H -
| |
--
---------------------------------------------------------
( 'U', 'U', 'U', 'U', 'U', 'U', 'U', 'U', 'U' ),
-- | U |
( 'U', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X' ),
-- | X |
( 'U', 'X', '0', 'X', '0', '0', '0', '0', 'X' ),
-- | 0 |
( 'U', 'X', 'X', '1', '1', '1', '1', '1', 'X' ),
-- | 1 |
( 'U', 'X', '0', '1', 'Z', 'W', 'L', 'H', 'X' ),
-- | Z |
( 'U', 'X', '0', '1', 'W', 'W', 'W', 'W', 'X' ),
-- | W |
( 'U', 'X', '0', '1', 'L', 'W', 'L', 'W', 'X' ),
-- | L |
( 'U', 'X', '0', '1', 'H', 'W', 'W', 'H', 'X' ),
-- | H |
( 'U', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X' )
-- | - |
);
Język VHDL
J.Kasperek P.J.Rajda © 2005 Katedra Elektroniki AGH Kraków
Pojęcia leksykalne - literały
boolean
- reprezentuje dwie dyskretne wartości:
true TRUE True
false FALSE False
real
- reprezentuje wartość zmiennoprzecinkową, np:
1.3
lub
-344.0E+23
, typowo od
-1.0E+38
do
1.0E+38
z precyzją co najmniej sześciu cyfr po przecinku
integer
- reprezentuje wartość całkowitą, n.p.:
+1
,
862
lub
-257
,
+123_456
,
16#00FF#
, typowo od
-2,147,483,647
do
+ 2,147,483,647
time
- reprezentuję jedyną zdefiniowaną wielkość fizyczną,
to jest czas:
62 fs
, (
ps
,
ns
,
us
,
ms
,
sec
,
min
,
hr
)
Literały wielokrotne (tablice)
string
-ciąg znaków objęty cudzysłowami, n.p.:
“x”
,
“hold time”
bit_vector
-
”0001_1100”
,
x”00FF”
std_logic_vector
-
”101Z”
,
”UUUUUU”
Język VHDL
J.Kasperek P.J.Rajda © 2005 Katedra Elektroniki AGH Kraków
Pojęcia leksykalne – identyfikatory, deklaracje
Identyfikatory
Muszą zaczynać się od litery. Potem mogą następować litery, cyfry lub
podkreślnik (
underscore
_
):
XYZ
,
S(3)
,
S(1 to 4)
,
X3
,
my_defs
.
VHDL nie rozróżnia wielkości (
not case sensitive
):
XyZ
<=>
xyz
.
Identyfikatory nie mogą być takie jak słowa kluczowe (około 100).
Deklaracje
Deklaracje obiektów (ich nazwy i typu) są to deklaracje stałych, zmiennych,
sygnałów lub plików.
Zakres sygnałów i zmiennych można ograniczać:
range
{
low_val
to
high_val
|
high_val
downto
low_val
}
np:
integer
range
1
to
10
;
real
range
1.0
to
10.0
;
Język VHDL
J.Kasperek P.J.Rajda © 2005 Katedra Elektroniki AGH Kraków
Pojęcia leksykalne – deklaracje
Deklaracje stałych
•
skalarnych:
constant
name
:
type
:=
expression
;
•
tablicowych:
constant
name
:
array_type
[(
index
)]
:=
expression
;
np:
constant
Vcc: real :=
5.0
;
constant
Cycle: time :=
50
ns;
constant
five: bit_vector :=
“0101”
;
constant
SIX: std_logic_vector (8
to
11):=
“0110”
;
Deklaracje sygnałów
•
skalarnych:
signal
name(s)
:
type
[
range
][
:=
expression
]
;
•
tablicowych:
signal
name(s)
:
array_type
[(
index
)][
:=
expression
]
;
•
entity:
port
(
name(s)
:
direction type
[
range
][
:=
expression
]
);
Język VHDL
J.Kasperek P.J.Rajda © 2005 Katedra Elektroniki AGH Kraków
Pojęcia leksykalne – deklaracje
Deklaracje zmiennych (w zakresie procesu)
•
skalarnych:
variable
name(s)
:
type
[(
range)
][
:=
expression
]
;
•
tablicowych:
variable
name(s)
:
array_type
[(
range)
][
:=
expression
]
;
np:
variable
Index: integer
range
1
to
50;
variable
Cycle: time
range
10 ns
to
50 ns := 10ns;
variable
MEMORY: bit_vector (0
to
7);
variable
x,y: integer;
W VHDL’92 wprowadzono zmienne globalne
do komunikacji pomiędzy procesami.
Język VHDL
J.Kasperek P.J.Rajda © 2005 Katedra Elektroniki AGH Kraków
Pojęcia leksykalne – wyrażenia
W języku VHDL argumenty wyrażeń muszą być tego samego typu
Konwersje typów:
integer
integer (
3.0
)
real
real (
3
)
time
integer * time
time
nanos + picos
integer
nanos / picos
variable
My_Data, My_Sample: integer;
...
My_Data := integer(
74.94
* real(My_Sample ));
Język VHDL
J.Kasperek P.J.Rajda © 2005 Katedra Elektroniki AGH Kraków
Pojęcia leksykalne – wyrażenia
Operatory wyrażeń:
logiczne
and
or
nand nor
xor
not
relacji
=
/=
<
<=
>
>=
połączenia
&
arytmetyczne
+
-
*
/
**
mod
rem
abs
VHDL’92
sll
srl
sla
sra
rol
ror
xnor
Typy argumentów:
takie same
:
and or nand nor xor not
= /= < <= > >= + - * /
integer
:
mod rem
integer exp
: **
numeryczny
:
abs
Język VHDL
J.Kasperek P.J.Rajda © 2005 Katedra Elektroniki AGH Kraków
Plik z chomika:
atari666
Inne pliki z tego folderu:
VHDL_1_2005.pdf
(1812 KB)
VHDL_2_2005.pdf
(695 KB)
VHDL_4_2005.pdf
(1585 KB)
VHDL_3_2005.pdf
(568 KB)
_vhdl - wyklad.txt
(0 KB)
Inne foldery tego chomika:
Zgłoś jeśli
naruszono regulamin