Realizacja logiki kombinacyjnej Mariusz Rawski

Wielkość: px
Rozpocząć pokaz od strony:

Download "Realizacja logiki kombinacyjnej Mariusz Rawski"

Transkrypt

1 CAD Realizacja logiki kombinacyjnej

2 Logika kombinacyjna Logika jest logiką kombinacyjna jeśli wartość wyjść w danej chwili zależy wyłącznie od wartości wejść w danej chwili. x1 x2 x3 x4 a g f e a g b c Układ kombinacyjny nie posiada wewnętrznej pamięci ani pętli sprzężenia zwrotnego d W języku VHDL realizowane głównie przy wykorzystaniu instrukcji współbieżnych również procesów Przykładami funkcji kombinacyjnych są: dekodery, multipleksery sumatory 2

3 Instrukcje współbieżne Współbieżne instrukcje przypisania sygnału (Concurrent Signal Assignment Statements): podstawowe przypisanie do sygnału (simple signal assignment statement) sygnał <= wyrażenie; warunkowe przypisanie do sygnału (conditional signal assignmenet statement) sygnał <= wyrażenie1 when wyrażenie_boolowskie1 else wyrażenie2 when wyrażenie_boolowskie2 else wyrażenie3; selektywne przypisanie do sygnału (selected signal assignment statement) with expression select signal <= wyrażenie1 when stała1, wyrażenie2 when stała2; Zachowanie układu jest niezależne od kolejności instrukcji przyporządkowania sygnałów. Stosowane w specyfikacji typu przepływ danych (dataflow description). 3

4 Składnia Podstawowe przypisanie do sygnału Boolowskie lub arytmetyczne sygnał <= wyrażenie after time; Propagacja sygnału odpowiadająca czasowi niezbędnemu do obliczenia wyrażenia Z tego względu, że czas propagacji zależy od komponentów, wykorzystanej technologii, sposobu połączeń, procesu wytwarzania i warunków zewnętrznych środowiska, w którym działa urządzenie nie jest możliwa synteza układu o zadanym opóźnieniu jest niemożliwa. Przy opisie VHDL nie specyfikuje się konkretnego opóźnienia i przyjmowane jest domyślne δ-delay 4

5 Podstawowe przypisanie do sygnału przykłady status <= 1 ; even <= (p1 and p2) or (p3 and p4) aruthm_out <= a + b + 1 5

6 Przypisanie do sygnału z pętlą sprzężenia zwrotnego library ieee; use ieee.std_logic_1164.all; entity test is port( d, en : in std_logic; q, nq : out std_logic ); end test ; architecture data_flow of test is signal tmp : std_logic; tmp <= (tmp and not en) or (d and en); q <= tmp; nq <= not tmp; end data_flow; To nie jest już układ kombinacyjny na te same pobudzenia wejściowe odpowiada różnie 6

7 library ieee; use ieee.std_logic_1164.all; Pętlą sprzężenia zwrotnego problemy entity test is port( d, en : in std_logic; q, nq : out std_logic ); end test ; architecture data_flow of test is signal tmp : std_logic; tmp <= (tmp and not en) or (d and en); q <= tmp; nq <= not tmp; end data_flow; Instrukcja przypisania ze sprzężeniem zwrotnym sprawiają, że układ staje się wrażliwy na opóźnienia wewnętrzne i mogą pojawić się oscylacje czy wyścigi krytyczne. Ten styl kodowania nie jest najlepszy i powinien być unikany. 7

8 Sterowanie wyświetlaczem 7-segmentowym równania Tablica prawdy.i 4.o 7.type fr.ilb x(3) x(2) x(1) x(0).ob a b c d e f g e a = (!x(2)&!x(0)) (x(1)&!x(0)) (x(1)&x(0)) (x(2)&!x(1)&x(0)) (x(3)); b = (!x(2)&x(0)) (!x(2)&x(1)) (x(1)&x(0)) (!x(1)&!x(0)); c = (!x(2)&x(0)) (x(2)&!x(0)) (x(1)&x(0)) (!x(1)&!x(0)) (x(2)&!x(1)&x(0)); d = (!x(2)&!x(0)) (x(1)&!x(0)) (!x(2)&x(1)) (x(2)&!x(1)&x(0)) (x(3)); e = (!x(2)&!x(0)) (x(1)&!x(0)); f = (x(2)&!x(0)) (!x(1)&!x(0)) (x(2)&!x(1)&x(0)) (x(3)); g = (!x(2)&x(1)) (x(2)&!x(0)) (x(2)&!x(1)&x(0)) (x(3)); f e a g d b c Espresso.exe -oeqntott seven_segment.pla > seven_segment.eqn 8

9 Sterowanie wyświetlaczem 7-segmentowym VHDL library ieee; use ieee.std_logic_1164.all; entity seven_seg_controler is port( x : in std_logic_vector (3 downto 0); a, b, c, d, e, f, g : out std_logic ); end seven_seg_controler; architecture data_flow of seven_seg_controler is a <= (not x(2) and not x(0)) or (x(1) and not x(0)) or (x(1) and x(0)) or (x(2) and not x(1) and x(0)) or x(3); b <= (not x(2) and x(0)) or (not x(2) and x(1)) or (x(1) and x(0)) or (not x(1) and not x(0)); c <= (not x(2) and x(0)) or (x(2) and not x(0)) or (x(1) and x(0)) or (not x(1) and not x(0)) or (x(2) and not x(1) and x(0)); d <= (not x(2) and not x(0)) or (x(1) and not x(0)) or (not x(2) and x(1)) or (x(2) and not x(1) and x(0)) or (x(3)); e <= (not x(2) and not x(0)) or (x(1) and not x(0)); f <= (x(2) and not x(0)) or (not x(1) and not x(0)) or (x(2) and not x(1) and x(0)) or (x(3)); g <= (not x(2) and x(1)) or (x(2) and not x(0)) or (x(2) and not x(1) and x(0)) or (x(3)); end data_flow; 9

10 Sterowanie wyświetlaczem 7-segmentowym wyniki ; Fitter Summary ; ; Revision Name ; seven_seg_controler ; ; Top-level Entity Name ; seven_seg_controler ; ; Family ; Stratix ; ; Device ; EP1S10F484C5 ; ; Timing Models ; Final ; ; Total logic elements ; 7 / 10,570 ( < 1 % ) ; ; Total pins ; 11 / 336 ( 3 % ) ; ; Total virtual pins ; 0 ; ; Total memory bits ; 0 / 920,448 ( 0 % ) ; ; DSP block 9-bit elements ; 0 / 48 ( 0 % ) ; ; Total PLLs ; 0 / 6 ( 0 % ) ; ; Total DLLs ; 0 / 2 ( 0 % ) ;

11 Instrukcja selektywnego przypisania with wyrażenie _selekcjonujące select sygnał <= wyrażenie_1 when wybór_1, wyrażenie_2 when wybór_2, wyrażenie_n when wybór_n; Instrukcja selektywnego przypisania przypisuje wyrażenie zgodnie z wartością wyrażenia selekcjonującego. Wynikiem wyliczenia wyrażenia selekcjonującego musi być wartość dyskretna lub tablica 1-D, oznacza to, że liczba możliwych wartości jakie przybierz wyrażenie selekcjonujące jest ograniczona. Wartości wybór_i muszą być różne (żadna wartość nie może się pojawić dwukrotnie) i wszystkie wartości muszą być wymienione, co oznacza, że instrukcja musi dopasować każde z możliwych wartości wyrażenia selekcjonującego do najwyżej jednego wyboru. Pominięcie jakiś wartości spowoduje błąd kompilacji kodu. Error: VHDL Case Statement error at file.vhd(14): Case Statement choices must cover all possible values of expression Słowo kluczowe others może być użyte jako ostatni wybór wybór_n 11

12 Koncepcja realizacji Realizację instrukcji selektywnego przypisania można przedstawić jako abstrakcyjny układ multipleksujący, który wykorzystując sygnał selekcji przekazuje na wyjście wartość wybranego wyrażenia. with select_expr select sig <= expr_a when c0, expr_b when c1, expr_c when others; Przyjmijmy, że wyrażenie select_expr może przyjąć następujące wartości: c0, c1, c2, c3, c4. Realizacja instrukcji będzie następująca: c4 c3 c2 c1 sig c0 12

13 Implementacja tablicy prawdy Tablica prawdy wykorzystywana jest do opisu układów kombinacyjnych. Jest szczególnie przydatna do opisu małych układów, realizujących nieregularną logikę. Z tego względu, że tablica prawdy specyfikuje odpowiedzi układu na wszystkie możliwe wartości sygnału wejściowego naturalnym sposobem reprezentacji staje się instrukcji selektywnego przypisania. Można wykorzystać wartość do oznaczenia stanu don t care na wyjściu. Z tego względu, że wartość nie istnieje w realizacji fizycznej niektóre systemy mogą zgłosić błąd, ale mogą także wykorzystać tą informacje w procesie optymalizacji. Wykorzystanie nieokreśloności w układzie a b c o architecture data_flow of test is signal i : std_logic_vector(2 downto 0); i <= a & b & c; with i select o <= "01" when "001", "10" when "010", "11" when "100", "00" when "000", "--" when others; end data_flow; 13

14 Sterowanie wyświetlaczem 7-segmentowym tablica Tablica prawdy.i 4.o 7.type fr.ilb x(3) x(2) x(1) x(0).ob a b c d e f g e library ieee; use ieee.std_logic_1164.all; entity seven_seg_controler is port( x : in std_logic_vector (3 downto 0); a, b, c, d, e, f, g : out std_logic ); end seven_seg_controler; architecture data_flow of seven_seg_controler is signal o : std_logic_vector (6 downto 0); with x select o <= " " when "0000", " " when "0001", " " when "0010", " " when "0011", " " when "0100", " " when "0101", " " when "0110", " " when "0111", " " when "1000", " " when "1001", " when others; (a, b, c, d, e, f, g) <= o; end data_flow; f e a g d b c 14

15 Sterowanie wyświetlaczem 7-segmentowym wyniki ; Fitter Summary ; ; Revision Name ; seven_seg_controler ; ; Top-level Entity Name ; seven_seg_controler ; ; Family ; Stratix ; ; Device ; EP1S10F484C5 ; ; Timing Models ; Final ; ; Total logic elements ; 7 / 10,570 ( < 1 % ) ; ; Total pins ; 11 / 336 ( 3 % ) ; ; Total virtual pins ; 0 ; ; Total memory bits ; 0 / 920,448 ( 0 % ) ; ; DSP block 9-bit elements ; 0 / 48 ( 0 % ) ; ; Total PLLs ; 0 / 6 ( 0 % ) ; ; Total DLLs ; 0 / 2 ( 0 % ) ; Wykorzystanie nieokreśloności w układzie 15

16 4 porty wyjściowe wartość sel[1..0] decyduje o tym, na którym wyjściu pojawi się 1 sel[1..0] out3 out2 Dekoder library ieee; use ieee.std_logic_1164.all; entity decoder is port( sel : in std_logic_vector (1 downto 0); out0, out1, out2, out3 : out std_logic ); end decoder; architecture data_flow of decoder is signal o : std_logic_vector (3 downto 0); out1 with sel select out0 o <= "0001" when "00", "0010" when "01", "0100" when "10", "1000" when "11", "----" when others; (out3, out2, out1, out0) <= o; end data_flow; 16

