KOMPILATOR JĘZYKA VHDL DO PROJEKTOWANIA UKŁADÓW LOGICZNYCH. Edytor: prof. dr hab. inż. Włodzimierz Bielecki

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

Download "KOMPILATOR JĘZYKA VHDL DO PROJEKTOWANIA UKŁADÓW LOGICZNYCH. Edytor: prof. dr hab. inż. Włodzimierz Bielecki"

Transkrypt

1 KOMPILATOR JĘZYKA VHDL DO PROJEKTOWANIA UKŁADÓW LOGICZNYCH Edytor: prof. dr hab. inż. Włodzimierz Bielecki

2 ii Spis treści ISBN Pracownia Poligraficzna WYDZIAŁU INFORMATYKI POLITECHNIKI SZCZECIŃSKIEJ ul. Żołnierska 49, Szczecin, tel. (091) Wydanie I. Nakład Ark. druk. 15,0 grudzień 2002 r. Copyright by Wydział Informatyki Politechniki Szczecińskiej Szczecin 2002

3 Przedmowa Książka ta jest przeznaczona zarówno dla projektantów, jak i dla studentów, doktorantów i naukowców zainteresowanych wiadomościami dotyczącymi metod projektowania kompilatorów języka VHDL. Opisuje ona organizację kompilatora języka VHDL do projektowania układów logicznych, który powstał w Katedrze Technik Programowania Wydziału Informatyki Politechniki Szczecińskiej. Kompilator generuje równania boolowskie ze źródeł napisanych w języku VHDL. Przedstawienie układów logicznych w postaci matematycznej za pomocą równań boolowskich generowanych przez kompilator ze źródeł VHDL umożliwia zastosowanie wszystkich znanych technik minimalizacji, weryfikacji, walidacji, symulacji i syntezy układów logicznych. Brak jest w tej chwili kompilatorów, które wprost generują równania boolowskie ze źródeł VHDL. Brak jest również publikacji opisujących techniki tworzenia kompilatorów języka VHDL do syntezy układów logicznych. Pod tym względem książka ta jest jedną z pierwszych publikacji opisujących techniki tworzenia takich kompilatorów. Większość materiału, zawartego w tej książce, stanowi nowe podejście do omawianego problemu. Nie wszystkie metody zaprezentowane w książce są optymalne ale jest to jeden z pierwszych kroków w pokonaniu wyzwania utworzenia teorii takich kompilatorów i udostępnienie dla wszystkich osób i ośrodków zainteresowanych tą teorią i narzędziami. Opisywany kompilator jest bardzo skomplikowanym programem. Jego złożoność jest porównywalna ze złożonością kompilatora języka C++. Tworzenie kompilatora wymagało czasochłonnych prac badawczych oraz implementacyjnych. Dla kilkuset rożnych problemów związanych z organizacją i implementacją kompilatora znaleźliśmy rozwiązania

4 ii i zaimplementowaliśmy je. Jednak nie jest możliwe od razu w ograniczonym czasie znaleźć wszystkie rozwiązania w sposób optymalny i zaimplementować wszystko bez usterek. Prace nad technikami tworzenia takich kompilatorów oraz testowaniem istniejącego kompilatora trwają dalej w naszym zespole. Książka zawiera również artykuły, które opisują organizację narzędzi do przetwarzania równań boolowskich, mianowicie tworzenia grafów zależności dla równań boolowskich oraz emulator systemu wieloprocesorowego do symulacji równań boolowskich. Narzędzia te umożliwiają symulacje równań boolowskich za pomocą komputerów równoległych. Celem tej książki jest udostępnienie uzyskanych wyników dotyczących organizacji kompilatora dla wszystkich zainteresowanych. Chciałbym serdecznie podziękować wielu osobom, które pomagały nam na wszystkich etapach tworzenia kompilatora. Bez ich pomocy nie moglibyśmy nawet rozpocząć tej pracy. Przede wszystkim jestem wdzięczny prezydentowi firmy ALDEC(USA) Stanley owi Haydukowi, który zainicjalizował prace nad kompilatorem i czuwał nad nimi. Chcielibyśmy wyrazić swoją wdzięczność Dziekanowi Wydziału Informatyki Politechniki Szczecińskiej, profesorowi Jerzemu Sołdkowi, który od początku prac nad kompilatorem popierając nasze działania i stwarzając znakomite warunki do pracy naukowo-badawczej na Wydziale Informatyki Politechniki Szczecińskiej. Dziękuję za owocną współpracę wszystkim kolegom z ośrodków firmy ALDEC w Polsce (Warszawie, Zielonej Górze, Gdańsku), którzy doprowadzili do powstania działającej wersji kompilatora. Dziękuję głównemu menedżerowi projektu I. Wojtkowskiemu za bezcenną pomoc podczas prac nad kompilatorem. Chciałbym wyrazić swoje głębokie uznanie oraz wyrazy wdzięczności wszystkim wykonawcom projektu, mianowicie Piotrowi Błaszyńskiemu, Robertowi Drążkowskiemu, Pawłowi Jaworskiemu, Marcinowi Lierszowi, Mirosławowi Mościckiemu, Maciejowi Poliwodzie, Marcinowi Radziewiczowi, Sławomirowi Wernikowskiemu i Tomaszowi Wiercińskiemu, którzy poświęcili swój cenny czas i włożyli wiele wysiłku w prace prowadzące do powstania kompilatora. Będę wdzięczny wszystkim za uwagi do tej książki, które proszę wysyłać pod adres bielecki@man.szczecin.pl. Kierownik Katedry Technik Programowania Wydziału Informatyki PS prof. dr hab. inż. Włodzimierz Bielecki Szczecin Marzec, 2002

5 iii Spis treści ORGANIZACJA KOMPILATORA JĘZYKA VHDL DO PROJEKTOWANIA UKŁADÓW LOGICZNYCH...1 ANALIZA LEKSYKALNA I SYNTAKTYCZNA JĘZYKA VHDL UŻYWANEGO DO GENERACJI RÓWNAŃ BOOLOWSKICH...13 ANALIZATOR SEMANTYCZNY KOMPILATORA JĘZYKA VHDL DO GENERACJI RÓWNAŃ BOOLOWSKICH...27 ZASADY NAZEWNICTWA I MODYFIKACJI NAZW W ANALIZATORZE SEMANTYCZNYM JĘZYKA VHDL...37 ALGORYTM I ZASADY DOTYCZĄCE IMPLEMENTACJI KONSTRUKCJI BLOKU W KOMPILATORZE JĘZYKA VHDL...47 FUNKCJE REZOLUCJI ZASADA DZIAŁANIA I SPOSÓB IMPLEMENTACJI W KOMPILATORZE JĘZYKA VHDL...55 INSTRUKCJE WSPÓŁBIEŻNEGO PRZYPASANIA SYGNAŁÓW DO SYNTEZY CYFROWYCH UKŁADÓW LOGICZNYCH...61 ALGORYTM GENEROWANIA RÓWNAŃ BOOLOWSKICH DLA INSTRUKCJI PRZYPISANIA ZAWIERAJĄCEJ ODWOŁANIA DO TABLIC JĘZYKA VHDL...67

