VHDL_3_2005.pdf

(568 KB) Pobierz
Język VHDL
Wykład w ramach przedmiotu
Projektowanie systemów cyfrowych
Telekomunikacja III rok
J.Kasperek P.J.Rajda
Sygnały w VHDL
U0
U1
A
X
I
XR2
INV
Z
X
Z
C
B
Y
entity COMPARE is
port (A, B: in bit; C: out bit);
end COMPARE;
architecture STRUCTURAL of COMPARE is
signal I: bit; -- sygnał wewnętrzny - brak deklaracji trybu !
component XR2 port (X, Y: in bit; Z: out bit);
end component ;
component INV port (X: in bit; Z: out bit);
end component ;
begin
U0: XR2 port map (A, B, I);
U1: INV port map (I, C);
end STUCTURAL;
Język VHDL
J.Kasperek P.J.Rajda © 2005 Katedra Elektroniki AGH Kraków
813358012.438.png 813358012.449.png 813358012.460.png 813358012.471.png 813358012.001.png 813358012.012.png 813358012.023.png 813358012.034.png 813358012.045.png 813358012.056.png 813358012.067.png 813358012.078.png 813358012.089.png 813358012.100.png 813358012.111.png 813358012.122.png 813358012.133.png 813358012.144.png 813358012.155.png 813358012.166.png 813358012.177.png 813358012.188.png 813358012.199.png 813358012.210.png 813358012.221.png 813358012.232.png 813358012.243.png 813358012.254.png 813358012.265.png 813358012.276.png 813358012.287.png 813358012.298.png 813358012.309.png 813358012.320.png 813358012.331.png 813358012.342.png 813358012.353.png 813358012.364.png 813358012.375.png 813358012.386.png 813358012.397.png 813358012.408.png 813358012.419.png 813358012.427.png 813358012.428.png 813358012.429.png 813358012.430.png 813358012.431.png 813358012.432.png 813358012.433.png 813358012.434.png 813358012.435.png 813358012.436.png 813358012.437.png 813358012.439.png 813358012.440.png 813358012.441.png 813358012.442.png 813358012.443.png 813358012.444.png 813358012.445.png 813358012.446.png 813358012.447.png 813358012.448.png 813358012.450.png 813358012.451.png 813358012.452.png 813358012.453.png 813358012.454.png 813358012.455.png 813358012.456.png 813358012.457.png 813358012.458.png 813358012.459.png 813358012.461.png 813358012.462.png 813358012.463.png 813358012.464.png 813358012.465.png 813358012.466.png 813358012.467.png 813358012.468.png 813358012.469.png 813358012.470.png 813358012.472.png 813358012.473.png 813358012.474.png 813358012.475.png 813358012.476.png 813358012.477.png 813358012.478.png 813358012.479.png 813358012.480.png 813358012.481.png
Komunikacja między procesami
architecture FIRST of ST_UNIT is
signal A_DONE: bit := ‘0’ ;
begin
.....
A: process
B: process
signal
A_DONE
A: process
begin
if S1 then A_DONE <= ‘1’;
.....
B: process
begin
wait until A_DONE = ‘1’;
.....
Język VHDL
J.Kasperek P.J.Rajda © 2005 Katedra Elektroniki AGH Kraków
Komunikacja między procesami
Procesy mogą się ze sobą komunikować poprzez
nadawanie wartości sygnałom.
Proces może zawiesić swoje działanie w
oczekiwaniu na zmianę w sygnale wejściowym.
Zmienne zadeklarowane w procesie nie mogą
przekazywać swych wartości do innych procesów.
VHDL‘92 definiuje zmienne globalne, które mogą
zostać użyte do celów synchronizacji procesów.
Język VHDL
J.Kasperek P.J.Rajda © 2005 Katedra Elektroniki AGH Kraków
813358012.002.png 813358012.003.png 813358012.004.png 813358012.005.png 813358012.006.png 813358012.007.png 813358012.008.png 813358012.009.png 813358012.010.png 813358012.011.png 813358012.013.png 813358012.014.png 813358012.015.png 813358012.016.png 813358012.017.png 813358012.018.png 813358012.019.png 813358012.020.png 813358012.021.png 813358012.022.png 813358012.024.png 813358012.025.png 813358012.026.png 813358012.027.png 813358012.028.png 813358012.029.png 813358012.030.png 813358012.031.png 813358012.032.png 813358012.033.png 813358012.035.png 813358012.036.png 813358012.037.png 813358012.038.png 813358012.039.png 813358012.040.png 813358012.041.png 813358012.042.png 813358012.043.png 813358012.044.png 813358012.046.png 813358012.047.png 813358012.048.png 813358012.049.png 813358012.050.png 813358012.051.png 813358012.052.png 813358012.053.png 813358012.054.png 813358012.055.png 813358012.057.png 813358012.058.png 813358012.059.png 813358012.060.png 813358012.061.png 813358012.062.png 813358012.063.png 813358012.064.png 813358012.065.png 813358012.066.png 813358012.068.png 813358012.069.png 813358012.070.png 813358012.071.png 813358012.072.png 813358012.073.png 813358012.074.png 813358012.075.png 813358012.076.png 813358012.077.png 813358012.079.png 813358012.080.png 813358012.081.png 813358012.082.png 813358012.083.png 813358012.084.png 813358012.085.png 813358012.086.png 813358012.087.png 813358012.088.png 813358012.090.png 813358012.091.png 813358012.092.png 813358012.093.png 813358012.094.png 813358012.095.png 813358012.096.png 813358012.097.png 813358012.098.png 813358012.099.png 813358012.101.png 813358012.102.png 813358012.103.png 813358012.104.png 813358012.105.png 813358012.106.png
Deklaracja sygnałów w VHDL
Sygnały mogą być zadeklarowane w:
¾ pakietach - sygnały globalne
¾ sekcji deklaracji entity -sygnały globalne
dla entity
- porty: in , out , inout , buffer
- inne deklaracje
¾ sekcji deklaracji architektury - sygnały lokalne dla
architektury
Sygnały są inicjalizowane przy użyciu operatora :=
Wartość jest przypisywana sygnałom przy użyciu
operatora <=
Język VHDL
J.Kasperek P.J.Rajda © 2005 Katedra Elektroniki AGH Kraków
Deklaracja sygnałów w VHDL
W deklaracji sygnału jako portu dla entity należy wyszczególnić:
nazwę sygnału, jego kierunek, typ i opcjonalnie jego wartość
początkową.
Składnia:
port ( names : direction type [ := expression ] [ ; more_ports ] );
Kierunek
Użycie
in
Prawa strona przypisania wartości zmiennej lub sygnałowi
out
Lewa strona przypisania wartości sygnałowi
inout
Obydwa powyższe
buffer
Jak wyżej (tylko jedno źródło)
Przykład:
port (DATA_IN: in bit; DATA_OUT: out bit);
port (B, A: in MyLib.MyPkg.MyType);
Język VHDL
J.Kasperek P.J.Rajda © 2005 Katedra Elektroniki AGH Kraków
813358012.107.png 813358012.108.png 813358012.109.png 813358012.110.png 813358012.112.png 813358012.113.png 813358012.114.png 813358012.115.png 813358012.116.png 813358012.117.png 813358012.118.png 813358012.119.png 813358012.120.png 813358012.121.png 813358012.123.png 813358012.124.png 813358012.125.png 813358012.126.png 813358012.127.png 813358012.128.png 813358012.129.png 813358012.130.png 813358012.131.png 813358012.132.png 813358012.134.png 813358012.135.png 813358012.136.png 813358012.137.png 813358012.138.png 813358012.139.png 813358012.140.png 813358012.141.png 813358012.142.png 813358012.143.png 813358012.145.png 813358012.146.png 813358012.147.png 813358012.148.png 813358012.149.png 813358012.150.png 813358012.151.png 813358012.152.png 813358012.153.png 813358012.154.png 813358012.156.png 813358012.157.png 813358012.158.png 813358012.159.png 813358012.160.png 813358012.161.png 813358012.162.png 813358012.163.png 813358012.164.png 813358012.165.png 813358012.167.png 813358012.168.png 813358012.169.png 813358012.170.png 813358012.171.png 813358012.172.png 813358012.173.png 813358012.174.png 813358012.175.png 813358012.176.png 813358012.178.png 813358012.179.png 813358012.180.png 813358012.181.png 813358012.182.png 813358012.183.png 813358012.184.png 813358012.185.png 813358012.186.png 813358012.187.png 813358012.189.png 813358012.190.png 813358012.191.png 813358012.192.png 813358012.193.png 813358012.194.png 813358012.195.png 813358012.196.png 813358012.197.png 813358012.198.png 813358012.200.png 813358012.201.png 813358012.202.png 813358012.203.png 813358012.204.png 813358012.205.png 813358012.206.png 813358012.207.png 813358012.208.png 813358012.209.png 813358012.211.png 813358012.212.png 813358012.213.png 813358012.214.png 813358012.215.png 813358012.216.png 813358012.217.png 813358012.218.png 813358012.219.png
Sygnały w VHDL
Nadawanie wartości sygnałom jest sekwencyjne w obrębie
procesów, a współbieżne na zewnątrz nich.
W obrębie procesu nadawanie wartości sygnałom jest
wstrzymywane do momentu uruchomienia cyklu symulacji,
wyzwalanego przez wykonanie instrukcji wait .
Przykład:
process
begin
sys_clk <= not (sys_clk) after 50 ns;
int_bus <= data_in after 10 ns;
data_out <= my_function (int_bus) after 10 ns;
wait .....
end process ;
Język VHDL
J.Kasperek P.J.Rajda © 2005 Katedra Elektroniki AGH Kraków
Sygnały w VHDL
Instrukcje przypisania wartości sygnałom mogą zawierać kilka wartości
dla różnych momentów czasowych. Własność ta jest użyteczna przy
opisywaniu sygnałów zegarowych i innych przebiegów powtarzalnych.
Przykład:
S <= ‘1’ after 4 ns, ‘0’ after 7 ns;
T <= 1 after 1 ns, 3 after 2 ns, 6 after 8 ns;
Wewnątrz procesu sygnał powinien mieć tylko jedno źródło w danym
czasie. W przeciwnym wypadku pod uwagę brane jest jedynie ostatnie
przypisanie .
Przykład:
process
begin
xyz <= 1 after 4 ns;
pqr <= 10 after 5 ns;
xyz <= 2 after 4 ns;
wait .....
Język VHDL
J.Kasperek P.J.Rajda © 2005 Katedra Elektroniki AGH Kraków
813358012.220.png 813358012.222.png 813358012.223.png 813358012.224.png 813358012.225.png 813358012.226.png 813358012.227.png 813358012.228.png 813358012.229.png 813358012.230.png 813358012.231.png 813358012.233.png 813358012.234.png 813358012.235.png 813358012.236.png 813358012.237.png 813358012.238.png 813358012.239.png 813358012.240.png 813358012.241.png 813358012.242.png 813358012.244.png 813358012.245.png 813358012.246.png 813358012.247.png 813358012.248.png 813358012.249.png 813358012.250.png 813358012.251.png 813358012.252.png 813358012.253.png 813358012.255.png 813358012.256.png 813358012.257.png 813358012.258.png 813358012.259.png 813358012.260.png 813358012.261.png 813358012.262.png 813358012.263.png 813358012.264.png 813358012.266.png 813358012.267.png 813358012.268.png 813358012.269.png 813358012.270.png 813358012.271.png 813358012.272.png 813358012.273.png 813358012.274.png 813358012.275.png 813358012.277.png 813358012.278.png 813358012.279.png 813358012.280.png 813358012.281.png 813358012.282.png 813358012.283.png 813358012.284.png 813358012.285.png 813358012.286.png 813358012.288.png 813358012.289.png 813358012.290.png 813358012.291.png 813358012.292.png 813358012.293.png 813358012.294.png 813358012.295.png 813358012.296.png 813358012.297.png 813358012.299.png 813358012.300.png 813358012.301.png 813358012.302.png 813358012.303.png 813358012.304.png 813358012.305.png 813358012.306.png 813358012.307.png 813358012.308.png 813358012.310.png 813358012.311.png 813358012.312.png 813358012.313.png 813358012.314.png 813358012.315.png 813358012.316.png 813358012.317.png 813358012.318.png 813358012.319.png
Sygnały w VHDL
W poniższym przykładzie X przyjmuje nową wartość dokładnie po 10
ns (nie 9.9999 lub 10.0001 ns). Deklaracja opóźnień jest nieprzydatna
dla narzędzi do syntezy.
signal X, Y: integer;
process
begin
wait on Y;
X <= Y + 1 after 10 ns;
signal X: integer;
process .....
begin
.....
X <= X + 1 after 10 ns;
.....
1
x
Język VHDL
J.Kasperek P.J.Rajda © 2005 Katedra Elektroniki AGH Kraków
Sygnały w VHDL
Przykład :
entity VAR is
port (A: in bit_vector ( 0 to 7 );
INDEX: in integer range 0 to 7 ;
OUTPUT: out bit);
end VAR;
architecture VHDL_1 of VAR is
begin
process
begin
OUTPUT <= A(INDEX); -- opóźnienie 0 ns
wait .....;
-- wait inicjuje przypisanie
.....
end VHDL_1;
Język VHDL
J.Kasperek P.J.Rajda © 2005 Katedra Elektroniki AGH Kraków
813358012.321.png 813358012.322.png 813358012.323.png 813358012.324.png 813358012.325.png 813358012.326.png 813358012.327.png 813358012.328.png 813358012.329.png 813358012.330.png 813358012.332.png 813358012.333.png 813358012.334.png 813358012.335.png 813358012.336.png 813358012.337.png 813358012.338.png 813358012.339.png 813358012.340.png 813358012.341.png 813358012.343.png 813358012.344.png 813358012.345.png 813358012.346.png 813358012.347.png 813358012.348.png 813358012.349.png 813358012.350.png 813358012.351.png 813358012.352.png 813358012.354.png 813358012.355.png 813358012.356.png 813358012.357.png 813358012.358.png 813358012.359.png 813358012.360.png 813358012.361.png 813358012.362.png 813358012.363.png 813358012.365.png 813358012.366.png 813358012.367.png 813358012.368.png 813358012.369.png 813358012.370.png 813358012.371.png 813358012.372.png 813358012.373.png 813358012.374.png 813358012.376.png 813358012.377.png 813358012.378.png 813358012.379.png 813358012.380.png 813358012.381.png 813358012.382.png 813358012.383.png 813358012.384.png 813358012.385.png 813358012.387.png 813358012.388.png 813358012.389.png 813358012.390.png 813358012.391.png 813358012.392.png 813358012.393.png 813358012.394.png 813358012.395.png 813358012.396.png 813358012.398.png 813358012.399.png 813358012.400.png 813358012.401.png 813358012.402.png 813358012.403.png 813358012.404.png 813358012.405.png 813358012.406.png 813358012.407.png 813358012.409.png 813358012.410.png 813358012.411.png 813358012.412.png 813358012.413.png 813358012.414.png 813358012.415.png 813358012.416.png 813358012.417.png 813358012.418.png 813358012.420.png 813358012.421.png 813358012.422.png 813358012.423.png 813358012.424.png 813358012.425.png 813358012.426.png
Zgłoś jeśli naruszono regulamin