17 Multiplekser 2 wejściowe szyny 2 bitowe szyna wyjściowa 2 bitowa sygnał select decyduje o tym, która szyna wejściowa jest przekazywana na wyjście Tablica prawdy.i 5.o 2.p 32.ilb sel a(1) a(0) b(1) b(0).ob o(1) o(0) # sel = 0 A = 0 B = # sel = 0 A = 0 B = # sel = 0 A = 0 B = # sel = 0 A = 0 B = # sel = 1 A = 0 B = # sel = 1 A = 0 B = # sel = 1 A = 0 B = # sel = 1 A = 3 B = # sel = 1 A = 3 B = 3.e a[1..0] b[1..0] out[1..0] select library ieee; use ieee.std_logic_1164.all; entity mux_2x3 is port( a, b : in std_logic_vector (1 downto 0); sel : in std_logic; o : out std_logic_vector (1 downto 0) ); end mux_2x3; architecture data_flow of mux_2x3 is signal i : std_logic_vector (4 downto 0); i <= sel & a & b; with i select o <= "00" when "00000",-- sel=0 "01" when "00100", "10" when "01000", "11" when "01100", "00" when "00001", "01" when "00101", "10" when "01001", "11" when "01101", "00" when "10000",-- sel=1 "01" when "10001", "10" when "10010", "11" when "10011", "--" when others; end data_flow; 17

18 Multiplekser wyniki ; Fitter Summary ; ; Revision Name ; max_2x3 ; ; Top-level Entity Name ; max_2x3 ; ; Family ; Stratix ; ; Device ; EP1S10F484C5 ; ; Timing Models ; Final ; ; Total logic elements ; 2 / 10,570 ( < 1 % ) ; ; Total pins ; 7 / 336 ( 3 % ) ; ; Total virtual pins ; 0 ; ; Total memory bits ; 0 / 920,448 ( 0 % ) ; ; DSP block 9-bit elements ; 0 / 48 ( 0 % ) ; ; Total PLLs ; 0 / 6 ( 0 % ) ; ; Total DLLs ; 0 / 2 ( 0 % ) ;

19 Problemy związanie z opisem układów tablicą prawdy 2 wejściowe szyny 8 bitowe szyna wyjściowa 8 bitowa sygnał select decyduje o tym, która szyna wejściowa jest przekazywana na wyjście Tablica prawdy tego układu ma 17 wejść, co oznacza, że ma 2 17 = wierszy.type fr.i 17.o 8.p ilb sel a(6) a(5) a(2) a(1) a(0) b(6) b(0).ob o(6) o(5) o(4) o(3) o(2) o(1) o(0) sel = 0 A = 0 B = sel = 0 A = 0 B = sel = 0 A = 0 B = sel = 0 A = 0 B = sel = 0 A = 0 B = sel = 0 A = 0 B = sel = 0 A = 0 B = sel = 0 A = 0 B = sel = 0 A = 0 B = sel = 0 A = 0 B = sel = 0 A = 0 B = 14 a[7..0] b[7..0] out[7..0] select sel = 1 A = 255 B = sel = 1 A = 255 B = sel = 1 A = 255 B = sel = 1 A = 255 B = sel = 1 A = 255 B = sel = 1 A = 255 B = sel = 1 A = 255 B = sel = 1 A = 255 B = sel = 1 A = 255 B = 255.e 19

20 Multiplekser inna wersja Tablica prawdy.i 5.o 2.p 8.ilb sel a(1) a(0) b(1) b(0).ob o(1) o(0) sel = 0 A = 0 B = X sel = 0 A = 1 B = X sel = 0 A = 2 B = X sel = 0 A = 3 B = X sel = 1 A = X B = sel = 1 A = X B = sel = 1 A = X B = sel = 1 A = X B = 3.e Jeśliby zastosować notację kostkową możliwą w formacie espresso tablica byłaby znacznie mniejsza library ieee; use ieee.std_logic_1164.all; entity mux_2x3 is port( a, b : in std_logic_vector (1 downto 0); sel : in std_logic; o : out std_logic_vector (1 downto 0) ); end mux_2x3; architecture data_flow of mux_2x3 is signal i : std_logic_vector (4 downto 0); i <= sel & a & b; with i select o <= "00" when "000--",-- sel=0 "01" when "001--", "10" when "010--", "11" when "011--", "00" when "1--00",-- sel=1 "01" when "1--01", "10" when "1--10", "11" when "1--11", "--" when others; end data_flow; 20

21 Multiplekser wyniki ; Fitter Summary ; ; Revision Name ; max_2x3 ; ; Top-level Entity Name ; max_2x3 ; ; Family ; Stratix ; ; Device ; EP1S10F484C5 ; ; Timing Models ; Final ; ; Total logic elements ; 1 / 10,570 ( < 1 % ) ; ; Total pins ; 7 / 336 ( 3 % ) ; ; Total virtual pins ; 0 ; ; Total memory bits ; 0 / 920,448 ( 0 % ) ; ; DSP block 9-bit elements ; 0 / 48 ( 0 % ) ; ; Total PLLs ; 0 / 6 ( 0 % ) ; ; Total DLLs ; 0 / 2 ( 0 % ) ; Rewelacyjna realizacja tylko jedna komórka! Układ na wyjściu stale ma wartość 0 Synteza logiczna dała w rezultacie wartość stałą na wyjściu. 21

22 Multiplekser inna wersja with i select o <= "00" when "000--",-- sel=0 "01" when "001--", "10" when "010--", "11" when "011--", "00" when "1--00",-- sel=1 "01" when "1--01", "10" when "1--10", "11" when "1--11", --" when others; Dlaczego ten zapis daje nieprawidłową realizację? Wartość nieokreślona (don t care) nie jest prawidłową wartością w algebrze boolowskiej jest jednak wykorzystywana w procesie projektowym. Wartość don t care może być użyta jako wartość sygnału wyjściowego by tablica prawdy była bardziej czytelna i mniejsza. Użyta jako wartość sygnału wyjściowego oznacza, że dokładna wartość jest nieistotna i w czasie syntezy można użyć wartości, która zoptymalizuje układ. W języku VHDL wykorzystanie don t care jako wartości sygnału wejściowego jest poprawne syntaktycznie, jednakże w fizycznej realizacji układu nigdy ta wartość nie wystąpi na wejściu układu. Narzędzie CAD nie uwzględni wartości stąd też przedstawiony kod jest równoznaczny z with i select o <= --" when others; 22

23 library ieee; use ieee.std_logic_1164.all; Multiplekser optymalna wersja entity mux_2x3 is port( a, b : in std_logic_vector (1 downto 0); sel : in std_logic; o : out std_logic_vector (1 downto 0) ); end mux_2x3; architecture data_flow of mux_2x3 is with sel select o <= a when '0', b when others; end data_flow; Ten sposób opisu jest bardzo czytelny i pozwala w łatwo tworzyć multipleksery o różnej liczbie portów wejściowych i różnych rozmiarach szyn danych. Wystarczą drobne modyfikacje kodu, aby zrealizować np. multiplekser 2x16! 23

24 Proste ALU arg1 library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; arg1 opcode simplealu opcode result 0 arg arg1 + arg arg1 arg2 result entity simplealu is port( opcode : in std_logic_vector (2 downto 0); arg1, arg2 : in std_logic_vector (7 downto 0); result : out std_logic_vector (7 downto 0) ); end simplealu; architecture data_flow of simplealu is signal sum, diff : std_logic_vector (7 downto 0); sum <= std_logic_vector(signed(arg1) + signed(arg2)); diff <= std_logic_vector(signed(arg1) - signed(arg2)); arg1 and arg arg1 or arg2 with opcode select result <= arg1 when "000" "001" "010" "011", sum when "100", diff when "101", arg1 and arg2 when "110", arg1 or arg2 when others; end data_flow; 24

25 Proste ALU ; Fitter Summary ; ; Revision Name ; simplealu ; ; Top-level Entity Name ; simplealu ; ; Family ; Stratix ; ; Device ; EP1S10F484C5 ; ; Timing Models ; Final ; ; Total logic elements ; 35 / 10,570 ( < 1 % ); ; Total pins ; 27 / 336 ( 8 % ) ; ; Total virtual pins ; 0 ; ; Total memory bits ; 0 / 920,448 ( 0 % ) ; ; DSP block 9-bit elements ; 0 / 48 ( 0 % ) ; ; Total PLLs ; 0 / 6 ( 0 % ) ; ; Total DLLs ; 0 / 2 ( 0 % ) ;

26 Instrukcja warunkowego przypisania sygnał <= wyrażenie_1 when wyrażenie_bool_1 else wyrażenie_2 when wyrażenie_bool_2 else wyrażenie_n-1 when wyrażenie_bool_n-1 else wyrażenie_n; Wyrażenia wyrażenie_bool_i zwracają wartość true lub false Wyrażenia te są kolejno wyliczane dopóki jedno z nich nie zwróci wartości true, wtedy sygnał otrzymuje wartość wyliczoną z na podstawię odpowiedniego wyrażenia wyrażenie_i Ostatnie wyrażenia wyrażenie_n decyduje o wartości sygnału jeśli żadne z wyrażeń wyrażenie_bool_i nie dało wartości true. Instrukcja ta nadaje się do realizacji układów, w których niektóre sygnały wejściowe mają większy priorytet niż inne. 26

27 Koncepcja realizacji Realizację instrukcji warunkowego przypisania można przedstawić jako abstrakcyjny układ multipleksujący, który wykorzystując sygnał selekcji przekazuje na wyjście wartość wybranego wyrażenia. sig <= expr_1 when bool_expr_1 else expr_2 when bool_expr_2 else expr_3 ; Realizacja instrukcji będzie następująca: sig bool_expr_2 bool_expr_1 27

28 Multiplekser 4 wejściowe szyny 8 bitowe szyna wyjściowa 2 bitowa sygnał select decyduje o tym, która szyna wejściowa jest przekazywana na wyjście a[7..0] b[7..0] c[7..0] out[7..0] library ieee; use ieee.std_logic_1164.all; entity mux_4x8 is port( a, b, c, d : in std_logic_vector (7 downto 0); sel : in std_logic_vector (1 downto 0); o : out std_logic_vector(7 downto 0) ); end mux_4x8; architecture data_flow of mux_4x8 is o <= a when (sel = "00") else b when (sel = "01") else c when (sel = "10") else d ; end data_flow; d[7..0] select Wykorzystanie nieokreśloności w układzie. W tym przypadku nie ma różnicy pomiędzy kodami VHDL, gdyż sprawdzone zostały wszystkie wartości sygnału sel. Jednakże sygnał ten jest typu std_logic_vector wiec może przyjąć 9 2 wartości, ale tylko dla celów symulacji. o <= a when (sel = "00") else b when (sel = "01") else c when (sel = "10") else d when (sel = "11") else " "; end data_flow; 28

29 Układ posiada wejścia: high żądanie przerwania od urządzenia o najwyższym priorytecie middle żądanie przerwania od urządzenia o niższym priorytecie low żądanie przerwania od urządzenia o najniższym Dekoder priorytetu przerwań Układ posiada wyjścia: IRQ_level numer przerwania do obsługi µp high middle low IRQ_level[1..0] high middle low IRQ_level

30 Dekoder priorytetu przerwań wersja błędna library ieee; use ieee.std_logic_1164.all; entity irq_dec is port( high, middle, low : in std_logic; irq_level : out std_logic_vector (1 downto 0) ); end irq_dec; architecture data_flow of irq_dec is signal i : std_logic_vector (2 downto 0); i <= high & middle & low; irq_level <= "11" when (i = "1--") else "10" when (i = "01-") else "01" when (i = "001") else "00"; end data_flow; Co jest powodem błędów? Wartość nie jest prawidłową wartością sygnału wejściowego. Kompilator zinterpretował to następująco: irq_level <= "01" when (i = "001") else "00"; 30