6 iv ALGORYTMY GENERACJI RÓWNAŃ BOOLOWSKICH OPERACJI MNOŻENIA CAŁKOWITYCH LICZB BINARNYCH...75 ALGORYTM GENERACJI RÓWNAŃ BOOLOWSKICH OPERACJI DZIELENIA DLA SYNTEZY UKŁADÓW LOGICZNYCH...85 PRZEKŁAD INSTRUKCJI IF ORAZ CASE JĘZYKA VHDL DO POSTACI RÓWNAŃ BOOLOWSKICH...95 GENERACJA RÓWNAŃ BOOLOWSKICH DLA INSTRUKCJI FOR JĘZYKA VHDL GENEROWANIE RÓWNAŃ BOOLOWSKICH DLA FUNKCJI I PROCEDUR JĘZYKA VHDL MECHANIZM MAPOWANIA IMPLEMENTACJA BIBLIOTEK STANDARDOWYCH TŁUMACZENIE INSTRUKCJI GENERATE GENEROWANIE RÓWNAŃ BOOLOWSKICH DLA PRZERZUTNIKÓW W KOMPILATORZE JĘZYKA VHDL DO SYMULACJI I SYNTEZY UKŁADÓW LOGICZNYCH GENERACJA MASZYNY STANÓW DLA PROCESU Z WIELOMA INSTRUKCJAMI OCZEKIWANIA WAIT POSTPROCESOR KOMPILATORA JĘZYKA VHDL WERSJE IMPLEMENTACYJNE POSTPROCESORA KOMPILATORA JĘZYKA VHDL A CREATION OF BOOLEAN EQUATION GRAPH FOR AUTOMATIC PARALLELIZING MULTIPROCESSOR SYSTEM EMULATOR FOR DIGITAL DEVICES MODELING...223

7 Organizacja kompilatora języka VHDL do projektowania układów logicznych Włodzimierz Bielecki Katedra Technik Programowania, Wydział Informatyki, Politechnika Szczecińska ul. Żołnierska 49, Szczecin Abstrakt: Artykuł zawiera opis organizacji i możliwości kompilatora języka VHDL do generowania równań boolowskich, które opisują logikę kombinacyjną i sekwencyjną układów logicznych. Kompilator używa ograniczonej gramatyki języka VHDL, umożliwiającej syntezę układów logicznych. W skrócie opisano podstawowe części kompilatora: analizatorów leksykalnego, syntaktycznego, semantycznego, generatora równań boolowskich oraz postprocesora. Przytoczono przykład generacji równań boolowskich za pomocą kompilatora. Przedstawiono wyniki testowania i stan kompilatora. Słowa kluczowe: Język VHDL, synteza układów logicznych, równania boolowskie 1. WSTĘP Opracowanie teorii tworzenia kompilatorów generujących równania boolowskie z programu źródłowego w języku VHDL (Very High Speed Integrated Circuit (V) Hardware Description Language(HDL)) jest aktualnym wyzwaniem. VHDL jest jednym z nielicznych języków HDL, który jest rozpoznawany jako standard IEEE [1,2] oraz Ministerstwa Obrony Stanów Zjednoczonych. VHDL można stosować do symulacji i syntezy układów logicznych. Jeżeli chodzi o syntezę, to na składnię (zbiór produkcji wykorzystywanych do tworzenia zdań programu źródłowego) są nakładane ograniczenia, to znaczy, że nie ze wszystkich możliwości i konstrukcji VHDL można korzystać w źródłach przeznaczonych do syntezy układów logicznych. W tej

8 2 chwili jeszcze nie ma standardu dotyczącego wersji VHDL, stosowanej do syntezy. Różni producenci sami określają ograniczenia nakładane na gramatykę VHDL, spełnienie których umożliwia poprawną syntezę. Istniejące kompilatory wspierające język VHDL produkują netlisty lub inne reprezentacje układów logicznych. Brak jest kompilatorów, które wprost generują równania boolowskie. Reprezentacja układów logicznych w postaci równań boolowskich umożliwia: 1) minimalizację równań; 2) symulację układów logicznych reprezentowanych równaniami za pomocą komputerów zwykłych i równoległych; 3) weryfikację projektowanych układów; 4) odwzorowanie na układy FPGA. Ponieważ większość istniejących kompilatorów języka VHDL są to narzędzia komercyjne, brak jest publikacji opisujących metody i algorytmy tworzenia takich kompilatorów. Istnieje duże zapotrzebowanie na badania związane z organizacją takich kompilatorów i utworzenie teorii takich kompilatorów dostępnej dla środowiska naukowego i przemysłu softwarowego. Od kilku lat w Katedrze Technik Programowania Wydziału Informatyki PS są wykonywane badania w kierunku tworzenia kompilatora kompatybilnego ze specyfikacją dobrze znanego kompilatora firmy Synopsys Compiler II / FPGA Express[3] do syntezy układów logicznych. Ograniczeniem tworzonego kompilatora jest to, że wspiera on tylko następujące pakiety standardowe: std_logic_1164, std_logic_arith, std_logic_signed i std_logic_unsigned. Główne zadanie kompilatora polega na generowaniu równań boolowskich ze źródeł napisanych w języku VHDL spełniających wymagania specyfikacji. Kompilator zawiera analizatory: leksykalny, syntaktyczny i semantyczny, generator kodu, postprocesor oraz program główny łączący razem wszystkie programy kompilatora. Praca nad kompilatorem wymagała dużego wysiłku związanego z opracowaniem zasad, metod, algorytmów kompilacji, w tym algorytmów formalnych generacji równań boolowskich dla wszystkich konstrukcji VHDL: sekwencyjnych i współbieżnych. Do testowania poprawności wygenerowanych równań stworzono symulator równań boolowskich, który na wejściu otrzymuje równania boolowskie oraz wartości sygnałów wejściowych i wykonuje symulację oblicza wartości wszystkich identyfikatorów występujących po lewej stronie równań. Równania mogą być nieuporządkowane wygenerowane w dowolnej kolejności. Symulator sam wyszukuje prawidłową kolejność obliczania równań. Wyniki symulacji można porównać z wynikami, które daje symulator ACTIVE VHDL. Zgodność obu wyników wskazuje na to, że wygenerowane przez kompilator równania są prawidłowe. Kolejne rozdziały opisują szczegóły organizacji kompilatora.

