Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Programowalne Układy Cyfrowe Ernest Jamro, Paweł Russek C3 p

Podobne prezentacje


Prezentacja na temat: "Programowalne Układy Cyfrowe Ernest Jamro, Paweł Russek C3 p"— Zapis prezentacji:

1 Programowalne Układy Cyfrowe Ernest Jamro, Paweł Russek C3 p
Programowalne Układy Cyfrowe Ernest Jamro, Paweł Russek C3 p

2 E. Jamro, J.Kasperek, P.J.Rajda © 2009 Katedra Elektroniki AGH Kraków
Program Języki opisu sprzętu (Hardware Discription Language - HDL) Po co mi HDL? – czyli parę uwag o historii... Języki opisu sprzętu: PALASM, ABEL, CUPL C, VHDL, VERILOG , SystemC, SystemVerilog, Laboratorium E. Jamro, J.Kasperek, P.J.Rajda © Katedra Elektroniki AGH Kraków

3 Projekty na 1-sze zajęcia
Projekty z Techniki Cyfrowej: – projekty nie mogą się powtarzać Licznik synchroniczny zliczający w górę i dół (dodatkowe wejście Up) modulo n (n=9-31) pracujący w kodzie binarnym z wpisem synchronicznym L, A) n określone, b) n – podawane jako parametr generic Licznik synchroniczny zliczający w górę pracujący na innym kodzie niż binarny, np. w kodzie: a) 001, 010, 101, 011, 111, 110, 100, 001, itd. B) 0001, 0010, 0100, 1000, 0011, 0110, 1100, 1011, 0101, 1010, 0111, 1110, 1111, 1101, 1001, 0001, itd. Autmat sterujący światłami: np. sygnał zegarowy co 5s i stany świateł: A) Red= 1 dla t= 0-15s, Orange= 1 dla t= 10-15s i t= 55s-60s, Green= 1 dla t= 15-55s. Okres 60s, B) Podobnie ale z wykorzystaniem zwykłego licznika i układu kombinacyjnego. Automat asynchroniczny sterujący pompą w basenie. Są dwa czujniki poziomu Low, High, oraz dwa stany wyjściowe: 0) nie rób nic, 1) pompuj wodę do basenu. Automat ma mieć histerezę i ma działać tak aby poziom wody utrzymywał się pomiędzy stanem Low i High Układ rejestrów przesuwnych przesuwający o zadaną liczbę bitów sekwencyjnie, tzn. w jednym clk przesunięcie tylko o jeden bit. Układ transmisji szeregowej synchronicznej z użyciem układów PISO i SIPO z szeregowym układem kontroli parzystości (po przesłaniu danych nadajnik przesyła dodatkowy bit parzystości, który jest następnie dekodowany w odbiorniku - w przypadku błędu transmisji odbiornik sygnalizuje błąd poprzez wystawienie '1' na linii 'error'. Układ wykonujący szeregowo operację dodawania dwóch liczb (dwa układy PISO, układ dodający jednobitowy i układ SIPO), szerokość określona za pomocą parametru generic. Układ szybkiego rejestru przesuwnego krążącego (barrel shifter) (w jednym cyklu zegara o dowolne n) jednopoziomowy o szerokości n= 16. Układ szybkiego rejestru przesuwnego krążącego (barrel shifter) (w jednym cyklu zegara o dowolne n) wielopoziomowy o szerokości, A) n= 32, B) n- jako parametr generic. Układ szybkiego rejestru przesuwnego (barrel shifter) arytmetycznego (w jednym cyklu zegara dzielenie przez 2^n w kodzie U2) o szerokości n= 32. Jak wyżej ale mnożenie Układ mnożący sekwencyjny (wymaga n cykli zegara, gdzie n-szerokość danej wejściowej). Układ dzielący sekwencyjny Koder dekoder kodu Grey’a n- parametr generic. E. Jamro, J.Kasperek, P.J.Rajda © Katedra Elektroniki AGH Kraków

4 Języki Opisu Sprzętu – po co?
1M 10M 100M 1G 1970 1980 1990 1998 4004 8080 8085 8086 80286 80386 80486 Pentium 4K 16K 64K 256K 4M 16M 64M 256M Wymogi pamięci: 1.50 na rok Wymogi CPU 1.35 na rok E. Jamro, J.Kasperek, P.J.Rajda © Katedra Elektroniki AGH Kraków

