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
813358029.444.png 813358029.455.png 813358029.466.png 813358029.477.png 813358029.001.png 813358029.012.png 813358029.023.png 813358029.034.png 813358029.045.png 813358029.056.png 813358029.067.png 813358029.078.png 813358029.089.png 813358029.100.png 813358029.111.png 813358029.122.png 813358029.133.png 813358029.144.png 813358029.155.png 813358029.166.png 813358029.177.png 813358029.188.png 813358029.199.png 813358029.210.png 813358029.221.png 813358029.232.png 813358029.243.png 813358029.254.png 813358029.265.png 813358029.276.png 813358029.287.png 813358029.298.png 813358029.309.png 813358029.320.png 813358029.331.png 813358029.342.png 813358029.353.png 813358029.364.png 813358029.375.png 813358029.386.png 813358029.397.png 813358029.408.png 813358029.419.png 813358029.430.png 813358029.434.png 813358029.435.png 813358029.436.png 813358029.437.png 813358029.438.png 813358029.439.png 813358029.440.png 813358029.441.png 813358029.442.png 813358029.443.png 813358029.445.png 813358029.446.png 813358029.447.png 813358029.448.png 813358029.449.png 813358029.450.png 813358029.451.png 813358029.452.png 813358029.453.png 813358029.454.png 813358029.456.png 813358029.457.png 813358029.458.png 813358029.459.png 813358029.460.png 813358029.461.png 813358029.462.png 813358029.463.png 813358029.464.png 813358029.465.png 813358029.467.png 813358029.468.png 813358029.469.png 813358029.470.png 813358029.471.png 813358029.472.png 813358029.473.png 813358029.474.png 813358029.475.png 813358029.476.png 813358029.478.png 813358029.479.png 813358029.480.png 813358029.481.png 813358029.482.png 813358029.483.png 813358029.484.png 813358029.485.png 813358029.486.png 813358029.487.png 813358029.002.png
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
813358029.003.png 813358029.004.png 813358029.005.png 813358029.006.png 813358029.007.png 813358029.008.png 813358029.009.png 813358029.010.png 813358029.011.png 813358029.013.png 813358029.014.png 813358029.015.png 813358029.016.png 813358029.017.png 813358029.018.png 813358029.019.png 813358029.020.png 813358029.021.png 813358029.022.png 813358029.024.png 813358029.025.png 813358029.026.png 813358029.027.png 813358029.028.png 813358029.029.png 813358029.030.png 813358029.031.png 813358029.032.png 813358029.033.png 813358029.035.png 813358029.036.png 813358029.037.png 813358029.038.png 813358029.039.png 813358029.040.png 813358029.041.png 813358029.042.png 813358029.043.png 813358029.044.png 813358029.046.png 813358029.047.png 813358029.048.png 813358029.049.png 813358029.050.png 813358029.051.png 813358029.052.png 813358029.053.png 813358029.054.png 813358029.055.png 813358029.057.png 813358029.058.png 813358029.059.png 813358029.060.png 813358029.061.png 813358029.062.png 813358029.063.png 813358029.064.png 813358029.065.png 813358029.066.png 813358029.068.png 813358029.069.png 813358029.070.png 813358029.071.png 813358029.072.png 813358029.073.png 813358029.074.png 813358029.075.png 813358029.076.png 813358029.077.png 813358029.079.png 813358029.080.png 813358029.081.png 813358029.082.png 813358029.083.png 813358029.084.png 813358029.085.png 813358029.086.png 813358029.087.png 813358029.088.png 813358029.090.png 813358029.091.png 813358029.092.png 813358029.093.png 813358029.094.png 813358029.095.png 813358029.096.png 813358029.097.png 813358029.098.png 813358029.099.png 813358029.101.png 813358029.102.png 813358029.103.png 813358029.104.png 813358029.105.png 813358029.106.png 813358029.107.png 813358029.108.png 813358029.109.png 813358029.110.png 813358029.112.png 813358029.113.png 813358029.114.png 813358029.115.png 813358029.116.png 813358029.117.png 813358029.118.png 813358029.119.png 813358029.120.png 813358029.121.png 813358029.123.png
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
813358029.124.png 813358029.125.png 813358029.126.png 813358029.127.png 813358029.128.png 813358029.129.png 813358029.130.png 813358029.131.png 813358029.132.png 813358029.134.png 813358029.135.png 813358029.136.png 813358029.137.png 813358029.138.png 813358029.139.png 813358029.140.png 813358029.141.png 813358029.142.png 813358029.143.png 813358029.145.png 813358029.146.png 813358029.147.png 813358029.148.png 813358029.149.png 813358029.150.png 813358029.151.png 813358029.152.png 813358029.153.png 813358029.154.png 813358029.156.png 813358029.157.png 813358029.158.png 813358029.159.png 813358029.160.png 813358029.161.png 813358029.162.png 813358029.163.png 813358029.164.png 813358029.165.png 813358029.167.png 813358029.168.png 813358029.169.png 813358029.170.png 813358029.171.png 813358029.172.png 813358029.173.png 813358029.174.png 813358029.175.png 813358029.176.png 813358029.178.png 813358029.179.png 813358029.180.png 813358029.181.png 813358029.182.png 813358029.183.png 813358029.184.png 813358029.185.png 813358029.186.png 813358029.187.png 813358029.189.png 813358029.190.png 813358029.191.png 813358029.192.png 813358029.193.png 813358029.194.png 813358029.195.png 813358029.196.png 813358029.197.png 813358029.198.png 813358029.200.png 813358029.201.png 813358029.202.png 813358029.203.png 813358029.204.png 813358029.205.png 813358029.206.png 813358029.207.png 813358029.208.png 813358029.209.png 813358029.211.png 813358029.212.png 813358029.213.png 813358029.214.png 813358029.215.png 813358029.216.png 813358029.217.png 813358029.218.png 813358029.219.png 813358029.220.png 813358029.222.png 813358029.223.png 813358029.224.png 813358029.225.png
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
813358029.226.png 813358029.227.png 813358029.228.png 813358029.229.png 813358029.230.png 813358029.231.png 813358029.233.png 813358029.234.png 813358029.235.png 813358029.236.png 813358029.237.png 813358029.238.png 813358029.239.png 813358029.240.png 813358029.241.png 813358029.242.png 813358029.244.png 813358029.245.png 813358029.246.png 813358029.247.png 813358029.248.png 813358029.249.png 813358029.250.png 813358029.251.png 813358029.252.png 813358029.253.png 813358029.255.png 813358029.256.png 813358029.257.png 813358029.258.png 813358029.259.png 813358029.260.png 813358029.261.png 813358029.262.png 813358029.263.png 813358029.264.png 813358029.266.png 813358029.267.png 813358029.268.png 813358029.269.png 813358029.270.png 813358029.271.png 813358029.272.png 813358029.273.png 813358029.274.png 813358029.275.png 813358029.277.png 813358029.278.png 813358029.279.png 813358029.280.png 813358029.281.png 813358029.282.png 813358029.283.png 813358029.284.png 813358029.285.png 813358029.286.png 813358029.288.png 813358029.289.png 813358029.290.png 813358029.291.png 813358029.292.png 813358029.293.png 813358029.294.png 813358029.295.png 813358029.296.png 813358029.297.png 813358029.299.png 813358029.300.png 813358029.301.png 813358029.302.png 813358029.303.png 813358029.304.png 813358029.305.png 813358029.306.png 813358029.307.png 813358029.308.png 813358029.310.png 813358029.311.png 813358029.312.png 813358029.313.png 813358029.314.png 813358029.315.png 813358029.316.png 813358029.317.png 813358029.318.png 813358029.319.png 813358029.321.png 813358029.322.png 813358029.323.png 813358029.324.png 813358029.325.png 813358029.326.png 813358029.327.png 813358029.328.png 813358029.329.png
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
813358029.330.png 813358029.332.png 813358029.333.png 813358029.334.png 813358029.335.png 813358029.336.png 813358029.337.png 813358029.338.png 813358029.339.png 813358029.340.png 813358029.341.png 813358029.343.png 813358029.344.png 813358029.345.png 813358029.346.png 813358029.347.png 813358029.348.png 813358029.349.png 813358029.350.png 813358029.351.png 813358029.352.png 813358029.354.png 813358029.355.png 813358029.356.png 813358029.357.png 813358029.358.png 813358029.359.png 813358029.360.png 813358029.361.png 813358029.362.png 813358029.363.png 813358029.365.png 813358029.366.png 813358029.367.png 813358029.368.png 813358029.369.png 813358029.370.png 813358029.371.png 813358029.372.png 813358029.373.png 813358029.374.png 813358029.376.png 813358029.377.png 813358029.378.png 813358029.379.png 813358029.380.png 813358029.381.png 813358029.382.png 813358029.383.png 813358029.384.png 813358029.385.png 813358029.387.png 813358029.388.png 813358029.389.png 813358029.390.png 813358029.391.png 813358029.392.png 813358029.393.png 813358029.394.png 813358029.395.png 813358029.396.png 813358029.398.png 813358029.399.png 813358029.400.png 813358029.401.png 813358029.402.png 813358029.403.png 813358029.404.png 813358029.405.png 813358029.406.png 813358029.407.png 813358029.409.png 813358029.410.png 813358029.411.png 813358029.412.png 813358029.413.png 813358029.414.png 813358029.415.png 813358029.416.png 813358029.417.png 813358029.418.png 813358029.420.png 813358029.421.png 813358029.422.png 813358029.423.png 813358029.424.png 813358029.425.png 813358029.426.png 813358029.427.png 813358029.428.png 813358029.429.png 813358029.431.png 813358029.432.png 813358029.433.png
Zgłoś jeśli naruszono regulamin