9 3 2. ANALIZATORY LEKSYKALNY, SYNTAKTYCZNY I SEMANTYCZNY Wejściem analizatora leksykalnego jest źródło w języku VHDL, wyjściem jest plik zawierający leksemy (słowa kluczowe, operatory, identyfikatory, stałe itd.) wraz z liczbami przechowującymi numery wierszy źródła tych leksemów. Analizator leksykalny czyta zdania programu źródłowego w języku VHDL, rozpoznaje wszystkie konstrukcje VHDL i tworzy wewnętrzną postać programu jako ciąg leksemów. Analizator syntaktyczny bada poprawność zdań programu pod względem składni bada czy zdania programu należą do zdań generowanych przez gramatykę VHDL, z uwzględnieniem ograniczeń możliwości syntezy układów logicznych. Nie zmienia on postaci wewnętrznej programu, informuje tylko o poprawności/niepoprawności źródła. Analizatory leksykalny i syntaktyczny zostały zaimplementowane jako dwa niezależne programy. Najpierw analizator leksykalny generuje plik z leksemami, dalej analizator składniowy sprawdza poprawność zdań zawartych w tym pliku. Analizatory leksykalny i składniowy zostały zaimplementowane za pomocą standardowych narzędzi systemu operacyjnego UNIX: lex i jacc odpowiednio; odpowiednikami tych narzędzi w systemie operacyjnym WINDOWS są flex i bison. Analizator semantyczny bada poprawność semantyczną zdań programu źródłowego i dodaje dodatkową informację (wartości semantyczne) do poszczególnych leksemów typy danych, nazwy identyfikatorów, wymiary tablic itd. Wartości te są przechowywane za pomocą drzewa katalogów w plikach. Zadaniem analizatora jest również wyszukiwanie wartości semantycznych na żądanie generatora kodu. Wejściem do analizatora semantycznego jest plik z leksemami tworzącymi zdania programu źródłowego. Analizator zakłada, że zdania te już zostały sprawdzone przez analizator syntaktyczny. Analizator semantyczny został zaimplementowany jako niezależny program w języku C GENERATOR RÓWNAŃ BOOLOWSKICH Generator równań boolowskich czyta leksemy produkowane przez analizator leksykalny, rozpoznaje instrukcje języka VHDL i wywołuje odpowiednie funkcje generujące równania boolowskie. Każda taka funkcja rozpoznaje leksemy zawarte w zdaniu reprezentującym instrukcję: słowa

10 4 kluczowe, sygnały, zmienne, operatory itd. Dalej generator wywołuje funkcję analizatora semantycznego, która wyszukuje i zwraca wartości semantyczne poszczególnych leksemów. Na podstawie tych wartości i operacji instrukcji, funkcja ta produkuje równania boolowskie. Poniżej przytoczono wykaz niektórych z tych funkcji do generowania równań: a) wyrażeń arytmetycznych i logicznych; b) następujących instrukcji sekwencyjnych(zawartych wewnątrz procesu): assignment statements and targets; variable assignment statements; signal assignment statements; if statements; case statements; loop statements; next statements; exit statements; subprograms; return statement; wait statements; null statements; c) następujących instrukcji współbieżnych: process statements; block statements; concurrent procedure calls; concurrent signal assignments; component instantiation statements; direct instantiation; generate statements; Dla większości wyrażeń i instrukcji języka VHDL po raz pierwszy zostały opracowane metody i algorytmy umożliwiające generowanie równań, ponieważ brak było publikacji rozpatrujących takie zagadnienie. To była najtrudniejsza i najbardziej czasochłonna część pracy nad kompilatorem. Najbardziej skomplikowana cześć generatora kodu to zbiór funkcji do generowania równań z instrukcji procesu oraz instrukcji generate. Spośród instrukcji procesu najtrudniejsze do implementacji są konstrukcje zawierające instrukcje wait oraz instrukcje for. Instrukcja wait wymaga wygenerowania równań maszyny stanów. Równania te reprezentują licznik z wejściami T, R, D i CLK oraz dekoder, którego każde wyjście prezentuje jakiś stan oraz logikę kombinacyjną, która zarządza przejściami w maszynie stanów za pomocą wejść T, R, D. Przed wygenerowaniem równań generator kodu powinien znaleźć stan dla każdej instrukcji przypisania znajdującej się wewnątrz procesu. Dalej generator kodu produkuje przerzutniki dla każdej instrukcji przypisania. Równanie dla wejścia zegara C przerzutnika ma postać:

11 C = (CLK) AND (State i), gdzie CLK jest to sygnał zegara występujący w instrukcji wait; State i jest to stan instrukcji przypisania; AND jest to operacja logiczna AND. Instrukcja for jest implementowana za pomocą dwóch kroków. Najpierw pętla for zostaje przekształcona w kod liniowy. Dalej dla każdej instrukcji tego kodu są generowane równania. Implementacja instrukcji while jest związana z koniecznością generowania równań przerzutników dla wszystkich instrukcji przypisania, do których zapis danych jest sterowany za pomocą wygenerowanej maszyny stanów (równań tej maszyny) oraz równań logiki, która zarządza przejściami maszyny stanów. Generator kodu generuje równania dla następujących możliwości i mechanizmów języka VHDL: generiki; hierarchia projektu; wykorzystanie pakietów i bibliotek; wykorzystanie funkcji rezolucji; przeciążenie subprogramów i operatorów; reguły widoczności obiektów języka VHDL. Wszystkie funkcje i procedury pakietów standardowych (std_logic_1164, std_logic_arith, std_logic_signed, std_logic_unsigned) są zaimplementowane jako wbudowane w kompilator czyli są wewnętrznymi funkcjami kompilatora. Celem takiej implementacji było zredukowanie do minimum czasu generowania równań dla tych funkcji i procedur ponieważ projekty rzeczywisty bardzo często z nich korzystają. Generator kodu jest najbardziej złożoną częścią kompilatora. Jego źródła w języku C++ to ponad 2/3 wszystkich źródeł kompilatora POSTPROCESOR Postprocesor jest niezależną częścią kompilatora. Główne zadania postprocesora są następujące: i) korygowanie równań boolowskich dla logiki sekwencyjnej; ii) korygowanie równań dla logiki synchronicznieasynchronicznej; iii) połączenie równań o takich samych lewych stronach reprezentowanych nazwami sygnałów typu resolved; iv) minimalizacja równań boolowskich; v) eliminacja zmiennych roboczych w uzasadnionych przypadkach; vi) wyszukiwanie dwóch lub więcej par sygnałów o takiej samej nazwie po lewej stronie równań i nie zadeklarowanych jako resolved; sygnalizacja błędów w takich przypadkach. Wejściem dla postprocesora są równania boolowskie oraz pliki specjalne generowane przez analizator semantyczny lub generator kodu. Postprocesor