5 Języki Opisu Sprzętu – po co?
Potrzeba narzędzia: INTEL projektantów tys. tranzystorów INTEL projektantów tys. tranzystorów INTEL PENTIUM projektantów mln tranzystorów projektantów mln tranzystorów 200??? ???? projektantów ???? mln tranzystorów Współczesne wymagania: hardware-software codesign !!! E. Jamro, J.Kasperek, P.J.Rajda © Katedra Elektroniki AGH Kraków

6 Języki Opisu Sprzętu – po co?
E. Jamro, J.Kasperek, P.J.Rajda © Katedra Elektroniki AGH Kraków

7 VHDL - VHSIC Hardware Description Language
VHDL – co to jest? Definicja VHDL - VHSIC Hardware Description Language Very High Speed Integrated Circuit It is "a formal notation intended for use in all phases of the creation of electronic systems it supports the development, verification, synthesis, and testing of hardware designs, the communication of hardware design data ..." [IEEE Standard VHDL Language Reference Manual] E. Jamro, J.Kasperek, P.J.Rajda © Katedra Elektroniki AGH Kraków

8 Z <= ’1’ when A = ”01” else ’0’;
VHDL – jak, gdzie, kiedy? Zakres stosowania Modelowanie A=”01” ? A(1..0) Z Z <= ’1’ when A = ”01” else ’0’; E. Jamro, J.Kasperek, P.J.Rajda © Katedra Elektroniki AGH Kraków

9 E. Jamro, J.Kasperek, P.J.Rajda © 2009 Katedra Elektroniki AGH Kraków
VHDL – jak, gdzie, kiedy? Zakres stosowania Symulacja A(1) A(0) Z E. Jamro, J.Kasperek, P.J.Rajda © Katedra Elektroniki AGH Kraków

10 E. Jamro, J.Kasperek, P.J.Rajda © 2009 Katedra Elektroniki AGH Kraków
VHDL – jak, gdzie, kiedy? Zakres stosowania Synteza (automatyczna) translacja opisu w języku HDL na strukturę w postaci listy połączeń elementarnych bloków funkcyjnych docelowej platformy sprzętowej (bramek, przerzutników, pamięci i innych) A(0) A(1) Z E. Jamro, J.Kasperek, P.J.Rajda © Katedra Elektroniki AGH Kraków

11 E. Jamro, J.Kasperek, P.J.Rajda © 2009 Katedra Elektroniki AGH Kraków
VHDL – jak, gdzie, kiedy? Jednostki projektowe entity name entity COMPARE is port (A,B: in bit; C: out bit); end COMPARE; architecture style of name architecture BEHAVIORAL of COMPARE is begin C <=‘1’ when A=B else ‘0’; end behavioral; E. Jamro, J.Kasperek, P.J.Rajda © Katedra Elektroniki AGH Kraków

12 E. Jamro, J.Kasperek, P.J.Rajda © 2009 Katedra Elektroniki AGH Kraków
VHDL – przykłady Dekoder entity DECODER is port(D: in bit_vector (0 to 3); ZERO: out bit; ONE: out bit; EIGHT: out bit; NINE: out bit); end DECODER; architecture FIRST of DECODER is begin NINE <= (D=“1001”); EIGHT <= (D=“1000”); ONE <= (D=“0001”); ZERO <= (D=“0000”); end FIRST; E. Jamro, J.Kasperek, P.J.Rajda © Katedra Elektroniki AGH Kraków

13 E. Jamro, J.Kasperek, P.J.Rajda © 2009 Katedra Elektroniki AGH Kraków
VHDL – przykłady Komparator entity COMPARE is port(A,B: in bit_vector (0 to 7); EQL: out bit_vector (0 to 7)); end COMPARE; architecture SECOND of COMPARE is begin EQL <= not (A xor B); end SECOND; Gdzie na tym schemacie jest błąd? E. Jamro, J.Kasperek, P.J.Rajda © Katedra Elektroniki AGH Kraków

14 E. Jamro, J.Kasperek, P.J.Rajda © 2009 Katedra Elektroniki AGH Kraków
VHDL – przykłady Multiplekser entity MPLEXER is port(D: in bit_vector (7 downto 0); A: in bit_vector (2 downto 0); X: out bit); end MPLEXER; architecture THIRD of MPLEXER is signal Ai: integer range 7 downto 0; begin Ai <= conv_integer(A); X <= D(Ai); end THIRD; E. Jamro, J.Kasperek, P.J.Rajda © Katedra Elektroniki AGH Kraków

