AKADEMIA MORSKA W SZCZECINIE WI-ET / IIT / ZTT Instrukcja do zajęc laboratoryjnych nr 3 AUTOMATYZACJA I ROBOTYZACJA PROCESÓW PRODUKCYJNYCH II rok Kierunek Logistyka Temat: Minimalizacja funkcji logicznych. Projektowanie układów logicznych. Opracował mgr inż. Artur Kujawski Zatwierdził dr inż. Joanna Tuleja Obowiązuje od: Rok akademicki 2015 / 2016
RAMOWY SPIS TREŚCI CEL I ZAKRES ĆWICZENIA... 3 CZĘŚĆ TEORETYCZNA... 3 Wprowadzanie i minimalizowanie funkcji logicznych... 3 Systemy liczbowe konwersja liczb dziesiętnych na binarne... 4 Systemy liczbowe konwersja liczb binarnych na dziesiętne... 4 Projektowanie układów logicznych... 5 PRZEBIEG ĆWICZENIA... 6 WARUNKI ZALICZENIA... 8 EFEKTY KSZTAŁCENIA... 8 LITERATURA... 8 2
CEL I ZAKRES ĆWICZENIA Celem ćwiczenia jest wykorzystanie wiedzy z zakresu algebry logiki do minimalizacji funkcji logicznych oraz do projektowania układów logicznych za pomocą wbudowanego pakietu symulacyjnego Matlaba o nazwie Simulink. CZĘŚĆ TEORETYCZNA Wprowadzanie i minimalizowanie funkcji logicznych Pakiet Matlab posiada wbudowane podprogramy ułatwiające pracę z funkcjami logicznymi. Do wprowadzania, edycji i minimalizacji funkcji logicznych można posłużyć się podprogramem MuPad. Wystarczy wpisać w oknie głównym polecenie mupad aby uruchomić edytor równań. Wygląd edytora przedstawia poniższy rysunek. Wprowadzanie funkcji logicznych oraz ich minimalizacja możliwa jest dzięki funkcji simplify(). Pomiędzy nawiasami należy wpisać funkcję logiczną używając odpowiedniego zapisu. Działanie + or * and negacja Postać logiczna not Przykład. Dla działania logicznego w postaci = ++ zapis w edytorze Mupad będzie wyglądał następująco: 3
simplify(a and b and (not c) or (not a) and b or a and (not c)) Taka postać da nam dopiero zapis logiczny naszej funkcji: aby tą funkcję zminimalizować powinien pojawić się jeszcze jeden parametr na końcu funkcji simplify(). simplify(a and b and (not c) or (not a) and b or a and (not c), logic) Dodanie słowa logic na końcu da nam dopiero wynik w postaci zminimalizowanej. Systemy liczbowe konwersja liczb dziesiętnych na binarne Sposób zamiany liczb dziesiętnych na binarne można dokonać za pomocą prostych obliczeń. W poniższym przykładzie dokonano zamiany liczby 252 na postać binarną dzieląc poszczególne części przez liczbę 2. Jeżeli liczba dzieli się bez reszty przypisujemy po prawej stronie cyfrę 0, jeżeli po dzieleniu zostaje jakakolwiek reszta przypisujemy 1. Przykład 252 / 2 = 126 0 126 / 2 = 63 0 63 / 2 = 31 1 31 / 2 = 15 1 15 / 2 = 7 1 7 / 2 = 3 1 3 / 2 = 1 1 1 / 2 = 0 1 Wynik liczby binarnej zawsze zapisujemy od dołu do góry a więc: 11111100 Systemy liczbowe konwersja liczb binarnych na dziesiętne Przykład Weźmy liczbę zapisaną w systemie dwójkowym, np. 1000011 Podstawą systemu binarnego jest cyfra 2 w systemie dziesiętnym. Cyfry wysunięte najbardziej na prawo reprezentują najmłodsze bity czyli liczby najsłabsze. Należy ponumerować binarne liczby zaczynając od 0 (zero). Powstałe liczby dadzą nam odpowiedni stopień potęgi liczby 2. 6 5 4 3 2 1 0 1 0 0 0 0 1 1 1*2 0 + 1*2 1 + 0*2 2 + 0*2 3 +0*2 4 + 0*2 5 +1*2 6, a to się równa: 1 + 2 + 0 + 0 + 0 + 0 + 64 = 67 w systemie dziesiętnym. 4
Projektowanie układów logicznych SIMULINK jest pakietem oprogramowania służącym do modelowania, symulacji i analizowania układów dynamicznych. Można implementować w nim zarówno układy liniowe jak i nieliniowe modelowane w czasie ciągłym, dyskretnym lub w hybrydowym w którym część układu pracuje w czasie dyskretnym natomiast inna część w czasie ciągłym. Pakiet ten można wykorzystać również do zaprojektowania oraz przetestowania układów zbudowanych z bramek logicznych. SIMULINK wyposażony jest w interfejs graficzny pozwalający w łatwy sposób budować modele w postaci schematów blokowych przy użyciu myszki komputerowej metodą przeciągnij i upuść. Aby dostać się do Simulinka należy wpisać w oknie głównym komendę simulink lub kliknąć taką ikonę: Po uruchomieniu interfejs przedstawia się następująco: Po lewej stronie mamy do dyspozycji drzewo kategorii z podziałem na różne bloki do budowania układów. Dla naszych potrzeb będziemy korzystali zaledwie z kilku bloków rozrzuconych po różnych kategoriach. Najprostszym sposobem na odszukanie właściwych bloków jest wpisanie w pasku wyszukiwarki odpowiedniej nazwy. (Czerwony prostokąt na rysunku powyżej). Układy budujemy przerzucając bloki do nowego pustego modelu. Ikona - New Model (biała, czysta kartka). Bloki możemy umieszczać w modelu na dwa sposoby. Albo przeciągamy i upuszczamy, albo prawy klawisz myszy i opcja Add to Nazwa Modelu (na początku będzie to Untitled). 5
Model zazwyczaj zawiera więcej niż jeden blok jednego rodzaju, więc aby ułatwić sobie pracę warto dublować (kopiować) bloki z klawiszem Ctrl niż dodawać je co chwilę z biblioteki bloków. (Trzymamy klawisz Ctrl i przeciągamy blok obok). Przykładowy schemat w Simulinku może wyglądać jak poniżej. Zaczynając od lewej strony mamy bloki generatorów liczb stałych, bloki negacji, bloki iloczynów, blok sumy i na końcu blok wyświetlacza. Po dodaniu do modelu bramki AND będziemy mieli domyślny wygląd w kształcie kwadratu: wygląd domyślny: wygląd indywidualny: Aby zmienić kształt bramki na indywidualny należy dwukrotnym kliknięciem myszy wejść do opcji bloku i zmienić Icon Shape na Distinctive. W tym samym miejscu mamy możliwość zamiany bramek AND na OR, NOT, itd. PRZEBIEG ĆWICZENIA Celem ćwiczenia jest wykonanie poniższych zadań oraz opisanie ich wyników w sprawozdaniu najlepiej plik Word. Elementy jakie powinno zawierać sprawozdanie opisane zostały na końcu tego rozdziału. Zadanie 1 Minimalizacja funkcji logicznych Wprowadź oraz zminimalizuj poniższe funkcje w edytorze MuPad. 1.1. Ϝ = + + + 1.2. =( + )++(+ )+ 1.3. =+(+ )+ 6
Zadanie 2 Zamiana systemów liczbowych 2.1 Zamień poniższe liczby dziesiętne na system binarny (rozpisz krok po korku): a) 172; b) 219; c) 303 2.2 Zamień poniższe liczby binarne na system dziesiętny (rozpisz krok po korku): a) 11000111; b) 100101011; c) 11110000 2.3 Odpowiedz na pytanie jaką największą liczbę dziesiętną jesteśmy w stanie zapisać za pomocą 8 bitów w systemie binarnym? Zadanie 3 Projektowanie układów logicznych Zaprojektuj dwa różne układy logiczne w Simulinku oraz przeprowadź symulację na podstawie poniższych funkcji logicznych. a) =(+)+ b) = (+)++(+) Do zaprojektowania układów będą potrzebne następujące bloki: - generatory liczb stałych -(Simulink\ Sources \ Constant) - bramki AND, OR, NOT -(Simulink\ Logic and Bits Operations) - wyświetlacz (Simulink\ Sink \ Display) Wyniki symulacji muszą być zapisane w formie tabeli dla wszystkich możliwych kombinacji. Ilość kombinacji łatwo sprawdzić wg wzoru: 2 x gdzie X to ilość użytych zbiorów (np. a, b, c to 3). Fragment przykładowej tabeli z wynikami poniżej, gdzie a, b, c to zbiory a F to wynik symulacji: a b c F 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 1 itd. 7
Sprawozdanie powinno zawierać: 1. Trzy funkcje logiczne poprawnie wpisane w edytor MuPad. 2. Wyniki minimalizacji powyższych trzech funkcji. 3. Trzy obliczenia oraz wyniki zamiany liczb dziesiętnych na binarne. 4. Trzy obliczenia oraz wyniki zamiany liczb binarnych na dziesiętne. 5. Odpowiedź na pytanie 2.3. 6. Poprawnie zbudowane dwa układy logiczne za pomocą bramek w Simulinku (zrzuty ekranowe schematów Alt+PrntScr) 7. Wyniki obu symulacji w tabeli dla wszystkich możliwych kombinacji 8. Wnioski z dwóch ostatnich punktów. Co można odczytać z uzyskanych wyników? WARUNKI ZALICZENIA Warunkiem zaliczenia ćwiczenia jest poprawne wykonanie zadań oraz wysłanie pliku sprawozdania o nazwie: Nazwisko_Imie_03 na adres http://microbot.com.pl/am/l2/ wybierając katalog dla odpowiedniej grupy laboratoryjnej. EFEKTY KSZTAŁCENIA Posiada wiedzę w zakresie obsługi komputerów osobistych z dostępem do internetu oraz obsługi systemu operacyjnego Windows z pakietem do obliczeń inżynierskich Matlab oraz Simulink. (SEKP10, SEKP11). LITERATURA 1. http://www.ont.com.pl/ 2. http://www.mathworks.com/products/matlab/ 3. http://www.mathworks.com/videos/getting-started-with-matlab- 68985.html?s_cid=learn_vid 8