Wykład 9 - Podstawy matematyczne automatyki procesów dyskretnych Instytut Automatyki i Robotyki Warszawa, 2015
Kody liczb całkowitych nieujemnych Kody liczbowe dzielimy na analityczne nieanalityczne (symboliczne) Kody analityczne są umownym zapisem algebraicznego wyrażenia reprezentującego dana liczbę. Każdą liczbę całkowitą można wyrazić w postaci przykładowo 0 a i 10 i = a n 10 n + a n 1 10 n 1 +... + a 0 10 0 (1) i=n 1989 = 1 10 3 + 9 10 2 + 8 10 1 + 9 10 0 (2)
Kody liczb całkowitych nieujemnych Mówi się, że zapis 1989 jest zapisem w kodzie dziesiętnym liczby A więc, umownym zapisem liczby L = 1 10 3 + 9 10 2 + 8 10 1 + 9 10 0 (3) 0 a i 10 i = a n 10 n + a n 1 10 n 1 +... + a 0 10 0 (4) i=n w kodzie dziesiętnym jest L 10 = a n a n 1...a 1 a 0 Współczynniki a n,..., a 0 (zwane także zmiennymi kodowymi) mogą przybierać wartości od 0 do 9. Znaczenie poszczególnych zmiennych zależy od zajmowanej pozycji w zapisie kodowym; mówi się, że kod dziesiętny jest kodem pozycyjnym. Stosuje się następujące oznaczenia: i numer pozycji, 10 i waga pozycji i, 10 podstawa kodu pozycyjnego (podstawa rozwinięcia).
Kody liczb całkowitych nieujemnych Analogicznie można tworzyć kody analityczne o innych podstawach L = 0 a i P i = a n P n + a n 1 P n 1 +... + a 0 P 0 (5) i=n Jeżeli podstawą kodu analitycznego jest liczba P (może to być liczba całkowita 2), to zmienne kodowe a i mogą przyjmować wartości od 0 do P 1. Szczególnie ważnym kodem jest tzw. naturalny kod dwójkowy o podstawie P = 2, w którym zmienne kodowe mogą przyjmować tylko dwie wartości: 0 i 1. Wyrażona w naturalnym kodzie dwójkowym liczba L 2 = a n a n 1...a 1 a 0 jest umownym zapisem liczby L 2 = 0 a i 2 i = a n 2 n + a n 1 2 n 1 +... + a 0 2 0 (6) i=n
Kody liczb całkowitych nieujemnych L 10 a 3 a 2 a 1 a 0 0 0 0 0 0 1 0 0 0 1 2 0 0 1 0 3 0 0 1 1 4 0 1 0 0 5 0 1 0 1 6 0 1 1 0 7 0 1 1 1 8 1 0 0 0 9 1 0 0 1 10 1 0 1 0 11 1 0 1 1 12 1 1 0 0 13 1 1 0 1 14 1 1 1 0 15 1 1 1 1 Liczby od 0 do 15 w naturalnym kodzie dwójkowym Wadą naturalnego kodu dwójkowego jest występowanie zmian kilku zmiennych kodowych (mówi się: kilku bitów) przy przechodzeniu do sąsiedniej wartości liczbowej, np. przy przejściu od liczby 7 do 8 zmieniają się wszystkie zmienne.
Kody liczb całkowitych nieujemnych W urządzeniach technicznych informacje o wartościach poszczególnych zmiennych kodowych przekazywane są za pomocą sygnałów binarnych. Ponieważ nie jest możliwe wymuszenie dokładnie jednoczesnej zmiany kilku sygnałów, podczas zmian przekazywanych wartości liczbowych pojawiają się błędne informacje.
Kody liczb całkowitych nieujemnych Niejednoznaczność odczytu nie występuje w przypadku tzw. kodów ze stałym odstępem, w których zawsze zmiana wartości liczbowej o 1 jest związana ze zmiana wartości jednego tylko bitu. Podstawowymi kodami ze stałym odstępem są: kod Graya, kod Graya +3, kody pseudopierścieniowe (Johnsona). Kody ze stałym odstępem są kodami nieanalitycznymi (symbolicznymi); zapis liczby w takim kodzie nie jest umownym zapisem jednej formuły matematycznej wyrażającej zakodowaną liczbę. Do odczytania liczby zakodowanej w kodzie nieanalitycznym służy tablica kodowa lub określona reguła.
Kody liczb całkowitych nieujemnych Liczby od 0 do 15 w kodzie Graya W tablicy kodowej kodu Graya występują charakterystyczne osie symetrii (linie niebieskie); stąd nazwy kodów mających tę właściwość kody refleksyjne, kody lustrzane
Kody liczb całkowitych nieujemnych Liczby od 0 do 15 w kodzie Graya i kodzie Graya+3 A) Tablica kodu Graya B) Tablica kodu Graya+3
Kody liczb całkowitych nieujemnych Alternatywna postać tablicy kodu Graya Kod Graya a 1, a 0 a 3, a 2 00 01 11 10 00 0 1 2 3 01 7 6 5 4 11 8 9 10 11 10 15 14 13 12 Rysunek : Graficzne przedstawienie kodu Graya
Kody liczb całkowitych nieujemnych Dekodowanie kodu Graya Do wyznaczania liczby zakodowanej w kodzie Gray a można posłużyć się wzorem określającym wartość bezwzględną wagi W k k-tej pozycji: W k = k 2 i = 2 k+1 1 (7) i=0 W liczbie zapisanej w kodzie Graya wagi jedynek nieparzystych, licząc od lewej strony, są dodatnie, wagi jedynek parzystych są ujemne. np.: (1101) g = (2 4 1) (2 3 1) + (2 1 1) = 15 7 + 1 = 9 (8) Przekształcanie naturalnego kodu dwójkowego w kod Graya: należy zmienić na przeciwne wartości tych pozycji, dla których pozycja wyższa (w kodzie dwójkowym) ma wartość 1. np.: (1000110) 2 = (1100101) g (9)
Kody pseudopierścieniowe (Johnsona) Kody pseudopierścieniowe umożliwiają kodowanie parzystych zbiorów liczbowych. Do zakodowania zbioru zawierającego n liczb potrzeba n/2 bitów. np.: L.dzi. Kod - a 3 a 2 a 1 a 0 0 0 0 0 0 1 0 0 0 1 2 0 0 1 1 3 0 1 1 1 4 1 1 1 1 5 1 1 1 0 6 1 1 0 0 7 1 0 0 0
Kody typu 1 z n Kody typu 1 z n umożliwiają kodowanie dowolnego zbioru liczb (n oznacza liczbę kodowanych elementów). Do zakodowania n elementów wykorzystuje się n zmiennych binarnych. W każdym zapisie liczby jedna zmienna ma wartość 1. L.dzi. Kod - a 5 a 4 a 3 a 2 a 1 a 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 2 0 0 0 1 0 0 3 0 0 1 0 0 0 4 0 1 0 0 0 0 5 1 0 0 0 0 0 Kody pseudopierścieniowy i kody 1 z n są kodami nieminimalnymi wymagają użycia większej liczby zmiennych (bitów) niż naturalny kod dwójkowy lub kod Graya.
Funkcje logiczne dwuwartościowe Funkcje logiczne Logicznymi nazywają się funkcje, których zmienne niezależne i zmienna zależna mogą przyjmować skończoną liczbę wartości. Funkcje logiczne dwuwartościowe Funkcje logiczne, których zmienne niezależne i zmienna zależna mogą przyjmować tylko dwie wartości nazywają się funkcjami logicznymi dwuwartościowymi. Do opisu działania dyskretnych układów sterowania wykorzystuje się funkcje logiczne dwuwartościowe. Różnych dwuwartościowych funkcji logicznych o liczbie argumentów n jest 2 2n Zatem istnieją 4 tylko dwuwartościowe funkcje logiczne jednoargumentowe, 16 funkcji dwuargumentowych, 256 funkcji trójargumentowych, itd.
Funkcje logiczne jednoargumentowe Podstawowymi formami zapisu funkcji logicznych są: postacie tabelaryczne, zapis algebraiczny. Funkcje logiczne jednoargumentowe y = f (x) x y 0 0 1 0 Funkcja stała zerowa x y 0 0 1 1 Funkcja potwórzenie x y 0 1 1 0 Funkcja negacja x y 0 1 1 1 Funkcja stała jedynka y = 0 (10) y = x (11) y = x (12) y = 1 (13)
Funkcje logiczne dwuargumentowe Funkcje logiczne dwuargumentowe y = f (x 1, x 2 ) x 1 x 2 y 0 y 1 y 2 y 3 y 4 y 5 y 6 y 7 y 8 y 9 y 10 y 11 y 12 y 13 y 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 1 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0
Funkcje logiczne dwuargumentowe Funkcje logiczne dwuargumentowe y = f (x 1, x 2 ) x 1 x 2 y 0 y 1 y 2 y 3 y 4 y 5 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 1 0 0 0 1 1 0 0 1 1 0 1 0 0 1 0 Funkcja stała zerowa: y 0 = 0 Koniunkcja, iloczyn logiczny, mnożenie logiczne : y 1 = x 1 x 2 Zakaz przez x 2, negacja implikacji : y 2 = x 1 x 2 = x 1 x 2 = x 1 x 2 Powtórzenie x 1 : y 3 = x 1 Zakaz przez x 1, negacja implikacji odwrotnej: y 4 = x 2 x 1 = x 2 x 1 = x 1 x 2 Powtórzenie x 2 : y 5 = x 2
Funkcje logiczne dwuargumentowe Funkcje logiczne dwuargumentowe y = f (x 1, x 2 ) x 1 x 2 y 6 y 7 y 8 y 9 y 10 0 0 0 0 1 1 1 0 1 1 1 0 0 0 1 0 1 1 0 0 1 1 1 0 1 0 0 1 Alternatywa wyłączająca, dodawanie modulo dwa, nierównoważność : y 6 = x 1 x 2 = x 1 x 2 + x 1 x 2 Alternatywa, dodawanie logiczne, suma logiczna : y 7 = x 1 + x 2 Funkcja Peirce a, nagacja alternatywy, funkcja NOR : y 8 = x 1 x 2 = x 1 + x 2 = x 1 x 2 Równoważność: y 9 = x 1 x 2 = x 1 x 2 + x 1 x 2 Negacja x 2 : y 10 = x 2
Funkcje logiczne dwuargumentowe Funkcje logiczne dwuargumentowe y = f (x 1, x 2 ) x 1 x 2 y 11 y 12 y 13 y 14 y 15 0 0 1 1 1 1 1 0 1 0 1 1 1 1 1 0 1 0 0 1 1 1 1 0 0 1 0 1 Implikacja odwrotna: y 11 = x 2 x 2 = x 1 + x 2 Negacja x 1 : y 12 = x 1 Implikacja: y 13 = x 1 x 2 = x 1 + x 2 Funkcja Sheffera, negacja koniunkcji, funkcja NAND: y 14 = x 1 /x 2 = x 1 x 2 = x 1 + x 2 Funkcja stała jedynkowa: y 15 = 1
Algebra Boole a Algebra Boole a zajmuje się zależnościami zachodzącymi pomiędzy funkcjami: alternatywą, koniunkcją i negacją. Funkcje alternatywa, koniunkcja i negacja tworzą tzw. podstawowy system funkcjonalnie pełny. System funkcjonalnie pełny System funkcjonalnie pełny jest to zbiór (zestaw) funkcji logicznych umożliwiający tworzenie zapisów algebraicznych dowolnie złożonych funkcji logicznych. Tworzenie zapisu algebraicznego funkcji logicznej zdefiniowanej np. w postaci opisu słownego, w postaci tabelarycznej lub w inny sposób, nazywa się syntezą tej funkcji, do czego niezbędna jest znajomość algebry Boole a. Zależności zachodzące pomiędzy funkcjami: alternatywą, koniunkcją i negacją wyraża zestaw twierdzeń (praw) zwanych aksjomatami algebry Boole a.
Algebra Boole a Aksjomaty algebry Boole a 0 = 1 (14) 1 = 0 (19) x 0 = 0 (15) x 1 = x (16) x x = x (17) x + 0 = x (20) x + 1 = 1 (21) x + x = x (22) x x = 0 (18) x + x = 1 (23) Prawo przemienności x 1 x 2 = x 2 x 1 (24) x 1 + x 2 = x 2 + x 1 (25) Prawo łączności x 1 (x 2 x 3 ) = (x 2 x 1 ) x 3 (26) x 1 + (x 2 + x 3 ) = (x 2 + x 1 ) + x 3 (27)
Algebra Boole a Prawo rozdzielności mnożenia logicznego względem dodawania logicznego (x 1 + x 2 ) x 3 = x 1 x 3 + x 2 x 3 (28) Prawo rozdzielności dodawania logicznego względem mnożenia logicznego Prawa de Morgana (x 1 x 2 ) + x 3 = (x 1 + x 3 ) (x 2 + x 3 ) (29) Prawo podwójnej negacji (podwójnego przeczenia) x 1 x 2 = x 1 + x 2 (30) x 1 + x 2 = x 1 x 2 (31) x = x (32) Na podstawie powyższych twierdzeń można tworzyć szereg innych zależności przydatnych przy przekształcaniu funkcji logicznych. Symbole x, x 1, x 2, x 3 w tych twierdzeniach mogą reprezentować zarówno pojedynczy argument jak i dowolnie złożoną funkcję logiczną.
Wykład 9 - Podstawy matematyczne automatyki procesów dyskretnych Instytut Automatyki i Robotyki Warszawa, 2015