15 Przykład: package STANDARD
-- This is Package STANDARD as defined in the VHDL 1992 Language Reference Manual. package standard is type boolean is (false,true); type bit is ('0', '1'); type character is ( nul, soh, stx, etx, eot, enq, ack, bel, bs, ht, lf, vt, ff, cr, so, si, dle, dc1, dc2, dc3, dc4, nak, syn, etb, 'đ', 'ń', 'ň', 'ó', 'ô', 'ő', 'ö', '÷', 'ř', 'ů', 'ú', 'ű', 'ü', 'ý', 'ţ', '˙' ); type severity_level is (note, warning, error, failure); type integer is range to ; type real is range -1.0E308 to 1.0E308; type time is range to units fs; ps = 1000 fs; ns = 1000 ps; us = 1000 ns; ms = 1000 us; sec = 1000 ms; min = 60 sec; hr = 60 min; end units; subtype delay_length is time range 0 fs to time'high; impure function now return delay_length; subtype natural is integer range 0 to integer'high; subtype positive is integer range 1 to integer'high; type string is array (positive range <>) of character; type bit_vector is array (natural range <>) of bit; type file_open_kind is ( read_mode, write_mode, append_mode); type file_open_status is ( open_ok, status_error, name_error, mode_error); attribute foreign : string; end standard;

16 Pojęcia leksykalne - literały
Literały pojedyncze (skalary) character - pojedynczy znak objęty apostrofami, np: ‘A’ lub ‘a’ bit - reprezentuje wartość binarną ‘1’ lub ‘0’ std_logic - reprezentuje wartość sygnałów wg. IEEE 1164: U niezainicjalizowany X nieznany (forcing an unknown) 0 silne zero (forcing 0) 1 silne jeden (forcing 1) Z wysoka impedancja W słaby nieznany (weak unknown) L słabe zero (weak 0) H słabe jeden (weak 1) - nieistotny (don’t care) Poza pakietem STANDARD Należy dodać przed entity: library IEEE; use IEEE.STD_LOGIC_1164.all; E. Jamro, J.Kasperek, P.J.Rajda © Katedra Elektroniki AGH Kraków

17 Biblioteka std_logic.vhd
-- resolution function CONSTANT resolution_table : stdlogic_table := ( | U X Z W L H | | ( 'U', 'U', 'U', 'U', 'U', 'U', 'U', 'U', 'U' ), -- | U | ( 'U', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X' ), -- | X | ( 'U', 'X', '0', 'X', '0', '0', '0', '0', 'X' ), -- | 0 | ( 'U', 'X', 'X', '1', '1', '1', '1', '1', 'X' ), -- | 1 | ( 'U', 'X', '0', '1', 'Z', 'W', 'L', 'H', 'X' ), -- | Z | ( 'U', 'X', '0', '1', 'W', 'W', 'W', 'W', 'X' ), -- | W | ( 'U', 'X', '0', '1', 'L', 'W', 'L', 'W', 'X' ), -- | L | ( 'U', 'X', '0', '1', 'H', 'W', 'W', 'H', 'X' ), -- | H | ( 'U', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X' ) -- | - | ); E. Jamro, J.Kasperek, P.J.Rajda © Katedra Elektroniki AGH Kraków

18 Pojęcia leksykalne – wyrażenia
Operatory wyrażeń: logiczne and or nand nor xor not relacji = /= < <= > >= połączenia & arytmetyczne + - * / ** mod rem abs VHDL’92 sll srl sla sra rol ror xnor Typy argumentów: takie same : and or nand nor xor not = /= < <= > >= + - * / integer : mod rem integer exp : ** numeryczny : abs E. Jamro, J.Kasperek, P.J.Rajda © Katedra Elektroniki AGH Kraków

19 E. Jamro, J.Kasperek, P.J.Rajda © 2009 Katedra Elektroniki AGH Kraków
VHDL – przykłady Sumator library IEEE; use IEEE.STD_LOGIC_1164.all; use IEEE.STD_LOGIC_UNSIGNED.all; entity SUM is port(A,B: in std_logic_vector (0 to 2); Cin: in std_logic; S: out std_logic_vector (0 to 2); Cout: out std_logic); end SUM; architecture FOURTH of SUM is signal V: std_logic_vector (0 to 3); begin V <= A + B + Cin; S <= V(0 to 2); Cout <= V(3); end FOURTH; E. Jamro, J.Kasperek, P.J.Rajda © Katedra Elektroniki AGH Kraków

