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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Podstawy programowania

Podstawy programowania Podstawy programowania Część pierwsza Od języka symbolicznego do języka wysokiego poziomu Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót

Bardziej szczegółowo

Język VHDL podstawy Mariusz Rawski

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

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

Zasady programowania Dokumentacja

Zasady programowania Dokumentacja Marcin Kędzierski gr. 14 Zasady programowania Dokumentacja Wstęp 1) Temat: Przeszukiwanie pliku za pomocą drzewa. 2) Założenia projektu: a) Program ma pobierać dane z pliku wskazanego przez użytkownika

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

Programowanie I. O czym będziemy mówili. Plan wykładu nieco dokładniej. Plan wykładu z lotu ptaka. Podstawy programowania w językach. Uwaga!

Programowanie I. O czym będziemy mówili. Plan wykładu nieco dokładniej. Plan wykładu z lotu ptaka. Podstawy programowania w językach. Uwaga! Programowanie I O czym będziemy mówili Podstawy programowania w językach proceduralnym ANSI C obiektowym Java Uwaga! podobieństwa w podstawowej strukturze składniowej (zmienne, operatory, instrukcje sterujące...)

Bardziej szczegółowo

Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka

Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka 1. Kompilacja aplikacji konsolowych w środowisku programistycznym Microsoft Visual Basic. Odszukaj w menu startowym systemu

Bardziej szczegółowo

Język ludzki kod maszynowy

Język ludzki kod maszynowy Język ludzki kod maszynowy poziom wysoki Język ludzki (mowa) Język programowania wysokiego poziomu Jeśli liczba punktów jest większa niż 50, test zostaje zaliczony; w przeciwnym razie testu nie zalicza

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

Elementy cyfrowe i układy logiczne

Elementy cyfrowe i układy logiczne Elementy cyfrowe i układy logiczne Wykład 5 Legenda Procedura projektowania Podział układów VLSI 2 1 Procedura projektowania Specyfikacja Napisz, jeśli jeszcze nie istnieje, specyfikację układu. Opracowanie

Bardziej szczegółowo

Modelowanie logiki rewersyjnej w języku VHDL

Modelowanie logiki rewersyjnej w języku VHDL PNIEWSKI Roman 1 Modelowanie logiki rewersyjnej w języku VHDL WSTĘP Konwencjonalne komputery wykorzystują dwuwartościową logikę Boole a. Funkcje opisujące układ cyfrowy wykorzystują najczęściej dwa operatory

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Materiały do laboratorium MS ACCESS BASIC

Materiały do laboratorium MS ACCESS BASIC Materiały do laboratorium MS ACCESS BASIC Opracowała: Katarzyna Harężlak Access Basic jest językiem programowania wykorzystywanym w celu powiązania obiektów aplikacji w jeden spójny system. PROCEDURY I

Bardziej szczegółowo

0 + 0 = 0, = 1, = 1, = 0.

0 + 0 = 0, = 1, = 1, = 0. 5 Kody liniowe Jak już wiemy, w celu przesłania zakodowanego tekstu dzielimy go na bloki i do każdego z bloków dodajemy tak zwane bity sprawdzające. Bity te są w ścisłej zależności z bitami informacyjnymi,

Bardziej szczegółowo

Podstawy programowania - 1

Podstawy programowania - 1 Podstawy programowania - 1 doc. dr inż. Tadeusz Jeleniewski Wykład: sobota B, godz. 10.30 12.55 sala 12 Laboratorium: sobota B, godz. 13.00 15.25 sala 2 sobota B, godz. 15.30-17.55 sala 2 e-mail: tadeusz.jeleniewski@pwr.wroc.pl

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

DECLARE VARIABLE zmienna1 typ danych; BEGIN

DECLARE VARIABLE zmienna1 typ danych; BEGIN Procedury zapamiętane w Interbase - samodzielne programy napisane w specjalnym języku (właściwym dla serwera baz danych Interbase), który umożliwia tworzenie zapytań, pętli, instrukcji warunkowych itp.;

Bardziej szczegółowo

