1.4
Funkce dvou proměnných
V případě dvojice nezávisle proměnných a, b se nabízí celkem
různé kombinace hodnot (s vyloučením neurčitých stavů) a získáme tedy celkem
různých logických funkcí f0 až f15. Opět pro jejich vypsání použijeme tabulkové vyjádření.
Tabulka 2. Pravdivostní tabulky funkcí dvou proměnných.
a | b | f0 | f1 | f2 | f3 | f4 | f5 | f6 | f7 | f8 | f9 | f10 | f11 | f12 | f13 | f14 | f15 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 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 |
1 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 |
1 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 |
Poznámka
V tabulce je patrné, že ke každé logické funkci z její levé poloviny f0 až f7 existuje její negace (opačná funkce) v pravé polovině tabulky mezi funkcemi f8 až f15. Tak například k funkci f0 je opačná (negace) funkce f15, k funkci f3 je negací (opačnou funkcí) funkce f12 atd.
V tabulce 2 lze najít funkce, které již byly v tabulce 1v předchozí kapitole definovány pro jednu proměnnou. Je zde tedy opět nulová funkce
a jednotková funkce
Jsou zde rovněž funkce identity jednotlivých proměnných a jejich negace
,
,
a
. Dále se zde nachází funkce, které nejsou příliš důležité a pro realizaci logických obvodů nejsou významné. Zaměříme se dále na nejdůležitější zbylé funkce:
- Logický součin, tzv. konjunkce, představuje funkce f1. Pro její značení se obvykle používají zápisy:
.
V jazyce VHDL se používá klíčové slovo AND.
Logický součin nabývá hodnoty logická 1 pouze v případě, kdy současně proměnná a i proměnná b nabývají hodnoty logická 1, v ostatních případech je její hodnota logická 0 (pokud uvažujeme funkci dvou proměnných).
- Negovaný logický součin, tzv. NAND (z anglického NOT AND = NAND) bývá v literatuře někdy též označován jako Shefferova funkce [5] a představuje ji funkce f14 v tabulce 2. Negovaný logický součin je negací logického součinu a nabývá vždy přesně opačné hodnoty, než funkce logického součinu. Můžeme ji tedy zapsat jako:
.
V jazyce VHDL se používá klíčové slovo NAND.
Negovaný logický součin nabývá hodnoty logická 0 pouze v případě, kdy současně proměnná a i proměnná b nabývají hodnoty logická 1, pro zbylé kombinace proměnných je její hodnota logická 1 (v případě funkce dvou proměnných).
- Logický součet, tzv. disjunkce, je reprezentována v tabulce 2 pomocí funkce f7. Logický součet nabývá hodnoty logická 1, pokud alespoň jedna nezávisle proměnná a nebo b nabývá hodnoty logická 1, nebo hodnoty logická 1 nabývají obě proměnné současně. Pro zápis logického součtu se nejčastěji používá:
.
V jazyce VHDL se používá klíčové slovo OR.
- Negovaný logický součet, tzv. NOR (z anglického NOT OR = NOR), představuje funkci přesně opačnou (negaci) k funkci logického součtu. V literatuře ji lze najít rovněž pod označením Piercova funkce [2] a v tabulce 2 jí odpovídá funkce f8. Negovaný logický součet nabývá hodnoty logická 1 pouze v případě, že hodnota obou vstupních proměnných je logická 0, v ostatních případech je jeho hodnota logická 0. Zapíšeme ji takto
.
V jazyce VHDL pro ni slouží klíčové slovo NOR.
- Funkce neekvivalence, tzv. „vyloučené nebo“ a často označovaná jako tzv. funkce XOR (z anglického Exclusive OR = XOR) je v tabulce 2 uvedena jako funkce f6. Logické 1 nabývá tato funkce v případě, kdy hodnoty nezávisle proměnných se navzájem liší (odtud neekvivalence). Její pravdivostní tabulka je obdobná funkci logického součtu a liší se od ní pouze v případě, kdy obě nezávisle proměnné nabývají hodnoty logická 1. Zatímco hodnota funkce logický součet je pro tuto kombinaci rovna logické 1, hodnota funkce XOR je rovna logické 0. Znamená to tedy, že obě nezávisle proměnné nemohou současně platit, jedná se tedy o funkci „buď a nebo“ (odtud označení „vyloučené nebo“, je vyloučena platnost obou proměnných současně). Pro její zápis můžeme využít:
.
V jazyce VHDL je pro ni vyhrazeno klíčové slovo XOR.
- Funkce ekvivalence, tzv. XNOR (ze zkratky XNOR = NOT XOR) je negací (opačnou funkcí) funkce XOR a v tabulce 2 jí odpovídá funkce f9. Její hodnota je logická 1 v případě rovnosti hodnot nezávisle proměnných (odtud ekvivalence). Adekvátně k funkci XOR můžeme vyjádřit funkci XNOR jako:
.
A v jazyce VHDL je definována pomocí klíčového slova XNOR.
Poznámka
Jak bylo uvedeno v odstavci výše, pro jednotlivé elementární logické funkce se lze v různé literatuře setkat s různým matematickým značením a symboly. Pro logický součet se nejčastěji používají symboly „
“ a „
“, pro logický součin pak symboly „
“ a „
“.
Souhrn
Pro shrnutí tabulka 3 uvádí pravdivostní tabulky nejdůležitějších elementárních funkcí jedné a dvou proměnných.
Tabulka 3. Pravdivostní tabulky nejdůležitějších elementárních logických funkcí.
a | b | ||||||||
0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 |
0 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 1 | 1 |
1 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 1 |
1 | 1 | 1 | 0 | 1 | 0 | 1 | 0 | 0 | 0 |
Poznámka
Pozor na práci s negací! Je důležité přesně zapsat negovaný výraz. Jak vyplývá z pravdivostní tabulky 3, NEPLATÍ uvedené výrazy:
,
.
Negace logického součinu tedy není totéž, jako logický součin negací jednotlivých proměnných. Stejně tak ani negace logického součtu se nerovná logickému součtu negací jednotlivých proměnných!