12 6 produkuje końcową postać równań. Każda nazwa sygnału lub zmiennej, która reprezentuje wyjście przerzutnika lub zatrzasku powinna mieć parametr «t», na przykład var(t,...). Wszystkie nazwy sygnałów i zmiennych sekwencyjnych są generowane przez generator kodu i przechowywane w specjalnym pliku. Zadaniem postprocesora jest odczyt wszystkich nazw sygnałów i zmiennych sekwencyjnych z tego pliku i korygowanie wszystkich równań boolowskich, które je zawierają przez dodanie symbolu «t» jako parametru tych nazw. Istnieje potrzeba korygowania równań boolowskich opisujących wejścia synchroniczne przerzutników, na przykład wejście D, przez dodanie parametru «t-1» do odpowiednich nazw wtedy, kiedy są one połączone z wyjściami innych przerzutników. Generator kodu generuje specjalne pragmy (dyrektywy) przed równaniami przerzutników z wejściami synchronicznymi. Postprocesor rozpoznaje takie pragmy i dodaje parametr «t-1» do nazw w równaniach boolowskich. Ponieważ wyjścia przerzutników mogą być połączone z wejściami synchronicznymi innych przerzutników za pomocą logiki kombinacyjnej, istnieje potrzeba znalezienia i skorygowania równań boolowskich opisujących taką logikę kombinacyjną. Zadanie to wykonuje postprocesor. Wszystkie sygnały typu resolved[1] są rozpoznawane przez analizator semantyczny i zapisywane do specjalnego pliku. Zadaniem postprocesora jest odczyt wszystkich takich sygnałów, wyszukiwanie sygnałów o takich nazwach po lewych stronach równań. Wszystkie równania z identycznymi lewymi stronami są łączone wtedy w jedno równanie zgodnie z semantyką zadeklarowanej funkcji rezolucji. Dozwolone funkcje rezolucji to funkcje «OR», «AND», i «THREE STATE» [1]. Postprocesor dokonuje minimalizacji równań boolowskich. Konwertuje on pewne człony równań na prostszą postać. Niektóre przykłady minimalizacji dokonywane przez kompilator są następujące: 0 &... = 0; 0... =... ; 1 &... =...; 1...= 1; a & a =a; a a =a;!!a = a; gdzie &,,! reprezentują operacje logiczne odpowiednio AND, OR i NOT. W uzasadnionych przypadkach należy wyeliminować zmienne robocze z równań w celu zmniejszenia rozmiaru kodu. Postprocesor korzysta z algorytmów heurystycznych, żeby podjąć decyzję, czy warto eliminować zmienne robocze. Wyeliminowanie zmiennych roboczych ma sens wtedy, kiedy zmniejsza to rozmiar równań. Nie zawsze wyeliminowanie zmiennych roboczych powoduje taki efekt. Wtedy postprocesor rezygnuje z eliminacji. Postprocesor wyszukuje równania o takich samych lewych stronach. Jeśli ma to miejsce i sygnaly/zmienne po lewej stronie nie są zadeklarowane jako resolved, to postprocesor sygnalizuje błąd w źródle VHDL.

13 7 5. PRZYKŁAD KOMPILACJI Dla następującego źródła VHDL library IEEE; use IEEE.std_logic_1164.all; entity test is port ( a,b: in STD_LOGIC_vector(0 to 1); s : in STD_LOGIC; z,d: out STD_LOGIC_vector(0 to 1) ); end test; architecture test3 of test is begin process (a, b,s) Begin if s ='1' then z<=a; d(0)<=a(0); else d(1)<=a(1); z<=b; end if; End process; end test3; kompilator generuje równania boolowskie jak niżej --process equations begin, line: 14 z(0)=(((s))&((a(0)))) ((!s)&((b(0)))); z(1)=(((s))&((a(1)))) ((!s)&((b(1)))); C_tmp0=(s); D_tmp0(0)=((s))&((a(0))); -- latch(c_high,d) S_tmp0(0)=D_tmp0(0)&C_tmp0; R_tmp0(0)=C_tmp0&!D_tmp0(0); d(t,0)=s_tmp0(0) (!R_tmp0(0)&d(t-1,0)); C_tmp1=!s; D_tmp1(1)=(!s)&((a(1))); -- latch(c_high,d) S_tmp1(1)=D_tmp1(1)&C_tmp1;

14 8 R_tmp1(1)=C_tmp1&!D_tmp1(1); d(t,1)=s_tmp1(1) (!R_tmp1(1)&d(t-1,1)); --state.out file begin --state.out file end --process equations end, line: 14 Dla portu z kompilator generuje logikę kombinacyjną, natomiast dla portu d - logikę sekwencyjną. Równania boolowskie dla każdego zatrzasku poprzedza komentarz w postaci -- latch(c_high,d). Parametr t wewnątrz każdego portu d określa sygnał sekwencyjny (wyjście zatrzasku). Tylko 3 operacje logiczne są możliwe w równaniach boolowskich: NOT (!), AND (&), OR ( ). Każde równanie boolowskie ma na końcu średnik. Są dozwolone komentarze. Dowolny tekst poprzedzony -- jest komentarzem. Nazwy sygnałów i zmiennych w równaniach boolowskich są zgodne z regułami tworzenia nazw w języku VHDL. Nazwy rozszerzone[1] są również dozwolone. Czyli każda nazwa dopuszczalna w źródłach języka VHDL jest również dopuszczalna w równaniach boolowskich. Trzy dodatkowe narzędzia zostały opracowane do konwertowania równań boolowskich na notację polską, formaty BLIF oraz SLIF. Są to najszerzej stosowane formaty do reprezentacji równań boolowskich. Użytkownik ma możliwość wygenerować równania w dowolnym z tych formatów. 6. IMPLEMENTACJA I TESTOWANIE KOMPILATORA Kompilator został zaimplementowany jako 6 niezależnych narzędzi. Poniższa tablica (tab. 1) reprezentuje wszystkie te narzędzia, ich rozmiary oraz zastosowane kompilatory do kompilacji źródeł poszczególnych narzędzi: Narzędzie Rozmiar źródła Narzędzie kompilacji Vhmake 16 KB Microsoft Visual C Vhdllex 108 KB (+ flex/bison output) Vhdlpars 139 KB (+ flex/bison output) Anseman 346 KB Microsoft Visual C Generator 1990 KB Microsoft Visual C Postprocessor 163 KB Microsoft Visual C Suma 2762 KB Tabela 1.

15 gdzie vhmake, vhdllex, vhdlpars, ansemam, generator, i postprocessor są to odpowiednio program główny, leksykalny, syntaktyczny i semantyczny analizatory, generator równań boolowskich oraz postprocesor. Kilka narzędzi zostało utworzonych do testowania i weryfikacji kompilatora: i) symulator równań boolowskich generowanych przez kompilator; ii) narzędzie do automatycznego testowania funkcjonalności kompilatora; umożliwia ono w sposób automatyczny odczytywanie i wykonywanie pojedynczych testów; w przypadku, kiedy kompilator nie radzi sobie z tymi testami, narzędzie wypisuje nazwę testów i rodzaj błędu (jaka cześć kompilatora powoduje ten błąd); iii) narzędzie do automatycznego porównywania wyników symulacji równań boolowskich (wyjście narzędzia i)) z wynikami symulacji źródła w języku VHDL (wyjście symulatora ACTIVE firmy ALDEC ). Kompilator został przetestowany za pomocą kilku tysięcy pojedynczych testów oraz około 10 projektach przemysłowych. Rozmiary generowanych plików z równaniami wahały się od 0.05 KB do 40 MB. Czas kompilacji zależy od źródeł w języku VHDL. Źródła które nie zawierają instrukcji for, powodującej wiele iteracji oraz nie zawierające wywołania dużej liczby funkcji z pakietów standardowych (standard IEEE packages) kompilują się dość szybko (od ułamka sekundy do kilku minut). Źródła zawierające pętle for z instrukcjami next i exit, kompilator konwertuje na kod liniowy, który zawiera instrukcje warunkowe if. Kod ten może być dość długi i może wymagać dużo czasu kompilacji od kilku minut do kilku godzin. Istnieje potrzeba optymalizacji funkcji odpowiedzialnych za przekład takich instrukcji MOŻLIWOŚCI ZASTOSOWANIA KOMPILATORA Tworzony kompilator może być wykorzystany do rozwiązywania następujących zagadnień. 1. Konwertowania generowanych równań na formaty BLIF, SLIF i wykorzystanie istniejących narzędzi (w tym i akademickich) obsługujących te formaty do minimalizacji, symulacji, weryfikacji i syntezy układów logicznych. 2. Weryfikacji układów logicznych za pomocą tworzenia BDD z generowanych przez kompilator równań. 3. Weryfikacji układów logicznych (kombinacyjnych i sekwencyjnych) za pomocą stworzonego symulatora równań boolowskich. 4. Weryfikacji układów logicznych poprzez symulację równań na komputerach równoległych w celu zmniejszenia czasu symulacji. W tej