31 Dekoder priorytetu przerwań library ieee; use ieee.std_logic_1164.all; entity irq_dec is port( high, middle, low : in std_logic; irq_level : out std_logic_vector (1 downto 0) ); end irq_dec; architecture data_flow of irq_dec is irq_level <= "11 when (high = '1') else "10" when (middle = '1') else "01" when (low = '1') else "00"; end data_flow; Teraz wszystko jest dobrze! Czy nie można zastosować wartość i czerpać korzyści jakie to daje? 31

32 library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; Dekoder priorytetu przerwań - inaczej entity irq_dec is port( high, middle, low : in std_logic; irq_level : out std_logic_vector (1 downto 0) ); end irq_dec; architecture data_flow of irq_dec is signal i : std_logic_vector (2 downto 0); i <= high & middle & low; irq_level <= "11" when (std_match(i,"1--")) else "10" when (std_match(i,"01-")) else "01" when (i = "001") else "00"; end data_flow; Teraz też wszystko jest dobrze! Wykorzystanie funkcji std_match z biblioteki numeric_std pozwala na wykorzystywanie zapisu kostkowego z zastosowaniem wartości 32

33 Warunkowe przypisanie vs. selektywne przypisanie Z punktu widzenia syntezy układu instrukcje te realizują różne struktury komutacyjne. Instrukcja selektywnego przypisania: każdy wybór może być utożsamiany z wierszem tablicy prawdy, stąd też doskonale się nadaje do reprezentacji układów opisanych w sposób podobny do tablicy prawdy, jest mniej efektywna w przypadku, gdy niektóre wartości wejściowe mają większy priorytet niż inne. Instrukcja warunkowego przypisania: wymusza ustaloną kolejność sprawdzania warunków wyboru, nadaje się do opisu układów w których, niektóre wartości wejściowe mają większy priorytet niż inne Można dowolnie konwertować jedną instrukcję w drugą. with sel select sig <= expr_0 when w0, expr_1 when w1 w2, expr_2 when w3 w4 w5, expr_3 when others; sig <= expr_0 when (cond_expr_0) else expr_1 when (cond_expr_1) else expr_2; sig <= expr_0 when (sel=w0) else expr_1 when (sel=w1) or (sel=w2) else expr_2 when (sel=w3) or (sel=w4) or (sel=w5) else expr_3; sel(1) <= 1 when cond_expr_0 else 0 ; sel(0) <= 1 when cond_expr_1 else 0 ; with sel select sig <= expr_0 when 10 11, expr_1 when 01, expr_2 when others; 33

34 Monitorowanie tamy 7 czujników sygnalizujących stanem wysokim obecność wody 3 bitowe wyjście sygnalizujące poziom wody (0 7) sygnał alarmu gdy poziom wody zbyt niski lub zbyt wysoki sygnał awarii czujników sterownie śluzami zmniejszającymi i zwiększającymi poziom wody czujniki c[6..0] Jak zbudować taki układ!? c[6..0] level[2..0] error alarm p[1..0] 34

35 Monitorowanie tamy realizacja (1) Biblioteka numeric_std pozwoli skorzystać z operatorów relacyjnych dla typów std_logic_vector Nazwa error jest słowem kluczowym i niektóre kompilatory zgłoszą błąd Pomocniczy sygnał internal_value ułatwi opis działania układu i reprezentuje na bitach 2..0 wartość poziomu wody; najstarszy bit wykorzystany jest do wskazania czy odczyt poziomu wody jest poprawny czy nie. library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; entity tama is port( c : in std_logic_vector(6 downto 0); error : out std_logic; alarm : out std_logic; level : out std_logic_vector(2 downto 0); p : out std_logic_vector(1 downto 0) ); end tama; architecture data_flow of tama is signal internal_value : std_logic_vector (3 downto 0); alias water_level : std_logic_vector (2 downto 0) is internal_value (2 downto 0) ; alias wrong_level : std_logic is internal_value (3) ; Aliasy water_level i wrong_level ułatwią dostęp do informacji reprezentowanej przez sygnał internal_value 35

36 Monitorowanie tamy realizacja (2) Instrukcja selektywnego przypisania opisuje reakcje na prawidłowe wskazania czujników, wszystkie inne oznaczają awarię czujników co obsługiwane jest w sekcji others. Sygnał internal_value reprezentuje na bitach 2..0 wartość poziomu wody; najstarszy bit wykorzystany jest do wskazania czy odczyt poziomu wody jest poprawny czy nie. Aliasy water_level i wrong_level ułatwią opis pozostałych sygnałów wyjściowych. with c select internal_value <= "0000" when " ", "0001" when " ", "0010" when " ", "0011" when " ", "0100" when " ", "0101" when " ", "0110" when " ", "0111" when " ", "1---" when others; alarm <= '1' when ((unsigned(water_level) > 5) or (unsigned(water_level) < 2)) and (wrong_level /= '1') else '0'; p(1) <= '1' when (unsigned(water_level) > 5) and (wrong_level /= '1') else '0'; p(0) <= '1' when (unsigned(water_level) < 2) and (wrong_level /= '1') else '0'; level <= water_level; error <= wrong_level; end data_flow; 36

37 Monitorowanie tamy wyniki Na wyjściu pojawiają się zaburzenia charakterystyczne dla układów kombinacyjnych wynikające z różnych opóźnień ścieżek sygnałów z wejść układu do jego wyjść. W niektórych sytuacją mogą spowodować nieprawidłowe działanie systemu. 37

38 Opis z wykorzystaniem instrukcji sekwencyjnych Proces (process) jest konstrukcją VHDL zawierającą zbiór akcji wykonywanych sekwencyjnie, znanych jaki instrukcje sekwencyjne. Proces sam w sobie jest instrukcją współbieżną. Może być interpretowany jako fragment układu zamknięty w czarnej skrzynce, którego zachowanie można scharakteryzować instrukcjami sekwencyjnymi. Nie zawsze istnieje możliwość realizacji fizycznego układu działającego zgodnie z opisanym zachowaniem. Wykonanie operacji wewnątrz procesu jest sekwencyjne, dlatego też kolejność instrukcji ma znaczenie. Wiele instrukcji sekwencyjnych nie ma bezpośredniej reprezentacji w sprzęcie i są trudne lub niemożliwe do realizacji. 38

39 Proces z listą czułości Składnia procesu z listą czułości jest następująca: process_label: process (signal1, signal2, signal3) -- deklaracje variable variable1 : std_logic; -- instrukcje sekwencyjne end process process_label; Lista czułości reprezentuje sygnały, na które reaguje proces. Proces można interpretować jako fragment układu, który może być aktywny (activated) lub nieaktywny (suspended). Proces jest aktywowany, gdy sygnał występujący na liście czułości się zmieni, podobnie jak układ odpowiadający na zmianę sygnału wejściowego. Gdy proces zostanie aktywowany sekwencyjnie wykonywane są instrukcje aż do końca procesu. Następnie proces jest zawieszany do kolejnej zmiany sygnałów. 39

40 Niekompletna lista czułości Jednym z problemów często spotykanych przy konstrukcji procesów jest niekompletna lista czułości, czyli taka, w której brakuje jednego lub więcej sygnałów wykorzystywanych w procesie. signal a, b, c, y : std_logic; process (a) y <= a and b and c; end process; Gdy sygnał a się zmieni proces jest aktywowany i układ zachowuje się zgodnie z oczekiwaniem. Jednakże, gdy zmieniają się sygnały b lub c proces pozostaje zawieszony i sygnał y ma ciągle wartość poprzednią. Oznacza to, że układ posiada pewnego rodzaju pamięć wyzwalaną zarówno zboczem narastającym jak i opadającym sygnału a. Dla układów kombinacyjnych wartość wyjść zależy od wejść układu, stąd też wszystkie sygnały wejściowe muszą być umieszczone w liście czułości. 40

41 Niekompletna lista czułości - przykład Multiplekser 2 portowy, 1 bitowy: a, b porty wejściowe sel sygnał wyboru Niepełna lista czułości proces aktywuje się jedynie przy zmianach sygnału a. Zmiany na wejściach b i sel nie wpływają na działanie układu Warning (10492): VHDL Process Statement warning at test.vhd(15): signal "sel" is read inside the Process Statement but isn't in the Process Statement's sensitivity list library ieee; use ieee.std_logic_1164.all; entity test is port( a, b, sel : in std_logic; o : out std_logic ); end test; architecture behavior of test is process (a) o <= (a and not sel) or (b and sel); end process; end behavior ; Ta symulacja jest prawidłowa! Czyżby inny kod VHDL? System CAD dokonał inteligentnej kompilacji! Działa jak multiplekser, ale tylko wtedy, gdy zmienia się sygnał a 41

42 Sekwencyjne przypisanie wartości sygnału Sekwencyjne przypisanie sygnału jest identyczne do współbieżnego przypisania: sygnał <= wyrażenie W procesie nie można natomiast używać współbieżnej instrukcji przypisania warunkowego i selektywnego. Inaczej niż w współbieżnym przypisaniu wartości do sygnału, w przypadku przypisania sekwencyjnego wartość sygnałowi jest nadawana po zakończeniu procesu. Wewnątrz procesu sygnałowi może być przypisywana wartość wielokrotnie. Tylko ostatnie przypisanie decyduje o wartości sygnału. process (a, b, c, d) y <= a or b; y <= b xor c; y <= a and d; end process; process (a, b, c, d) y <= a and d; end process; Procesy przedstawione obok dadzą tą samą realizację. Z wyjątkiem szczególnych sytuacji należy unikać wielokrotnych przypisań do sygnału. 42

43 Sekwencyjne przypisanie wartości zmiennej Sekwencyjne przypisanie wartości zmiennej dokonywane jest natychmiast (nie występuje opóźnienie): zmienna := wyrażenie Zachowanie zmiennych w procesie jest identyczne do tego znanego z języków programowania. Ziemne są lokalne dla procesu i muszą być deklarowane wewnątrz procesu. Pomimo, że zachowanie zmiennej jest łatwe do zrozumienia, odwzorowanie jej w sprzęcie może być trudne. Procesy przedstawione obok dadzą tą samą realizację. process (a, b) variable tmp : std_logic; tmp := 1 ; tmp := tmp and a; tmp := tmp or b; y <= tmp; end process; process (a, b) variable tmp0 : std_logic; variable tmp1 : std_logic; variable tmp2 : std_logic; tmp0 := 1 ; tmp1 := tmp0 and a; tmp2 := tmp1 or b; y <= tmp2; end process; y <= (( 1 and a) or b); 43

44 Instrukcja warunkowa if Konstrukcja if posiada jedną gałąź then, jedną lub więcej opcjonalnych gałęzi elsif i jedna opcjonalną gałąź else. Wyrażenia expression_i jest wyrażeniem boolowskim zwracającym wartość true lub false. Wyrażenie te są sprawdzane kolejno. Gdy wyrażenie ma wartość true wykonywane są instrukcje w danej gałęzi zaś pozostałe będą pominięte. Jeśli żadne z wyrażeń expression_i nie wylicza się do wartości true i gałąź else istnieje wykonywane są instrukcje w tej gałęzi. Gałęzie konstrukcji if mogą zawierać inne instrukcje sekwencyjne, w tym inne instrukcje if. Odpowiednie i ostrożne stosowanie konstrukcji if może sprawić, że kod będzie czytelniejszy i czasami bardziej efektywny. if expression_1 then statement_1; statement_2; elsif expression_2 then statement_3; statement_4; else statement_5; statement_6; end if; if expression then if expression then statement; elsif expression then statement; else statement; end if; elsif expression then statement; else statement; end if; 44