Laboratorium przedmiotu Technika Cyfrowa

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Temat 1: Podstawowe pojęcia: program, kompilacja, kod

Temat 1: Podstawowe pojęcia: program, kompilacja, kod Temat 1: Podstawowe pojęcia: program, kompilacja, kod wynikowy. Przykłady najprostszych programów. Definiowanie zmiennych. Typy proste. Operatory: arytmetyczne, przypisania, inkrementacji, dekrementacji,

Bardziej szczegółowo

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

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Delphi Laboratorium 3

Delphi Laboratorium 3 Delphi Laboratorium 3 1. Procedury i funkcje Funkcja jest to wydzielony blok kodu, który wykonuje określoną czynność i zwraca wynik. Procedura jest to wydzielony blok kodu, który wykonuje określoną czynność,

Bardziej szczegółowo

JAVA. Platforma JSE: Środowiska programistyczne dla języka Java. Wstęp do programowania w języku obiektowym. Opracował: Andrzej Nowak

JAVA. Platforma JSE: Środowiska programistyczne dla języka Java. Wstęp do programowania w języku obiektowym. Opracował: Andrzej Nowak JAVA Wstęp do programowania w języku obiektowym Bibliografia: JAVA Szkoła programowania, D. Trajkowska Ćwiczenia praktyczne JAVA. Wydanie III,M. Lis Platforma JSE: Opracował: Andrzej Nowak JSE (Java Standard

Bardziej szczegółowo

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

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

Bardziej szczegółowo

Technika cyfrowa Synteza układów kombinacyjnych

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

Bardziej szczegółowo

Systemy operacyjne. Laboratorium 8. Perl find

Systemy operacyjne. Laboratorium 8. Perl find Systemy operacyjne Laboratorium 8 Perl find Temat obejmuje przeszukiwanie drzew katalogowych z użyciem perla oraz podstawowe zdolności w używaniu referencji, tablic asocjacyjnych i mechanizmów typu stat.

Bardziej szczegółowo

Programowanie RAD Delphi

Programowanie RAD Delphi Programowanie RAD Delphi Dr Sławomir Orłowski Zespół Fizyki Medycznej, Instytut Fizyki, Uniwersytet Mikołaja Kopernika w Toruniu Pokój: 202, tel. 611-32-46, e-mial: bigman@fizyka.umk.pl Delphi zasoby Aplikacje

Bardziej szczegółowo

Programowanie Niskopoziomowe

Programowanie Niskopoziomowe Programowanie Niskopoziomowe Wykład 2: Reprezentacja danych Dr inż. Marek Mika Państwowa Wyższa Szkoła Zawodowa im. Jana Amosa Komeńskiego W Lesznie Plan Kilka ciekawostek Zapisy binarny, oktalny, decymalny

Bardziej szczegółowo

PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy.

PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy. PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy. 1. Instrukcję case t of... w przedstawionym fragmencie programu moŝna zastąpić: var t : integer; write( Podaj

Bardziej szczegółowo

Pakiety i interfejsy. Tomasz Borzyszkowski

Pakiety i interfejsy. Tomasz Borzyszkowski Pakiety i interfejsy Tomasz Borzyszkowski Pakiety podstawy W dotychczasowych przykładach nazwy klas musiały pochodzić z jednej przestrzeni nazw, tj. być niepowtarzalne tak, by nie doprowadzić do kolizji

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Elementy języków programowania

Elementy języków programowania Elementy języków programowania Olsztyn 2007-2012 Wojciech Sobieski Języki programowania wymyślono po to, by można było dzięki nim tworzyć różnorodne programy komputerowe. Oczekuje się również, że tworzone

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania Wstęp do programowania Podstawowe konstrukcje programistyczne Paweł Daniluk Wydział Fizyki Jesień 2014 P. Daniluk (Wydział Fizyki) WP w. II Jesień 2014 1 / 38 Przypomnienie Programowanie imperatywne Program

Bardziej szczegółowo

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main. Część XVI C++ Funkcje Jeśli nasz program rozrósł się już do kilkudziesięciu linijek, warto pomyśleć o jego podziale na mniejsze części. Poznajmy więc funkcje. Szybko się przekonamy, że funkcja to bardzo

Bardziej szczegółowo

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ),

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ), PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ), Program 351203 Opracowanie: Grzegorz Majda Tematyka zajęć 1. Wprowadzenie do aplikacji internetowych