16 10 chwili został opracowany prototyp symulatora dla PC z wieloma procesorami Pentium. Dla dwóch procesorów Pentium uzyskane przyspieszenie wynosi od 1.7 do Weryfikacji kombinacyjnych układów logicznych za pomocą symulacji równań w systemach rozproszonych (sieciach komputerowych). Cały zestaw równań może być symulowany niezależnie na rożnych komputerach dla różnych wartości sygnałów wejściowych. Ponieważ nie jest tu wymagana wymiana danych i synchronizacji między komputerami przyspieszenie będzie bliskie do liczby komputerów (w przypadku środowiska homogenicznego). 6. Weryfikacji układów logicznych przez porównanie wyników symulacji za pomocą symulatorów źródeł VHDL i symulatora równań boolowskich. 7. Znalezienia opóźnień sygnałów wyjściowych za pomocą równań boolowskich. 8. Oszacowania złożoności projektowanych układów (ilość bramek) na podstawie wygenerowanych równań. 9. Konwersji równań do formatów, z którymi pracują istniejące narzędzia syntezy (odwzorowanie na FPGA) co umożliwi syntezę układów logicznych na podstawie wygenerowanych równań. Istnieje możliwość modyfikacji formatu generowanych równań i dopasowania do niego symulatorów równań w taki sposób aby wprowadzić w składnie generowanych równań instrukcje if, for oraz możliwość korzystania z funkcji i procedur. Taka modyfikacja umożliwi: znaczne zmniejszenie rozmiaru równań (w niektórych przypadkach - mapowanie, instrukcje if, for, wywołanie procedur i funkcji - nawet 1000 razy); znaczną redukcję czasu generowania równań (w zaznaczonych wyżej przypadkach do 100 razy); znaczne zmniejszenie wykorzystanej podczas kompilacji pamięci ( razy); Moduły (części) kompilatora mogą być zastosowane dla szybkiego tworzenia następujących narzędzi. 1. Graficznej reprezentacji układów logicznych kodowanych w VHDL. Utworzenie takiego narzędzia wymaga wyboru jakiegoś edytora graficznego i uzupełnienie generatora równań możliwością generowania reprezentacji graficznej układów w formacie zgodnym z tym, z którym pracuje edytor. Czyli wymaga to uzupełnienia tylko jednej części kompilatora. 2. Konwerterów C2bool, C++2bool, Verilog2bool, C2VHDL, C++2VHDL. Istnieje możliwość konwertowania źródeł C, C++, Verilog wprost na leksemy reprezentujące instrukcje VHDL. Takie podejście umożliwi:

17 przekład z języka wyższego na język wyższy, co jest zadaniem znacznie prostszym niż przekład na równania boolowskie; zastosowanie w 100% (bez żadnych zmian) już istniejących analizatorów syntaktycznego, semantycznego, generatora równań i postprocesora VHDL2bool; wykorzystanie ograniczonego zbioru instrukcji i możliwości VHDL w celu przyspieszenia testowania i powstania przemysłowych wersji nowych kompilatorów; to może być tylko około 20%-30% procent możliwości VHDL ale takich, które umożliwia poprawny i efektywny przekład źródeł C, C++, VERILOG na równania boolowskie. zastosowanie już istniejących narzędzi weryfikacji kompilatora VHDL2bool (symulator równań). Takie podejście do tworzenia nowych kompilatorów wymaga głównie prac nad algorytmizacją przekładu źródeł C, C++, VERILOG na leksemy VHDL. Implementacja będzie znacznie mniej czasochłonna niż tworzenie kompilatora VHDL2bool. 3. Konwertera VHDL2VERILOG. Dla tworzenia takiego kompilatora można w 100% zastosować z VHDL2bool analizatory: leksykalny, syntaktyczny i semantyczny. Wystarczy tylko dodać do nich nowy generator kodu. 4. Konwertera VHDL2C_zwykly/rownolegly. Taki konwerter można zastosować do bardzo szybkiej symulacji syntezowalnych źródeł VHDL za pomocą przekładu na program w C ( nie symulator VHDL, lecz program). Kompilacja takiego programu i jego wykonywanie dla różnych zestawów wartości sygnałów wejściowych umożliwi znaczną redukcję czasu symulacji ( razy) w porównaniu ze zwykłymi symulatorami zdarzeniowymi źródeł VHDL. Program w języku C może być sekwencyjny lub równoległy. Ostatni umożliwi wykonywanie symulacji na komputerach wieloprocesorowych. Przyspieszenie symulacji dla logiki kombinacyjnej będzie rosło w sposób liniowy w zależności od liczby procesorów, ponieważ w tym przypadku nie jest wymagany podział równań miedzy procesory. Trzeba zwrócić uwagę na to, że nawet za pomocą sekwencyjnego programu C można uzyskać znacznie mniejszy czas symulacji, ponieważ nie jest tu tworzony symulator z jego dużymi nakładami czasowymi lecz tylko pojedynczy wykonywalny program dla każdego syntezowalnego źródła VHDL. Dla tworzenia takiego konwertora można zastosować z VHDL2bool analizatory leksykalny, syntaktyczny i semantyczny. 11

18 12 8. ZAKOŃCZENIE Postać matematyczna równań boolowskich generowanych przez kompilator ze źródeł VHDL umożliwia zastosowanie wszystkich znanych technik minimalizacji, weryfikacji, walidacji, symulacji i syntezy układów logicznych. Konwertowanie równań boolowskich generowanych przez kompilator na inne formaty takie jak notacja polska, BLIF, SLIF umożliwia zastosowanie wszystkich istniejących narzędzi i oprogramowania do pracy z tymi formatami. Istnieje potrzeba dalszych prac i badań nad kompilatorem w następujących kierunkach: i) redukcja czasu generowania równań dla pętli for; ii) zmniejszenie czasu wyszukiwania wartości semantycznych dla dużych źródeł. Pakiety standardowe inne niż std_logic_1164, std_logic_arith, std_logic_signed, i std_logic_unsigned powinny być zaimplementowane i dodane do kompilatora w celu rozszerzenia zakresu jego zastosowania. Praca nad testowaniem, weryfikacją i walidacją kompilatora powinna być przedłużona w celu wykrycia usterek w źródłach kompilatora aby doprowadzić kompilator do wersji przemysłowej. Wszystkie te pracy są w stanie wykonywania. LITERATURA [1] P.J. Ashenden, The Designer's Guide to VHDL, Morgan Kaufmann Publishing, San Francisco, [2] IEEE standard VHDL Language Reference Manual. IEEE std The Institute of Electrical and Electronic Engineers, Inc., 1994 [3] FPGA Compiler II / FPGA Express VHDL Reference Manual, Version