45 Porównanie z instrukcją przypisania warunkowego process (a, b, c) if (a > b) then if (a > c) then max <= a; else max <= c; end if; else if (b > c) then max <= b; else max <= c; end if; end if; Konstrukcja if jest podobna do instrukcji przypisania warunkowego. Jednakże jest ona bardziej ogólna, gdyż gałęzie mogą zawierać sekwencje innych instrukcji sekwencyjnych. signal ac_max, bc_max : std_logic; ac_max <= a when (a > c) else c; bc_max <= b when (b > c) else c; max <= ac_max when (a > b) else ac_max; albo max <= a when ((a >b) and (a > c)) else b when (b > c) else c; process (a, b) if (a > b) then y <= a + b; z <= a - b; x <= 1 ; else y <= a - b; z <= a + b; x <= 0 ; end if; Konstrukcja if jest bardziej odpowiednia także w sytuacji, gdy wiele operacji jest kontrolowanych przez to samo wyrażenie boolowskie. y <= a + b when (a >b) else b a; z <= a - b when (a >b) else b + a; x <= 1 when (a >b) else 0 ; 45

46 Niekompletne gałęzie W instrukcji if tylko gałąź then jest wymagana. Co oznacza, że poniższy kod jest poprawny: process (a, b) if (a = b) then eq <= 1 ; end if; end; Gdy sygnał a jest równy b sygnał eq otrzymuje wartość 1. Dla przypadku, gdy a nie jest równe b nie umieszczono gałęzi else. Zgodnie z semantyką języka VHDL oznacza to, że sygnał eq się nie zmienia i podtrzymuje poprzednią wartość. process (a, b) if (a = b) then eq <= 1 ; else eq <= q; end if; end; 46

47 Niekompletne gałęzie przykład Komparator 2 portowy, 4 bitowy: a, b porty wejściowe g wyjście wskazujące, że a > b l wyjście wskazujące, że a < b Niepełna lista czułości proces aktywuje się jedynie przy zmianach sygnału a. Zmiany na wejściach b i sel nie wpływają na działanie układu Warning (10631): VHDL Process Statement warning at test.vhd(13): inferring latch(es) for signal or variable "l", which holds its previous value in one or more paths through the process library ieee; use ieee.std_logic_1164.all; entity test is port( a, b : in std_logic_vector(4 downto 0); l, g : out std_logic ); end test; architecture behavior of test is process (a, b) if (a < b) then l <= '1'; g <= '0'; elsif (a > b) then l <= '0'; g <= '1'; end if; end process; end behavior ; Dla sytuacji, gdy a = b wyjścia podtrzymują poprzednią wartość. 47

48 Niekompletne przypisania sygnałów Instrukcja if ma wiele gałęzi. Istnieje możliwość, że wartość przypisywana jest do sygnału, nie we wszystkich gałęziach, tylko w niektórych. O ile jest to poprawne syntaktycznie, niekompletne przypisania do sygnału wprowadzają niezamierzone elementy pamięciowe do układu. Zgodnie z semantyką języka VHDL sygnał zachowuje wartość, jeśli nie następuję do niego przypisanie. Sygnałom należy przypisywać wartości we wszystkich gałęziach konstrukcji if lub przypisać im wartość domyślną na początku procesu. process (a, b) if (a < b) then lt <= '1'; elsif (a > b) then gt <= '1'; else eq <= 1 ; end if; end process; process (a, b) if (a < b) then lt <= '1'; gt <= 0'; eq <= 0 ; elsif (a > b) then lt <= 0'; gt <= 1'; eq <= 0 ; else lt <= 0'; gt <= 0'; eq <= 1 ; end if; end process; W związku, że w procesie tylko ostatnie przypisanie do sygnału daje efekt, przypisanie wartości początkowej sygnałom pozwala na zwięzły i czytelny opis układu process (a, b) lt <= 0'; gt <= 0'; eq <= 0 ; if (a < b) then lt <= '1'; elsif (a > b) then gt <= '1'; else eq <= 1 ; end if; end process; process; 48

49 Kontrola dostępu do szyny Moduł będący częścią łańcucha obsługującego dostęp do szyny Urządzenie pierwsze w łańcuchu ma najwyższy priorytet Moduł niżej w łańcuchu musi zapytać o pozwolenie dostępu do szyny modułów znajdujących się wyżej Zezwolenie na dostęp do szyny uzyskuje urządzenie o najwyższym priorytecie spośród urządzeń domagających się dostępu Sygnały aktywne stanem niskim request_out_n grant_in_n local_grant_n local_reguest_n request_in_n grant_out_n 49

50 Kontrola dostępu do szyny realizacja library ieee; use ieee.std_logic_1164.all; entity daisy_chain is port( request_in_n grant_in_n local_request_n request_out_n grant_out_n local_grant_n ); end daisy_chain; : in std_logic; : in std_logic; : in std_logic; : out std_logic; : out std_logic; : out std_logic Sygnały aktywne staniem niskim warto wyróżnić poprzez dodanie przyrostka do nazwy Proces odpowiedzialny za zgłaszanie do modułu o wyższym priorytecie żądania zezwolenia dostępu do szyny Proces odpowiedzialny za zezwolenie dostępu do szyny dla modułu lokalnego lub dla modułów o niższym priorytecie Ustalenie wartości domyślnych dla sygnałów grant_out_n i local_grant_n dzięki czemu nie trzeba ustalać ich wartości w każdej gałęzi instrukcji if architecture behavior of daisy_chain is request_process: process (local_request_n, request_in_n) if ((local_request_n = '0') or (request_in_n = '0')) then request_out_n <= '0'; else request_out_n <= '1'; end if; end process; grant_process: process (grant_in_n, local_request_n, request_in_n) grant_out_n <= '1'; local_grant_n <= '1'; if (grant_in_n = '0') then if (local_request_n = '0') then local_grant_n <= '0'; elsif (request_in_n = '0') then end if; end if; end process; end behavior ; grant_out_n <= '0'; 50

51 Kontrola dostępu do szyny wyniki Zezwolenie od urządzenia o wyższym priorytecie Zgłoszenie żądania dostępu od urządzenia o niższym priorytecie Zgłoszenie zapytania do urządzenia o wyższym priorytecie Zezwolenie na dostęp dla urządzenia o niższym priorytecie Zgłoszenie żądania dostępu od urządzenia lokalnego Jak działa to urządzenie?. Zezwolenie od urządzenia o wyższym priorytecie Zdjęcie zezwolenie dla urządzenia o niższym priorytecie i zezwolenie dla urządzenia lokalnego 51

52 Kontrola dostępu do szyny działanie Urządzenie zgłasza chęć dostępu do szyny Zezwolenie na dostęp dla urządzenia Urządzenie o średnim priorytecie zgłasza chęć dostępu do szyny Zezwolenie dostępu udzielone z równoczesnym zdjęciem zezwolenia dla urządzenia o niższym priorytecie, jednak tylko do momentu, gdy urządzenie o wyższym priorytecie chce dostępu do szyny 52

53 Instrukcja warunkowa case Konstrukcja case wykorzystuje wartość wyrażenia expression do wybory instrukcji, które mają być wykonane. Wartości jakie daję wyrażenie expression muszą być typu dyskretnego albo muszą być w postaci tablicy jednowymiarowej. Wybory choice_i są wartościami (lub zbiorami wartości), do których może się wyliczyć wyrażenie expression. Każdy z wyborów może się pojawić tylko raz i wszystkie możliwe wartości wyrażenia expression muszą być uwzględnione. Słowo kluczowe others może być użyte jako ostatni wybór dla uwzględnienia wszystkich niewymienionych wartości. case expression is when choice_1 => statement_1; statement_2; when choice_2 => statement_3; statement_4; when choice_n => statement_k; statement_k+1; end case; case expression is when choice_1 => statement_1; statement_2; when choice_2 => statement_3; statement_4; when others=> statement_5; statement_6; end case; 53

54 Demultiplexer port wejściowy 4 bitowy 4 porty wyjściowe wejście selekcjonujące 2 bitowe wartość sel[1..0] decyduje o tym, na którym wyjście przekazana jest wartość z wejścia i[3..0] a[3..0] b[3..0] c[3..0] d[3..0] sel[1..0] library ieee; use ieee.std_logic_1164.all; entity demux_4x4 is port( i : in std_logic_vector (3 downto 0); sel : in std_logic_vector (1 downto 0); a, b, c, d : out std_logic_vector (3 downto 0) ); end demux_4x4; architecture behavior of demux_4x4 is process (i, sel) a <= (others => '0'); b <= (others => '0'); c <= (others => '0'); d <= (others => '0'); case sel is when "00" => a <= i; when "01" => b <= i; when "10" => c <= i; when others => d <= i; end case; end process; end behavior; Wartości początkowe sygnałów wyjściowych. Zapis (others => 0 ) Ustawia na wszystkich bitach 0 54

55 Proste ALU arg1 arg1 opcode simplealu result architecture behavior of simplealu is signal src0s, src1s : signed (7 downto 0); src0s <= signed (arg1); src1s <= signed (arg2); opcode library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; result 0 arg arg1 + arg arg1 arg arg1 and arg arg1 or arg2 entity simplealu is port( opcode : in std_logic_vector (2 downto 0); arg1, arg2 : in std_logic_vector (7 downto 0); result : out std_logic_vector (7 downto 0) ); end simplealu; process (opcode, arg1, arg2, src0s, src1s ) case opcode is when "000" "001" "010" "011" => result <= arg1 ; when 100 => result <= std_logic_vector(src0s + src1s); when 101 => result <= std_logic_vector(src0 s src1s); when 110 => result <= arg1 and arg2; when others => result <= arg0 or arc2; end case; end process; end behavior ; 55

56 Niekompletne przypisania sygnałów Inaczej niż w przypadku instrukcji if w instrukcji case muszą być uwzględnione wszystkie możliwe wartości wyrażenia selekcjonującego i nie można ominąć żadnej klauzuli when powoduje to błąd kompilacji. Jednak niekompletne przypisanie ciągle może wystąpić wprowadzając niechciany element pamięciowy. Zgodnie z semantyką języka VHDL sygnał zachowuje wartość, jeśli nie następuję do niego przypisanie. Sygnałom należy przypisywać wartość we wszystkich klauzulach when lub wartość domyślną na początku procesu. process (a) case a is when 11 => o(0) <= '1'; when 10 => o(1) <= '1'; when 01 => o(2) <= '1'; when others => o(3) <= '1'; end case; end process; process (a) case a is when 11 => o(0) <= '1'; o(1) <= 0'; o(2) <= 0'; o(3) <= 0'; when 10 => o(0) <= 0'; o(1) <= 1'; o(2) <= 0'; o(3) <= 0'; when 01 => o(0) <= 0'; o(1) <= 0'; o(2) <= 1'; o(3) <= 0'; when others => o(0) <= 0'; o(1) <= 0'; o(2) <= 0'; o(3) <= 1'; end case; end process; W związku, że w procesie tylko ostatnie przypisanie do sygnału daje efekt, przypisanie wartości początkowej sygnałom pozwala na zwięzły i czytelny opis układu process (a) o <= (others => 0 ); case a is when 11 => o(0) <= '1'; when 10 => o(1) <= '1'; when 01 => o(2) <= '1'; when others => o(3) <= '1'; end case; end process; 56

