VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY
FAKULTA STROJNÍHO INŽENÝRSTVÍ ÚSTAV AUTOMATIZACE A INFORMATIKY FACULTY OF MECHANICAL ENGINEERING INSTITUTE OF AUTOMATION AND COMPUTER SCIENCE
MINIMALIZACE LOGICKÝCH FUNKCÍ MINIMISATION OF LOGICAL FUNCTIONS
BAKALÁŘSKÁ PRÁCE BACHELOR´S THESIS
AUTOR PRÁCE
PETR JANDA
AUTHOR
VEDOUCÍ PRÁCE SUPERVISOR
BRNO 2007
Doc. RNDr. Ing. MILOŠ ŠEDA, Ph.D.
Strana 5
LICENČNÍ SMLOUVA POSKYTOVANÁ K VÝKONU PRÁVA UŢÍT ŠKOLNÍ DÍLO LICENČNÍ SMLOUVA uzavřená mezi smluvními stranami: 1. Pan/paní Jméno a příjmení: Petr Janda Bytem: Zázmolí 17, Brno, 614 00 Narozen/a (datum a místo): 25.4.1976 v Brně (dále jen „autor“) a 2. Vysoké učení technické v Brně Fakulta strojního inženýrství se sídlem Technická 2896/2, 616 69 Brno jejímž jménem jedná na základě písemného pověření děkanem fakulty: Doc. RNDr. Ing. Miloš Šeda, Ph.D., ředitel ÚAI (dále jen „nabyvatel“) Čl. 1 Specifikace školního díla 1. Předmětem této smlouvy je vysokoškolská kvalifikační práce (VŠKP): disertační práce diplomová práce bakalářská práce jiná práce, jejíž druh je specifikován jako ....................................................... (dále jen VŠKP nebo dílo) Název VŠKP:
Minimalizace logických funkcí
Vedoucí/ školitel VŠKP:
Doc. RNDr. Ing. Miloš Šeda, Ph.D., ředitel ÚAI
Ústav:
Ústav Automatizace a Informatiky
Datum obhajoby VŠKP: VŠKP odevzdal autor nabyvateli v*:
*
tištěné formě
–
počet exemplářů 2
elektronické formě
–
počet exemplářů 3
hodící se zaškrtněte
Strana 6
2. Autor prohlašuje, že vytvořil samostatnou vlastní tvůrčí činností dílo shora popsané a specifikované. Autor dále prohlašuje, že při zpracovávání díla se sám nedostal do rozporu s autorským zákonem a předpisy souvisejícími a že je dílo dílem původním. 3. Dílo je chráněno jako dílo dle autorského zákona v platném znění. 4. Autor potvrzuje, že listinná a elektronická verze díla je identická. Článek 2 Udělení licenčního oprávnění 1. Autor touto smlouvou poskytuje nabyvateli oprávnění (licenci) k výkonu práva uvedené dílo nevýdělečně užít, archivovat a zpřístupnit ke studijním, výukovým a výzkumným účelům včetně pořizovaní výpisů, opisů a rozmnoženin. 2. Licence je poskytována celosvětově, pro celou dobu trvání autorských a majetkových práv k dílu. 3. Autor souhlasí se zveřejněním díla v databázi přístupné v mezinárodní síti ihned po uzavření této smlouvy 1 rok po uzavření této smlouvy 3 roky po uzavření této smlouvy 5 let po uzavření této smlouvy 10 let po uzavření této smlouvy (z důvodu utajení v něm obsažených informací) 4. Nevýdělečné zveřejňování díla nabyvatelem v souladu s ustanovením § 47b zákona č. 111/ 1998 Sb., v platném znění, nevyžaduje licenci a nabyvatel je k němu povinen a oprávněn ze zákona. Článek 3 Závěrečná ustanovení 1. Smlouva je sepsána ve třech vyhotoveních s platností originálu, přičemž po jednom vyhotovení obdrží autor a nabyvatel, další vyhotovení je vloženo do VŠKP. 2. Vztahy mezi smluvními stranami vzniklé a neupravené touto smlouvou se řídí autorským zákonem, občanským zákoníkem, vysokoškolským zákonem, zákonem o archivnictví, v platném znění a popř. dalšími právními předpisy. 3. Licenční smlouva byla uzavřena na základě svobodné a pravé vůle smluvních stran, s plným porozuměním jejímu textu i důsledkům, nikoliv v tísni a za nápadně nevýhodných podmínek. 4. Licenční smlouva nabývá platnosti a účinnosti dnem jejího podpisu oběma smluvními stranami. V Brně dne: …………………………………….
……………………………………….. Nabyvatel
………………………………………… Autor
Strana 7
ABSTRAKT Práce se zabývá popisem obecných pravidel Booleovy algebry a také popisem dostupných minimalizačních metod, které se často používají v elektrotechnice a automatizaci k sestavení logických řídících obvodů. V návaznosti na teoretickou část byl v programovacím jazyku Delphi vytvořen program pro minimalizaci logických funkcí pomocí Qiune-McCluskeyho algoritmu. Program MLF by měl sloužit pro zjednodušení navrhování logických obvodů.
ABSTRACT This thesis deals with descriptions of general rules of the Boolean algebra and minimization methods. They are commonly used in electrical engineering and automation for design of logical control circuits. In context with theoretical part of this thesis, program MLF for Quine-McCluskey minimization algorithm in programming language Delphi was developed. This MLF program should serve for simplifying of logical circuits design.
KLÍČOVÁ SLOVA Minimalizace, algoritmus, logická funkce, Qiune-McCluskeyho algoritmus, Booleova algebra.
KEYWORDS Minimization, algorithm, logical function, Qiune-McCluskeyho algorithm, Booleans algebra.
Strana 9
Obsah: ZADÁNÍ ZÁVĚREČNÉ PRÁCE
-3-
LICENČNÍ SMLOUVA
-5-
ABSTRAKT
-7-
1.
ÚVOD
- 11 -
2.
BOOLEOVA ALGEBRA
- 13 -
3.
2.1.
Základní matematické principy Booleovy algebry
- 13 -
2.2.
Vyjádření booleovských funkcí
- 14 -
2.3.
Použití Booleovy algebry
- 15 -
POPIS MINIMALIZAČNÍCH METOD 3.1.
Booleova algebra
- 17 -
3.2.
Karnaghuova mapa
- 17 -
3.3.
Quine - McCluskeyho algoritmus
- 17 -
3.4.
Quineův algoritmu pro nalezení všech minimálních implikant
- 17 -
3.4.1.
4.
6.
McCluskeyho úprava Quineova algoritmu
- 18 -
3.5.
Blakeova metoda
- 19 -
3.6.
Porovnání minimalizačních metod
- 19 -
MINIMÁLNÍ DISJUNKTIVNÍ FORMA
- 21 -
Rozšíření Quine-McCluskeyho metody
- 21 -
4.1. 5.
- 17 -
POPIS SOFTWARU MLF
- 23 -
5.1.
Zdrojový kód
- 23 -
5.2.
Grafické rozhraní programu
- 24 -
5.3.
Zadání ÚNDF
- 28 -
5.4.
Zadání pravdivostní tabulky
- 29 -
5.5.
Tvorba inicializačního souboru a následný výpočet více úloh
- 30 -
ZÁVĚR
- 33 -
Strana 11
1.
ÚVOD
Minimalizací Booleových funkcí rozumíme proceduru stanovení jejich nejjednoduššího vyjádření ve tvaru kompozice funkcí libovolně zvolené úplné soustavy S funkcí. Za nejjednodušší vyjádření pokládáme obvykle výraz tvořený minimálním možným počtem kompozic. Takto formulovaná úloha je vždy řešitelná, protože uvažujeme jen konečné funkčně úplné soustavy. Lze totiž postupně vyhodnocovat všechny funkce soustavy S a porovnávat je s minimalizovanou funkcí, pak všechny možné dvojnásobné kompozice funkcí z S, dále všechny možné kompozice trojnásobné atd., až dospějeme ke kompozici rovné uvažované funkci. Je pochopitelné, že tento způsob řešení je velmi těžkopádný. V praxi proto užíváme speciální metody minimalizace funkcí vypracované vždy pro určitou funkčně úplnou soustavu. Nejlépe vypracované jsou metody minimalizace pro soustavu {disjunkce, konjunkce, negace}, spočívající ve vyjádření dané Booleovy funkce s použitím minimálně možného počtu operací [1]. V dalším textu této práce se omezíme jen na vyjádření minimalizované funkce ve tvaru normální disjunktivní formy (označované zkratkou ndf) s co nejmenším možným počtem písmen.
Strana 13
2.
BOOLEOVA ALGEBRA
2.1.
Základní matematické principy Booleovy algebry
Booleova algebra je logická algebra založená na dvouhodnotových veličinách, publikovaná irským matematikem G. Boolem (1815 – 1864) [2]. Jejím základem jsou veličiny nabývající pouze dvou možných hodnot, nejčastěji označovaných jako 0 a 1. V zásadě se při řešení booleovských rovnic používají tři matematické operace rozdělené podle priority v následujícím pořadí: Negace – jedná se o logickou funkci jedné proměnné, jejíž funkční hodnota je vždy opačná než hodnota vstupní proměnné s běžným zápisem . Pravdivostní tabulka negace viz Tab. 1. 1 0
0 1
Tab. 1 Negace – logická funkce jedné proměnné Konjunkce (logický součin) – tvar výrazu je tvořen několika kratšími výrazy, které jsou mezi sebou násobeny, např. . Pravdivostní tabulka konjunkce viz Tab. 2. 0 0 0 1
0 0 1 1
0 1 0 1
Tab. 2 Konjunkce – logická funkce dvou proměnných Disjunkce (logický součet) – tvar výrazu skládající se z několika kratších výrazů spolu sčítaných, např. . Pravdivostní tabulka disjunkce viz Tab. 3. 0 1 1 1
0 0 1 1
0 1 0 1
Tab. 3 Disjunkce – logická funkce dvou proměnných Pro práci s výše popsanými matematickými operacemi se používají následující základní pravidla Booleovy algebry [2]: Komutativní zákony (2.1) Asociativní zákony (2.2) Distributivní zákony (2.3)
Strana 14
2. BOOLEOVA ALGEBRA
Absorpční zákony (2.4) Neutrálnost 0 a 1 (2.5) Agresivnost 0 a 1 (2.6) De Morganovy zákony (2.7) Výše popsaná pravidla nejsou úplná. V Booleově algebře ještě používáme další čtyři pravidla, která budou podrobněji popsána v kapitole 3.1.
2.2.
Vyjádření booleovských funkcí Pro vyjádření booleovských funkcí používáme tyto následující formy zápisu:
Pravdivostní tabulka – do ní zapisujeme všechny možné kombinace hodnot nezávisle proměnných, pro které je funkce definována a jim odpovídající funkční hodnotu. Při zápisu je zvykem psát pořadí kombinací nezávisle proměnných po sobě ve dvojkové soustavě [2]. Příklad pravdivostní tabulky viz Tab. 4. 1 0 1 0
0 0 1 1
0 1 0 1
Tab. 4 Pravdivostní tabulka Algebraický výraz – vyjádření logické funkce jako logický součet logických součinů. V pravdivostní tabulce postupujeme po řádcích a uvažujeme pouze ty, ve kterých funkční proměnná nabývá hodnoty . Každému takovému řádku odpovídá jeden součtový člen, který má tolik činitelů v součinu, kolik je vstupních logických proměnných. Vstupní proměnná, která má v příslušném řádku hodnotu 1 je zastoupena přímo. Ta, která má hodnotu , je zastoupena svojí negací [2]. Příklad algebraického výrazu zadán Tab.4 viz níže: Karnaughova mapa – slouží nejen k vyjádření booleových funkcí, ale také k jejich minimalizaci. Mapa je tabulka obsahující tolik políček, kolik je kombinací proměnných funkce. Funkci s proměnnými vyjadřujeme mapou s políčky. Každé políčko odpovídá jedné z možných kombinací a zapisujeme do něj odpovídající funkční hodnotu. V zásadě rozlišujeme dvě mapy (Karnaughova a Svobodova) podle kódu, kterým přiřazujeme políčka jednotlivým kombinacím. U kódu Karnaughovy mapy se sousední políčka od sebe liší pouze v hodnotě jedné proměnné (používá Greyův kód) [2]. Svobodova mapa využívá binární kód, tzn. sousední políčka se mohou od sebe lišit i více proměnnými, neboť jednotlivá pole jsou ohodnocena číslem v desítkové
2. BOOLEOVA ALGEBRA
soustavě vzestupně od 1 a 2. x4
x2
Strana 15
– . Příklady Karnaughovy a Svobodovy mapy viz Obr.
do
x1
x4
x3
x1
x3 0
1
4
3
2
0
7
6
1 15 1 14
1
1
5
12
13
8
9
1
11
10
Obr. 1 Karnaughova mapa
2.3.
x2
1
1
2
3
4
5
6
7
8
9
110
11
1 13 114
15
12
Obr. 2 Svobodova mapa
Pouţití Booleovy algebry
Booleova algebra se používá převážně v elektrotechnice při vytváření logických obvodů. Výhodou této algebry je využití především pravdivostních tabulek, do kterých lze jednoduchým způsobem zapisovat hodnoty vstupních a výstupních proměnných. Z těchto tabulek dále získáváme úplnou normální formu booleovských rovnic. Ve strojírenství nejvíce využíváme Booleovu algebru v oboru automatizace a regulace, při navrhování regulačních obvodů.
Strana 17
3.
POPIS MINIMALIZAČNÍCH METOD
3.1.
Booleova algebra
Při minimalizaci funkcí pomocí Booleovy algebry se vychází ze čtyř základních pravidel, která jsou [1]: Vyloučený třetí (3.1) Logický rozpor (3.2) Dvojitá negace (3.3) Opakování (3.4) Vyjádření booleovské funkce může být zapsáno v součtovém nebo součinovém tvaru. Pro převod funkce mezi těmito tvary používáme De Morganových zákonů.
3.2.
Karnaghuova mapa
Minimalizace logických funkcí pomocí Karnaughovy mapy je umožněna její základní vlastností a to, že se dvě sousední políčka mapy liší pouze v hodnotě jedné proměnné. Pro získání minimální formy postupujeme tak, že sdružujeme do dvojic, čtveřic, osmic atd. sousední pole mapy, která obsahují jedničku jako funkční hodnotu. Základními pravidly pro minimalizaci logických funkcí pomocí Karnaughovy mapy jsou: všechny jedničky v mapě musí být zakroužkovány, žádnou nesmíme vynechat; každá jednička se může zakroužkovat několikrát, může být současně součástí dvojice, čtveřice, atd.; přednost mají větší seskupení jedniček před menšími; v rámci pravidla, podle kterého žádnou jedničku nesmíme vynechat, se snažíme o co nejmenší počet smyček. Jednotlivé smyčky představují elementární součiny výsledné funkce. Každý součin získáme tak, že vezmeme jednu smyčku z níž zapíšeme pouze ty proměnné, které nemění svoji hodnotu ve sloupcích nebo řádcích, ve kterých smyčka leží [2].
3.3.
Quine - McCluskeyho algoritmus
Tato metoda se stává ze dvou částí. První částí je Quineův algoritmus, jež hledá všechny minimální implikanty dané výchozí úplné normální disjunktivní formy (úndfy). Implikantou funkce nazýváme funkci , jestliže množina bodů, ve kterých funkce nabývá hodnotu „1“, je částí množiny . Množina je množinou všech jedniček a neurčených bodů dané funkce f [3].
3.4.
Quineův algoritmu pro nalezení všech minimálních implikant
Nejdříve danou booleovskou funkci v případě, že stále . Je-li funkcí
vyjádříme v úndfě. To nelze pouze proměnných a je-li její úndfa,
Strana 18
3. POPIS MINIMALIZAČNÍCH METOD
zjistíme, zda neobsahuje všech možných členů, tj. zda-li je vždy Následující algoritmus vede k cíli jen v případě . Sestavíme posloupnost disjunktivních forem , … takto: I.
II.
.
Je-li , již sestrojené, vypustíme opakující se členy, tj. ty, které se liší jen pořadím proměnných a pak postupně uvažujeme všechny možné dvojice elementárních součinů v , které mají délku a které se liší v jediné inverzi, a každý elementární součin, který je společnou částí nějaké takové dvojice, přičteme k , čímž dostaneme ; (tedy najdeme-li v dvojici a , kde – – , pak k přičteme součin , přitom víme, že . Je-li , již sestrojena, vypustíme opakující se členy, tj. ty, které se liší jenom pořadím proměnných, a pak postupně uvažujeme všechny možné dvojice elementárních součinů v , z nichž jeden má délku – a druhý má délku , přičemž ten kratší je částí toho delšího (tj. případně až na pořadí proměnných, kratší vznikne z delšího vypuštěním jednoho výskytu jedné proměnné s inverzí nebo bez inverze), a vždy ten delší součin vypustíme z , čímž dostaneme ; (jde o dvojice a , kde – – ; přitom víme, že pro každou booleovskou konstantu . Jestliže pro nějaký index zjistíme, že v neexistuje žádná dvojice elementárních součinů lišících se v jediné inverzi, jsme hotovi a množina všech minimálních implikantů výrazu je množinou všech součinů v disjunktní formě.
Při praktickém užívání se Quineův algoritmus různě upravuje. Především je třeba si uvědomit, že každý součin, který je členem formy a má délku větší než – , je minimálním implikantem výchozí formy (protože s ním se již nic neděje, ale zůstává obsažen ve všech dalších formách a tedy i ve výsledné formě ). Tedy každou formu , kde , lze rozdělit na dvě části a tak, že do patří všechny elementární součiny z , které mají délku větší než – , a do patří všechny ostatní (ty mají délku – ), takže platí . Zřejmě Quineův algoritmus se týká jenom části , takže , kde v hi* jsou všechny součiny z , které mají délku – – . Avšak každé se dá rozdělit na části pro tak, že do každého dáme právě ty elementární součiny které mají délku – , přičemž klademe v případě, že žádaný součin délky – neexistuje. Tedy platí a zřejmě . Potom je snadno vidět, že , zatímco [4].
3.4.1. McCluskeyho úprava Quineova algoritmu Druhou částí algoritmu je McCluskeyho úprava Quineova algoritmu. Úprava se týká dvou věcí. Jednak se předpokládá, že pořadí jednotlivých proměnných je v každém elementárním součinu pevně stanoveno, takže každý takový součin je jednoznačně určen posloupností jedniček a nul . A dále pak se členy každé formy rozdělí do skupin tak, že v téže skupině jsou ty členy, v nichž se vyskytuje stejný počet proměnných bez inverze. Skupiny se uspořádají tak, že v první jsou členy s největším
3. POPIS MINIMALIZAČNÍCH METOD
Strana 19
počtem výskytu proměnných bez inverze a v další pak je tento počet o jedničku menší atd. Toho se využívá při aplikaci kroku I a II neboť nemusíme porovnávat všechny dvojice členů, ale porovnáváme pouze členy sousedních skupin [4].
3.5.
Blakeova metoda
Elementární součiny každé ortogonální součiny
se nazývají ortogonální , jestliže . Pro a platí zobecněné spojování, neboť . Aplikujeme-li na libovolnou ndf funkce všechny možné operace zobecněného spojování a poté absorpce, obdržíme zkrácenou normální disjunktivní formu (zndf) uvedené funkce [1]. a
Příklad:
tj. zndf
3.6.
Porovnání minimalizačních metod
Minimalizace funkcí lze provádět několika metodami, které jsou popsány výše. Jednotlivé metody se od sebe liší způsobem provedení a vhodností pro jejich použití. První metodou je zjednodušování logických funkcí aplikací pravidel Booleovy algebry až na minimální výraz. Metoda se vyznačuje velkou pracností s nejistým výsledkem, že daný výraz je již opravdu v minimálním tvaru a navíc je nevhodná pro složitější funkce více proměnných. Metoda minimalizace pomocí karnaughových map je oproti předešlé metodě přehlednější, rychlejší a jednodušší. Bohužel však i tato metoda je nevhodná pro zpracování funkcí s více než cca 6 proměnnými (z důvodu, že mapa obsahuje políček, kde je počet proměnných, což např. při sedmi proměnných znamená práci se 128 políčky mapy). Další výše popsanou metodou je Quine-McCluskeyho algoritmus, který je vhodný pro počítačové zpracování. Metoda není omezena počtem proměnných, čímž se významně liší od metod předcházejících. Přesto však musíme upozornit na hranice možností výpočetní techniky, které nejsou neomezené, a brát zřetel na sofistikovanost daného výpočtového softwaru. Poslední zmíněná Blakeova metoda dovoluje na rozdíl od Quine-McCluskeyho metody operovat s libovolnou ndf funkce f a nejen s úndf.
Strana 21
4.
MINIMÁLNÍ DISJUNKTIVNÍ FORMA
V kapitole 3. byly popsány metody minimalizace jejichž výsledkem je nalezení všech součtů minimálních implikant. V obecném případě Quine-McCluskeyho algoritmu tyto výsledky však nemusí vyjadřovat minimální disjunktivní formu, i když žádný z výrazů již nelze dále zjednodušit, některý z nich může být redundantní. V následující podkapitole se tedy budeme věnovat postupu nalezení minimální disjunktivní formy.
4.1.
Rozšíření Quine-McCluskeyho metody
Při hledání minimální disjunktivní formy je třeba si uvědomit, že jestliže z minimální disjunktivní formy vypustíme některý ze součinů, tj. některou z minimálních implikant, jejich součtem uvažovaná forma je, že dostaneme formu, která již danou booleovskou funkci nevyjadřuje. (Jinak by se totiž uvažovaná forma dala zkrátit, což je spor s její minimalitou.) Taková disjunktivní forma, která vyjadřuje danou booleovskou funkci, ale která přestane tuto funkci vyjadřovat když z ní kterýkoliv člen, tj. elementární součin, vypustíme, se nazývá neredukovatelná. Tedy minimální disjunktivní forma je vždy neredukovatelná disjunktivní forma dané funkce. To ovšem znamená, že minimální disjunktivní formy nemusíme hledat vůbec mezi všemi disjunktivními formami, které jsou sestaveny z minimálních implikant, ale pouze mezi těmi, které jsou neredukovatelné. Tedy napřed najít všechny neredukovatelné a pak z nich vybrat ty nejkratší. Ale právě postup nalezení všech neredukovatelných je velice málo účinný (zejména ve složitějších případech). Tento postup se názorněji objasní pomocí tzv. tabulky minimálních implikant, která je sestavena takto: má tolik řádků kolik je minimálních implikant a záhlaví každého řádku je jediná minimální implikanta; má tolik sloupců kolik je elementárních součinů v úndfě dané funkce a záhlaví každého sloupce je jediný elementární součin z úndfy. V průsečíku nějakého řádku a nějakého sloupce uděláme značku, např. *, jestliže minimální implikanta tohoto řádku je částí elementárního součinu onoho sloupce (tj. vznikne z elementárního součinu vypuštěním některých proměnných). Příklad tabulky minimálních implikant viz tab. 5. yzw x w xy x w z z
x zw *
xy w
yz
x z
w
z
* * *
*
x *
* * *
xy
*
* *
* *
Tab. 5 Tabulka minimálních implikant Z Quineova algoritmu ihned plyne, že disjunktivní forma, která je součtem všech minimálních implikant vyjadřuje danou funkci. Některé minimální implikanty lze však vypustit a i pak tato kratší disjunktivní forma vyjadřuje danou funkci. S vypuštěním lze jít jen tak daleko, aby ty hvězdičky, které jsou v řádcích uvažovaných minimálních implikant byly rozloženy do všech sloupců. Jakmile jsou hvězdičky všech uvažovaných minimálních implikant rozloženy jinak, tj. existuje alespoň jeden sloupec, v němž žádná z nich není, pak součet uvažovaných implikant již nevyjadřuje danou funkci. Důsledkem tohoto tvrzení je, že význačnou úlohu hrají ty sloupce tabulky, v nichž je
4. MINIMÁLNÍ DISJUNKTIVNÍ FORMA
Strana 22
jediná hvězdička, protože ta minimální implikanta, v jejímž řádku tato jediná hvězdička je, musí být v každé disjunktivní formě z minimálních implikant, která vyjadřuje danou funkci. Proto se těmto minimálním implikantám říká nezbytné. Může se ovšem stát, že žádná minimální implikanta není nezbytná. Zde je velice důležité, že o nezbytnosti minimální implikanty se lze podle tabulky přesvědčit ihned a snadno. Proto se vždy napřed vyhledají všechny nezbytné implikanty a celá tabulka se zjednoduší tak, že z ní vypustíme všechny řádky nezbytných implikant a všechny sloupce obsahující jejich hvězdičky. Někdy je tato zjednodušená tabulka již tak přehledná, že je přímo vidět jak vybrat zbývající minimální implikanty, abychom dostali minimální disjunktivní formu. Předchozí Tab. 5 vede na zjednodušenou tabulku Tab. 6: x x w x w
w * *
Tab. 6 Zjednodušená tabulka minimálních implikant Z této tabulky je zřejmé, že je třeba přibrat buď jednu nebo druhou minimální implikantu k nezbytným a tím dostat celkem dvě minimální disjunktivní formy: a
[4].
Strana 23
5.
POPIS SOFTWARU MLF
5.1.
Zdrojový kód
Druhou částí bakalářské práce bylo vytvořit ve vyšším programovacím jazyku program pro minimalizaci funkcí pomocí Quine-McCluskeyho algoritmu. Program MLF byl vytvořen v programovacím prostředí Delphi 6. Zdrojový kód obsahuje výkonnou třídu TUNDF, která se stará o vlastní provedení minimalizace. Části kódu vidíte na obr. 3.
Obr. 3 Ukázky částí zdrojového kódu – třída TUNDF
Strana 24
5. POPIS SOFTWARU MLF
Grafické rozhraní programu
5.2.
Ikona pro spuštění programu MLF je zobrazena na obr.4.
Obr. 4 Ikona programu MLF Po spuštění programu se objeví hlavní okno, viz obr.5, které sestává ze čtyř částí: A B C D
Obr. 5 Hlavní okno programu MLF A. B. C. D.
Hlavní nabídka Panel rychlého spuštění Panel formy zadání Plocha pro zobrazení výsledků
5. POPIS SOFTWARU MLF
A.
Strana 25
Hlavní nabídka
Je tvořena čtyřmi podskupinami - Program, Data, Formulář, Zadání. Každá podskupina dále obsahuje příkazy pro obsluhu programu. Program Podskupina zobrazena na obr.6, obsahující následující příkazy: O programu – základní informace o verzi, programátorovi a datu vydání; Konec – příkaz pro ukončení běhu programu (klávesová zkratka Ctrl+Q).
Obr. 6 Podskupina hlavní nabídky Program Data Podskupina zobrazena na obr.7, obsahující následující příkazy: Generovat náhodně – pro zadání vstupních dat úndfou nebo pravdivostní tabulkou vygeneruje náhodné hodnoty elementárních součinů (Ctrl+R); Načíst ze souboru – načte vstupní data hromadného zpracování ze souboru s příponou .ini (Ctrl+O); Uložit do souboru – uloží vybrané výpočty do vybraného souboru (Ctrl+S); Vytvořit soubor – otevře editor inicializačního souboru (Ctrl+N).
Obr. 7 Podskupina hlavní nabídky Data
Strana 26
5. POPIS SOFTWARU MLF
Formulář Podskupina zobrazena na obr.8, obsahující příkazy: Odstranit – odstraní formulář z téže oblasti jako předchozí příkaz (Ctrl+E); Smazat – vymaže uživatelem zadané hodnoty ve formuláři (Ctrl+D).
Obr. 8 Podskupina hlavní nabídky Formulář Zadání Podskupina zobrazena na obr.9, obsahující příkazy: ÚNDF (Ctrl+N); Pravdivostní tabulka (Ctrl+N). Tyto volby mají stejnou funkci jako volby v panelu formy zadání viz obr. 5, popiska C - Panel formy zadání.
Obr. 9 Podskupina hlavní nabídky Zadání
5. POPIS SOFTWARU MLF
B.
Strana 27
Panel rychlého spuštění
Skládá se ze šesti tlačítek, viz obr.10, která slouží pro snadnou manipulaci s programem. Jednotlivá tlačítka mají stejné významy jako položky podskupin Data a Formulář z hlavní nabídky.
Obr. 10 Tlačítka panelu rychlého spuštění
Strana 28
5.3.
5. POPIS SOFTWARU MLF
Zadání ÚNDF
Pro zadání funkce pomocí úndfy si nejprve vybereme první položku na panelu Forma zadání, poté určíme počet vstupních proměnných a klikneme na tlačítko „Pokračuj“ - obr.11.
Obr. 11 Výběr formy zadání počítané rovnice a počtu vstupních proměnných Objeví se okno zadání úndfy, viz obr. 12, kde jsou umístěny ovládací prvky pro zadání jednotlivých elementárních součinů. Označení zaškrtávacího pole nad proměnnou znamená negaci dané proměnné. Pomocí tlačítka „Přidat elementární součin“ přidáme tyto součiny do zadání, které se nám zobrazí v oblasti zobrazení zadání (červeně ohraničená část obr. 12).
Oblast zobrazení zadání Obr. 12 Okno zadání úplné normální disjunktivní formy Po použití tlačítka „Vypočítej“ se vrátíme zpět do hlavního okna programu, viz obr.13, kde se na ploše pro zobrazení výsledků (viz obr.5, D) objeví záložka s názvem „Úloha XX“ v níž je zobrazen výsledek počítané úlohy.
5. POPIS SOFTWARU MLF
Strana 29
Obr. 13 Zobrazení výsledku početní úlohy
5.4.
Zadání pravdivostní tabulky
Po zvolení dané položky z panelu Forma zadání, určení počtu vstupních proměnných a kliknutí na tlačítko „Pokračuj“, se na ploše pro zobrazení výsledků (viz obr.5, D) vygeneruje pravdivostní tabulka se zaškrtávacími poli pro každý řádek (elementární součin) viz obr.14.
Obr. 14 Pravdivostní tabulka
Strana 30
5. POPIS SOFTWARU MLF
Označení zaškrtávacího pole je rovno 1 ve funkční hodnotě elementárního součinu. Po kliknutí na tlačítko „Vypočítej“ je provedena minimalizace funkce a zobrazen výsledek - obr.15.
Obr. 15 Provedení výpočtu a zobrazení výsledku
5.5.
Tvorba inicializačního souboru a následný výpočet více úloh
Po vybrání této nabídky se zobrazí editační okno, viz obr.16, se třemi funkčními tlačítky, v němž je možno zadat více úloh současně. Poté máme buď možnost uložit data do souboru a nebo nechat úlohy spočítat.
Obr. 16 Editační okno inicializačního souboru
5. POPIS SOFTWARU MLF
Strana 31
Požadujeme-li výpočet jednotlivých úloh, budeme dotázáni, zda chceme pokračovat, nebo si předtím přejeme data uložit - obr.17.
Obr. 17 Upozornění na ztrátu neuložených dat Následně je proveden výpočet a na ploše pro zobrazení výsledků (viz obr.5, D) hlavního okna programu zobrazen příslušný počet záložek viz obr.18.
Obr.18 Výsledky jednotlivých úloh z editoru inicializačního souboru
Strana 33
6.
ZÁVĚR
Cílem bakalářské práce bylo popsat metody minimalizace logických funkcí a ve vyšším programovacím jazyce naprogramovat Quine-McCluskeyho algoritmus. Na základě doporučené literatury a internetových zdrojů byla vypracována teoretická část práce zabývající se základními matematickými principy Booleovy algebry. V návaznosti na základní pravidla Booleovy algebry byly popsány následující minimalizační metody: metody Booleovy algebry, Karnaughova mapa, QuineMcCluskeyho algoritmus a Blakeova metoda. Výsledkem porovnání těchto metod bylo konstatování nevhodnosti metod Booleovy algebry a nedokonalost Karnaughových map z důvodu jejich omezení počtem vstupních proměnných, i když využitím map lze dosáhnout minimální disjunktivní formy funkce. Poslední dvě vyjmenované metody: Quine-McCluskyho a Blakeova metoda, jsou nevýhodné v získání pouze zkrácené disjunktivní formy při algoritmickém výpočtu. Výpočet lze dále zjednodušit, avšak pouze využitím tabulky minimálních implikant, tzn. „ruční“ formou výpočtu. Nevýhodou Quine-McCluskeyho algoritmu oproti Blakeově metodě je nutnost zadání úplné normální disjunktivní formy. Po důkladném prostudování Quine-McCluskeyho algoritmu byl na jeho základě vytvořen program MLF, který umožňuje výpočet zkrácené disjunktivní formy z úplné normální disjunktivní formy. Program byl vytvořen v programovacím jazyce Delphi a lze jej využít v oblastech, kde se provádí návrhy logických obvodů a jejich optimalizace. Vývoj programu by měl i nadále pokračovat ve spolupráci s Ústavem automatizace a informatiky VUT v Brně.
Strana 35
SEZNAM POUŢITÉ LITERATURY [1] BOKR, J. Minimalizace Booleových funkcí. 1.vyd. Plzeň : VŠSE, 1971. 35 s. [2] ŠVARC, I. Základy automatizace. 2.vyd. Brno : VUT v Brně, 2002. 101 s. [3] HOLÝ, Pavol. Určovanie skrátenej DNF pomocou Quine-McCluskeyho algoritmu [online]. 2001, 2001 [cit. 2007-04-11]
[4] ČULÍK, K.; SKALICKÁ, M.; VÁŇOVÁ, I. Logika I. 1.vyd. Brno : SNTL, 1968. 82 s.