19 Analiza leksykalna i syntaktyczna języka VHDL używanego do generacji równań boolowskich Robert Drążkowski Katedra Technik Programowania, Wydział Informatyki, Politechnika Szczecińska ul. Żołnierska 49, Szczecin Abstrakt: Słowa kluczowe: Niniejszy artykuł opisuje analizatory: leksykalny oraz syntaktyczny, będące częścią składową kompilatora języka VHDL, którego zadaniem będzie wygenerowanie równań boolowskich, będących podstawą syntezy układów cyfrowych. W artykule omówiono gramatykę tej wersji języka VHDL. Na podstawie tej gramatyki w programie źródłowym wyszukiwane są ciągi znaków, będące poprawnymi symbolami leksykalnymi języka VHDL (tzn. słowa kluczowe, identyfikatory zmiennych, itp.). Takie ciągi znaków zamieniane są następnie na odpowiadające im unikalne kody (liczby całkowite). Po tym przekształceniu plik źródłowy reprezentowany jest przez ciąg kodów, który sprawdzany jest pod względem poprawności syntaktycznej, czyli sprawdzane jest, czy następstwo kodów jest zgodne z regułami podanej gramatyki. Uzyskany ciąg znaków jest podstawą do tworzenia przekładu, czyli generowania równań boolowskich dla wybranych konstrukcji języka VHDL. składnia VHDL, kompilator VHDL, synteza układów cyfrowych 1. WSTĘP Język VHDL jest popularnym standardem opisu układów cyfrowych. Pozwala na definiowanie układów scalonych (np. procesorów) i modelowanie ich zachowania. Jego bardzo rozbudowane konstrukcje pozwalają w prosty sposób opisywać bardzo złożone funkcje układów cyfrowych. Jednak próby syntezy układów cyfrowych na podstawie źródeł w języku VHDL trafiają na duże przeszkody, ponieważ bardzo

20 14 wyrafinowane konstrukcje językowe wymagają bardzo złożonego opisu przy pomocy bramek logicznych. W celu umożliwienia syntezy układów logicznych należy wyodrębnić pewien podzbiór konstrukcji języka VHDL, wystarczający do opisu układów, które znajdują się w obszarze zainteresowań przemysłu elektronicznego, nie powodujący jednak nadmiernej rozbudowy logiki tych układów. Istotne jest także zachowanie zgodności z przyzwyczajeniami projektantów, posługujących się językiem VHDL. Na Wydziale Informatyki Politechniki Szczecińskiej realizowany jest kompilator języka VHDL generujący na podstawie źródła VHDL zbiór równań boolowskich (tzn. opierających się na algebrze Boole a w formie arytmetyki bitowej, z wykorzystaniem bitowych operacji negacji, koniunkcji i alternatywy). Rezultatem kompilacji nie jest więc program składający się z poleceń pewnego procesora, przeznaczony do uruchamiania na komputerze wyposażonym w taki procesor. Rezultatem kompilacji jest zbiór równań boolowskich definiujących działanie pewnego układu scalonego. W prezentowanym kompilatorze zostały nałożone pewne ograniczenia na język VHDL, umożliwiające syntezę układów logicznych, polegające na tym, że zostały wyróżnione trzy klasy konstrukcji językowych: konstrukcje wspierane zarówno przez standard VHDL jak i przez realizowany kompilator; konstrukcje ignorowane (ignored), czyli poprawne w rozumieniu standardu VHDL, w przypadku których kompilator nie zgłasza błędu a jedynie je ignoruje; konstrukcje niewspierane (unsupported), czyli poprawne w rozumieniu standardu VHDL, w przypadku których kompilator zgłasza błąd kompilacji. Przyczyny zaliczenia poszczególnych konstrukcji do każdej z klas nie są istotne z punktu widzenia kompilatora. Warto dodać, że w miarę rozwoju kompilatora jako produktu, wiele konstrukcji językowych zmieniało swoją przynależność do wymienionych klas. W referacie omówione są dwa analizatory wchodzące w skład kompilatora: analizator leksykalny, rozpoznający symbole leksykalne oraz analizator syntaktyczny, sprawdzający poprawność składniową, czyli zgodność kolejności występowania symboli leksykalnych w programie z gramatyką. Kolejnym ważnym elementem kompilatora jest analizator semantyczny: mając na wejściu kod programu poprawny pod względem składniowym, ustalane są typy (i inne właściwości semantyczne) wszystkich identyfikatorów, po czym sprawdzane jest, czy operacje wpisane w kod źródłowy mogą być wykonane na identyfikatorach o takich właściwościach. Analiza semantyczna wykrywać też powinna wszystkie te ograniczenia prezentowanej wersji języka VHDL, których nie udało się odnaleźć

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

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

Metody Kompilacji Wykład 1 Wstęp

Metody Kompilacji Wykład 1 Wstęp Metody Kompilacji Wykład 1 Wstęp Literatura: Alfred V. Aho, Ravi Sethi, Jeffrey D. Ullman: Compilers: Princiles, Techniques, and Tools. Addison-Wesley 1986, ISBN 0-201-10088-6 Literatura: Alfred V. Aho,

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 programowania zasady ich tworzenia

Języki programowania zasady ich tworzenia Strona 1 z 18 Języki programowania zasady ich tworzenia Definicja 5 Językami formalnymi nazywamy każdy system, w którym stosując dobrze określone reguły należące do ustalonego zbioru, możemy uzyskać wszystkie

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

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

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

Wstęp do programowania

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

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

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

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

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

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

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

Bardziej szczegółowo

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1 Podstawy programowania. Wykład Funkcje Krzysztof Banaś Podstawy programowania 1 Programowanie proceduralne Pojęcie procedury (funkcji) programowanie proceduralne realizacja określonego zadania specyfikacja

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

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

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

1 Podstawy c++ w pigułce.

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,

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

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

Instrukcja do ćwiczenia P4 Analiza semantyczna i generowanie kodu Język: Ada

Instrukcja do ćwiczenia P4 Analiza semantyczna i generowanie kodu Język: Ada Instrukcja do ćwiczenia P4 Analiza semantyczna i generowanie kodu Język: Ada Spis treści 1 Wprowadzenie 1 2 Dane i kod 2 3 Wyrażenia 2 3.1 Operacje arytmetyczne i logiczne.................. 2 3.2 Podstawowe

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

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

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

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

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

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki Informatyka I Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2019 1 Plan wykładu

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

Podstawy programowania skrót z wykładów:

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

Bardziej szczegółowo

Analiza leksykalna 1. Języki formalne i automaty. Dr inż. Janusz Majewski Katedra Informatyki