57 Parametry czasowe układów kombinacyjnych Układ cyfrowy nie może odpowiadać na zmianę sygnałów wejściowych natychmiastowo. Wyjścia są w rzeczywistości funkcją czasu. Najważniejszą charakterystyką układu jest czas propagacji, czyli czas niezbędny aby układ wygenerował prawidłową, stabilną wartość wyjściową, która jest odpowiedzią na zmianę wartości sygnałów wejściowych. Innym zjawiskiem związanym z parametrami czasowymi układu jest hazard, czyli wystąpienie niepożądanych fluktuacji sygnału wyjściowego przed jego ustabilizowaniem 57

58 Ścieżka krytyczna systemu Topologiczna ścieżka krytyczna ścieżka wyznaczana przez topologie układu. Wykorzystanie topologicznej ścieżki krytycznej do wyznaczania opóźnienia układu może prowadzić do przeszacowania opóźnienia. Spowodowane jest to przez fałszywe ścieżki propagacji sygnału. Fałszywa ścieżka krytyczna ścieżka topologiczna wzdłuż której sygnał nie propaguje. 7 ns 13 ns Fałszywa ścieżka krytyczna 6 ns 3 ns Rzeczywista ścieżka krytyczna 58

59 Optymalizacja realizacji o(0) <= i(0) or i(1); o(1) <= i(0) or i(1) or i(2); O(2) <= i(0) or i(1) or i(2) or i(3); Optymalizacja pod kątem wykorzystania zasobów Optymalizacja pod kątem szybkości działania 59

60 Realizacja logiki kombinacyjnej porady Unikaj pętli sprzężenia zwrotnego. Instrukcja warunkowego przypisania i selektywnego przypisania może być traktowana jako swego rodzaju struktura komutacyjna. Instrukcja warunkowego przypisania wprowadza priorytetową strukturę komutacyjną zbyt duża liczba klauzul when może prowadzić do złożonych kaskadowo połączonych struktur Selektywne przypisanie wprowadza strukturę multipleksującą zbyt duża liczba wyborów prowadzi do multiplekserów o dużej liczbie portów wejściowych. Przy wykorzystywaniu procesów do realizacji układów kombinacyjnych: umieść wszystkie sygnały wejściowe w liście czułości, wyspecyfikuj wszystkie gałęzie instrukcji if, przypisanie do sygnału wyjściowego musi się znaleźć w każdej gałęzi instrukcji if i case, dobrym zwyczajem jest przypisanie wszystkim sygnałom wyjściowym wartości domyślnej na początku procesu. 60

Projektowanie hierarchiczne Mariusz Rawski

Projektowanie hierarchiczne Mariusz Rawski CAD Projektowanie hierarchiczne rawski@tele.pw.edu.pl http://rawski.zpt.tele.pw.edu.pl/ Zamek elektroniczny: Elektroniczny zamek kod 4 cyfrowy kod wprowadzony z klawiatury ready sygnalizacja gotowości

Bardziej szczegółowo

Układy reprogramowalne i SoC Język VHDL (część 4)

Układy reprogramowalne i SoC Język VHDL (część 4) Język VHDL (część 4) Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka bez ograniczeń - zintegrowany rozwój Politechniki

Bardziej szczegółowo

Modelowanie złożonych układów cyfrowych (1)

Modelowanie złożonych układów cyfrowych (1) Modelowanie złożonych układów cyfrowych () funkcje i procedury przykłady (przerzutniki, rejestry) style programowania kombinacyjne bloki funkcjonalne bufory trójstanowe multipleksery kodery priorytetowe

Bardziej szczegółowo

Języki opisu sprzętu VHDL Mariusz Rawski

Języki opisu sprzętu VHDL Mariusz Rawski CAD Języki opisu sprzętu VHDL rawski@tele.pw.edu.pl http://rawski.zpt.tele.pw.edu.pl/ Języki opisu sprzętu System cyfrowy może być opisany na różnych poziomach abstrakcji i z wykorzystaniem różnych sposobów

Bardziej szczegółowo

Technika cyfrowa projekt: Sumator 4 bitowy równoległy

Technika cyfrowa projekt: Sumator 4 bitowy równoległy Technika cyfrowa projekt: Sumator 4 bitowy równoległy Autorzy: Paweł Bara Robert Boczek Przebieg prac projektowych: Zadany układ dostaje na wejściu dwie czterobitowe liczby naturalne, sumuje je, po czym

Bardziej szczegółowo

Laboratorium 10 Temat: Zaawansowane jednostki testowe. Operacje na plikach. Funkcje.

Laboratorium 10 Temat: Zaawansowane jednostki testowe. Operacje na plikach. Funkcje. Laboratorium 10 Temat: Zaawansowane jednostki testowe. Operacje na plikach. Funkcje. 1. W języku VHDL zdefiniowano mechanizm odczytywania i zapisywania danych z i do plików. Pliki te mogą być wykorzystywane

Bardziej szczegółowo

Projektowanie automatów z użyciem VHDL

Projektowanie automatów z użyciem VHDL Projektowanie automatów z użyciem VHDL struktura automatu i jego modelu w VHDL przerzutnik T jako automat przykłady automatów z wyjściami typu: Moore'a Mealy stanu kodowanie stanów automatu Wykorzystano

Bardziej szczegółowo

Specyfika projektowania Mariusz Rawski

Specyfika projektowania Mariusz Rawski CAD Specyfika projektowania Mariusz Rawski rawski@tele.pw.edu.pl http://rawski.zpt.tele.pw.edu.pl/ System cyfrowy pierwsze skojarzenie Urządzenia wprowadzania danych: klawiatury czytniki urządzenia przetwarzania

Bardziej szczegółowo

1. ISE WebPack i VHDL Xilinx ISE Design Suite 10.1 VHDL Tworzenie projektu Project Navigator Xilinx ISE Design Suite 10.1 File

1. ISE WebPack i VHDL Xilinx ISE Design Suite 10.1 VHDL Tworzenie projektu Project Navigator Xilinx ISE Design Suite 10.1 File 1. ISE WebPack i VHDL Celem ćwiczenia jest szybkie zaznajomienie się ze środowiskiem projektowym Xilinx ISE Design Suite 10.1 oraz językiem opisu sprzętu VHDL. Tworzenie projektu Uruchom program Project

Bardziej szczegółowo

Projekt prostego procesora

Projekt prostego procesora Projekt prostego procesora Opracowany przez Rafała Walkowiaka dla zajęć z PTC 2012/2013 w oparciu o Laboratory Exercise 9 Altera Corporation Rysunek 1 przedstawia schemat układu cyfrowego stanowiącego

Bardziej szczegółowo

Altera Quartus II. Opis niektórych komponentów dostarczanych razem ze środowiskiem. Opracował: mgr inż. Leszek Ciopiński

Altera Quartus II. Opis niektórych komponentów dostarczanych razem ze środowiskiem. Opracował: mgr inż. Leszek Ciopiński Altera Quartus II Opis niektórych komponentów dostarczanych razem ze środowiskiem Opracował: mgr inż. Leszek Ciopiński Spis treści Opis wybranych zagadnień obsługi środowiska Altera Quartus II:...1 Magistrale:...

Bardziej szczegółowo

Projektowanie hierarchiczne Mariusz Rawski

Projektowanie hierarchiczne Mariusz Rawski CAD Projektowanie hierarchiczne rawski@tele.pw.edu.pl http://rawski.zpt.tele.pw.edu.pl/ Zamek elektroniczny: Elektroniczny zamek kod 4 cyfrowy kod wprowadzony z klawiatury ready sygnalizacja gotowości

Bardziej szczegółowo

WOJSKOWA AKADEMIA TECHNICZNA im. Jarosława Dąbrowskiego LABORATORIUM UKŁADÓW PROGRAMOWALNYCH I SPECJALIZOWANYCH

WOJSKOWA AKADEMIA TECHNICZNA im. Jarosława Dąbrowskiego LABORATORIUM UKŁADÓW PROGRAMOWALNYCH I SPECJALIZOWANYCH WOJSKOWA AKADEMIA TECHNICZNA im. Jarosława Dąbrowskiego LABORATORIUM UKŁADÓW PROGRAMOWALNYCH I SPECJALIZOWANYCH SPRAWOZDANIE Temat: Projekt notesu elektronicznego w języku VHDL przy użyciu układów firmy

Bardziej szczegółowo

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki. ĆWICZENIE Nr 4 (3h) Przerzutniki, zatrzaski i rejestry w VHDL

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki. ĆWICZENIE Nr 4 (3h) Przerzutniki, zatrzaski i rejestry w VHDL Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki ĆWICZENIE Nr 4 (3h) Przerzutniki, zatrzaski i rejestry w VHDL Instrukcja pomocnicza do laboratorium z przedmiotu Synteza układów

Bardziej szczegółowo

Projektowanie Urządzeń Cyfrowych

Projektowanie Urządzeń Cyfrowych Projektowanie Urządzeń Cyfrowych Laboratorium 2 Przykład prostego ALU Opracował: mgr inż. Leszek Ciopiński Wstęp: Magistrale: Program MAX+plus II umożliwia tworzenie magistral. Magistrale są to grupy przewodów

Bardziej szczegółowo

Instrukcje sekwencyjne

Instrukcje sekwencyjne nstrukcje sekwencyjne nstrukcje sekwencyjne są stosowane w specyfikacji behawioralnej (behavioral description) rzede wszystkim w tzw. procesach (process) roces nstrukcja F nstrukcja CASE Z 1 rocesy Konstrukcja

Bardziej szczegółowo

Elementy języka VHDL. obiekty typy danych atrybuty pakiety i biblioteki instrukcje współbieżne instrukcje sekwencyjne. PUE-w3 1

Elementy języka VHDL. obiekty typy danych atrybuty pakiety i biblioteki instrukcje współbieżne instrukcje sekwencyjne. PUE-w3 1 Elementy języka VHDL obiekty typy danych atrybuty pakiety i biblioteki instrukcje współbieżne instrukcje sekwencyjne PUE-w3 1 Obiekty (sygnały, zmienne, stałe, pliki) Obiekty służą do zapisu i pamiętania

Bardziej szczegółowo

VHDL. Zebrał i opracował R.Walkowiak PTC wykład 2013/2014

VHDL. Zebrał i opracował R.Walkowiak PTC wykład 2013/2014 VHDL przykłady rozwiązań Zebrał i opracował R.Walkowiak PTC wykład 2013/2014 for generate Tworzenie wektora obiektów : for in generate -- wyrażenia równoległe end

Bardziej szczegółowo

Pojedyncze wartości zadeklarowanego typu Ustawiane przed rozpoczęciem symulacji bez moŝliwości

Pojedyncze wartości zadeklarowanego typu Ustawiane przed rozpoczęciem symulacji bez moŝliwości Stałe - constant Pojedyncze wartości zadeklarowanego typu Ustawiane przed rozpoczęciem symulacji bez moŝliwości późniejszych zmian Deklarowane w ciele architektury Widoczne dla całej architektury architecture

Bardziej szczegółowo

Programowalne układy logiczne

Programowalne układy logiczne Programowalne układy logiczne Układy kombinacyjne Szymon Acedański Marcin Peczarski Instytut Informatyki Uniwersytetu Warszawskiego 28 września 2015 Co to jest układ kombinacyjny? Stan wyjść zależy tylko

Bardziej szczegółowo

Projektowanie w VHDL