20 E. Jamro, J.Kasperek, P.J.Rajda © 2009 Katedra Elektroniki AGH Kraków
Process Składnia: [etykieta:] process [(lista sygnałów aktywujących)] [is] [podprogram] [typ] [stała] [zmienna] [inne deklaracje] begin instrukcje sekwencyjne end process [etykieta]; Instrukcja przypisania wartości dla zmiennych zmienna := wyrażenie; Instrukcja przypisania wartości dla sygnałów sygnał <= wyrażenie [after delay]; E. Jamro, J.Kasperek, P.J.Rajda © Katedra Elektroniki AGH Kraków

21 Process / brak process Powielanie logiki
entity loop_stmt is port (a: bit_vector (0 to 3); m: out bit_vector (0 to 3)); end loop_stmt; architecture example1 of loop_stmt is signal b: bit_vector(0 to 3); begin b(0)<= a(3); label: for i in 1 to 3 generate b(i)<= b(i-1) and a(3-i); end generate; m<= b; end example1; architecture example2 of loop_stmt is process (a) variable b: bit; b := '1'; for i in 0 to 3 loop b := a(3-i) and b; m(i) <= b; end loop; end process; end example2;

22 Multiplekser (lub inna logika kombinacyjna)
process (SEL, A, B, C) begin case SEL is when "00" => MUX_OUT <= A; when "01" => MUX_OUT <= B; when "10" => MUX_OUT <= C; when others => MUX_OUT <= ‘-'; end case; end process; E. Jamro, J.Kasperek, P.J.Rajda © Katedra Elektroniki AGH Kraków

23 Alternatywne rozwiązanie Multiplekser
Mux_out<= A when sel = "00" else B when sel = "01" else C when sel = "10" else '-'; LUB WITH sel SELECT Mux_out <= A when "00", B when "01", C when "10", '-' when others; E. Jamro, J.Kasperek, P.J.Rajda © Katedra Elektroniki AGH Kraków

24 Transkoder kodu hex na siedmiosegmentowy
with HEX Select LED<= " " when "0001", --1 " " when "0010", --2 " " when "0011", --3 " " when "0100", --4 " " when "0101", --5 " " when "0110", --6 " " when "0111", --7 " " when "1000", --8 " " when "1001", --9 " " when "1010", --A " " when "1011", --b " " when "1100", --C " " when "1101", --d " " when "1110", --E " " when "1111", --F " " when others; --0

25 E. Jamro, J.Kasperek, P.J.Rajda © 2009 Katedra Elektroniki AGH Kraków
sensivity list Pytanie: Jaka jest różnica w zachowaniu się dwóch poniższych procesów ? process (A, B)– częsty błąd begin S <= A; T <= B; V <= S or T; end process; process (A, B, S, T) begin S <= A; T <= B; V <= S or T; end process; Odpowiedź: Lewy: Symulacja jednokrotna. Użycie poprzednich wartości S i T dla obliczenia wartości V. Prawy: Symulacja dwukrotna. Uaktualni wartości S i T dla obliczenia wartości V w dwóch cyklach delta. E. Jamro, J.Kasperek, P.J.Rajda © Katedra Elektroniki AGH Kraków