Analiza leksykalna 1. Języki formalne i automaty. Dr inż. Janusz Majewski Katedra Informatyki Analiza leksykalna 1 Języki formalne i automaty Dr inż. Janusz Majewski Katedra Informatyki Zadanie analizy leksykalnej Kod źródłowy (ciąg znaków) Analizator leksykalny SKANER Ciąg symboli leksykalnych

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

Algorytm. a programowanie -

Algorytm. a programowanie - Algorytm a programowanie - Program komputerowy: Program komputerowy można rozumieć jako: kod źródłowy - program komputerowy zapisany w pewnym języku programowania, zestaw poszczególnych instrukcji, plik

Bardziej szczegółowo

Układy VLSI Bramki 1.0

Układy VLSI Bramki 1.0 Spis treści: 1. Wstęp... 2 2. Opis edytora schematów... 2 2.1 Dodawanie bramek do schematu:... 3 2.2 Łączenie bramek... 3 2.3 Usuwanie bramek... 3 2.4 Usuwanie pojedynczych połączeń... 4 2.5 Dodawanie

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

Programowanie w języku C++ Grażyna Koba

Programowanie w języku C++ Grażyna Koba Programowanie w języku C++ Grażyna Koba Kilka definicji: Program komputerowy to ciąg instrukcji języka programowania, realizujący dany algorytm. Język programowania to zbiór określonych instrukcji i zasad

Bardziej szczegółowo

L E X. Generator analizatorów leksykalnych

L E X. Generator analizatorów leksykalnych L E X Generator analizatorów leksykalnych GENERATOR L E X Zadaniem generatora LEX jest wygenerowanie kodu źródłowego analizatora leksykalnego (domyślnie) w języku C; Kod źródłowy generowany jest przez

Bardziej szczegółowo

Algorytmika i Programowanie VBA 1 - podstawy

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

Bardziej szczegółowo

Język programowania PASCAL

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

Bardziej szczegółowo

KONSTRUKCJA KOMPILATORÓW