Projektowanie w VHDL Projektowanie w VHDL powtórka wiadomości o języku VHDL słowa zastrzeżone typy danych, deklaracje obiektów instrukcje współbieżne i sekwencyjne pętle for, while typowe bloki układów cyfrowych przykłady

Bardziej szczegółowo

Sposoby projektowania systemów w cyfrowych

Sposoby projektowania systemów w cyfrowych Sposoby projektowania systemów w cyfrowych Top-down Idea całości projektu Dekompozycja na mniejsze bloki Projekt i rafinacja podbloków Łączenie bloków w całość PRZYKŁAD (sumator kaskadowy) zdefiniowanie

Bardziej szczegółowo

VHLD Very High Speed Integrated Circuit (VHSIC) Hardware Description Language (VHDL)

VHLD Very High Speed Integrated Circuit (VHSIC) Hardware Description Language (VHDL) VHLD Very High Speed Integrated Circuit (VHSIC) Hardware Description Language (VHDL) Język VHDL jest jednym z nowszych języków opisu i projektowania układów cyfrowych. W lipcu 1983 roku firmy Intermetrics,

Bardziej szczegółowo

Systemy Czasu Rzeczywistego FPGA

Systemy Czasu Rzeczywistego FPGA 01. Systemy Czasu Rzeczywistego FPGA 1 Systemy Czasu Rzeczywistego FPGA laboratorium: 04 autor: mgr inż. Mateusz Baran 01. Systemy Czasu Rzeczywistego FPGA 2 1 Spis treści FPGA... 1 1 Spis treści... 2

Bardziej szczegółowo

Systemy Czasu Rzeczywistego FPGA

Systemy Czasu Rzeczywistego FPGA 01. Systemy Czasu Rzeczywistego FPGA 1 Systemy Czasu Rzeczywistego FPGA laboratorium: 03 autor: mgr inż. Mateusz Baran 01. Systemy Czasu Rzeczywistego FPGA 2 1 Spis treści FPGA... 1 1 Spis treści... 2

Bardziej szczegółowo

Przykładowe pytania z części PSPICE. 1. Podaj zasady tworzenia pliku symulacyjnego. 2. Czy składnia PSPICE jest czuła na wielkość liter? 3.

Przykładowe pytania z części PSPICE. 1. Podaj zasady tworzenia pliku symulacyjnego. 2. Czy składnia PSPICE jest czuła na wielkość liter? 3. Przykładowe pytania z części PSPICE. 1. Podaj zasady tworzenia pliku symulacyjnego. 2. Czy składnia PSPICE jest czuła na wielkość liter? 3. Jak umieszcza się komentarze w pliku symulacyjnym PSPICE? 4.

Bardziej szczegółowo

Tranzystor JFET i MOSFET zas. działania

Tranzystor JFET i MOSFET zas. działania Tranzystor JFET i MOSFET zas. działania brak kanału v GS =v t (cutoff ) kanał otwarty brak kanału kanał otwarty kanał zamknięty w.2, p. kanał zamknięty Co było na ostatnim wykładzie? Układy cyfrowe Najczęściej

Bardziej szczegółowo

LABORATORIUM TECHNIKA CYFROWA. Pamięci. Rev.1.35

LABORATORIUM TECHNIKA CYFROWA. Pamięci. Rev.1.35 LABORATORIUM TECHNIKA CYFROWA Pamięci Rev.1.35 1. Cel ćwiczenia Praktyczna weryfikacja wiedzy teoretycznej z projektowania modułów sterowania oraz kontroli pamięci 2. Kolokwium Kolokwium wstępne sprawdzające

Bardziej szczegółowo

1 Wstęp. 2 Proste przykłady. 3 Podstawowe elementy leksykalne i typy danych. 6 Opis strukturalny. 7 Moduł testowy (testbench)

1 Wstęp. 2 Proste przykłady. 3 Podstawowe elementy leksykalne i typy danych. 6 Opis strukturalny. 7 Moduł testowy (testbench) Wstęp SYSTEMY WBUDOWANE Układy kombinacyjne c Dr inż. Ignacy Pardyka UNIWERSYTET JANA KOCHANOWSKIEGO w Kielcach Rok akad. 2011/2012 c Dr inż. Ignacy Pardyka (Inf.UJK) Systemy wbudowane Rok akad. 2011/2012

Bardziej szczegółowo

Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek].

Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek]. ABAP/4 Instrukcja IF Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek]. [ELSEIF warunek. ] [ELSE. ] ENDIF. gdzie: warunek dowolne wyrażenie logiczne o wartości

Bardziej szczegółowo

Język HDL - VERILOG. (Syntetyzowalna warstwa języka) Hardware Description Language Krzysztof Jasiński PRUS PRUS

Język HDL - VERILOG. (Syntetyzowalna warstwa języka) Hardware Description Language Krzysztof Jasiński PRUS PRUS Język HDL - VERLOG Hardware Description Language (Syntetyzowalna warstwa języka) RUS RUS Język VERLOG w praktyce RUS RUS VERLOG Specyfikacja układów kombinacyjnych RUS RUS Operator warunkowy Conditional_expression?

Bardziej szczegółowo

Bloki anonimowe w PL/SQL

Bloki anonimowe w PL/SQL Język PL/SQL PL/SQL to specjalny język proceduralny stosowany w bazach danych Oracle. Język ten stanowi rozszerzenie SQL o szereg instrukcji, znanych w proceduralnych językach programowania. Umożliwia

Bardziej szczegółowo

Krótkie wprowadzenie do ModelSim i Quartus2

Krótkie wprowadzenie do ModelSim i Quartus2 Krótkie wprowadzenie do ModelSim i Quartus2 wersja 04.2011 1 Plan Oprogramowanie Pliki źródłowe Scenariusze użycia 2 Programy Programy w wersji darmowej do pobrania ze strony www.altera.com ModelSim-Altera

Bardziej szczegółowo

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki ĆWICZENIE Nr 3 (4h) Konwersja i wyświetlania informacji binarnej w VHDL Instrukcja do zajęć laboratoryjnych z przedmiotu Synteza

Bardziej szczegółowo

AHDL - Język opisu projektu. Podstawowe struktury języka. Komentarz rozpoczyna znak i kończy znak %. SUBDESIGN

AHDL - Język opisu projektu. Podstawowe struktury języka. Komentarz rozpoczyna znak i kończy znak %. SUBDESIGN AHDL - Język opisu projektu. Podstawowe struktury języka Przykładowy opis rewersyjnego licznika modulo 64. TITLE "Licznik rewersyjny modulo 64 z zerowaniem i zapisem"; %------------------------------------------------------------

Bardziej szczegółowo

Realizacja algorytmu wyznaczania wyrazów ciągu w języku VHDL z zastosowaniem podziału projektu na moduły: FSM i Data Path.

Realizacja algorytmu wyznaczania wyrazów ciągu w języku VHDL z zastosowaniem podziału projektu na moduły: FSM i Data Path. Zakład Cyberbezpieczeństwa, Instytut Telekomunikacji, Politechnika Warszawska, 2015. 1 Układy Cyfrowe laboratorium Przykład realizacji ćwiczenia nr 6 (wersja 2015) 1. Wstęp 1.1. Algorytm Realizacja algorytmu

Bardziej szczegółowo

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki ĆWICZENIE Nr 7 (2h) Obsługa urządzenia peryferyjnego z użyciem pamięci w VHDL. Instrukcja do zajęć laboratoryjnych z przedmiotu

Bardziej szczegółowo

Układy reprogramowalne i SoC Testbenches. Symulacja sterowana zdarzeniami.

Układy reprogramowalne i SoC Testbenches. Symulacja sterowana zdarzeniami. Testbenches. Symulacja sterowana zdarzeniami. Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka bez ograniczeń -

Bardziej szczegółowo

Elementy języka VHDL

Elementy języka VHDL Elementy języka VHDL Języki opisu sprzętu: Firmowe - stosowane wyłącznie w systemach danej firmy (AHDL, ABEL) Uniwersalne - stosowane coraz powszechniej w różnych systemach, równolegle z językami firmowymi

Bardziej szczegółowo

LABORATORIUM ELEKTRONIKA Projektowanie koderów, transkoderów i dekoderów w języku VHDL

LABORATORIUM ELEKTRONIKA Projektowanie koderów, transkoderów i dekoderów w języku VHDL LABORATORIUM ELEKTRONIKA Projektowanie koderów, transkoderów i dekoderów w języku VHDL 1. Cel ćwiczenia W ćwiczeniu student projektuje i implementuje w strukturze układu FPGA (Field Programmable Gate Array)

Bardziej szczegółowo

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki ĆWICZENIE Nr 2 (3h) Przełączniki, wyświetlacze, multipleksery - implementacja i obsługa w VHDL Instrukcja pomocnicza do laboratorium

Bardziej szczegółowo

Wstęp do Techniki Cyfrowej... Układy kombinacyjne

Wstęp do Techniki Cyfrowej... Układy kombinacyjne Wstęp do Techniki Cyfrowej... Układy kombinacyjne Przypomnienie Stan wejść układu kombinacyjnego jednoznacznie określa stan wyjść. Poszczególne wyjścia określane są przez funkcje boolowskie zmiennych wejściowych.

Bardziej szczegółowo

Projektowanie układów kryptograficznych Mariusz Rawski rawski@tele.pw.edu.pl http://rawski.zpt.tele.pw.edu.pl/

Projektowanie układów kryptograficznych Mariusz Rawski rawski@tele.pw.edu.pl http://rawski.zpt.tele.pw.edu.pl/ CAD Projektowanie układów kryptograficznych rawski@tele.pw.edu.pl http://rawski.zpt.tele.pw.edu.pl/ Kryptografia Kryptografia to dziedzina nauki, zajmująca się przekształcaniem informacji zwanej tekstem

Bardziej szczegółowo

Cyfrowe przetwarzanie sygnałów Mariusz Rawski

Cyfrowe przetwarzanie sygnałów Mariusz Rawski CAD Cyfrowe przetwarzanie sygnałów Mariusz Rawski rawski@tele.pw.edu.pl http://rawski.zpt.tele.pw.edu.pl/ Cyfrowe przetwarzanie sygnału A/D konwersja sygnału analogowego na cyfrowy (próbkowanie, kwantyzacja,

Bardziej szczegółowo

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki. Automaty stanów

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki. Automaty stanów Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki ĆWICZENIE Nr 6 (2h) Automaty stanów Instrukcja do zajęć laboratoryjnych z przedmiotu Synteza układów cyfrowych studia niestacjonarne,

Bardziej szczegółowo

LABORATORIUM OPTOELEKTRONIKA I SENSORYKA Oprogramowanie bariery podczerwieni w układzie CPLD

LABORATORIUM OPTOELEKTRONIKA I SENSORYKA Oprogramowanie bariery podczerwieni w układzie CPLD LABORATORIUM OPTOELEKTRONIKA I SENSORYKA Oprogramowanie bariery podczerwieni w układzie CPLD 1. Wstęp i cel ćwiczenia W ćwiczeniu student tworzy barierę podczerwieni złożoną z diody nadawczej IR (Infra

Bardziej szczegółowo

Lista tematów na kolokwium z wykładu z Techniki Cyfrowej w roku ak. 2013/2014

Lista tematów na kolokwium z wykładu z Techniki Cyfrowej w roku ak. 2013/2014 Lista tematów na kolokwium z wykładu z Techniki Cyfrowej w roku ak. 2013/2014 Temat 1. Algebra Boole a i bramki 1). Podać przykład dowolnego prawa lub tożsamości, które jest spełnione w algebrze Boole

Bardziej szczegółowo