Bardziej szczegółowo

Bezpieczeństwo informacji oparte o kryptografię kwantową

Bezpieczeństwo informacji oparte o kryptografię kwantową WYŻSZA SZKOŁA BIZNESU W DĄBROWIE GÓRNICZEJ WYDZIAŁ ZARZĄDZANIA INFORMATYKI I NAUK SPOŁECZNYCH Instrukcja do laboratorium z przedmiotu: Bezpieczeństwo informacji oparte o kryptografię kwantową Instrukcja

Bardziej szczegółowo

Technologie informacyjne - wykład 12 -

Technologie informacyjne - wykład 12 - Zakład Fizyki Budowli i Komputerowych Metod Projektowania Instytut Budownictwa Wydział Budownictwa Lądowego i Wodnego Politechnika Wrocławska Technologie informacyjne - wykład 12 - Prowadzący: Dmochowski

Bardziej szczegółowo

Logika Temporalna i Automaty Czasowe

Logika Temporalna i Automaty Czasowe Modelowanie i Analiza Systemów Informatycznych Logika Temporalna i Automaty Czasowe (7) Automaty czasowe NuSMV Paweł Głuchowski, Politechnika Wrocławska wersja 2.3 Treść wykładu NuSMV NuSMV symboliczny

Bardziej szczegółowo

Programowanie. Projektowanie funkcje programu tworzenie algorytmu i struktur danych. Programowanie implementacja algorytmu kompilacja programu

Programowanie. Projektowanie funkcje programu tworzenie algorytmu i struktur danych. Programowanie implementacja algorytmu kompilacja programu Programowanie V Dariusz Skibicki Wydział Inżynierii Mechanicznej Uniwersytet Technologiczno-Przyrodniczy im. Jana i Jędrzeja Śniadeckich w Bydgoszczy dariusz.skibicki(at)utp.edu.pl Programowanie Projektowanie

Bardziej szczegółowo

Plan wykładu. Kompilatory. Literatura. Translatory. Literatura Translatory. Paweł J. Matuszyk

Plan wykładu. Kompilatory. Literatura. Translatory. Literatura Translatory. Paweł J. Matuszyk Plan wykładu (1) Paweł J. Matuszyk AGH Kraków 1 2 tor leksykalny tor syntaktyczny Generator pośredniego Generator wynikowego Hopcroft J. E., Ullman J. D., Wprowadzenie do teorii automatów, języków i obliczeń,

Bardziej szczegółowo

PARADYGMATY PROGRAMOWANIA Wykład 4

PARADYGMATY PROGRAMOWANIA Wykład 4 PARADYGMATY PROGRAMOWANIA Wykład 4 Metody wirtualne i polimorfizm Metoda wirualna - metoda używana w identyczny sposób w całej hierarchii klas. Wybór funkcji, którą należy wykonać po wywołaniu metody wirtualnej

Bardziej szczegółowo

DECLARE typ [( )] [ NOT NULL ] [ { := DEFAULT } ];

DECLARE <nazwa_zmiennej> typ [(<rozmiar> )] [ NOT NULL ] [ { := DEFAULT } <wartość> ]; Braki w SQL obsługi zdarzeń i sytuacji wyjątkowych funkcji i procedur użytkownika definiowania złożonych ograniczeń integralnościowych Proceduralny SQL Transact- SQL używany przez Microsoft SQL Server

