Kapitola3
Převody forem funkcí pomocí Karnaughových map
Souhrn
V předešlém textu „Úvod do logických funkcí a logických obvodů“ jsme si vysvětlili v rámci kapitoly týkající se algebraického vyjádření logických funkcí, že rozlišujeme dva základní typy algebraického zápisu logické funkce – součtovou (disjunktní) a součinovou (konjunktní) formu funkce. Také jsme se přesvědčili, že každou logickou funkci můžeme vždy vyjádřit pomocí obou forem a to buď jako součet součinů (disjunktní forma), nebo jako součin součtů (konjunktní forma). V dané kapitole jsme si dále uvedli, že pro převod forem lze použít zákony Booleovy algebry a převod formy z disjunktní na konjunktní či naopak provést algebraicky. Tento způsob je však poměrně pracný a není navíc zaručeno, že převodem získáme opačnou formu v minimální podobě (záleží na pořadí aplikace zákonů a úprav). Proto si v této kapitole představíme způsob převodu forem funkce za pomoci Karnaughových map.
Definice
Při převodu forem, disjunktní na konjunktní a naopak, pomocí Karnaughovy mapy postupujeme v zásadě opačně, než při minimalizaci logické funkce. Ze zadané formy funkce vyplníme do mapy smyčky a příslušné funkční hodnoty, ze kterých daná forma původně vznikla, a ze zbývajících políček v mapě pomocí smyček pak získáme formu opačnou.
Při převodu forem funkcí neuvažujeme neurčité stavy, uvažujeme hodnoty funkce pouze logická 1 a logická 0. Ze zadaného algebraického tvaru (ať už disjunktního nebo konjunktního) totiž nelze poznat, zda daný výraz vznikl z nějakého neurčitého stavu nebo nikoliv.
3.1.1
Převod formy z disjunktní na konjunktní
Nejprve se podíváme na případ, kdy k funkci zadané pomocí disjunktní formy (součtová) máme nalézt její konjunktní (součinovou) formu.
Souhrn
Postup převodu z disjunktní na konjunktní formu dané funkce f můžeme shrnout:
- Postupně pro každý zadaný součinový term (implikant funkce) nalezneme v mapě smyčku z políček, ze kterých vznikl. Tato políčka se nacházejí v průsečíku oblastí pokrytých proměnnými obsaženými v daném implikantu. Z předchozího poznatku vyplývá, že počet políček této smyčky p odpovídá:
,
kde p je počet políček hledané smyčky, n je počet všech nezávisle proměnných v mapě a x je počet nezávisle proměnných obsažených v daném implikantu.
- Do políček takto nalezené smyčky vepíšeme hodnotu logická 1 (neurčité stavy neuvažujeme, jak jsme si již vysvětlili výše). Postupně tímto způsobem do mapy vyplníme hodnotu logická 1 pro všechny zadané implikanty a jim odpovídající smyčky v mapě. Smyčky v mapě se mohou samozřejmě překrývat, proto pokud se na daném políčku již hodnota logická 1 nachází, další do ní nezapisujeme.
- Po vyplnění všech logických 1 do mapy na základě všech zadaných implikantů disjunktní formy vyplníme hodnotu logická 0 na všechna zbylá prázdná políčka v mapě.
- Dále postupujeme stejným způsobem, jako když hledáme MNKF formu funkce. Tzn., že vytvoříme smyčky z nulových bodů, zapíšeme jim odpovídající součinové termy, pokryjeme všechny nulové body v mapě a zapíšeme hledaný konjunktní tvar jako negaci logického součtu všech součinových termů pro jednotlivé smyčky.
- Tím získáme hledaný konjunktní tvar disjunktně zadané funkce f (pokud vytvoříme co nejmenší počet smyček z nulových bodů a tyto smyčky budou co největší, získáme přímo MNKF, jinak dostaneme obecný neminimální konjunktní tvar funkce f).
Vyzkoušejme uvedený postup na následujícím příkladu.
Příklad
Příklad:
Převeďte zadaný disjunktní tvar funkce f 4 nezávisle proměnných na konjunktní a určete přímo MNKF zadané funkce:
Zobrazit řešení
Řešení
Řešení:
Budeme postupovat po jednotlivých krocích.
- Nakreslíme prázdnou Karnaughovu mapu 4 proměnných, viz obrázek 14.
+
Obr. 14. Prázdná Karnaughova mapa pro 4 proměnné k řešení zadaného příkladu
- Postupně do mapy vyplníme logické 1 do políček odpovídajících smyčkám vzniklým z jednotlivých termů.
- Na zbylá prázdná políčka nyní doplníme hodnotu logická 0.
- Pokryjeme nulové body zadané funkce f v mapě pomocí smyček tak, abychom získali MNKF formu (postup stejný jako při minimalizaci a hledání MNKF). Výsledkem tak bude mapa s vyznačenými smyčkami na obrázku 15.
+
Obr. 15. Karnaughova mapa s vyplněnými jednotkovými i nulovými body a vyznačenými smyčkami pro hledání MNKF
- Nyní již jen standardně zapíšeme součinové vyjádření pro každou smyčku z nulových bodů a výslednou MNKF formu získáme jako negaci jejich logických součtů:
Další příklad na převod formy funkce z disjunktní na konjunktní si zkusíme pro 5 nezávisle proměnných.
Příklad
Příklad:
Pro funkci f pěti nezávisle proměnných zadanou v disjunktním tvaru nalezněte její MNKF formu. Disjunktní forma funkce f je zadána:
Zobrazit řešení
Řešení
Řešení:
Pro funkci pěti proměnných nakreslíme její příslušnou mapu. Postupujeme pomocí stejných kroků, jako v příkladu výše, tedy pro každý zadaný součinový implikant nalezneme v mapě příslušnou smyčku a vyplníme ji logickými 1. Po vyplnění všech smyček (implikantů disjunktní formy v mapě) doplníme na zbývající políčka hodnoty logická 0, vyznačíme smyčky přes tyto nulové body a získáme výslednou MNKF. Postup řešení a výsledek zobrazuje následující animace 2.
Animace 2. Řešení příkladu určení MNKF funkce f pěti proměnných zadané v disjunktní formě
Konečné řešení vyplněné Karnaughovy mapy a určení MNKF zadané funkce f je uvedeno na obrázku 16.
+
Obr. 16. Výsledná Karnaughova mapa s vyplněnými jednotkovými i nulovými body a vyznačenými smyčkami pro hledání MNKF z příkladu
Řešení MNKF zadané funkce je tedy:
3.1.2
Převod formy z konjunktní na disjunktní
Nyní se naopak zaměříme na druhý případ, kdy je úkolem k zadané konjunktní formě funkce nalézt její disjunktní formu.
Souhrn
Postup převodu z konjunktní na disjunktní formu dané funkce f je v zásadě značně obdobný, jako předchozí směr převodu, avšak s jedním podstatným rozdílem (viz dále). Jednotlivé kroky převodu tedy můžeme stručně popsat:
- Zadaný konjunktní tvar funkce f je potřeba nejprve znegovat. Upravíme výraz pomocí zákonů o negaci logického součtu a součinu. Tímto krokem získáme součinové implikanty představující smyčky vzniklé z nulových bodů funkce f.
- Další postup je v zásadě totožný jako v případě předchozího opačného směru převodu. Postupně opět pro každý zadaný součinový term nalezneme v mapě smyčku z políček, ze kterých vznikl. Políčka se nachází v průsečíku oblastí pokrytí jednotlivými proměnnými obsaženými v daném implikantu. Počet políček p opět odpovídá předchozí úvaze v závislosti na celkovém počtu proměnných v mapě (n) a na počtu proměnných obsažených v daném implikantu (x).
- Do políček takto nalezené smyčky vepíšeme hodnotu logická 0 (opět neuvažujeme neurčité stavy). Postupně vyplníme do mapy hodnotu logická 0 pro všechny zadané implikanty a jim odpovídající smyčky v mapě.
- Po vyplnění všech logických 0 do mapy na základě všech zadaných implikantů negace konjunktní formy vyplníme hodnotu logická 1 na všechna zbylá prázdná políčka v mapě.
- Dále postupujeme stejným způsobem, jako když hledáme MNDF formu funkce. Tzn., že vytvoříme smyčky z jednotkových bodů (pokryjeme všechny jednotkové body), zapíšeme jim odpovídající součinové termy a zapíšeme hledaný disjunktní tvar jako logický součet všech součinových termů pro jednotlivé smyčky.
- Tím získáme hledaný disjunktní tvar konjunktně zadané funkce f (opět můžeme získat rovnou MNDF formu funkce nebo jiný obecný neminimální disjunktní tvar funkce f).
Pro ověření správnosti postupu a pro jeho ilustraci uvedeme dva následující příklady.
Příklad
Příklad:
Zadaný konjunktní tvar funkce f čtyř proměnných převeďte na MNDF formu funkce f. Zadaný konjunktní tvar je následující:
Zobrazit řešení
Řešení
Řešení:
Budeme postupovat po jednotlivých krocích dle návodu uvedeného výše.
- Opět nakreslíme nejprve prázdnou Karnaughovu mapu 4 proměnných, viz obrázek 17.
+
Obr. 17. Prázdná Karnaughova mapa pro 4 proměnné k řešení zadaného příkladu
- Provedeme nyní negaci dané konjunktní formy a upravíme ji pomocí zákonů o negaci logického součtu a součinu. Tím získáme součinové termy (implikanty) pro smyčky v mapě vzniklé z nulových bodů funkce:
- Postupně do mapy vyplníme logické 0 do políček odpovídajících smyčkám vzniklým z jednotlivých termů.
- Na zbylá prázdná políčka nyní doplníme hodnotu logická 1.
- Pokryjeme jednotkové body zadané funkce f v mapě pomocí smyček tak, abychom získali MNDF formu, výslednou mapu se smyčkami ilustruje obrázek 18.
+
Obr. 18. Řešení smyček z jednotkových bodů v mapě při převodu ze zadané konjunktní formy funkce do disjunktní formy (MNDF)
- Zapíšeme nyní řešení MNDF formy funkce jako logický součet jednotlivých součinových termů:
Další příklad převodu z konjunktní formy funkce na disjunktní tvar si spočítáme pro 5 nezávisle proměnných.
Příklad
Příklad:
Zadanou konjunktní formu funkce f pěti proměnných převeďte pomocí Karnaughovy mapy na disjunktní formu, nalezněte MNDF formu funkce. Konjunktní forma funkce je dána:
Zobrazit řešení
Řešení
Řešení:
Jedná se o funkci 5 proměnných, použijeme tedy Karnaughovu mapu s 32 políčky. Postup bude pak stejný jako v předchozím příkladu. Nejprve nakreslíme prázdnou Karnaughovu mapu pro 5 proměnných. Poté znegujeme zadanou konjunktní formu funkce, abychom získali disjunktní vyjádření pro nulové body funkce. Z těchto disjunktních termů vyplníme do mapy smyčky a v nich nulové body funkce. Do zbylých prázdných políček mapy vyplníme logické 1, vytvoříme smyčky z jednotkových bodů a získáme MNDF formu funkce.
Jednotlivé kroky a výsledné řešení představuje animace 3.
Animace 3. Řešení příkladu určení MNDF funkce f pěti proměnných zadané pomocí konjunktní formy
Konečné řešení vyplněné Karnaughovy mapy a určení MNKF zadané funkce f je uvedeno na obrázku 19.
+
Obr. 19. Řešení smyček v mapě pro nalezení MNDF formy z příkladu