Wydział Elektryczny. Katedra Automatyki i Elektroniki. Instrukcja do ćwiczeń laboratoryjnych z przedmiotu: SYNTEZA UKŁADÓW CYFROWYCH ES2D100005

Wydział Elektryczny. Katedra Automatyki i Elektroniki. Instrukcja do ćwiczeń laboratoryjnych z przedmiotu: SYNTEZA UKŁADÓW CYFROWYCH ES2D100005 Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki Instrukcja do ćwiczeń laboratoryjnych z przedmiotu: SYNTEZA UKŁADÓW CYFROWYCH ES2D100005 Ćwiczenie Nr 8 Implementacja prostego

Bardziej szczegółowo

Adresowanie obiektów. Adresowanie bitów. Adresowanie bajtów i słów. Adresowanie bajtów i słów. Adresowanie timerów i liczników. Adresowanie timerów

Adresowanie obiektów. Adresowanie bitów. Adresowanie bajtów i słów. Adresowanie bajtów i słów. Adresowanie timerów i liczników. Adresowanie timerów Adresowanie obiektów Bit - stan pojedynczego sygnału - wejście lub wyjście dyskretne, bit pamięci Bajt - 8 bitów - wartość od -128 do +127 Słowo - 16 bitów - wartość od -32768 do 32767 -wejście lub wyjście

Bardziej szczegółowo

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki ĆWICZENIE Nr 9 (3h) Projekt struktury hierarchicznej układu cyfrowego w FPGA. Instrukcja pomocnicza do laboratorium z przedmiotu

Bardziej szczegółowo

Cyfrowe układy scalone c.d. funkcje

Cyfrowe układy scalone c.d. funkcje Cyfrowe układy scalone c.d. funkcje Ryszard J. Barczyński, 206 Politechnika Gdańska, Wydział FTiMS, Katedra Fizyki Ciała Stałego Materiały dydaktyczne do użytku wewnętrznego Kombinacyjne układy cyfrowe

Bardziej szczegółowo

Programowalne układy logiczne

Programowalne układy logiczne Programowalne układy logiczne Układy synchroniczne Szymon Acedański Marcin Peczarski Instytut Informatyki Uniwersytetu Warszawskiego 26 października 2015 Co to jest układ sekwencyjny? W układzie sekwencyjnym,

Bardziej szczegółowo

Wstęp do Techniki Cyfrowej... Synchroniczne układy sekwencyjne

Wstęp do Techniki Cyfrowej... Synchroniczne układy sekwencyjne Wstęp do Techniki Cyfrowej... Synchroniczne układy sekwencyjne Schemat ogólny X Y Układ kombinacyjny S Z Pamięć Zegar Działanie układu Zmiany wartości wektora S możliwe tylko w dyskretnych chwilach czasowych

Bardziej szczegółowo

Programowalne układy logiczne

Programowalne układy logiczne Programowalne układy logiczne Przerzutniki Szymon Acedański Marcin Peczarski Instytut Informatyki Uniwersytetu Warszawskiego 20 maja 2013 Przerzutnik synchroniczny Układ synchroniczny wyzwalany ustalonym

Bardziej szczegółowo

Układy reprogramowalne i SoC Język VHDL (część 2)

Układy reprogramowalne i SoC Język VHDL (część 2) Układy reprogramowalne i SoC Język VHDL (część 2) Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka bez ograniczeń

Bardziej szczegółowo

Sławomir Kulesza. Projektowanie automatów asynchronicznych

Sławomir Kulesza. Projektowanie automatów asynchronicznych Sławomir Kulesza Technika cyfrowa Projektowanie automatów asynchronicznych Wykład dla studentów III roku Informatyki Wersja 3.0, 03/01/2013 Automaty skończone Automat skończony (Finite State Machine FSM)

Bardziej szczegółowo

Synteza strukturalna

Synteza strukturalna Synteza strukturalna Analizując algorytm pracy układu opisany siecią działań dobiera się: bloki funkcjonalne służące do przechowywania zmiennych, bloki operacyjne służące do wykonywania operacji występujących

Bardziej szczegółowo

Układy kombinacyjne. cz.2

Układy kombinacyjne. cz.2 Układy kombinacyjne cz.2 Układy kombinacyjne 2/26 Kombinacyjne bloki funkcjonalne Kombinacyjne bloki funkcjonalne - dekodery 3/26 Dekodery Są to układy zamieniające wybrany kod binarny (najczęściej NB)

Bardziej szczegółowo

Synteza strukturalna Mariusz Rawski

Synteza strukturalna Mariusz Rawski CAD Synteza strukturalna rawski@tele.pw.edu.pl http://rawski.zpt.tele.pw.edu.pl/ Strukturalna realizacja przepływu danych Koncepcja zmiennych i sekwencyjnego wykonania operacji tak charakterystyczna dla

Bardziej szczegółowo

Operacje wykonywane są na operandach (argumentach operatorów). Przy operacji dodawania: argumentami operatora dodawania + są dwa operandy 2 i 5.

Operacje wykonywane są na operandach (argumentach operatorów). Przy operacji dodawania: argumentami operatora dodawania + są dwa operandy 2 i 5. Operatory w Javie W Javie występują następujące typy operatorów: Arytmetyczne. Inkrementacji/Dekrementacji Przypisania. Porównania. Bitowe. Logiczne. Pozostałe. Operacje wykonywane są na operandach (argumentach

Bardziej szczegółowo

Funkcja Boolowska a kombinacyjny blok funkcjonalny

Funkcja Boolowska a kombinacyjny blok funkcjonalny SWB - Kombinacyjne bloki funkcjonalne - wykład 3 asz 1 Funkcja Boolowska a kombinacyjny blok funkcjonalny Kombinacyjny blok funkcjonalny w technice cyfrowej jest układem kombinacyjnym złożonym znwejściach

Bardziej szczegółowo

Zmienne powłoki. Wywołanie wartości następuje poprzez umieszczenie przed nazwą zmiennej znaku dolara ($ZMIENNA), np. ZMIENNA=wartosc.

Zmienne powłoki. Wywołanie wartości następuje poprzez umieszczenie przed nazwą zmiennej znaku dolara ($ZMIENNA), np. ZMIENNA=wartosc. Zmienne powłoki Zmienne powłoki (shell variables) to tymczasowe zmienne, które mogą przechowywać wartości liczbowe lub ciągi znaków. Związane są z powłoką, Przypisania wartości do zmiennej następuje poprzez

Bardziej szczegółowo

Układy reprogramowalne i SoC Implementacja w układach FPGA

Układy reprogramowalne i SoC Implementacja w układach FPGA Układy reprogramowalne i SoC Implementacja w układach FPGA Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka bez

Bardziej szczegółowo

Analiza leksykalna 1. Teoria kompilacji. Dr inż. Janusz Majewski Katedra Informatyki

Analiza leksykalna 1. Teoria kompilacji. Dr inż. Janusz Majewski Katedra Informatyki Analiza leksykalna 1 Teoria kompilacji Dr inż. Janusz Majewski Katedra Informatyki Zadanie analizy leksykalnej Kod źródłowy (ciąg znaków) Analizator leksykalny SKANER Ciąg symboli leksykalnych (tokenów)

Bardziej szczegółowo

mgr inż. Maciej Rudek opracował: dr inż. Daniel Kopiec

mgr inż. Maciej Rudek opracował: dr inż. Daniel Kopiec Programowanie Układów Logicznych kod kursu: ETD6203 Analiza układów sekwencyjnych W3 7.03.2018 mgr inż. Maciej Rudek opracował: dr inż. Daniel Kopiec Zmiany w terminach Plan wykładu 1 2 3 4 5 6 Ciekawostki

Bardziej szczegółowo

xx + x = 1, to y = Jeśli x = 0, to y = 0 Przykładowy układ Funkcja przykładowego układu Metody poszukiwania testów Porównanie tabel prawdy

xx + x = 1, to y = Jeśli x = 0, to y = 0 Przykładowy układ Funkcja przykładowego układu Metody poszukiwania testów Porównanie tabel prawdy Testowanie układów kombinacyjnych Przykładowy układ Wykrywanie błędów: 1. Sklejenie z 0 2. Sklejenie z 1 Testem danego uszkodzenia nazywa się takie wzbudzenie funkcji (wektor wejściowy), które daje błędną

Bardziej szczegółowo

Informatyka I. Wykład 3. Sterowanie wykonaniem programu. Instrukcje warunkowe Instrukcje pętli. Dr inż. Andrzej Czerepicki

Informatyka I. Wykład 3. Sterowanie wykonaniem programu. Instrukcje warunkowe Instrukcje pętli. Dr inż. Andrzej Czerepicki Informatyka I Wykład 3. Sterowanie wykonaniem programu. Instrukcje warunkowe Instrukcje pętli Dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2018 Operacje relacji (porównania) A

Bardziej szczegółowo

Układy reprogramowalne i SoC Język VHDL (część 3)

Układy reprogramowalne i SoC Język VHDL (część 3) Układy reprogramowalne i SoC Język VHDL (część 3) Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka bez ograniczeń

Bardziej szczegółowo

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki Turbo Pascal jest językiem wysokiego poziomu, czyli nie jest rozumiany bezpośrednio dla komputera, ale jednocześnie jest wygodny dla programisty,

Bardziej szczegółowo

Systemy Czasu Rzeczywistego FPGA

Systemy Czasu Rzeczywistego FPGA 01. Systemy Czasu Rzeczywistego FPGA 1 Systemy Czasu Rzeczywistego FPGA laboratorium: 05 autor: mgr inż. Mateusz Baran 01. Systemy Czasu Rzeczywistego FPGA 2 1 Spis treści FPGA... 1 1 Spis treści... 2

Bardziej szczegółowo

Podstawy Programowania C++

Podstawy Programowania C++ Wykład 3 - podstawowe konstrukcje Instytut Automatyki i Robotyki Warszawa, 2014 Wstęp Plan wykładu Struktura programu, instrukcja przypisania, podstawowe typy danych, zapis i odczyt danych, wyrażenia:

Bardziej szczegółowo

Technika cyfrowa Synteza układów kombinacyjnych (I)

Technika cyfrowa Synteza układów kombinacyjnych (I) Sławomir Kulesza Technika cyfrowa Synteza układów kombinacyjnych (I) Wykład dla studentów III roku Informatyki Wersja 2.0, 05/10/2011 Podział układów logicznych Opis funkcjonalny układów logicznych x 1

Bardziej szczegółowo

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre) Uwagi dotyczące notacji kodu! Wyrazy drukiem prostym -- słowami języka VBA. Wyrazy drukiem pochyłym -- inne fragmenty kodu. Wyrazy w [nawiasach kwadratowych] opcjonalne fragmenty kodu (mogą być, ale nie

Bardziej szczegółowo

Język HDL - VERILOG. (Syntetyzowalna warstwa języka) Hardware Description Language Krzysztof Jasiński PRUS PRUS

Język HDL - VERILOG. (Syntetyzowalna warstwa języka) Hardware Description Language Krzysztof Jasiński PRUS PRUS Język HDL - VERLOG Hardware Description Language (Syntetyzowalna warstwa języka) RUS RUS VERLOG rzegląd zagadnień RUS RUS prowadzenie do języka Reprezentacja układu cyfrowego w Verilogu opis strukturalny

Bardziej szczegółowo

Technika cyfrowa Synteza układów kombinacyjnych

Technika cyfrowa Synteza układów kombinacyjnych Sławomir Kulesza Technika cyfrowa Synteza układów kombinacyjnych Wykład dla studentów III roku Informatyki Wersja 2.0, 05/10/2011 Podział układów logicznych Opis funkcjonalny układów logicznych x 1 y 1

Bardziej szczegółowo

PUCY Kolos 2: Reloaded

PUCY Kolos 2: Reloaded PUCY Kolos 2: Reloaded 1) Narysować schemat układu mikroprogramowalnego z licznikiem rozkazów. 2) Narysować schemat elementu ścieżki cyklicznej dla sygnału kombinacyjnego 3) Narysować schemat elementu

