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

Slides:



Advertisements
Podobne prezentacje
REALIZACJA REGULATORA PID W UKŁADZIE FPGA
Advertisements

Systemy czasu rzeczywistego
STRUKTURY DANYCH.
Pomysł Sukces Wstępne rozwiązanie Symulacja Wynik zadowala? Poprawa rozwiązania Nie Tak Podstawowa pętla projektowania.
Algorytmy – zapis struktur programowania
Nośniki sygnałów - przykład Nośniki sygnałów – przykład.
Współprogramy III Ten wykład ma na celu pokazanie kolejnej ciekawej możliwości, którą oferują współprogramy. Wspólprogramy reprezentujące wyrażenia regularne.
Turbo pascal – instrukcje warunkowe, iteracyjne,…
Systemy czasu rzeczywistego Copyright, 2000 © Jerzy R. Nawrocki Wprowadzenie do.
Rekursja Copyright, 2004 © Jerzy R. Nawrocki Teoretyczne podstawy informatyki.
Najczęściej popełniane błędy w VHDL’u
Instrukcje 1 Definicje wstępne Formalny opis akcji wykonywanej przez komputer nazywamy instrukcją ( statement), Każda instrukcja kończona jest średnikiem.
Semafory.
Wyrażenia w Turbo Pascalu.
PL/SQL Zajęcia nr II PL/SQL(2) M. Rakowski - WSISiZ.
Instrukcje iteracyjne
Instrukcja warunkowa i wyboru
Programowanie baz danych
Informatyka MZT1 Wykład 6 Iteracje while i repeat Tablice Rekordy
Składnia instrukcji warunkowej if…
1 SBD, L.Banachowski Oprogramowanie strony serwera cz. 1 Powtórzenie wyk ł adu 6.
Rejestry przesuwne, Pamięci
Temat 2: Podstawy programowania Algorytmy – 1 z 2 _________________________________________________________________________________________________________________.
Visual Basic for Applications Joanna Porter-Sobieraj
© IEn Gdańsk 2011 Technika fazorów synchronicznych Łukasz Kajda Instytut Energetyki Oddział Gdańsk Zakład OGA Gdańsk r.
Blok I: PODSTAWY TECHNIKI Lekcja 7: Charakterystyka pojęć: energia, praca, moc, sprawność, wydajność maszyn (1 godz.) 1. Energia mechaniczna 2. Praca 3.
Równowaga chemiczna - odwracalność reakcji chemicznych
1 Dr Galina Cariowa. 2 Legenda Iteracyjne układy kombinacyjne Sumatory binarne Sumatory - substraktory binarne Funkcje i układy arytmetyczne Układy mnożące.
Excel 2007 dla średniozaawansowanych zajęcia z dnia
LSLV S100 – programowanie sekwencyjne PODSTAWY. ANIR O Dawid Wróblewski Aniro Sp. Z.O.O. Wrzesień 2015 Ⅰ. Podstawowa wiedza 1.Wstęp 2.Programowanie 3.Aktywacja.
Elementy cyfrowe i układy logiczne
Podstawowe pojęcia termodynamiki chemicznej -Układ i otoczenie, składniki otoczenia -Podział układów, fazy układu, parametry stanu układu, funkcja stanu,
Prawdy oczywiste Kiedy zarejestrować działalność? - Księgowość bez tajemnic! INFOLINIA: |
VHDL Ernest Jamro, Paweł Russek C3 p. 504
Lista Rozkazów: Język komputera Większość slajdów do tego wykładu to tłumaczenia i przeróbki oficjalnych sladjów do podręcznika Pattersona i Hennessy’ego.
Algorytmy Informatyka Zakres rozszerzony
VHDL Ernest Jamro, Paweł Russek C3 p. 504
KLASA VI 1. WSTĘP – Układy współrzędnych – przykłady 2. UKŁAD WSPÓŁRZĘDNYCH X-Y – definicja, rzędne, odcięte, początek układu. 3. WSPÓŁRZĘDNE PUNKTU –
© Kazimierz Duzinkiewicz, dr hab. inż. Katedra Inżynierii Systemów Sterowania Modelowanie i podstawy identyfikacji 2015/2016 Modelowanie rozmyte – podstawy,
Algorytm Newtona - Raphsona
POLITECHNIKA POZNAŃSKA WBMiZ Zakład Urządzeń Mechatronicznych STEROWNIKI URZĄDZEŃ MECHATRONICZNYCH
Katarzyna Rychlicka Wielomiany. Katarzyna Rychlicka Wielomiany Przykłady Wykresy funkcji wielomianowych Równania wielomianowe Działania na wielomianach.
Pętla synchronizacji fazowej (PLL - Phase Locked Loop)
Optymalizacja wybranych algorytmów przetwarzania obrazów przy użyciu zestawu instrukcji NEON dla urządzeń z procesorem ARM Promotor: dr hab. prof. WWSI.
Projektowanie systemów cyfrowych z wykorzystaniem języka VHDL Układy kombinacyjne.
VHDL Ernest Jamro, Paweł Russek C3 p. 504
Hoopl Higher-order optimization library
TEMAT: Omówienie programu Twido Soft i jego podstawowe możliwości
Programowanie Obiektowe – Wykład 1
Binarny sumator. Binarny sumator Konieczność zmniejszania wymiarów Dominacja efektów kwantowych.
Minimalizacja automatu
Rejestry przesuwne, sumatory
DEFINICJA I ZASTOSOWANIE W JĘZYKU HASKELL
Układy logiczne kombinacyjne sekwencyjne
Akademia C# - Lab2 Zmienne, instrukcje warunkowe, pętle, debugger,
ALGORYTMY I STRUKTURY DANYCH
Problem kodowania stanów w układach sekwencyjnych (automatach)
Projektowanie systemów cyfrowych z wykorzystaniem języka VHDL
Kurs języka C++ – wykład 13 ( )
Zajęcia przygotowujące do matury rozszerzonej z matematyki
Obliczenia w Matlabie Operatory, instrukcje sterujące, operacje bitowe
Laboratorium 1 – obsługa wejść i wyjść
Sensory i ich interfejsy
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
Sterowanie procesami ciągłymi
Implementacja rekurencji w języku Haskell
Rejestry, liczniki i sumatory.
Python 3 Wprowadzenie.
Zapis prezentacji:

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

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;

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;

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;

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

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;......

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;...

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

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

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;

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;

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;

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;

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;

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;

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;

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;

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;