Kurs języka VHDL Very High (Speed Integrated Circuits) Description Language
|
|
- Maksymilian Jankowski
- 9 lat temu
- Przeglądów:
Transkrypt
1 Kurs języka VHDL Very High (Speed Integrated Circuits) Description Language Józef Kalisz, Wojskowa Akademia Techniczna, 2008 Początek: lata 80-te XX w. Kontrakt VHSIC (Department of Defense, USA) Podstawa: język ADA Normalizacja: IEEE (Institute of Electrical and Electronic Engineers) Od 1987 kolejne wersje normy IEEE Standard 1076 Norma IEEE Std 1164: pakiet std_logic_1164 1
2 Projektowanie sprzętu cyfrowego 1. Opis tekstowy: plik w języku VHDL 2. Kompilacja pliku 3. Sprawdzenie, symulacja funkcjonalna Dalszy ciąg procesu projektowania 4. Synteza logiczna 5. Projekt układu scalonego 6. Symulacja czasowa 7. Weryfikacja praktyczna 2
3 Proces projektowania START Specyfikacja projektu (funkcje, parametry) Opis projektu Kompilacja, synteza, symulacja Źle? Dobrze Środowisko projektowe VHDL Implementacja (sieć tranzystorów, komórek, modułów) Sprawdzenie układu (systemu) rzeczywistego Źle? Dobrze Koniec 3
4 Projektowanie w środowisku VHDL Specyfikacja projektu Utworzenie hierarchii / schematu blokowego Opis układu w języku VHDL Opis testów w języku VHDL (benchmarks) Sprawdzenie składni, kompilacja Symulacja (opcja) Synteza logiczna Projekt połączeń w układzie (fitting / place and route) Symulacja czasowa (post-layout, back-annotation) 4 Projekt gotowy do realizacji fizycznej
5 Hierarchia w procesie projektowym z góry (top) System Moduły do góry (up) VHDL Bramki i przerzutniki Tranzystory w dół (down) z dołu (bottom) 5
6 OPIS UKŁADÓW CYFROWYCH W JĘZYKU VHDL Opis: plik tekstowy - zbiór modułów o portach we/wy Stosowana czcionka: Courier, Lucida Console Nazwy: wyłącznie litery alfabetu, cyfry i znak _ Nazwa musi się rozpoczynać od litery i nie może kończyć znakiem _ Bez polskich liter (ą, ę, )! W nazwach i słowach kluczowych nie odróżnia się liter małych od dużych Komentarze w każdym wierszu po dwóch kreskach (--) Słowa kluczowe: wytłuszczenie (entity), wersaliki (ENTITY), kolor (entity) 6
7 Przykład opisu: 3-wejściowa bramka NAND jako jednostka projektowa (moduł) a b c nand3 y -- NAND3 (umowne oznaczenie modułu) u) -- deklaracja jednostki (projektowej): entity nand3 is port(a,b,c : in bit; -- wejscia y : out bit); -- wyjscie end nand3; -- deklaracja architektury ektury: architecture a1 of nand3 is y <= not(a and b and c); -- cialo architektury end a1; <= symbol przypisania wartości wyrażenia do sygnału 7
8 Składnia jednostki projektowej [ ] pojedyncze elementy opcjonalne { } powtarzalne elementy opcjonalne alternatywa ( albo-albo ) [deklaracje bibliotek i polecenia uzycia pakietow] entity nazwa_jednostki is -- deklaracja jednostki [generic(lista_deklarowanych_stalych);] [port(lista_sygnalow_wej. in inout nazwa_typu; lista_sygnalow_wyj. out buffer inout nazwa_typu);] end nazwa_jednostki; architecture nazwa_architektury of nazwa_jednostki is [czesc_deklaracyjna:: typy, sygnaly_wewnetrzne,, stale] {instrukcja_wspolbiezna;} -- cialo architektury end nazwa_architektury; Klauzule port i generic tworzą nagłówek jednostki Ciało o architektury zawiera ciąg g instrukcji współbie bieżnych Może e być więcej architektur (o różnych r nazwach) 8
9 Porty jednokierunkowe: in, out Port buffer: tylko wyjście z odczytem stanu Port dwukierunkowy: inout a) in wejście out wyjście b) tylko jedno źródło sygnału buffer tylko wyjście odczyt stanu c) inout wejście / wyjście 9
10 Sekwencyjność operacji instrukcja procesu -- Przerzutnik T wyzwalany zboczem narastajacym,, z wejsciem zerujacym entity fft is port (T,C,R : in bit; -- C zegar, R - zerowanie Q : out bit); end fft; architecture a1 of fft is process (C,R) -- (C,R): lista wrazliwosci variable tq : bit; -- czesc deklaracyjna procesu, -- wprowadzenie zmiennej lokalnej -- poczatek opisu ciala procesu if R = 1 then tq := 0 ; -- zerowanie elsif C event and C = 1 and T = 1 then -- jesli jest narastajace zbocze zegara i T = 1,, to tq := not tq; -- zmiana stanu (przypisanie do zmiennej) end if; Q <= tq; -- przypisanie do sygnalu Q end process; -- koniec procesu end a1; := symbol przypisania do zmiennej zmienna lokalna tq umożliwia pamiętanie obecnego stanu przerzutnika event atrybut do wykrycia zdarzenia (zmiany stanu sygnału C) C event = true false 10
11 Zastosowanie sygnału wewnętrznego (w części deklaracyjnej architektury) -- Inny opis architektury przerzutnika T architecture a2 of fft is signal tp : std_logic; -- sygnal wewnetrzny process (C,R) if R = 1 then tp <= 0 ; elsif C event and C = 1 then tp <= tp xor T; -- przypisanie sekwencyjne end if; end process; Q <= tp; -- przypisanie wspolbiezne end a2; Zaleca się stosowanie zmiennej lokalnej: mniej zasobów, symulacja natychmiastowa Sygnały wewnętrzne nie mogą być deklarowane wewnątrz procesu Sygnały wewnętrzne mają rodzaj inout (możliwy zapis i odczyt do modelowania połączeń wewnętrznych) 11
12 Wykorzystanie portu buffer lub inout, który umożliwia odczyt stanu -- Przerzutnik T z wyjsciem buffer entity fft1 is port (T,C,R : in bit; Q : buffer bit); end fft1; architecture a1 of fft1 is process (C,R) if R = 1 then Q <= 0 ; elsif C event and C = 1 and T = 1 then Q <= not Q; -- odczyt i negacja stanu Q end if; end process; end a1; 12
13 Inny przykład stosowania procesu -- Przerzutnik D entity ffd is port(d,c,r : in bit; Q : out bit); end ffd; architecture a1 of ffd is process(c,r) if R = 1 then Q <= 0 ; elsif (C event and C = 1 ) then Q <= D; end if; end process; end a1; Nie użyto zmiennej lokalnej, ani sygnału wewnętrznego, ani wyjścia buffer lub inout, gdyż przerzutnik D nie wymaga odczytu stanu obecnego. 13
14 Style opisu architektury Styl behawioralny behavioral (opis działania) algorytmiczny opis sekwencji stanów, z użyciem procesu i instrukcji sekwencyjnych przepływowy - dataflow opis przepływu danych podczas przetwarzania, instrukcje współbieżne, równania boolowskie; także opis układów sekwencyjnych z rejestrami styl RTL Register Transfer Logic Styl strukturalny (opis budowy czyli zapis połączeń komponentów schematowych) 14
15 OBIEKTY do zapisu danych sygnały, zmienne, stałe i pliki TYPY służą do wyrażania wartości obiektów Sygnały są funkcjami czasu Składnia deklaracji sygnału: signal nazwa_sygnalu : nazwa_typu [ograniczenie][:= wyrazenie]; Np. signal reset : bit := 1 ; -- inicjalizacja 1 signal y : bit_vector(0 to 3) := ( 0, 1, 1, 0 ); signal alfa : integer range 0 to 255; -- ograniczenie signal mi : bit_vector(9 downto 0):= (others => 1 ); (others => 1 ) ustala wartość początkową elementów wektora mi równą 1 Operator ( => ) oznacza przyporządkowanie 15
16 Zmienne (variable) nie są funkcjami czasu Stosowane pomocniczo tylko w obrębie procesu lub podprogramu Przypisanie do zmiennej (:=) na przykład pp := x + 1; Deklaracja zmiennej: variable nazwa_zmiennej : nazwa_typu [ograniczenie][:= wyrazenie]; Np. variable uu : integer range 0 to 127 := 5; variable pp : integer range 500 downto 5 := 100; 16
17 Stałe przypisują nazwy wartościom stałym określonego typu Deklaracja stałej: constant nazwa_stalej : typ := wyrazenie; Np. constant UCC : bit := 1 ; Constant masa : bit; -- domyslna wartosc 0 constant fi : integer := 12; constant vec : bit_vector(7 downto 0) := ; 17
18 Typy skalarne numeryczne wyliczeniowe fizyczne Liczby całkowite integer Zakres predefiniowany od (2 31 1) do + (2 31 1) Można zadeklarować nowy typ podając zakres, np. type dzien_miesiaca is range 0 to 31; Operatory arytmetyczne +,, *, /, **, abs, rem, mod Operatory relacyjne =, /=, <, <=, >, >= Np. a+b+c, (a*3 5)/b, 2**c Podtypy standardowe, predefiniowane subtype natural is integer range 0 to ; subtype positive is integer range 1 to ; 18
19 Typy skalarne numeryczne wyliczeniowe fizyczne Liczby rzeczywiste real b. rzadko stosowane Zakres predefiniowany od 1.0E+38 do + 1.0E+38 Można zadeklarować samodzielnie zakres, np. type przedzial is range to +10.0; Typ bitowy bit b. często stosowany Zakres ( 0, 1 ) to są znaki, a nie liczby! Operatory logiczne: not, and, or, nand, nor, xor, xnor Operator unarny not ma najwyższy priorytet Operatory relacyjne : =, /=, <, <=, >, >= Operacje relacyjne (predykaty) mają wyższy priorytet niż logiczne Np. a and (b or c) -- funkcja logiczna, wynik typu bit (not a or c) /= 1 -- predykat, wynik typu boolean 19
20 Typy skalarne numeryczne wyliczeniowe fizyczne Wada typu bit: m.in. brak stanu wysokiej impedancji i stanu nieokreślonego Typ dziewięciowartościowy std_ulogic (IEEE Std ), unresolved type std_ulogic is ( U, -- stan niezainicjowany X, -- wymusza stan nieznany 0, -- wymusza stan 0 1, -- wymusza stan 1 Z, -- stan wysokiej impedancji W, -- słaby stan nieznany (odczyt) L, -- słabe 0 (odczyt), rownowazne polaczeniu -- przez rezystor z masa) H, -- słabe 1 (odczyt), rownowazne polaczeniu -- przewodu przez rezystor -- z napieciem zasilania) - -- stan nieokreslony, podobnie jak X ); Wartości U, W, - są metalogiczne, tylko do symulacji 20
21 Typy skalarne numeryczne wyliczeniowe fizyczne Typ std_logic - resolved (jednoznaczny), najczęś ęściej stosowany Zdefiniowany w pakiecie std_logic_1164 Typ boolowski: boolean Zakres: (false, true) Operatory: głównieg =, /= Operacje jak dla typu bitowego Np. predykaty (a = b), (b /= c) Typ znakowy: character Znaki sąs zapisywane z użyciem u apostrofów, np. b,'b', b Zakres: 128 znaków w ze zbioru ASCII (.., 0, 1, 2,..,,.., A, B, C,.., a, b, c,..),..) Norma IEEE Std rozciąga zbiór r znakowy na tablicę znaków w ujętych w normie ISO 8859 (wersja zachodnia)
22 Typy skalarne numeryczne wyliczeniowe fizyczne Typy wyliczeniowe są definiowane przez listę identyfikatorów (nazw) lub listę literałów (pojedynczych liter lub cyfr ujętych w apostrofy). Np. type kolory is (niebieski,zielony,czerwony); -- nazwy type trojkowy is ('3','6','9'); -- literały type litery is ( A, B, C, c ); -- literały W definicji typu każdy identyfikator ma indeks, np.. niebieski => 0, 6 => 1, c => 3 Poniższe dwa typy sąs identyczne: type duze is (A,ALA,ELA,WANDA); -- nazwy type male is (a,ala,ela,wanda); -- nazwy Typ fizyczny czasowy: time Zakres predefiniowany: (0 to ) jednostek: fs, ps, ns, us, ms,, sec, min, hr Np. x <= not a and b after 12 ns; 22
23 Jak skróci cić czas kompilacji i uzyskać po syntezie prostsze struktury logiczne? Zawężać zakresy typów standardowych i definiować własne podtypy Np. subtype bajtowy is integer range 0 to 255; subtype mlitery is character range a to z ; Tworzyć własne typy przez podanie odpowiedniego zakresu Np. type zakres256 is range 0 to 255; type dekada is range 0 to 9; Operacje (np. dodawanie) można realizować na danych tylko tego samego typu! Nie można więc c dodać danych o typach zakres256 i dekada Do tego celu można utworzyć podtyp, np. subtype dekada is zakres256 range 0 to 9; 23
24 Typy złożonez one array i string Zbiory indeksowane: każdy element zbioru ma liczbę (indeks), określaj lającą pozycję elementu w zbiorze Tablica (array( array) gdy elementy zbioru mają jeden typ -- np.. definicja slowa 16-bitowego type slowo16 is array(0 to 15) of bit; Typ łańcuchowy (string) łańcuchy znakowe (słowa) np. constant pik : string(1 to 5) := Alina ; Słowa wymagają użycia cudzysłow owów Łączenie słów s w (konkatenacja): 100 & razy Operacje na znakach: np. c <= pik(1 to 3)& cja cja ; 24
25 Typ złożonyz ony bit_vector Tablica jednowymiarowa to wektor Gdy elementy wektora sąs typu bit,, wówczas w wczas stosujemy typ predefiniowany bit_vector(format (format) type bit_vector is array (natural range <>) of bit; Skrzynka <> - format nieokreślony (wymaga określenia), np. variable dbyte : bit_vector(15 downto 0); Zapis wektorów: w: np. ( 1, 0, 0, 1 ) albo 1001 Na przykład variable a : bit_vector(5 downto 0) := ; Operacje na bitach: np. d <= a(3 downto 1)& ; Zaleca się stosować format malejący Zapis wektorów w w HEX, np. constant mol : bit_vector(7 downto 0) := X 3F ; 25
26 Typ złożonyz ony standard_logic_vector Aby użyću elementy wektora typu std_logic,, stosujemy typ predefiniowany std_logic_vector(format (format) Np. port (A, B : out std_logic_vector(3 downto 0)); variable dekada : std_logic_vector(9 downto 0); Można zrealizować przypisania A <= X01Z ; dekada := 10XX0ZZ1U0 ; Stosowanie tego typu ( i typu std_logic ) wymaga wpisania na początku modułu klauzuli użycia u ycia pakietu: use ieee.std_logic_1164.all all; 26
27 Typy złożone z one signed i unsigned (norma IEEE Std ) Aby wektory o elementach typu bit lub std_logic można stosować jak równoważne ne liczby Typ signed dla liczb całkowitych ze znakiem w kodzie ZU2 Typ unsigned dla liczb naturalnych - bez znaku Na skrajnej prawej pozycji w wektorze jest najmniej znacząca ca cyfra Typy te sąs ujęte w pakietach standardowych języka. j Aby je użyć, u, trzeba na początku modułu u wpisać klauzulę use ieee.numeric_std.all all; Np. zmienna variable m : unsigned(7 downto 0); przybiera wartości w zakresie od 0 do Możliwe sąs operacje m + 1, m*7, if m = i podobne Niemożliwe jest jednak przypisanie liczby całkowitej, np. m := 14; Wtedy trzeba użyću typu łańcuchowego, np. m := ; (niekiedy jest akceptowany zapis w HEX, np. m := X 0E ;) 27
28 Atrybuty do identyfikacji cech typów w i sygnałów Zapis (typ obiekt) atrybut zwraca poszukiwaną cechę event zwraca wartość true jeśli miało o miejsce zdarzenie Rozpoznawanie granic typów w skalarnych i złożonych, z onych, np. type zakres is range 15 downto -5; variable P: integer := zakres left left; -- P := 15 variable R: integer := zakres right right; -- R := -5 variable S: integer := zakres high high; -- S := 15 variable T: integer := zakres low low; -- T := -5 length zwraca długod ugość wektora, np.. wektora alfa variable U: integer := alfa length length; range identyfikuje format (zakres indeksowania) wektora Np. jeśli signal W : std_logic_vector(0 to 15); to W range zwraca zakres (0 to 15) reverse_range zwraca odwrócony zakres 28
29 Pakiety i biblioteki package, library Pakiety (package)) zawierają obiekty, podprogramy, modele, funkcje i procedury do łatwego stosowania w różnych r projektach Pakiety standardowe (IEEE) i niestandardowe (indywidualne) Biblioteki (library)) zawierają skompilowane pakiety i realizowane projekty Biblioteka work domyślnie zawiera wyniki realizowanych projektów Domyślnie przed każdym projektem istnieje (niewidoczny) zapis library std, work; -- deklaracja bibliotek use std.standard.all all; -- klauzula uzycia Aby użyću typy std_logic i std_logic_vector należy y na początku modułu u umieści cić klauzule: library ieee; use ieee.std_logic_1164.all; 29
30 Instrukcje współbie bieżne Instrukcje współbie bieżne można bezpośrednio użyću w ciele architektury przypisanie do sygnału u (<=( <=) instrukcja procesu process instrukcja współbie bieżnego wywołania procedury instrukcja łączenia komponentów port map instrukcja powielania generate instrukcja blokowa block Dwie pierwsze sąs podstawowe 30
31 Instrukcje przypisania do sygnału: podstawowe, warunkowe, selektywne Przypisanie podstawowe sygnal <= [transport[ transport] wyrazenie [after odcinek_czasu]; wyrazenie musi dawać wynik tego samego typu co sygnal Klauzule transport i after służą do opisu opóźnie nień typu time Są one pomijane w syntezie i służąs tylko do symulacji Przypisanie warunkowe when-else else sygnal <= {wyrazenie{ when warunek [and[ or warunek] else} wyrazenie_koncowe; Symulator bada warunki (o wyniku typu boolean) kolejno i realizuje przypisanie przy pierwszym spełnionym warunku Należy y wymienić wszystkie możliwe warunki lub wpisać wyrazenie_koncowe, które domyślnie spełnia warunek when others ( dla pozostałych warunków ) 31
32 Przypisanie warunkowe Przykład opisu multipleksera 2-na2 na-1 architecture a4 of mux2_1 is y <= a when s = 0 else b; -- pamietac o apostrofach! end a4; albo z użyciem u typu std_logic architecture a5 of mux2_1 is y <= a when s = 0 else b when s = 1 else X ; -- albo 0 zamiast X end a5; albo z użyciem u klauzuli unaffected (nie wszystkie kompilatory jąj akceptują!) b when s = 1 else unaffected; Do opisu większych multiplekserów w trzeba jako adres użyću wektor s Wada: ważna jest kolejność warunków po syntezie bardziej złożoneone układy zaleca się stosować przypisanie selektywne 32
33 Przypisanie selektywne with-select with wybor select {sygnal <= wyrazenie when wartosc_wyboru,} sygnal <= wyrazenie_koncowe when others; Przykład opisu multipleksera grupowego 4-na4 na-1 1 bajtów entity muxg8_4_1 is port (a,b,c,d : in std_logic_vector(7 downto 0); adr : in std_logic_vector(1 downto 0); y : out std_logic_vector(7 downto 0)); end muxg8_4_1; architecture a1 of muxg8_4_1 is with adr select y <= a when 00, b when 01, c when 10, d when 11, XXXXXXXX when others; end a1; 33
34 Przypisanie selektywne Zapis tablicy stanów w układu kombinacyjnego Np. dla funkcji 6 zmiennych a : in std_logic_vector(5 downto 0); i sygnale wyjściowym y : out std_logic; można opisać tablicę stanów: with a select y <= 1 when -- tu trzeba wypisac wszystkie stany a, -- dla ktorych y = 1, na przyklad X 1110XX, 0 when -- tu trzeba wypisac wszystkie stany a, -- dla ktorych y = 0, na przykład X X , X when others; Symbol ( )( ) oznacza wybór ( albo ). Nie oznacza on funkcji or. Można równier wnież wykorzystać równoważniki niki dziesiętne (elementy zbioru T) 34
35 Instrukcja procesu process Instrukcja współbie bieżna zapisywana w ciele architektury Składnia: [etykieta:] etykieta:]process [(lista_wrazliwosci)][ lista_wrazliwosci)][is] [czesc_deklaracyjna] {instrukcja_sekwencyjna;} end process [etykieta]; Lista wrażliwo liwości zawiera nazwy sygnałów, które podczas symulacji powodują wykonanie instrukcji sekwencyjnych wewnątrz procesu, gdy tylko którykolwiek z tych sygnałów w zmieni wartość Lista ta jest opcjonalna, lecz gdy jej nie ma, to musi być wprowadzona wewnątrz procesu sekwencyjna instrukcja czekania wait Opcjonalna etykieta służy y tylko do polepszenia czytelności ci zapisu i generalnie zaleca się jej stosowanie W częś ęści deklaracyjnej mogą być umieszczone deklaracje typów w (type( type), stałych (constant( constant) ) i zmiennych lokalnych (variable( variable) 35
36 INSTRUKCJE SEKWENCYJNE do opisu procesów oraz podprogramów (procedury, funkcje) Lista zawiera dwie instrukcje wykorzystywane także e jako współbie bieżne przypisanie podstawowe do sygnału (<= <=) wywołanie procedury oraz przypisanie do zmiennej (:=( :=) instrukcja czekania wait instrukcja warunkowa if-then then-elseelse instrukcja wyboru case instrukcja pętli p loop i związane zane instrukcje exit i next instrukcja pusta null 36 instrukcja testowa assert
37 INSTRUKCJE SEKWENCYJNE wait Oznacza przejściowe wstrzymanie wykonania procesu lub podprogramu. Trzy opcje: wait [until warunek] -- czekaj dopoki [on nazwa_sygnalu {,nazwa_sygnalu nazwa_sygnalu}] -- czekaj na [for odcinek_czasu]; -- czekaj przez Opis architektury przerzutnika D przy uzyciu instrukcji wait on, czyli czekaj na (zmianę sygnału u (sygnałów)) w)) architecture a2 of ffd is process -- nie ma listy wrazliwosci! wait on (R,C); -- czekaj na zmiane R,C if R = 1 then Q <= 0 ; elsif (C event and C = 1 ) then Q <= D; end if; end process; end a2; 37
38 INSTRUKCJE SEKWENCYJNE if-then then-elseelse Sekwencyjny odpowiednik współbie bieżnej instrukcji przypisania warunkowego when-else else,, której nie można stosować w obrębie bie procesu ani podprogramu Składnia: if warunek then {instrukcja sekwencyjna;} {elsif warunek then {instrukcja sekwencyjna;}} [else {instrukcja sekwencyjna;}] end if; Wynik warunku jest typu boolean (false lub true) Gdy warunek jest spełniony (true( true), to wykonywana jest sekwencja instrukcji następuj pująca bezpośrednio po słowie s then W przeciwnym razie (else( else) ) wykonywana jest inna sekwencja albo sprawdzany jest kolejny warunek (elsif( warunek then) ) i tak dalej Sprawdzanie warunków w następuje kolejno,, a więc c pierwsze wypisane warunki mają odpowiednio wyższy priorytet 38
39 Sekwencyjny odpowiednik współbie bieżnej instrukcji przypisania selektywnego with-select select-when,, której nie można stosować w obrębie bie procesu ani podprogramu Składnia: case wyrazenie is {when wybor => {instrukcja sekwencyjna;}} [when others => {instrukcja sekwencyjna;}] end case; wybor jest pojedynczą wartości cią wyrazenia albo grupą takich wartości Przy opisie należy y wymienić wszystkie wzajemnie wyłą łączające ce się wartości, albo dla wartości nieużywanych wprowadzić zapis lub INSTRUKCJE SEKWENCYJNE case when others => sekwencja_instrukcji; when others => null; -- brak dzialania Sprawdzanie wartości wyboru następuje równolegle (jednocześnie), nie), czyli żadna z nich nie ma priorytetu względem innych 39
40 INSTRUKCJE SEKWENCYJNE case Jako wybor można użyću wyrażenia alternatywnego,, grupującego kilka wartości przy użyciu u symbolu albo ( ) Na przykład, jeśli c jest liczbą całkowit kowitą i y jest sygnałem out typu std_logic case c is when => y <= 1 ; when => y <= 0 ; when 7 9 => y <= X ; when others => null; end case; 40
41 INSTRUKCJE SEKWENCYJNE loop Pętla loop umożliwia zapis powtarzania sekwencji instrukcji Trzy rodzaje pętli: p for, while i pętle nieskończone Jeśli liczba iteracji (obiegów w pętli) p jest z góry g znana, stosujemy instrukcję for-loop [etykieta:] for parametr in zakres loop {instrukcja sekwencyjna;} end loop [etykieta]; parametr pętli jest zazwyczaj indeksem zakresu definiowanego przez granice i kierunek indeksowania (to( downto). Na przykład, inwersję wszystkich bitów w wektora A można opisać for i in 0 to A length - 1 loop B(i) ) <= not A(i); -- B zawiera negacje bitow A end loop; Indeks (w tym przykładzie i) ) nie musi być odrębnie deklarowany i jest rozpoznawany wyłą łącznie w obrębie bie tej instrukcji Atrybut length umożliwia identyfikację długości wektora Opcjonalna etykieta zwiększa czytelność programu 41
42 INSTRUKCJE SEKWENCYJNE while-loop loop Jeśli liczba iteracji zależy y od wyniku sprawdzania warunku przed powtórzeniem pętli, p to stosuje się instrukcję while-loop loop [etykieta:] while warunek loop {instrukcja sekwencyjna;} end loop [etykieta]; Na przykład można opisać wirtualny zegar,, który działa a tylko wtedy gdy zmienna boolowska flaga ma wartość true: process while flaga loop zegar <= not zegar; -- typ bit lub std_logic wait for okres_zegara/2; -- typ time end loop; end process; 42
43 Instrukcja exit[etykieta_petli][ [etykieta_petli][when warunek]; służy y do wyjścia z pętli, p jeśli warunek jest spełniony Można zrezygnować z opcji [when warunek], ale oznacza to bezwarunkowe wyjście z pętli p przy pierwszym napotkaniu słowa s exit podczas wykonywania instrukcji warunek można też wprowadzić stosując instrukcję warunkową if-then then: if warunek then exit; end if; Instrukcja INSTRUKCJE SEKWENCYJNE wyjście z pętli p (exit( exit, next) next [etykieta_petli][ etykieta_petli][when warunek] służy y do zakończenia wykonywania bieżą żącej iteracji pętli p i przejście do następnej, jeśli warunek jest spełniony. Jednocześnie nie indeks pętli p zwiększa się o jeden. 43
44 INSTRUKCJE SEKWENCYJNE null, assert Instrukcja pusta null wskazuje, że e nie jest wykonywane żadne działanie anie poza przejściem do wykonania następnej instrukcji Często stosowana na końcu instrukcji case Instrukcja testowa assert służy y do sprawdzania poprawności symulacji i alarmowania w razie błędów w przez odpowiednie komunikaty tekstowe [etykieta:] assert warunek [report tekst_komunikatu ] [severity severity_level]; -- poziom zagrożenia Jeśli warunek nie jest spełniony, to generowany jest komunikat alarmowy Opcja report umożliwia wyświetlenie wietlenie wpisanego komunikatu, a opcja severity (zagrożenie) wyświetla wietla słowo s informujące o jednym z czterech stopni zagrożenia: Failure (uszkodzenie), Error (błą łąd), Warning (ostrzeżenie) enie) i Note (uwaga) Np. assert (t_setup < 2 ns) report Za krotki czas ustalenia! severity Warning; i jeśli warunek nie jest spełniony, to symulator zareaguje komunikatem Assertion violation. 44
45 PODPROGRAMY: FUNKCJE I PROCEDURY Funkcja jest podprogramem, którego parametrami sąs wyłą łącznie sygnały wejściowe i który jako wynik zwraca jedną wartość określonego typu. Procedura jest podprogramem, który na liście parametrów w ma zarówno wejścia i wyjścia cia. Funkcja jest traktowana jak wyrażenie enie,, które re można stosować tylko w obrębie bie procesu lub podprogramu. Procedura (ściślej jej wywołanie) jest traktowana jak instrukcja, która może e być współbie bieżna lub sekwencyjna, zależnie od miejsca jej użycia. u Do tworzenia podprogramów w można stosować wyłą łącznie instrukcje sekwencyjne. W obrębie bie podprogramów, podobnie jak wewnątrz procesów, nie mogą być deklarowane sygnały y wewnętrzne trzne,, lecz tylko zmienne lokalne. W odróżnieniu od procesów, w podprogramach wartości zmiennych lokalnych są ustalane od nowa przy każdym wywołaniu podprogramu. Oznacza to, że e zmienne lokalne nie mogą być wykorzystane do pamiętania stanów w podprogramach. 45
46 FUNKCJE (1) Funkcja przed użyciem u (czyli wywołaniem) musi być zadeklarowana. Składnia deklaracji funkcji: function nazwa [(lista_parametrow lista_parametrow)] return typ is [czesc deklaracyjna] -- zazwyczaj deklaracje zmiennych lokalnych -- nie mozna deklarowac sygnalow! {instrukcja sekwencyjna;} -- przynajmniej jedna instrukcja musi -- zawierać słowo return(wyrazenie (wyrazenie) end [function][nazwa];]; Deklarację funkcji umieszcza się globalnie w odrębnym i zadeklarowanym pakiecie albo lokalnie w częś ęści deklaracyjnej architektury lub w nagłówku procesu. Wywołanie funkcji wykonuje się używając c jej nazwy jako wyrażenia z podaniem listy parametrów przechodzących cych.. Wartości tych parametrów w nie sąs zmieniane przez funkcję. 46
47 FUNKCJE (2) Argumenty funkcji, czyli parametry formalne z listy sąs rodzaju in i domyślnie należą do klasy stałych (constant( constant), ale muszą być jawnie deklarowane w klasie signal,, jeśli w obrębie bie funkcji wykorzystuje się na przykład atrybuty sygnału. Parametry funkcji nie mogą należeć do klasy zmiennych (variable( variable). Przy wywołaniu funkcji parametry formalne są zastępowane przez parametry aktualne (przechodzące) ce). Instrukcja return kończy wykonywanie funkcji i zwraca wynik funkcji, czyli wartość zadeklarowanego typu. W obrębie bie funkcji nie można stosować instrukcji wait. Przykład funkcji komparacji trzech bitów: function komp3(a,b,c : std_logic) return boolean is if ((a xor b) nor (a xor c)) = 1 then return true; else return false; end if; end komp3; W powyższym przykładzie funkcja zwraca wynik typu boolean, ale można jąj łatwo zmodyfikować,, aby otrzymać wynik typu std_logic. 47
48 FUNKCJE (3) Funkcja do konwersji wektora typu std_logic_vector na liczbę całkowit kowitą (integer). Podobną rolę pełni typ unsigned,, ale tylko w odniesieniu do operacji arytmetycznych. function vec_int(signal a : std_logic_vector) return integer is variable p : integer; p := 0; for i in a range loop p := p * 2; case a(i) is -- można na uzyc instrukcje if-then then-elseelse when 1 H => p := p + 1; when others => null; end case; end loop; return p; end vec_int; Wzór r do zamiany słowa s dwójkowego B = b n-1 b n-2...b 1 b 0 na równowar wnoważnik nik dziesiętny: L(B) ) = ((...((b n b n-2 ) ) b 1 ) 22 + b 0 Atrybut sygnałowy a range umożliwia iteracje w pętli, p rozpoczynając c od lewostronnego bitu. Ponieważ użyto atrybutu sygnałowego, więc c trzeba było o zadeklarować parametr formalny a jako signal.. RównieR wnież parametr aktualny musi należeć do klasy signal. 48
49 FUNKCJE (4) Wiele funkcji jest zdefiniowane w pakiecie standardowym std_logic_1164. Np. funkcje wykrywające narastające i opadające zbocze sygnału: function rising_edge(signal signal s : std_ulogic) return boolean; function falling_edge(signal s : std_ulogic) return boolean; Czyli zamiast pisać if zegar event event and (zegar = 1 ) then..., można na użyću zapis if rising_edge(zegar) then.... Typem obiektu może być std_logic. Można utworzyć uniwersalne funkcje logiczne, automatycznie rozpoznające liczbę argumentów, jeśli wejścia zadeklaruje się w postaci wektora bez podania formatu.. Np. funkcjaf NAND: function fnand(signal a: std_logic_vector) return std_logic is variable p : std_logic; p := 1 ; for i in a'range loop p := p and a(i); end loop; return not p; end fnand; Np. jeśli były y zadeklarowane sygnały signal s,t : in std_logic_vector(0 to 7); oraz signal r : in std_logic; to można funkcję fnand użyć w postaciach if fnand(s) ) = 1 then...; r 49 <= fnand(s) or fnand(t); -- error!: signal r is in!
50 PROCEDURY (1) Procedura może e zwracać więcej wyników w niż jeden. Składnia deklaracji procedury: procedure nazwa [(lista lista _parametrow)] is [czesc deklaracyjna] -- zazwyczaj deklaracje zmiennych lokalnych -- nie mozna deklarowac sygnalow! {instrukcja sekwencyjna;} -- moze być uzyte słowo return (bez wyrazenia) ) do zakonczenia procedury end [procedure][nazwa];]; -- normalne zakonczenie procedury Parametry formalne: klasa constant, variable lub signal,, rodzaj: in, out,, lub inout. Na liście należy y definiować klasę i rodzaj parametru. Rodzaj in - do wprowadzania wartości parametrów do procedury, out - do zwracania wartości parametrów z procedury (czyli jej wyników), w), inout - do modyfikacji jednego parametru (wprowadzanego i zwracanego). Podobnie jak funkcja, procedura musi być zadeklarowana albo globalnie w pakiecie, albo lokalnie: w deklaracji architektury albo w nagłówku procesu. Procedura może e być wywołana w ciele architektury jako instrukcja współbie bieżna (pod warunkiem, że żaden z parametrów w na liście nie należy y do klasy variable) ) lub w obrębie bie procesu bądźb innego podprogramu jako instrukcja sekwencyjna. 50
51 PROCEDURY (2) Przykład procedury: Tester parzystości wektora A o automatycznie rozpoznawalnej długod ugości i generujący dwa sygnały y wyjściowe: P (gdy liczba jedynek jest parzysta) i N (gdy jest odwrotnie). procedure test_par( signal A : in std_logic_vector; signal P,N : out std_logic) is variable t : std_logic; -- zmienna lokalna t := 1 ; for i in A range loop t := t xor A(i); end loop; P <= t; N <= not t; end test_par; 51
52 PROCEDURY (3) Poniżej do pamiętania i odczytu obecnego stanu przerzutnika wykorzystano port o rodzaju inout Jest to jedyna możliwo liwość do wykorzystania w tej procedurze Nie można zastosować do tego celu ani sygnału u wewnętrznego lub wyjścia buffer (niedopuszczalne w procedurze) ani zmiennej lokalnej (nie przechowuje wartości po wykonaniu procedury) Przerzutnik JK wyzwalany zboczem narastającym, z asynchronicznym zerowaniem i ustawianiem procedure FFJK1 (signal C,J,K,R,S : in std_logic; signal Q : inout std_logic; signal QN : out std_logic) is variable JK : std_logic_vector(0 to 1); variable re : boolean; JK := J & K; re := rising_edge(c); if R = 1 then Q <= 0 ; elsif S = 1 then Q <= 1 ; elsif re then case JK is when 10 => Q <= 1 ; when 01 => Q <= 0 ; when 11 => Q := not Q; --??? when others => null; end case; end if; QN <= not Q; end FFJK1; 52
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
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
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,
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
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
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
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
Aby w pełni przetestować układ o trzech wejściach IN_0, IN_1 i IN_2 chcemy wygenerować wszystkie możliwe kombinacje sygnałów wejściowych.
Generowanie sygnałów testowych VHDL Wariant współbieżny (bez procesu): sygnał
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.
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"; %------------------------------------------------------------
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
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:...
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
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
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
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
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
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
Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu
Programowanie strukturalne Opis ogólny programu w Turbo Pascalu STRUKTURA PROGRAMU W TURBO PASCALU Program nazwa; } nagłówek programu uses nazwy modułów; } blok deklaracji modułów const } blok deklaracji
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
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
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
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
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
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
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
VHDL cz.1. Rafał Walkowiak IIn PP Wer
VHDL cz.1 Rafał Walkowiak IIn PP Wer 2.0 11.2013 VHDL VHDL (ang. Very High Speed Integrated Circuits Hardware Description Language ) jest popularnym językiem opisu sprzętu używanym w komputerowym projektowaniu
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
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
Język VHDL podstawy Mariusz Rawski
CAD Język VHDL podstawy Mariusz Rawski rawski@tele.pw.edu.pl http://rawski.zpt.tele.pw.edu.pl/ Języki opisu sprzętu Very high speed integrated Hardware Description Language Przemysłowy standard języka
Podstawy programowania skrót z wykładów:
Podstawy programowania skrót z wykładów: // komentarz jednowierszowy. /* */ komentarz wielowierszowy. # include dyrektywa preprocesora, załączająca biblioteki (pliki nagłówkowe). using namespace
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ń -
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
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
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ń
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:
Ada 95 #1/5 - typy. Typy skalarne. Hierarchia typów w Adzie. Typ znakowy. Typy dyskretne. Plan wykładu
Plan wykładu Ada 95 #1/5 - typy Wojciech Complak, Instytut Informatyki, Politechnika Poznańska e-mail : Wojciech.Complak@cs.put.poznan.pl www : http://www.cs.put.poznan.pl/wcomplak Hierarchia typów w Adzie
Język programowania DELPHI / Andrzej Marciniak. Poznań, Spis treści
Język programowania DELPHI / Andrzej Marciniak. Poznań, 2012 Spis treści Przedmowa 11 Przyjęta notacja 13 Rozdział 1. Wprowadzenie 15 1.1. Ogólne zasady programowania zorientowanego obiektowo 15 1.2. Historia
Wstęp do programowania
Wstęp do programowania wykład 2 Piotr Cybula Wydział Matematyki i Informatyki UŁ 2012/2013 http://www.math.uni.lodz.pl/~cybula Język programowania Każdy język ma swoją składnię: słowa kluczowe instrukcje
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
1 Podstawy c++ w pigułce.
1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,
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?
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
Skrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać
MatLab część III 1 Skrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać komentarze poprzedzone znakiem % Skrypty
Algorytmika i Programowanie VBA 1 - podstawy
Algorytmika i Programowanie VBA 1 - podstawy Tomasz Sokół ZZI, IL, PW Czas START uruchamianie środowiska VBA w Excelu Alt-F11 lub Narzędzia / Makra / Edytor Visual Basic konfiguracja środowiska VBA przy
Projektowanie Scalonych Systemów Wbudowanych VERILOG
Projektowanie Scalonych Systemów Wbudowanych VERILOG OPIS BEHAWIORALNY proces Proces wątek sterowania lub przetwarzania danych, niezależny w sensie czasu wykonania, ale komunikujący się z innymi procesami.
VHDL cz.1. Rafał Walkowiak IIn PP Wer
VHDL cz.1 Rafał Walkowiak IIn PP Wer 2.1 12.2015 VHDL VHDL (ang. Very High Speed Integrated Circuits Hardware Description Language ) jest popularnym językiem opisu sprzętu używanym w komputerowym projektowaniu
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
1. ELEMENTY JĘZYKA PL/SQL
1. ELEMENTY JĘZYKA PL/SQL Aplikacje korzystające z PL/SQL będącego proceduralnym rozszerzeniem SQL mogą wykonywać procedury i funkcje języka PL/SQL składowane w bazie danych oraz wysyłać własne programy
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
Podstawy elektroniki cyfrowej dla Inżynierii Nanostruktur. Piotr Fita
Podstawy elektroniki cyfrowej dla Inżynierii Nanostruktur Piotr Fita Elektronika cyfrowa i analogowa Układy analogowe - przetwarzanie sygnałów, których wartości zmieniają się w sposób ciągły w pewnym zakresie
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
Cyfrowy zapis informacji
F1-1 Cyfrowy zapis informacji Alfabet: uporządkowany zbiór znaków, np. A = {a,b,..., z} Słowa (ciągi) informacyjne: łańcuchy znakowe, np. A i = gdtr Długość słowa n : liczba znaków słowa, np. n(sbdy) =
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
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
Pascal - wprowadzenie
Pascal - wprowadzenie Ogólne informacje o specyfice języka i budowaniu programów Filip Jarmuszczak kl. III c Historia Pascal dawniej jeden z najpopularniejszych języków programowania, uniwersalny, wysokiego
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
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)
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
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
Programowanie obiektowe
Programowanie obiektowe Język programowania Ruby Marcin Młotkowski 12 kwietnia 2018 Plan wykładu 1 Wstęp 2 Typy numeryczne Łańcuchy znaków (klasa String) Przedziały Tablice i tablice asocjacyjne Nazwy
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,
Kiedy i czy konieczne?
Bazy Danych Kiedy i czy konieczne? Zastanów się: czy często wykonujesz te same czynności? czy wielokrotnie musisz tworzyć i wypełniać dokumenty do siebie podobne (faktury, oferty, raporty itp.) czy ciągle
DIAGRAMY SYNTAKTYCZNE JĘZYKA TURBO PASCAL 6.0
Uwaga: DIAGRAMY SYNTAKTYCZNE JĘZYKA TURBO PASCAL 6.0 1. Zostały pominięte diagramy: CYFRA, CYFRA SZESNASTKOWA, ZNAK i LITERA. Nie została uwzględniona możliwość posługiwania się komentarzami. 2. Brakuje
Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44
Programowanie w C++ Wykład 2 Katarzyna Grzelak 4 marca 2019 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44 Na poprzednim wykładzie podstawy C++ Każdy program w C++ musi mieć funkcję o nazwie main Wcięcia
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
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
1 Podstawy c++ w pigułce.
1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,
Pascal typy danych. Typy pascalowe. Zmienna i typ. Podział typów danych:
Zmienna i typ Pascal typy danych Zmienna to obiekt, który może przybierać różne wartości. Typ zmiennej to zakres wartości, które może przybierać zmienna. Deklarujemy je w nagłówku poprzedzając słowem kluczowym
Podstawowe operacje arytmetyczne i logiczne dla liczb binarnych
1 Podstawowe operacje arytmetyczne i logiczne dla liczb binarnych 1. Podstawowe operacje logiczne dla cyfr binarnych Jeśli cyfry 0 i 1 potraktujemy tak, jak wartości logiczne fałsz i prawda, to działanie
Programowanie strukturalne i obiektowe : podręcznik do nauki zawodu technik informatyk / Adam Majczak. Gliwice, cop
Programowanie strukturalne i obiektowe : podręcznik do nauki zawodu technik informatyk / Adam Majczak. Gliwice, cop. 2010 Spis treści Wstęp 11 Część I PASCAL - wprowadzenie do programowania strukturalnego
Spis treści WSTĘP CZĘŚĆ I. PASCAL WPROWADZENIE DO PROGRAMOWANIA STRUKTURALNEGO. Rozdział 1. Wybór i instalacja kompilatora języka Pascal
Spis treści WSTĘP CZĘŚĆ I. PASCAL WPROWADZENIE DO PROGRAMOWANIA STRUKTURALNEGO Rozdział 1. Wybór i instalacja kompilatora języka Pascal 1.1. Współczesne wersje kompilatorów Pascala 1.2. Jak zainstalować
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
Laboratorium Wstawianie skryptu na stroną: 2. Komentarze: 3. Deklaracja zmiennych
1. Wstawianie skryptu na stroną: Laboratorium 1 Do umieszczenia skryptów na stronie służy znacznik: //dla HTML5 ...instrukcje skryptu //dla HTML4 ...instrukcje
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ń
CZ1. Optymalizacja funkcji przełączających
CZ1. Optymalizacja funkcji przełączających 1. Proszę opisać słownie metodę i dokonać optymalizacji łącznej następujących funkcji (najmłodszy bit wejścia proszę oznaczyć A) : F1=SUM m(1,3,5,7,9,13,15) F2=SUM
LibreOffice Calc VBA
LibreOffice Calc VBA LibreOffice Calc umożliwia tworzenie własnych funkcji i procedur przy użyciu składni języka VBA. Dostęp do edytora makr: Narzędzia->Makra->Zarządaj makrami->libreoffice Calc Aby rozpocząć
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
/* dołączenie pliku nagłówkowego zawierającego deklaracje symboli dla wykorzystywanego mikrokontrolera */ #include <aduc834.h>
Szablon programu: /* dołączenie pliku nagłówkowego zawierającego deklaracje symboli dla wykorzystywanego mikrokontrolera */ #include /* opcjonalne: deklaracja typów o rozmiarze jednego i dwóch
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
PODSTAWY BAZ DANYCH 13. PL/SQL
PODSTAWY BAZ DANYCH 13. PL/SQL 1 Wprowadzenie do języka PL/SQL Język PL/SQL - rozszerzenie SQL o elementy programowania proceduralnego. Możliwość wykorzystywania: zmiennych i stałych, instrukcji sterujących
Zapis algorytmów: schematy blokowe i pseudokod 1
Zapis algorytmów: schematy blokowe i pseudokod 1 Przed przystąpieniem do napisania kodu programu należy ten program najpierw zaprojektować. Projekt tworzącego go algorytmu może być zapisany w formie schematu
Projektowanie systemów cyfrowych w językach opisu sprzętu. Studium Zaoczne IV rok kierunek Elektronika i Telekomunikacja. Wykład 2
Projektowanie systemów cyfrowych w językach opisu sprzętu Studium Zaoczne IV rok kierunek Elektronika i Telekomunikacja Wykład 2 Program wykładu VHDL przykłady VHDL jednostki projektowe VHDL pojęcia leksykalne
Programowanie w Turbo Pascal
Skróty: ALT + F9 Kompilacja CTRL + F9 Uruchomienie Struktura programu: Programowanie w Turbo Pascal Program nazwa; - nagłówek programu - blok deklaracji (tu znajduje się VAR lub CONST) - blok instrukcji
Zmienne, stałe i operatory
Zmienne, stałe i operatory Przemysław Gawroński D-10, p. 234 Wykład 2 4 marca 2019 (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 1 / 21 Outline 1 Zmienne 2 Stałe 3 Operatory (Wykład 2) Zmienne, stałe
Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Podstawy VBA cz. 2. Programowanie komputerowe
Wydział Zarządzania AGH Katedra Informatyki Stosowanej Podstawy VBA cz. 2 Programowanie 1 Program wykładu Typy danych Wyrażenia Operatory 2 VBA Visual Basic dla aplikacji (VBA) firmy Microsoft jest językiem
Część 3. Układy sekwencyjne. Układy sekwencyjne i układy iteracyjne - grafy stanów TCiM Wydział EAIiIB Katedra EiASPE 1
Część 3 Układy sekwencyjne Układy sekwencyjne i układy iteracyjne - grafy stanów 18.11.2017 TCiM Wydział EAIiIB Katedra EiASPE 1 Układ cyfrowy - przypomnienie Podstawowe informacje x 1 x 2 Układ cyfrowy
Inwerter logiczny. Ilustracja 1: Układ do symulacji inwertera (Inverter.sch)
DSCH2 to program do edycji i symulacji układów logicznych. DSCH2 jest wykorzystywany do sprawdzenia architektury układu logicznego przed rozpoczęciem projektowania fizycznego. DSCH2 zapewnia ergonomiczne
Python wprowadzenie. Warszawa, 24 marca PROGRAMOWANIE I SZKOLENIA
Python wprowadzenie Warszawa, 24 marca 2017 Python to język: nowoczesny łatwy w użyciu silny można pisać aplikacje Obiektowy klejący może być zintegrowany z innymi językami np. C, C++, Java działający
Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]
1. Typy. Java jest językiem programowania z silnym systemem kontroli typów. To oznacza, że każda zmienna, atrybut czy parametr ma zadeklarowany typ. Kompilator wylicza typy wszystkich wyrażeń w programie
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
Podstawy programowania w języku C i C++
Podstawy programowania w języku C i C++ Część czwarta Operatory i wyrażenia Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu,
Język programowania PASCAL
Język programowania PASCAL (wersja podstawowa - standard) Literatura: dowolny podręcznik do języka PASCAL (na laboratoriach Borland) Iglewski, Madey, Matwin PASCAL STANDARD, PASCAL 360 Marciniak TURBO
Podstawy programowania
Podstawy programowania Część ósma Tablice znaków i przetwarzanie napisów Autor Roman Simiński Kontakt siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu, lektura
Struktura pliku projektu Console Application
Struktura pliku projektu Console Application #include #include using namespace std; int main(int argc, char *argv[]) // to jest komentarz system("pause"); return EXIT_SUCCESS; Na początku
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
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
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
LEKCJA. TEMAT: Funktory logiczne.
TEMAT: Funktory logiczne. LEKCJA 1. Bramką logiczną (funktorem) nazywa się układ elektroniczny realizujący funkcje logiczne jednej lub wielu zmiennych. Sygnały wejściowe i wyjściowe bramki przyjmują wartość