Bardziej szczegółowo

Kierunek EiT Specjalność Sieci i usługi, V rok Programowalne Układy Cyfrowe. Synteza logiczna. Rajda & Kasperek 2015 Katedra Elektroniki AGH 1

Kierunek EiT Specjalność Sieci i usługi, V rok Programowalne Układy Cyfrowe. Synteza logiczna. Rajda & Kasperek 2015 Katedra Elektroniki AGH 1 Kierunek EiT Specjalność Sieci i usługi, V rok Programowalne Układy Cyfrowe Synteza logiczna Rajda & Kasperek 2015 Katedra Elektroniki AGH 1 Program wykładu Wstęp do syntezy Sprzętowa reprezentacja obiektów

Bardziej szczegółowo

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki. ĆWICZENIE Nr 8 (3h) Implementacja pamięci ROM w FPGA

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki. ĆWICZENIE Nr 8 (3h) Implementacja pamięci ROM w FPGA Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki ĆWICZENIE Nr 8 (3h) Implementacja pamięci ROM w FPGA Instrukcja pomocnicza do laboratorium z przedmiotu Programowalne Struktury

Bardziej szczegółowo

Testowanie i walidacja oprogramowania

Testowanie i walidacja oprogramowania Testowanie i walidacja oprogramowania Inżynieria oprogramowania, sem.5 cz. 5 Rok akademicki 2010/2011 Dr inż. Wojciech Koziński Przykład Obliczmy sumę: 0+1+2+...+i, i є [0,100] read(i); if((i < 0)(i >

Bardziej szczegółowo

Spis treści 1. Wstęp 2. Ćwiczenia laboratoryjne LPM

Spis treści 1. Wstęp 2. Ćwiczenia laboratoryjne LPM Spis treści 1. Wstęp... 9 2. Ćwiczenia laboratoryjne... 12 2.1. Środowisko projektowania Quartus II dla układów FPGA Altera... 12 2.1.1. Cel ćwiczenia... 12 2.1.2. Wprowadzenie... 12 2.1.3. Przebieg ćwiczenia...

Bardziej szczegółowo

Laboratorium przedmiotu Technika Cyfrowa

Laboratorium przedmiotu Technika Cyfrowa Laboratorium przedmiotu Technika Cyfrowa ćw.3 i 4: Asynchroniczne i synchroniczne automaty sekwencyjne 1. Implementacja asynchronicznych i synchronicznych maszyn stanu w języku VERILOG: Maszyny stanu w

Bardziej szczegółowo

Ćwiczenie 1 VHDL - Licznik 4-bitowy.

Ćwiczenie 1 VHDL - Licznik 4-bitowy. Ćwiczenie 1 VHDL - Licznik 4-bitowy. Zadaniem studenta jest zaprojektowanie w układzie CoolRunner2 układu, który dzieli częstotliwość zegara wejściowego generując sygnał taktowania licznika 4-bitowego,

Bardziej szczegółowo

Kierunek EiT Specjalność Sieci i usługi, V rok Programowalne Układy Cyfrowe. Zaawansowany VHDL. Rajda & Kasperek 2014 Katedra Elektroniki AGH 2

Kierunek EiT Specjalność Sieci i usługi, V rok Programowalne Układy Cyfrowe. Zaawansowany VHDL. Rajda & Kasperek 2014 Katedra Elektroniki AGH 2 Kierunek EiT Specjalność Sieci i usługi, V rok Programowalne Układy Cyfrowe Zaawansowany VHDL Rajda & Kasperek 2014 Katedra Elektroniki AGH 1 Program wykładu Opis strukturalny map, generate Pojęcia leksykalne

Bardziej szczegółowo

Literatura. adów w cyfrowych. Projektowanie układ. Technika cyfrowa. Technika cyfrowa. Bramki logiczne i przerzutniki.

Literatura. adów w cyfrowych. Projektowanie układ. Technika cyfrowa. Technika cyfrowa. Bramki logiczne i przerzutniki. Literatura 1. D. Gajski, Principles of Digital Design, Prentice- Hall, 1997 2. C. Zieliński, Podstawy projektowania układów cyfrowych, PWN, Warszawa 2003 3. G. de Micheli, Synteza i optymalizacja układów

Bardziej szczegółowo

XC4000: LUT jako ROM Układy Cyfrowe i Systemy Wbudowane 2 Układy FPGA cz. 2 ROM32X1 VHDL inference example ROM 16x2b type

XC4000: LUT jako ROM Układy Cyfrowe i Systemy Wbudowane 2 Układy FPGA cz. 2 ROM32X1 VHDL inference example ROM 16x2b type Układy Cyfrowe i Systemy Wbudowane 2 XC4000: LUT jako ROM Układy FPGA cz. 2 dr inż. Jarosław Sugier Jaroslaw.Sugier@pwr.edu.pl W-4/K-9, pok. 227 C-3 FPGA(2) - 1 FPGA(2) - 2 ROM32X1 VHDL inference example

Bardziej szczegółowo

Laboratorium Projektowania Systemów VLSI-ASIC Katedra Elektroniki Akademia Górniczo-Hutnicza

Laboratorium Projektowania Systemów VLSI-ASIC Katedra Elektroniki Akademia Górniczo-Hutnicza Laboratorium Projektowania Systemów VLSI-ASIC Katedra Elektroniki Akademia Górniczo-Hutnicza Projektowanie układów VLSI-ASIC za pomocą techniki komórek standardowych przy użyciu pakietu Cadence Programowanie,

Bardziej szczegółowo

Układy reprogramowalne i SoC Język VHDL (część 5)

Układy reprogramowalne i SoC Język VHDL (część 5) Układy reprogramowalne i SoC Język VHDL (część 5) Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka bez ograniczeń

Bardziej szczegółowo

Sterowniki Programowalne (SP)

Sterowniki Programowalne (SP) Sterowniki Programowalne (SP) Wybrane aspekty procesu tworzenia oprogramowania dla sterownika PLC Podstawy języka funkcjonalnych schematów blokowych (FBD) Politechnika Gdańska Wydział Elektrotechniki i

Bardziej szczegółowo

METODY KOMPUTEROWE W OBLICZENIACH INŻYNIERSKICH

METODY KOMPUTEROWE W OBLICZENIACH INŻYNIERSKICH METODY KOMPUTEROWE W OBLICZENIACH INŻYNIERSKICH ĆWICZENIE NR 9 WYRAŻENIA LOGICZNE, INSTRUKCJE WARUNKOWE I INSTRUKCJE ITERACYJNE W PROGRAMIE KOMPUTEROWYM MATLAB Dr inż. Sergiusz Sienkowski ĆWICZENIE NR

Bardziej szczegółowo

Bramki logiczne Podstawowe składniki wszystkich układów logicznych

Bramki logiczne Podstawowe składniki wszystkich układów logicznych Układy logiczne Bramki logiczne A B A B AND NAND A B A B OR NOR A NOT A B A B XOR NXOR A NOT A B AND NAND A B OR NOR A B XOR NXOR Podstawowe składniki wszystkich układów logicznych 2 Podstawowe tożsamości

Bardziej szczegółowo

Układy Cyfrowe laboratorium

Układy Cyfrowe laboratorium Układy Cyfrowe laboratorium Przykład realizacji ćwiczenia nr 7 Temat: Realizacja układu sterującego systemu cyfrowego z uwzględnieniem kodowania i dekompozycji funkcji pw automatu dla Metody Newtona, tj.

Bardziej szczegółowo

Kierunek EiT Specjalność Sieci i usługi, V rok Programowalne Układy Cyfrowe. Zaawansowany VHDL. Rajda & Kasperek 2015 Katedra Elektroniki AGH 1

Kierunek EiT Specjalność Sieci i usługi, V rok Programowalne Układy Cyfrowe. Zaawansowany VHDL. Rajda & Kasperek 2015 Katedra Elektroniki AGH 1 Kierunek EiT Specjalność Sieci i usługi, V rok Programowalne Układy Cyfrowe Zaawansowany VHDL Rajda & Kasperek 2015 Katedra Elektroniki AGH 1 Program wykładu Opis strukturalny map, generate Pojęcia leksykalne

Bardziej szczegółowo

Sławomir Kulesza. Projektowanie automatów synchronicznych

Sławomir Kulesza. Projektowanie automatów synchronicznych Sławomir Kulesza Technika cyfrowa Projektowanie automatów synchronicznych Wykład dla studentów III roku Informatyki Wersja 2.0, 20/12/2012 Automaty skończone Automat Mealy'ego Funkcja wyjść: Yt = f(st,

Bardziej szczegółowo

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Podstawy VBA cz. 1. Programowanie komputerowe

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Podstawy VBA cz. 1. Programowanie komputerowe Wydział Zarządzania AGH Katedra Informatyki Stosowanej Podstawy VBA cz. 1 Programowanie 1 Program wykładu Struktura programu Instrukcja przypisania Wprowadzanie danych Wyprowadzanie wyników Instrukcja

Bardziej szczegółowo

Język FBD w systemie Concept

Język FBD w systemie Concept Adresowanie obiektów Bit - stan pojedynczego sygnału - wejście lub wyjście dyskretne, bit pamięci Bajt - 8 bitów - wartość od -128 do +127 Słowo - 16 bitów - wartość od -32768 do 32767 -wejście lub wyjście

Bardziej szczegółowo

Architektura komputerów, Informatyka, sem.iii. Rozwiązywanie konfliktów danych i sterowania w architekturze potokowej

Architektura komputerów, Informatyka, sem.iii. Rozwiązywanie konfliktów danych i sterowania w architekturze potokowej Rozwiązywanie konfliktów danych i sterowania w architekturze potokowej Konflikty w przetwarzaniu potokowym Konflikt danych Data Hazard Wstrzymywanie kolejki Pipeline Stall Optymalizacja kodu (metody programowe)

Bardziej szczegółowo

VHDL. Behawioralny Strukturalny Czasowy. Poziom RTL

VHDL. Behawioralny Strukturalny Czasowy. Poziom RTL Style opisu VHDL VHDL Behawioralny Strukturalny Czasowy Równania boolowskie Poziom RTL Przebieg czasowy c = a v b c

Bardziej szczegółowo

2. PORTY WEJŚCIA/WYJŚCIA (I/O)

2. PORTY WEJŚCIA/WYJŚCIA (I/O) 2. PORTY WEJŚCIA/WYJŚCIA (I/O) 2.1 WPROWADZENIE Porty I/O mogą pracować w kilku trybach: - przesyłanie cyfrowych danych wejściowych i wyjściowych a także dla wybrane wyprowadzenia: - generacja przerwania

Bardziej szczegółowo

DOKUMENTACJA PROJEKTU

DOKUMENTACJA PROJEKTU AKADEMIA GÓRNICZO-HUTNICZA w Krakowie KATEDRA ELEKTRONIKI DOKUMENTACJA PROJEKTU Projekt z przedmiotu Sprzętowa Implementacja Algorytmów: Dekoder klawiatury na PS/2 Prowadzący: Dr inż. Paweł Russek Wykonali:

Bardziej szczegółowo