KOMPILATOR JĘZYKA VHDL DO PROJEKTOWANIA UKŁADÓW LOGICZNYCH. Edytor: prof. dr hab. inż. Włodzimierz Bielecki
|
|
- Przybysław Kucharski
- 8 lat temu
- Przeglądów:
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. 1. W języku VHDL zdefiniowano mechanizm odczytywania i zapisywania danych z i do plików. Pliki te mogą być wykorzystywane
Bardziej szczegółowoVHLD 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ółowoMetody 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ółowoModelowanie 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ółowoJę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ółowoKró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ółowoElementy 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ółowoProjektowanie 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ółowoWstę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ółowoJę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ółowoAnaliza 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ółowoPolitechnika 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ółowoAltera 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ółowoProgramowanie 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ółowoPodstawy 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ółowoBloki 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ółowoUkł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ółowoProjektowanie 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ółowo1 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ółowoOpis: 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ółowoUwagi 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ółowoInstrukcja 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ółowoPojedyncze 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ółowoPrzykł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ółowoProgramowalne 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ółowoWOJSKOWA 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ółowoProjektowanie 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ółowoInformatyka 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ółowo1. 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ółowoPodstawy 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ółowoAnaliza 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ółowoSposoby 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ółowoAlgorytm. 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ółowoUkł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ółowoSpecyfika 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ółowoProgramowanie 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ółowoL 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ółowoAlgorytmika 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ółowoJę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ółowo1. Pierwszy program. Kompilator ignoruje komentarze; zadaniem komentarza jest bowiem wyjaśnienie programu człowiekowi.
1. Pierwszy program // mój pierwszy program w C++ #include using namespace std; cout
Bardziej szczegółowoKONSTRUKCJA 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ółowoSystemy 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ółowoProgramowanie 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ółowoXQTav - 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ółowo3. 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ółowoJę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ółowo1 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ółowo1 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ółowoElż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ółowoLiteratura. 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ółowoProgramowanie. 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ółowoZadanie 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ółowoAda-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ółowoJeś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ółowoPolitechnika 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ółowoUkł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ółowoGramatyki 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ółowoMetody 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ółowoPolitechnika 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ółowoINFORMATYKA, 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ółowoProgramowanie 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ółowoAby w pełni przetestować układ o trzech wejściach IN_0, IN_1 i IN_2 chcemy wygenerować wszystkie możliwe kombinacje sygnałów wejściowych.
Generowanie sygnałów testowych VHDL Wariant współbieżny (bez procesu): sygnał
Bardziej szczegółowoProjektowanie 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ółowoJę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ółowoPolitechnika 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ółowoINFORMATYKA 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ółowoJę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ółowoProgramowanie. 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ółowoLABORATORIUM 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ółowoProjektowanie 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ółowoPodstawy 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ółowoUkł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ółowoProjekt 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ółowoTranzystor 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ółowoSterowniki 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ółowo1 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ółowoProgramowanie 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ółowoLibreOffice 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ółowoSkrypty 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ółowoWstę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ółowoTypy, 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ółowoKiedy 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ółowoAlgorytmika 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ółowoAHDL - 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ółowoPolitechnika 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ółowoVisual 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ółowoProjektowanie 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ółowoDefinicje. 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ółowoECDL 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ółowoSystemy 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ółowoGeneratory 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ółowoWstę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ółowoJava 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ółowoTechnologie 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ółowoEfektywna 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ółowoWskaź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ółowoDIAGRAMY 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ółowoInformatyka 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ółowoProgramowanie 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ółowoLaboratorium 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