26 Przerzutnik typu D process (CLK) begin if (CLK'event and CLK='1') then
if reset=‘1’ then -- reset synchroniczny DOUT <= '0'; else DOUT <= DIN; end if; end process; process (CLK, RESET) if RESET='1' then – reset asynchroniczny elsif (CLK'event and CLK='1') then

27 Przerzutnik typu D z multiplekserem i Clock Enable (CE)
process (CLK, RESET) begin if RESET='1' then – reset asynchroniczny DOUT <= '0'; elsif (CLK'event and CLK='1') then if ce= ‘1’ then if sel=‘0’ then DOUT <= DIN0; else DOUT <= DIN1; end if; -- sel end if; -- ce end if; -- clk end process; E. Jamro, J.Kasperek, P.J.Rajda © Katedra Elektroniki AGH Kraków

28 E. Jamro, J.Kasperek, P.J.Rajda © 2009 Katedra Elektroniki AGH Kraków
Licznik (automat) architecture licznik of COUNT is signal Q: std_logic_vector(3 downto 0); begin process (C, CLR) if CLR='1' then Q <= (others=>’0’); -- Q<= "0000”; elsif C='1' and C'event then if CE='1' then if Q = 9 then Q <= "0000”; else Q <= Q + 1; end if; end process; count<= Q; end licznik; E. Jamro, J.Kasperek, P.J.Rajda © Katedra Elektroniki AGH Kraków

29 Automat Moore’a --Insert the following in the architecture before the begin keyword --Use descriptive names for the states, like st1_reset, st2_search type state_type is (st1_<name_state>, st2_<name_state>, ...); signal state, next_state : state_type; --Declare internal signals for all outputs of the state-machine signal <output>_i : std_logic; -- example output signal --other outputs --Insert the following in the architecture after the begin keyword SYNC_PROC: process (<clock>) begin if (<clock>'event and <clock> = '1') then if (<reset> = '1') then state <= st1_<name_state>; <output> <= '0'; else state <= next_state; <output> <= <output>_i; -- assign other outputs to internal signals end if; end process;

30 Automat Mealy’ego MEALY State-Machine - Outputs based on state and inputs OUTPUT_DECODE: process (state, <input1>, <input2>, ...) begin --insert statements to decode internal output signals --below is simple example if (state = st3_<name> and <input1> = '1') then <output>_i <= '1'; else <output>_i <= '0'; end if; end process; NEXT_STATE_DECODE: process (state, <input1>, <input2>, ...) --declare default state for next_state to avoid latches next_state <= state; --default is to stay in current state --insert statements to decode next_state --below is a simple example case (state) is when st1_<name> => if <input_1> = '1' then next_state <= st2_<name>; when st2_<name> => if <input_2> = '1' then next_state <= st3_<name>; end if; when st3_<name> => next_state <= st1_<name>; when others => end case; end process;

31 E. Jamro, J.Kasperek, P.J.Rajda © 2009 Katedra Elektroniki AGH Kraków
Styl projektowania CLK Modelowa struktura projektu: Jeden sygnał zegarowy Wszystkie przerzutniki wyzwalane tym samym zboczem Problemy przy dwóch aktywnych zboczach: Zależność od współczynnika wypełnienia (tolerancja na zmiany duty cycle w dokumentacji projektu!) Problemy z metodą testowania typu ścieżka brzegowa (JTAG 1149) E. Jamro, J.Kasperek, P.J.Rajda © Katedra Elektroniki AGH Kraków

32 E. Jamro, J.Kasperek, P.J.Rajda © 2009 Katedra Elektroniki AGH Kraków
Styl projektowania CLK Asynchroniczne kluczowanie zegara - same problemy! (niewykorzystanie zasobów dystrybucji sygnałów zegarowych, problemy z testowaniem, gorsze parametry czasowe itp.) Rozwiązanie – stosowanie wejść CE – kodowanie przez warunek: if ce=‘1’ po sekwencji if clk’event and clk=‘1’. E. Jamro, J.Kasperek, P.J.Rajda © Katedra Elektroniki AGH Kraków

33 E. Jamro, J.Kasperek, P.J.Rajda © 2009 Katedra Elektroniki AGH Kraków
Styl projektowania CLK Nie należy stosować wewnętrznie (asynchronicznie!) generowanych sygnałów zegarowych. Należy natomiast projektować układy synchroniczne lub używać kilku sygnałów zegarowych (patrz: DLL). CLK CE E. Jamro, J.Kasperek, P.J.Rajda © Katedra Elektroniki AGH Kraków

34 Deklaracja sygnałów w entity
W deklaracji sygnału jako portu dla entity należy wyszczególnić: nazwę sygnału, jego kierunek, typ i opcjonalnie jego wartość początkową. Składnia: port (names: direction type [:= expression] [; more_ports]); Przykład: port (DATA_IN: in bit:= ‘0’; DATA_OUT: out bit); port (B, A: in std_logic_vector);

35 Deklaracja sygnałów w VHDL
Pytanie: Jaki jest najprawdopodobniej kierunek sygnału DATA_OUT ? MUX logika DATA_IN SELECT DATA_OUT Odpowiedź: buffer Ze względu na to że buffer propaguje do nadrzędnych modułów nie zaleca się go używać. Lepiej jest użyć wewnętrznego dodatkowego sygnału.

36 Generic entity MY_ADDER generic (width: integer; operacja: integer);
library IEEE; use IEEE.STD_LOGIC_1164.all; entity MY_ADDER generic (width: integer; operacja: integer); port ( a, b: in std_logic_vector(0 to width-1); s: out std_logic_vector(0 to width-1); end MY_ADDER; architecture arch of MY_ADDER is gplus: if operacja = 0 generate s<= a + b; end generate; gminus: if operacja=1 generate s<= a-b; end arch;

37 Dodawanie bibliotek library ieee;
use ieee.std_logic_1164.all; -- użycie std_logic use ieee.std_logic_unsigned.all; -- każda wartość std_logic_vector jest traktowana jako integer bez znaku use ieee.std_logic_signed.all; -- każda wartość std_logic_vector jest traktowana jako integer ze znaku Nie można równocześnie użyć obu bibliotek: std_logic_unsigned oraz std_logic_signed. W tym wypadku należy użyć biblioteki: use ieee.std_logic_arith.all; oraz zamiast słowa kluczowego std_logic_vector należy użyć słów unsigned lub signed (wada: konieczność używania konwersji std_logic_vector  unsigned (lub signed))

38 Umiejscawianie komponentów
entity MY_ADDER is generic (width: integer); port ( a, b: in std_logic_vector(width-1 downto 0); s: out std_logic_vector(width-1downto 0); end MY_ADDER; architecture arch of MY_ADDER is component FULL_ADDER -- deklaracja komponentu port ( a, b, cin: in std_logic; s, cout: out std_logic); end component; signal carry: std_logic_vector(0 to dwidth); begin carry(0)<= ‘0’; gi: for i in 0 to width-1 generate fa: full_adder Port map (a=> a(i), b=>b(i), cin=> carry(i), s=> s(i), cout=> carry(i+1)); end generate; end arch; entity FULL_ADDER is port ( a, b, cin: in std_logic; s, cout: out std_logic); end FULL_ADDER; architecture arch of FULL_ADDER is begin s<= a xor b xor c; cout<= a when a=b else cin; end arch;

39 TESTBENCH – połączenie Process/Component
Signals TestBench UUT Rodzaje procesów testujących Ad Hoc Zbiór wektorów testowych do podstawowych testów funkcjonalnych. Algorytmiczny Prosty algorytm generujący wymuszenia, np. pętla zwiększająca zmienną przez cały jej zakres do testowania dekodera lub ALU. Plik wektorów Rozwiązanie strukturalne: proces czytający plik z wektorami do testowania. E. Jamro, J.Kasperek, P.J.Rajda © Katedra Elektroniki AGH Kraków

40 Przykład symulacji entity my_adder_tb is end my_adder_tb;
Architecture sim of my_adder_tb is component my_adder end component; constant width: integer:= 4; signal a, b, s: std_logic_vector(width-1 downto 0):= (others=>’0’); -- to działa tylko dla symulacji signal error: bit; -- sygnalizuje błąd podczas obliczeń begin UUT: my_adder -- testowany moduł port map(a=> a, b=>b, s=>s); wymus: process begin -- generacja wszystkich możliwych wektorów wejściowych a, b wait for 10ns; a<= a + 1; if a="1111” then b<= b+1; end if; end process; error<= ‘1’ when a+b/=s else ‘0’; end sim;

41 Metody wymuszania stanów sygnałów
process begin wait for 5ns; clk<= not clk; end process; CE<= ‘1’; first<= '0', '1' after 201ns, '0' after 211ns; a<= ‘0’; b<= ‘0’; wait for 10ns; a<= ‘1’; wait for 50ns; a<=‘0’; b<= ‘1’; wait; -- czekaj w nieskończoność

42 E. Jamro, J.Kasperek, P.J.Rajda © 2009 Katedra Elektroniki AGH Kraków
VHDL – literatura „A Guide to VHDL”, S. Mazor, P. Langstraat „VHDL Analysis and Modelling of Digital Systems”, Z. Navabi „VHDL Hardware Description and Design”, R. Lipsett, C. Schaefer, C. Ussery „The VHDL Cookbook”, P. J. Ashenden „VHDL programming: with advanced topics”, L. Baker „VHDL starter's guide”, S. Yalamanchili „VHDL for designers”, S. Sjoholm, L. Lindh „VHDL made easy!”, D. Pellerin, D. Taylor „VHDL answers to frequently asked questions”, B. Cohen „VHDL and AHDL digital systems implementation”, F. A. Scarpino „VHDL: język opisu i projektowania układów cyfrowych”, W. Wrona „Active-VHDL Series BOOK#2 – EVITA Interactive Tutorial”, J. Mirkowski, M. Kapustka, Z. Skowroński, A. Biniszkiewicz „VHDL: a logic synthesis approach”, D. Naylor, S. Jones E. Jamro, J.Kasperek, P.J.Rajda © Katedra Elektroniki AGH Kraków

43 E. Jamro, J.Kasperek, P.J.Rajda © 2009 Katedra Elektroniki AGH Kraków
VHDL – literatura Kevin Skahill Józef Kalisz Marek Zwoliński Włodzimierz Wrona E. Jamro, J.Kasperek, P.J.Rajda © Katedra Elektroniki AGH Kraków

44 VHDL – zasoby w Internecie
VHDL: Grupa dyskusyjna: comp.lang.vhdl (FAQ - 4części) Accellera: EDA Industry Working Groups homepage: FPGA Journal - (ładne lekcje ChalkTalk ) Design Automation Cafe: Doulos High Level Design Web site: VHDL-online, University of Erlangen-Nürnberg: VHDL info pages of the Microelectronics Department (University of Ulm, Germany): E. Jamro, J.Kasperek, P.J.Rajda © Katedra Elektroniki AGH Kraków

45 E. Jamro, J.Kasperek, P.J.Rajda © 2009 Katedra Elektroniki AGH Kraków
VHDL – tutoriale Evita Interactive VHDL Tutorial from Aldec, Inc.: Doulos High Level Design Web site; A Hardware Engineers Guide to VHDL: An Introductory VHDL Tutorial, Green Mountain Computing Systems: VHDL Tutorial by Ulrich Heinkel, Thomas Bürner and Martin Padeffke (in English and German): VHDL-FSM-Tutorial by Martin Padeffke: VHDL Verification Course by Stefan Doll: E. Jamro, J.Kasperek, P.J.Rajda © Katedra Elektroniki AGH Kraków

46 E. Jamro, J.Kasperek, P.J.Rajda © 2009 Katedra Elektroniki AGH Kraków
VHDL – free IP cores OpenIP home page: System On Chip Free behavioral models from Alatek: The Hamburg VHDL archive: Rapid Prototyping of Application Specific Signal Processors (RASSP) www site: Doulos High Level Design Web site; Monthly-updated Original Models (developed by Doulos): A VHDL synthesizable model for the MICROCHIP PIC 16C5X microcontroller by Tom Coonan: VHDL Library of Arithmetic Units developed by R. Zimmermann: E. Jamro, J.Kasperek, P.J.Rajda © Katedra Elektroniki AGH Kraków

47 E. Jamro, J.Kasperek, P.J.Rajda © 2009 Katedra Elektroniki AGH Kraków
ActiveHDL – moduły E. Jamro, J.Kasperek, P.J.Rajda © Katedra Elektroniki AGH Kraków

48 ActiveHDL – Design Flow
E. Jamro, J.Kasperek, P.J.Rajda © Katedra Elektroniki AGH Kraków

49 E. Jamro, J.Kasperek, P.J.Rajda © 2009 Katedra Elektroniki AGH Kraków
ActiveHDL – BDE E. Jamro, J.Kasperek, P.J.Rajda © Katedra Elektroniki AGH Kraków

50 E. Jamro, J.Kasperek, P.J.Rajda © 2009 Katedra Elektroniki AGH Kraków
ActiveHDL – FSM E. Jamro, J.Kasperek, P.J.Rajda © Katedra Elektroniki AGH Kraków

51 ActiveHDL – Design Browser
E. Jamro, J.Kasperek, P.J.Rajda © Katedra Elektroniki AGH Kraków

52 ActiveHDL – Waveform Viewer
E. Jamro, J.Kasperek, P.J.Rajda © Katedra Elektroniki AGH Kraków

53 ActiveHDL – Library Manager
E. Jamro, J.Kasperek, P.J.Rajda © Katedra Elektroniki AGH Kraków


Pobierz ppt "Programowalne Układy Cyfrowe Ernest Jamro, Paweł Russek C3 p"

Podobne prezentacje


Reklamy Google