Bardziej szczegółowo

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02 METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE Wykład 02 NAJPROSTSZY PROGRAM /* (Prawie) najprostszy przykład programu w C */ /*==================*/ /* Między tymi znaczkami można pisać, co się

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Zapisywanie algorytmów w języku programowania

Zapisywanie algorytmów w języku programowania Temat C5 Zapisywanie algorytmów w języku programowania Cele edukacyjne Zrozumienie, na czym polega programowanie. Poznanie sposobu zapisu algorytmu w postaci programu komputerowego. Zrozumienie, na czym

Bardziej szczegółowo

Wykład VII. Programowanie. dr inż. Janusz Słupik. Gliwice, 2014. Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

Wykład VII. Programowanie. dr inż. Janusz Słupik. Gliwice, 2014. Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik Wykład VII Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2014 c Copyright 2014 Janusz Słupik Kompilacja Kompilator C program do tłumaczenia kodu źródłowego na język maszynowy. Preprocesor

Bardziej szczegółowo

Skrypty powłoki Skrypty Najcz ciej u ywane polecenia w skryptach:

Skrypty powłoki Skrypty Najcz ciej u ywane polecenia w skryptach: Skrypty powłoki Skrypty są zwykłymi plikami tekstowymi, w których są zapisane polecenia zrozumiałe dla powłoki. Zadaniem powłoki jest przetłumaczenie ich na polecenia systemu. Aby przygotować skrypt, należy:

Bardziej szczegółowo

Laboratorium Wstawianie skryptu na stroną: 2. Komentarze: 3. Deklaracja zmiennych

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

Bardziej szczegółowo

Użycie Visual Basic for Applications ("VBA")

Użycie Visual Basic for Applications (VBA) Użycie Visual Basic for Applications ("VBA") Przegląd SEE z modułem VBA Developer SEE używa języka programowania Visual Basic for Applications (VBA) pozwalającego tworzyć krótkie programy zwane "makrami".

Bardziej szczegółowo

Dynamiczny przydział pamięci w języku C. Dynamiczne struktury danych. dr inż. Jarosław Forenc. Metoda 1 (wektor N M-elementowy)

Dynamiczny przydział pamięci w języku C. Dynamiczne struktury danych. dr inż. Jarosław Forenc. Metoda 1 (wektor N M-elementowy) Rok akademicki 2012/2013, Wykład nr 2 2/25 Plan wykładu nr 2 Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia niestacjonarne I stopnia Rok akademicki 2012/2013

Bardziej szczegółowo

Języki i metodyka programowania

Języki i metodyka programowania Języki i metodyka programowania www.ee.pw.edu.pl/~slawinsm Dr inż. Maciej Sławiński M.Slawinski@ee.pw.edu.pl GE518l Konsultacje: śr. 13 00-13 45 SK201/GE518l pt. 10 15-11 00 GE518l/SK201 Algorytmika Literatura

Bardziej szczegółowo

Podstawy programowania (1)

Podstawy programowania (1) Podstawy programowania (1) doc. dr inż. Tadeusz Jeleniewski Konsultacje pokój 19 Poniedziałki, godz. 9:45 11:20 e-mail: tadeusz.jeleniewski@neostrada.pl Podstawy programowania (1) - wykład 1. Wprowadzenie

Bardziej szczegółowo

Zadania badawcze prowadzone przez Zakład Technik Programowania:

Zadania badawcze prowadzone przez Zakład Technik Programowania: Zadania badawcze prowadzone przez Zakład Technik Programowania: - Opracowanie metod zrównoleglania programów sekwencyjnych o rozszerzonym zakresie stosowalności. - Opracowanie algorytmów obliczenia tranzytywnego

Bardziej szczegółowo

LABORATORIUM TECHNIKA CYFROWA. Pamięci. Rev.1.35

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

Bardziej szczegółowo

Cw.12 JAVAScript w dokumentach HTML

Cw.12 JAVAScript w dokumentach HTML Cw.12 JAVAScript w dokumentach HTML Wstawienie skryptu do dokumentu HTML JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania.skrypty Java- Script mogą być zagnieżdżane

Bardziej szczegółowo

OPERACJE NA PLIKACH. Podstawowe pojęcia:

OPERACJE NA PLIKACH. Podstawowe pojęcia: OPERACJE NA PLIKACH Podstawowe pojęcia: plik fizyczny, zbiór informacji w pamięci zewnętrznej wykorzystywany do trwałego przechowywania danych lub jako przedłużenie pamięci operacyjnej w przypadku przetwarzania

Bardziej szczegółowo