Projektowanie systemów cyfrowych z wykorzystaniem języka VHDL Układy sekwencyjne.

1 Projektowanie systemów cyfrowych z wykorzystaniem język...
Author: Wanda Domagała
0 downloads 3 Views

1 Projektowanie systemów cyfrowych z wykorzystaniem języka VHDL Układy sekwencyjne

2 Instrukcje sekwencyjne c.d. case-when – odpowiednik współbieżnej instrukcji with-select-when –należy wymienić wszystkie możliwe warunki (wyłączające się) –warunki są sprawdzane jednocześnie Składnia: case wyrazenie is when wybor => instrukcje sekwencyjne; when others => instrukcje sekwencyjne | null; end case; Przykład: case y is when „00” => x x x x

3 Instrukcje sekwencyjne c.d. for-loop – pętla wykonująca określoną liczbę iteracji na podstawie wartości kontrolnej i Składnia: for wartosc_kontrolna in zakres loop instrukcje sekwencyjne; end loop; Przykład: for i in 0 to 7 loop x(i)

4 Instrukcje sekwencyjne c.d. while-loop – pętla kontynuująca wykonywanie określonej sekwencji instrukcji tak długo jak długo spełniony jest warunek kontrolny Składnia: while warunek_kontrolny loop instrukcje sekwencyjne; end loop; Przykład: while i < 7 loop Q(i)

5 Instrukcje sekwencyjne c.d. wait – instrukcja chwilowego wstrzymania procesu –wykorzystywana jeśli process nie ma określonej listy czułości Składnia: wait until warunek; -- czekaj dopóki wait on nazwa_sygnalu; -- czekaj na wait for odcinek_czasu; -- czekaj przez Przykład: wait until a = ‘1’; -- czekaj dopóki wait on a; -- czekaj na wait for 20 ns; -- czekaj przez

6 Instrukcje sekwencyjne c.d. exit – instrukcja wyjścia z pętli przy wykryciu odpowiedniego warunku Składnia: exit [etykieta_petli][when warunek]; -- wyjście warunkowe exit [etykieta_petli]; -- wyjście bezwarunkowe Przykład: Loop1: for i in a downto 0 loop if i > 10 then lub exit loop1 when i < 10; exit loop1;......

7 Instrukcje sekwencyjne c.d. next – instrukcja służąca do pomijania operacji wewnątrz pętli po spełnieniu określonego warunku Składnia: next [etykieta_petli][when warunek]; Przykład: while i < 7 loop if i = 4 then next; else x(i)

8 Atrybuty Atrybuty wprowadzają dodatkowe informacje o elementach: - interfejs - architektura - sygnał Atrybuty wartości dla typów skalarnych: ‘left -- odwołanie do skrajnej lewej wartości danego typu ‘right-- odwołanie do skrajnej prawej wartości danego typu ‘high-- największa wartość danego typu | prawej ‘low-- najmniejsza wartość danego typu | lewej ‘lenght-- określa liczbę elementów ograniczonej macierzy ‘event-- zwraca true jeśli atrybut zanotował w tym momencie zmianę ‘range-- określa zakres ograniczanego obiektu

9 Sygnał zegarowy Sposoby określenia sygnału zegarowego dla układu sekwencyjnego: clk = ’1’ -- sygnał zegarowy aktywny poziomem wysokim clk = ’0’ -- sygnał zegarowy aktywny poziomem niskim clk’event -- sygnał zegarowy aktywny przy zmianie stanu (reakcja na obu zboczach sygnału) clk’event and clk = ’1’ -- sygnał aktywny zboczem narastającym clk’event and clk = ’0’ -- sygnał aktywny zboczem opadającym Definicje sygnału zegarowego za pomocą funkcji zawartych w wykorzystywanej bibliotece (std_logic_1164): rising_edge(clk) -- sygnał aktywny zboczem narastającym falling_edge(clk) -- sygnał aktywny zboczem opadającym

10 Przerzutnik D entity ffd is port(D,clk,R : in bit; Q : out bit); end ffd; architecture ffd1 of ffd is begin process(clk) begin if clk′event and clk = ′1′ then Q

11 Przerzutnik D Przerzutnik D z asynchronicznym resetem entity ffd is port(D,clk,R : in bit; Q : out bit); end ffd; architecture ffd2 of ffd is begin process(clk,R) begin if R = ′1′ then Q

12 Przerzutnik D Przerzutnik D z synchronicznym resetem entity ffd is port(D,clk,R : in bit; Q : out bit); end ffd; architecture ffd3 of ffd is begin process(clk) begin if clk′event and clk = ′1′ then if R = ′1′ then Q

13 Przerzutnik D Przerzutnik D z asynchronicznym resetem i setem entity ffd is port(D,clk,R,S : in bit; Q : out bit); end ffd; architecture ffd4 of ffd is begin process(clk,R,S) begin if R = ′1′ then Q

14 Zatrzask D entity ffd is port(D,clk : in bit; Q : out bit); end ffd; architecture ffd5 of ffd is begin process(clk, D) begin if clk = ′1′ then Q

15 Przerzutnik T architecture fft1 of fft is signal temp : std_logic; -- sygnal wewnetrzny begin process (clk,R) begin if R = ′1′ then temp

16 Przerzutnik T architecture fft2 of fft is begin process (clk,R) variable temp : std_logic; begin if R = ′1′ then temp := ′0′; elsif clk′event and clk = ′1′ and T = ′1′ then temp := not temp; end if; Q

17 Licznik process (clk, reset) variable Qint : std_logic_vector (3 downto 0); begin if reset = '1' then Qint := "0000"; else if clk'event and clk = '1' then if Qint < 9 then Qint := Qint + 1; else Qint := "0000"; end if; Q

18 Licznik rewersyjny process (clk, reset) begin if reset='1' then counter