Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

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

Podobne prezentacje


Prezentacja na temat: "Projektowanie systemów cyfrowych z wykorzystaniem języka VHDL Układy sekwencyjne."— Zapis prezentacji:

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 <= a; when „01” => x <= b; when „10” => x <= c; when others => x <= d; end case;

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) <= y(i); i := i + 1; end loop;

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) <= R(i) + ‘1’; i:=i+1; end loop;

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) <= y(i) xor z(i); end if; end loop;...

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 <= D; end if; end process; end fdd1; entity ffd is port(D,clk,R : in bit; Q : out bit); end ffd; architecture ffd1 of ffd is begin process begin wait until (clk = ‘1’) Q <= D; end process; end fdd1;

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 <= ′0′; elsif clk′event and clk = ′1′ then Q <= D; end if; end process; end fdd2;

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 <= ′0′; else Q <= D; end if; end process; end fdd3;

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 <= ′0′; elsif S = ’1’ then Q <= ’1’; elsif clk′event and clk = ′1′ then Q <= D; end if; end process; end fdd4;

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 <= D; end if; end process; end fdd5;

15 Przerzutnik T architecture fft1 of fft is signal temp : std_logic; -- sygnal wewnetrzny begin process (clk,R) begin if R = ′1′ then temp <= ′0′; elsif clk′event and clk = ′1′ then temp <= temp xor T; -- przypisanie sekwencyjne end if; end process; Q <= temp; -- przypisanie wspolbiezne end fft1;

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 <= temp; end process; end fft2;

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 <= Qint; end process;

18 Licznik rewersyjny process (clk, reset) begin if reset='1' then counter <= 0; elsif clk='1' and clk'event then if ce='1' then if dir='1' then if counter = 15 then counter <= 0; else counter <= counter + 1; end if; else if counter = 0 then counter <= 15; else counter <= counter - 1; end if; end process; count <= counter;


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

Podobne prezentacje


Reklamy Google