KONSTRUKCJA KOMPILATORÓW KONSTRUKCJA KOMPILATORÓW WYKŁAD Robert Plebaniak PLATFORMA PROGRAMOWA LINUX (może nie zawierać LLgen, wówczas instalacja ze strony http://tack.sourceforge.net); WINDOWS (używa się wtedy programu Cygwin,

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

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Program, to lista poleceń zapisana w jednym języku programowania zgodnie z obowiązującymi w nim zasadami. Celem programu jest przetwarzanie

Bardziej szczegółowo

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery http://xqtav.sourceforge.net XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery dr hab. Jerzy Tyszkiewicz dr Andrzej Kierzek mgr Jacek Sroka Grzegorz Kaczor praca mgr pod

Bardziej szczegółowo

3. Podaj elementy składowe jakie powinna uwzględniać definicja informatyki.

3. Podaj elementy składowe jakie powinna uwzględniać definicja informatyki. 1. Podaj definicję informatyki. 2. W jaki sposób można definiować informatykę? 3. Podaj elementy składowe jakie powinna uwzględniać definicja informatyki. 4. Co to jest algorytm? 5. Podaj neumanowską architekturę

Bardziej szczegółowo

Język programowania DELPHI / Andrzej Marciniak. Poznań, Spis treści

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

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

1 Podstawy c++ w pigułce.

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,

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

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

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++ Programowanie Wstęp p do programowania Klasa 3 Lekcja 9 PASCAL & C++ Język programowania Do przedstawiania algorytmów w postaci programów służą języki programowania. Tylko algorytm zapisany w postaci programu

Bardziej szczegółowo

Zadanie analizy leksykalnej

Zadanie analizy leksykalnej Analiza leksykalna 1 Teoria kompilacji Dr inŝ. Janusz Majewski Katedra Informatyki Zadanie analizy leksykalnej Przykład: We: COST := ( PRICE + TAX ) * 0.98 Wy: id 1 := ( id 2 + id 3 ) * num 4 Tablica symboli:

Bardziej szczegółowo

Ada-95. Dariusz Wawrzyniak

Ada-95. Dariusz Wawrzyniak Część I Wskaźniki Plan Typy wskaźnikowe i obiekty wskazywane 1 Typy wskaźnikowe i obiekty wskazywane 2 3 4 Plan Typy wskaźnikowe i obiekty wskazywane 1 Typy wskaźnikowe i obiekty wskazywane 2 3 4 Wskaźniki

Bardziej szczegółowo

Jeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę.

Jeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę. Języki C i C++ to bardzo uniwersalne platformy programistyczne o ogromnych możliwościach. Wykorzystywane są do tworzenia systemów operacyjnych i oprogramowania użytkowego. Dzięki niskiemu poziomowi abstrakcji

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

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

Gramatyki atrybutywne

Gramatyki atrybutywne Gramatyki atrybutywne, część 1 (gramatyki S-atrybutywne Teoria kompilacji Dr inŝ. Janusz Majewski Katedra Informatyki Gramatyki atrybutywne Do przeprowadzenia poprawnego tłumaczenia, oprócz informacji

Bardziej szczegółowo

Metody Kompilacji Wykład 3

Metody Kompilacji Wykład 3 Metody Kompilacji Wykład 3 odbywa się poprzez dołączenie zasad(reguł) lub fragmentów kodu do produkcji w gramatyce. Włodzimierz Bielecki WI ZUT 2 Na przykład, dla produkcji expr -> expr 1 + term możemy

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

INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE

INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE Studia podyplomowe dla nauczycieli INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE Przedmiot JĘZYKI PROGRAMOWANIA DEFINICJE I PODSTAWOWE POJĘCIA Autor mgr Sławomir Ciernicki 1/7 Aby

Bardziej szczegółowo

Programowanie komputerów

Programowanie komputerów Programowanie komputerów Wykład 1-2. Podstawowe pojęcia Plan wykładu Omówienie programu wykładów, laboratoriów oraz egzaminu Etapy rozwiązywania problemów dr Helena Dudycz Katedra Technologii Informacyjnych

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

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

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

INFORMATYKA W SZKOLE. Podyplomowe Studia Pedagogiczne. Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227

INFORMATYKA W SZKOLE. Podyplomowe Studia Pedagogiczne. Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 INFORMATYKA W SZKOLE Dr inż. Grażyna KRUPIŃSKA grazyna@fis.agh.edu.pl D-10 pokój 227 Podyplomowe Studia Pedagogiczne 2 Algorytmy Nazwa algorytm wywodzi się od nazwiska perskiego matematyka Muhamed ibn

Bardziej szczegółowo

Języki formalne i techniki translacji

Języki formalne i techniki translacji Języki formalne i techniki translacji Laboratorium - Projekt Termin oddania: ostatnie zajęcia przed 17 stycznia 2016 Wysłanie do wykładowcy: przed 23:59 28 stycznia 2016 Używając BISON-a i FLEX-a napisz

Bardziej szczegółowo

Programowanie. Pascal - język programowania wysokiego poziomu. Klasa 2 Lekcja 9 PASCAL

Programowanie. Pascal - język programowania wysokiego poziomu. Klasa 2 Lekcja 9 PASCAL Programowanie Pascal - język programowania wysokiego poziomu Klasa 2 Lekcja 9 PASCAL Język programowania Do przedstawiania algorytmów w postaci programów służą języki programowania. Tylko algorytm zapisany

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

Projektowanie Scalonych Systemów Wbudowanych VERILOG

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.

Bardziej szczegółowo

Podstawy programowania. Wykład 6 Wskaźniki. Krzysztof Banaś Podstawy programowania 1

Podstawy programowania. Wykład 6 Wskaźniki. Krzysztof Banaś Podstawy programowania 1 Podstawy programowania. Wykład 6 Wskaźniki Krzysztof Banaś Podstawy programowania 1 Adresy zmiennych Język C pozwala na operowanie adresami w pamięci stąd, między innymi, kwalifikowanie C jako języka relatywnie

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

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

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

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

1 Przygotował: mgr inż. Maciej Lasota

1 Przygotował: mgr inż. Maciej Lasota Laboratorium nr 1 1/7 Język C Instrukcja laboratoryjna Temat: Programowanie w powłoce bash (shell scripting) 1 Przygotował: mgr inż. Maciej Lasota 1) Wprowadzenie do programowania w powłoce Skrypt powłoki

Bardziej szczegółowo

Programowanie w języku Python. Grażyna Koba

Programowanie w języku Python. Grażyna Koba Programowanie w języku Python Grażyna Koba Kilka definicji Program komputerowy to ciąg instrukcji języka programowania, realizujący dany algorytm. Język programowania to zbiór określonych instrukcji i

Bardziej szczegółowo

LibreOffice Calc VBA

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ąć

Bardziej szczegółowo

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ć

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

Bardziej szczegółowo

Wstęp do programowania. Różne różności

Wstęp do programowania. Różne różności Wstęp do programowania Różne różności Typy danych Typ danych określa dwie rzeczy: Jak wartości danego typu są określane w pamięci Jakie operacje są dozwolone na obiektach danego typu 2 Rodzaje typów Proste

Bardziej szczegółowo

Typy, klasy typów, składnie w funkcji

Typy, klasy typów, składnie w funkcji Typy, klasy typów, składnie w funkcji Typy w Haskell Każde wyrażenie w Haskell posiada zdefiniowany typ. Dzięki temu już na etapie kompilacji kodu następuje sprawdzenie poprawności kodu i zabezpiecza nas

Bardziej szczegółowo

Kiedy i czy konieczne?

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

Bardziej szczegółowo

Algorytmika i pseudoprogramowanie

Algorytmika i pseudoprogramowanie Przedmiotowy system oceniania Zawód: Technik Informatyk Nr programu: 312[ 01] /T,SP/MENiS/ 2004.06.14 Przedmiot: Programowanie Strukturalne i Obiektowe Klasa: druga Dział Dopuszczający Dostateczny Dobry

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

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 1 (3h) Wprowadzenie do obsługi platformy projektowej Quartus II Instrukcja pomocnicza do laboratorium z przedmiotu

Bardziej szczegółowo

Visual Basic for Applications. Wstęp

Visual Basic for Applications. Wstęp Visual Basic for Applications Materiały źródłowe: http://www.vbamania.estrefa.pl 2008-01-14 Wstęp Visual Basic for Applications to język programowania, dołączony do wielu aplikacji. Wspierają go między

Bardziej szczegółowo

Projektowanie układów na schemacie

Projektowanie układów na schemacie Projektowanie układów na schemacie Przedstawione poniżej wskazówki mogą być pomocne przy projektowaniu układach na poziomie schematu. Stałe wartości logiczne Aby podłączyć wejście do stałej wartości logicznych

Bardziej szczegółowo

Definicje. Algorytm to:

Definicje. Algorytm to: Algorytmy Definicje Algorytm to: skończony ciąg operacji na obiektach, ze ściśle ustalonym porządkiem wykonania, dający możliwość realizacji zadania określonej klasy pewien ciąg czynności, który prowadzi

Bardziej szczegółowo

ECDL Podstawy programowania Sylabus - wersja 1.0

ECDL Podstawy programowania Sylabus - wersja 1.0 ECDL Podstawy programowania Sylabus - wersja 1.0 Przeznaczenie Sylabusa Dokument ten zawiera szczegółowy Sylabus dla modułu Podstawy programowania. Sylabus opisuje, poprzez efekty uczenia się, zakres wiedzy

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

Generatory analizatorów

Generatory analizatorów Generatory analizatorów Generator analizatora leksykalnego flex ( http://www.gnu.org/software/flex/ ) Generator analizatora składniowego bison ( http://www.gnu.org/software/bison/ ) Idea ogólna Opis atomów

Bardziej szczegółowo

Wstęp do programowania. Wykład 1

Wstęp do programowania. Wykład 1 Wstęp do programowania Wykład 1 1 / 49 Literatura Larry Ullman, Andreas Signer. Programowanie w języku C++. Walter Savitch, Kenrick Mock. Absolute C++. Jerzy Grębosz. Symfonia C++. Standard. Stephen Prata.

Bardziej szczegółowo

Java EE produkcja oprogramowania

Java EE produkcja oprogramowania Java EE produkcja oprogramowania PPJ PODSTAWY PROGRAMOWANIA W JAVIE PODSTAWY JĘZYKA JAVA 1 Warszawa, 2016Z 2 Ogólna charakterystyka języka Java 3 Java 1/2 Język programowania Java został opracowany przez

Bardziej szczegółowo

Technologie cyfrowe. Artur Kalinowski. Zakład Cząstek i Oddziaływań Fundamentalnych Pasteura 5, pokój 4.15

Technologie cyfrowe. Artur Kalinowski. Zakład Cząstek i Oddziaływań Fundamentalnych Pasteura 5, pokój 4.15 Technologie cyfrowe Artur Kalinowski Zakład Cząstek i Oddziaływań Fundamentalnych Pasteura 5, pokój 4.15 Artur.Kalinowski@fuw.edu.pl Semestr letni 2014/2015 Zadanie algorytmiczne: wyszukiwanie dane wejściowe:

Bardziej szczegółowo

Efektywna analiza składniowa GBK

Efektywna analiza składniowa GBK TEORETYCZNE PODSTAWY INFORMATYKI Efektywna analiza składniowa GBK Rozbiór zdań i struktur zdaniowych jest w wielu przypadkach procesem bardzo skomplikowanym. Jego złożoność zależy od rodzaju reguł produkcji

Bardziej szczegółowo

Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie.

Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie. Część XXII C++ w Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie. Ćwiczenie 1 1. Utwórz nowy projekt w Dev C++ i zapisz go na

Bardziej szczegółowo

DIAGRAMY SYNTAKTYCZNE JĘZYKA TURBO PASCAL 6.0

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

Bardziej szczegółowo

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018 Informatyka I Klasy i obiekty. Podstawy programowania obiektowego dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2018 Plan wykładu Pojęcie klasy Deklaracja klasy Pola i metody klasy

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Laboratorium 1. Wstęp do programowania w języku Java. Narzędzia 1. Aby móc tworzyć programy w języku Java, potrzebny jest zestaw narzędzi Java Development Kit, który można ściągnąć

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