Pannon Egyetem Villamosmérnöki és Információs Tanszék Digitális Technika I. (VEMIVI2D) 3. hét - Grafikus minimalizálás. Quine-McCluskey féle számjegyes minimalizálás Előadó: Vörösházi Zsolt voroshazi@vision.vein.hu
Kapcsolódó jegyzet, segédanyag: http://www.virt.vein.hu Oktatás Tantárgyak Digitális Technika I. Fóliák, óravázlatok (.ppt) Feltöltésük folyamatosan
Ismétlés: észrevétel Figyelem: az Arató P. könyv illetve a nemzetközi szakirodalom eltérő módon indexeli a Maxterm-eket KNF-esetén: Arató könyv: m i M k : ahol k=(2 n i) Pl: n=3 esetén m M 6 Y( DNF) = A B C Y( KNF) = A+ B+ C Nemzetközi szakirodalom: m i M i Pl: n=3 esetén m M Y( DNF) = A B C Y( KNF) = A+ B+ C [ ] = =i
Logikai függvények minimalizálása
Függvényminimalizálás általánosan Függvényminimalizálást a szomszédos mintermek megkeresésével, párba válogatásával tehető meg: Szomszédos= van egy log. változó, amely az egyik mintermben ponált, a másikban negált értékével szerepel (a többi változó meg azonos értéken szerepel) A szomszédosság megállapítása után egyszerűsítünk. Minterm implikáns (egyszerűsíthető) prímimplikáns (tovább nem egyszerűsíthető) prímimplikáns: a szomszédos összevonásokat mindaddig folytatni kell, amíg a logikai függvény olyan alakú nem lesz, amelyben egyetlen változó (betű) sem hagyható el anélkül, hogy a logikai függvény ne változna! Ezek a szorzatok a prímimplikánsok. Tehát: a logikai függvény legegyszerűbb DNF alakja a prímimplikánsok összege
Függvényegyszerűsítési eljárások.) Algebrai módszer (Boole algebrai azonosságokkal) 2.) Kifejtési módszer 3.) Grafikus módszer: (Karnaugh tábla, igazság tábla) 4.) Normálformák: DNF: Diszjunktív Normál Forma KNF: Konjunktív Normál Forma 5.) Számjegyes minimalizálás: Quine-McCluskey
.) Algebrai módszer A Boole-algebra azonosságait használjuk fel az egyszerűsítéshez: F(A, B, C) = m + m + m + m // DNF 3 3 3 3 3 5 7 F(A,B,C) = A B C+ A B C+ A B C+ A B C= = AC(B + B) + AC(B + B) = AC + AC = = C(A + A) = C
2.) Kifejtési módszer*: Komplexebb függvények esetén egy adott változó értékét először ponáltnak, majd negáltnak definiáljuk, végül pedig az így kiszámított két logikai kifejezést összeadjuk. Ezáltal leegyszerűsödik a függvényminimalizálási feladat. I.) II.) F(x, x,..., x ) = x F(, x,..., x ) + x F(, x,..., x ) 2 n 2 n 2 n F(x, x 2,..., x n) = x+ F(, x 2,..., x n) x+ F(, x 2,..., x n)
Példa: kifejtési tétel alkalmazása Legyen F függvény a következő (módszer I.): F( A, B, C) = A B C+ A B C+ A B C+ A B C Ha A:= F(, B, C) = B C + BC + BC + BC = BC + BC = C ( B+ B) = C Ha A:= F(, B, C) = B C+ B C+ B C + BC = BC + BC = B ( C+ C) = B Végül összeadjuk a kettőt (egyszerűsített alak): F( A, B, C) = A F(, B, C) + A F(, B, C) = = AC + AB
Példa: kifejtési tétel alkalmazása Legyen F függvény a következő (módszer II): F ( ABC,, ) = ABC + ABC + ABC + ABC Ha A:= F(, B, C) = B C + BC + BC + BC = BC + BC = C ( B+ B) = C Ha A:= F(, B, C) = B C+ B C+ B C + BC = BC + BC = B ( C+ C) = B Végül összeszorozzuk a kettőt (egyszerűsített alak): F( A, B, C) = A F(, B, C) A F(, B, C) + + = = ( A + B) ( A+ C) = ( A+ B) + ( A+ C) = A B + A C
*Arató könyv: 2-szintű elvi kombinációs logikai hálózat (inverter szintet nem számolva!) Az egyszerűsített függvény logikai áramköri realizációja A F( A, B, C) = A C+ A B B F C Inverter szint ÉS kapuk szintje VAGY kapuk szintje
3.) Karnaugh táblák Korai időszakban: logikai elemek hatalmas, nehezen tervezhető, nagy energiát disszipáló eszközökből álltak Logikai kifejezések egyszerűsítése. Ma: HW olcsó elemekből épül fel. Cél: az áramköri minimalizáció (modularitás, egyszerűség) Technológia / tervezési stílusok fejlődtek Glue ragasztó logika: egyszerűsödött egyenlet felírás Nagy áramköri komplexitás, sebesség K-Map / Veitch diagram: grafikus ábrázolási és egyszerűsítési mód, a kanonikus igazságtábla egy újrarendezett formája Bell Labs: 952-54 Edward Veitch, Maurice Karnaugh (több forma is létezik, és fontos a betűk, címkék sorrendje)
Karnaugh tábla felírása igazság táblázatból Igazságtábla mindenegyes sorának kimeneti értékéhez (Y i ) a Karnaugh tábla egy négyzete (cella) feleltethető meg. Pl. n=2 változó esetén lehetséges táblák (peremezési szabályok): sor A B Y Y Y 2 Y2 3 Y3 B A Y Y Y 2 Y 3 Lehetséges könyvbeli jelölés A B Y Y 2 Y Y 3 Általánosan elfogadott jelölés
Karnaugh táblák n=2, 3, 4 változóval még könnyű felírni (>4 változó felett már más technikát érdemes használunk) Pl: n=3 változó esetén lehetséges táblákra: AB B A BC C B C A Y Y 2 Y 6 Y 4 Y Y Y 3 Y 2 C Y Y 3 Y 7 Y 5 A Y 4 Y 5 Y 7 Y 6 Lehetséges könyvbeli jelölés(ek) Általánosan elfogadott jelölés
Karnaugh táblák Pl: n=4 változó esetén lehetséges táblákra: AB CD A CD AB C Y Y 4 Y 2 Y 8 Y Y Y 3 Y 2 Y Y 5 Y 3 Y 9 Y 4 Y 5 Y 7 Y 6 D B Y 3 Y 7 Y 5 Y Y 2 Y 3 Y 5 Y 4 C Y 2 Y 6 Y 4 Y A Y 8 Y 9 Y Y B Lehetséges könyvbeli jelölés(ek) D Általánosan elfogadott jelölés
Karnaugh táblák n= 5 változó esetén D CD C AB Y Y Y 3 Y 2 Y 6 Y 7 Y 5 Y 4 Y 8 Y 9 Y 7 Y Y 4 Y 5 Y 3 Y 2 Y 24 Y 25 Y 27 Y 26 Y 3 Y 3 Y 29 Y 28 B A Y 6 Y 7 Y 9 Y 8 Y 22 Y 23 Y 2 Y 2 E n=6 változó esetén E
Boole függvény ekvivalens ábrázolási módjai Boole-algebrai kifejezés: Y = A B+ A B Igazságtábla: sor A B Y 2 3 Karnaugh tábla: A B
Szomszédosság adjacencia Def: Ha egy Karnaugh táblában két szomszédos (adjacent) cella csak egy változó értékében különbözhet (egységnyi távolság)! Pl. Y3 és = A B C Y7 = A B C BC A C B 3 2 A 4 5 7 6
Egyszerűsítés Karnaugh táblákkal Tömbösítés/Tömörítés szabályai: 2^n (n=,,2..) term vonható be egy tömbbe, Egyetlen term több tömbben is szerepelhet (átlapolódás lehetséges) Egyik tömb, a másikat nem tartalmazhatja teljes mértékben, (redundancia) Mindig a lehető legnagyobb lefedéseket keressük, és haladjunk a legkisebb méretű tömbök/lefedések felé Don t care ( - ) kimeneti függvényértékeket a jobb (optimálisabb) lefedésnek megfelelően kell megválasztani (NTSH) Egymás mellett lévő (adjacens) sorokra és oszlopokra érvényes. A csak egyetlen hurokban lévő -eseket (DNF) megkülönböztetett minterm-nek nevezzük Lényeges prímimplikáns: amely legalább egy megkülönböztetett mintermet helyettesít (DNF)
Példa: Karnaugh táblák egyszerűsítése érvényes érvénytelen BC A C B BC A C B 3 2 3 2 A 4 5 7 6 A 4 5 7 6 Nem összes, de lehetséges egyszerűsítések - érvényes Átlós, és nem 2^n számú -es lefedés (DNF) érvénytelen
Lehetséges módszerek Karnaugh tábla értelmezésére: M: Y( DNF) -esek lefedésével képzett (normál, eddig használt ált. módszer) M2: Y( DNF) -k lefedésével képzett inverz függvény felírás M3: Y( KNF) -k lefedésével képzett M4: Y( KNF) -esek lefedésével képzett inverz függvény felírás
3.) Karnaugh - grafikus módszer: példa DNF szerint Karnaugh/Veitch diagram Példa: Tömbösítés szabályainak betartása! C BC A B 3 2 A 4 5 7 6 F = BC + B C = C ( B+ B) C Lehetséges, de nem tömör összevonások Legtömörebb összevonás
3.2.) Karnaugh - grafikus módszer: példa KNF szerint Karnaugh/Veitch diagram Példa: Tömbösítés szabályainak betartása! C BC A B 3 2 A 4 5 7 6 F = ( B+ C) ( B+ C) = BB+ BC+ BC+ CC C Lehetséges, de nem tömör összevonások Legtömörebb összevonás
Példa : 7-szegmenses dekóder áramkör tervezése (DNF szerint) Számjegyek (-9) és spec. hexadecimális karakterek megjelenítésére ( ) nemzetközi elnevezései a szegmenseknek: (a, b, c, d, e, f, g) 6 érték (4 biten ábrázolható): F(X,Y,Z,W) a f e g d b c
Példa: 7-szegmenses dekóder tervezése (folyt) Igazságtábla (f szegmensre) Karnaugh tábla: TSH! ZW XY X Kapott f kimeneti függvény: W Z 3 2 4 5 7 6 2 3 5 4 8 9 Y sor X Y Z W f 2 3 4 5 6 7 8 9 2 3 4 5 f ( X, Y, Z, W) = Z W + X Y + Y W + X Z + X Y Z
Példa : A 7-szegmenses dekóder logikai áramköri realizációja (folyt) X Y Z f W f ( X, Y, Z, W) = Z W + X Y + Y W + X Z + X Y Z
Példa 2: 7-szegmenses dekóder áramkör tervezése Csak számjegyeket (-9) megjelenítésére BCD: Binárisan kódolt decimális számokra Nemzetközi elnevezései a szegmenseknek: (a, b, c, d, e, f, g) érték (4 biten ábrázolható): F(A,B,C,D) NTSH: használjunk Nem Teljesen Specifikált Hálózatot (igazságtábla kimeneti függvényértékeiben lehetnek don t care - nem definiált állapotok) Feladat: n= 4 n 2 F = (,,3, 4,5, 6, 7,8,9), (,,2,3,4,5) i= f e a g d b c
Példa 2: 7-szegmenses dekóder tervezése (folyt) Igazságtábla (c szegmensre) Karnaugh tábla: NTSH! CD AB A - / Kapott c kimeneti függvény: D C 3 2 4 5 7 6 - / - / - / - / 2 3 5 4 - / 8 9 B sor A B C D c 2 3 4 5 6 7 8 9 2 3 4 5 cabcd (,,, ) = A+ B+ C+ D
Példa 2: 7-szegmenses dekóder logikai áramköri realizációja (BCD) A B c C D cabcd (,,, ) = A+ B+ C+ D
3.3.) Normálformák (NF) + Karnaug táblák Ismétlés: DNF: Diszjunktív Normál Forma mintermek (szorzattermek) VAGY kapcsolata KNF: Konjunktív Normál Forma Maxtermek (összegtermek) ÉS kapcsolata
Példa : Diszjunktív Normál Forma Legyen: n= 4 Karnaugh tábla: n 2 F = (,,3, 7,,2,4,5) i= CD AB C TSH! 3 2 Kapott F függvény: A D 4 5 7 6 2 3 5 4 8 9 F(A,B,C,D) = C D + A B C + A B D B
Példa 2: Konjunktív Normál Forma Legyen: n= 4 Karnaugh tábla: n 2 F = (2, 4,5, 6,8,9,,3) i= CD AB C TSH! 3 2 Kapott F függvény: A 4 5 7 6 2 3 5 4 8 9 B F(A,B,C,D) = (A + C + D) (A + B + C) (A + C + D) (A + B + D) D
Példa: NTSH Legyen: n= 4 Karnaugh tábla: n 2 F = (,, 2,3,8,9,,,3,4) + (4,5) i= CD AB C NTSH! 3 2 Kapott F d függvény / F k tagadott függvények: F = B+ CD+ ACD d F = (A+ B) (B+ C+ D) (B+ C+ D) k A - / - / D 4 5 7 6 2 3 5 4 8 9 F d itt egyszerűbb alakot és kapcsolást realizál B
4.) Számjegyes minimalizálás (Quine-McCluskey módszer) Ha az egyszerűsítés során a mintermeket a Karnaugh táblás ábrázolás helyett az alsó indexekkel helyettesítünk és segítségükkel számolunk, akkor olyan minimalizáló eljáráshoz juthatunk, amelynek végrehajthatósága nem függ a logikai változók számától. Index: decimális szám (bináris változókombinációk decimális értéke) segítségével: Szomszédosság vizsgálat (3 feltétel!), majd Prímimplikáns képzés
A.) Szomszédosság: 2^n hatvány (szükséges, de nem elégséges feltétel!) A.) Két term szomszédos, ha két m i minterm különbsége 2 egész hatványa (2^n) 4 ( 6) m6 = ABCD ACD 4 - (-2) m2 = ABCD (4=2^2) szomszédosak ( 4) - (-2) (2=2^) m m 4 4 4 2 = ABCD nem szomszédosak = ABCD 2^n feltétel teljesül, de
B.) Szomszédosság: Bináris súly (szükséges, de nem elégséges feltétel!) Ha két minterm szomszédos, akkor az egyiknek megfelelő bináris szám eggyel és csakis eggyel több - est tartalmaz, mint a másiké. ( 6) - (-2) (4=2^2) Tehát ha a mintermek szomszédosak, akkor a bináris súlyaik különbsége. Megj: előző m 4 m 2 mintermek esetén pont ez nem teljesült! Azonban a szomszédosság A.) és B.) teljesülése esetén sem egyértelmű. ( 9) - (-7) (2=2^) m m 4 6 4 2 = ABCD ACD = ABCD m m 4 9 4 7 = ABCD = ABCD -esek száma eggyel nagyobb Nem szomszédosak!
C.) Szomszédosság: nagyobb bináris súly decimális indexe is nagyobb (szükséges, de nem elégséges feltétel!) A.)-ban az m 6 m 2 feltételre ez igaz. ( 6) # =2 - (-2) # = (4=2^2) m m 4 6 4 2 = ABCD = ABCD ACD Azonban a B.) pontban m 9 m 7 feltételre ez az állítás hamis. 4 ( 9) # =2 m9 = ABCD 4 - (-7) # =3 m7 = ABCD (2=2^)
Szomszédosság: 3 feltétel teljesülése Bizonyítható, hogy az A.), B.) és C.) (szükséges, de nem elégséges) feltételek együttes teljesülése esetén lesz pontosan a két minterm szomszédos: A.) indexek különbsége 2^n hatványa B.) bináris súlyuk különbsége C.) a nagyobb bináris súlyú minterm decimális indexe is nagyobb.
Prímimplikáns képzés lépései I. oszlop: felsorolt decimális minterm indexek csoportosítása bináris súlyonként a páronkénti szomszédosság vizsgálathoz (a különböző bin. súlyú csoportokat aláhúzással választjuk el.) + Kevesebb összehasonlítás a párba válogatáskor II. oszlop: a párba válogatást úgy végezhetjük el, hogy a bináris súly csoportok minden egyes számjegyét kivonjuk a következő egyel nagyobb súlyú csoport minden egyes számjegyéből. Ha találunk két olyan számot, amelyek különbsége 2^n oda pipát teszünk. (mintermet már tartalmazza a pár). Összevont számpár elemeit növekvő sorrendben írjuk fel, (zárójelben a decimális különbségüket). A decimális különbség 2-es alapú logaritmusa jelöli ki az elhagyható változó helyiértékét III. illetve további oszlop(ok): kialakítását a II. oszlopéval azonosan kell végezni! minden elemet összehasonlítunk a következő csoport minden elemével Két egyszerűsített szorzat akkor lesz szomszédos, ha a decimális különbségeik páronként megegyeznek. Végül: a nem egyszerűsíthető / primimplikáns elemeket betűkkel jelöljük meg prímimplikáns tábla és/vagy segédfüggvény felírása
Egyszerűsített alak lehetséges megadási módjai Prímimplikáns tábla: ha ránézésre megállapíthatók melyek a lényeges prímimplikánsok (melyek az összes mintermet lefedik) Segédfüggvény: ha ránézésre nem állapítható meg a prímimplikáns tábla alapján, vagy többváltozós bonyolult függvényt kell minimalizálni. (NTSH-nál az összes lehetséges opitmális megoldást megadja.)
Prímimplikáns tábla felírása Az optimális lefedést decimális indexek alapján kell elvégezni prímimplikáns tábla segítségével: az egyes mintermeket mely (megbetűzött ) prímimplikánsok tartalmazzák, vagy fedik le. Táblázat kitöltésekor egy-egy prímimplikánssal kijelölt sornak abba a sorába cellájába kell * -ot tenni, amelyhez tartozó mintermet az illető prímimplikáns tartalmazza lényeges prímimplikáns(ok) (nem elhagyható(k)) van olyan minterm, amely oszlopa alatt csak egyetlen x szerepel. Példa: Lényeges prímimplikáns ok sor minterm 3 7 2 4 5 Prímimplik. * a x x b x x * c x x d x x * e x x x x
Segédfüggvény Bonyolultabb (sokváltozós) prímimplikáns táblázatok esetén nehéz lehet felírni (vagy ránézésre nem állapítható meg) a legegyszerűbb végleges alak, tehát nem állapíthatóak meg egyértelműen mely lényeges pímimplikánsok szerepelnek a függvényben. Ekkor: Segédfüggvényt lehet használni a felíráshoz, ahol S= a prímimplikánsok ÉS kapcsolatát kell képezni (prímimplikáns tábla oszlopában lévő prímimplikáns tagok VAGY kapcsolatban vannak). Beszorzás után meg kell keresni a legkevesebb tényezőt tartalmazó szorzatot (azaz a betűvel jelölt prímimplikáns tago(ka)t) az S segédfüggvényben, és ez(ek) segítségével kell felírni az egyszerűsítendő függvény DNF alakját. Végül azokat a (lehető legkevesebb számú) prímimplikánsokat kell VAGY kapcsolatba hozni a legegyszerűbb DNF alakban, amelyeknek megfelelő változók ebben a kapott szorzatban szerepelnek (hiszen ezek együttesen jelentik S= -et). A lényeges prímimplikánsok logikai összege a logikai függvényben szereplő összes mintermet lefedi, helyettesíti.
Quine-McCluskey módszer Szomszédosság szükséges feltételei: Decimális indexek különbsége 2^n kell legyen (szükséges, de nem elégséges feltétel!) Pl: i: 6-2=4 (szomszédos), de i:-6=4 (nem szomszédos) Bináris súlyuk különbsége =. (Hamming távolság) Pl: (7) v. (9) (3) (7) jó x xxx rossz (szükséges, de nem elégséges feltétel!) A nagyobb decimális indexűnek kell nagyobb bináris súllyal szerepelnie! (szükséges, de nem elégséges feltétel!) Y Y 4 Y Y 5 Y 2 Y 3 Y 8 Y 9 Y 3 Y 7 Y 2 Y 6 Y 5 Y 4 Y Y
Példa: Számjegyes minimalizálásra (Quine-McCluskey módszer) Oldjuk meg a következő feladatot a Quine- McCluskey módszerrel Ha adott az F függvény DNF alakban: n= 4 n 2 F = (,,3, 7,,2,4,5) i= Karnaugh tábla: csak szemléltetés végett TSH! CD AB A D C 3 2 4 5 7 6 2 3 5 4 8 9 B
Számjegyes minimalizálás Quine-McCluskey módszer I.lépés I. oszlop: Csoportosítás bináris súlyuk szerint: ahol a kimeneti értékük -s volt. Minterm Bináris alak [# bináris súly] [# bináris súly] 3 [#2 bináris súly] 2 7 [#3 bináris súly] 4 5 [#4 bináris súly] bináris súly szerinti Csoportképzések, vonallal elválasztva
Számjegyes minimalizálás Quine-McCluskey módszer II.lépés II. Összes létező szomszédos kételemű lefedő tömb (hurok) összevonása (Karnaugh tábla csak szemléltetés végett) Minterm, (),3 (2) 3,7 (4) 3, (8) 2,4 (2) 7,5 (8),5 (4) 4,5 () II. oszlop Decimális különbség CD AB A D C 3 2 4 5 7 6 2 3 5 4 8 9 B
Számjegyes minimalizálás Quine-McCluskey módszer III.lépés III. Összes létező szomszédos kettesekből képzett négyelemű lefedő tömb összevonása Minterm (Karnaugh tábla csak szemléltetés végett), () a,3 (2) b III. oszlop 3,7 (4) 3, (8) 2,4 (2) c 3,7,,5 (4,8) 7,5 (8),5 (4) 4,5 () Decimális különbség d Négyes Összevonás e prímimplikáns betűzések CD AB A D C 3 2 4 5 7 6 2 3 5 4 8 9 B
* : ahol egy adott mintermhez tartozó oszlopban csak egy x van, az a sor jelöli a lényeges prímimplikánst (ahol az implikáns tovább már nem egyszerűsíthető!). Az a sor nem elhagyható! Számjegyes minimalizálás Quine-McCluskey módszer IV.lépés IV. Prímimplikáns tábla felírása a megmaradt összevonásokkal (III. lépés alapján) sor minterm 3 7 2 4 5 Prímimplik. * a, () x x b,3 (2) x x * c 2,4 (2) x x d 4,5 () x x * e 3,7,,5 (4,8) x x x x
Számjegyes minimalizálás Quine-McCluskey módszer V.lépés V. Lényeges prímimplikánsokból képzett kimeneti függvény megadása (IV. lépés alapján): (,): a (2,4): c (3,7,,5): e A mintermen belüli egyszerre / tagok kiesnek! Tehát a kimeneti minimalizált F függvény a következő: F= + + F= A B C+ A B D+ C D
Prímimplikáns tábla alapján a segédfüggvény (S) felírása: S = pontosan akkor, ha (m lefedéséhez) a prímplikáns ÉS, (m lefedéséhez) a VAGY b prímimplikáns ÉS, (m 3 lefedéséhez) b VAGY e prímimplikáns ÉS, (m 7 lefedéséhez) e prímimplikáns ÉS, (m lefedéséhez) e prímimplikáns ÉS, (m 2 lefedéséhez) c prímimplikáns ÉS, (m 4 lefedéséhez) c VAGY d prímimplikáns ÉS, (m 5 lefedéséhez) d VAGY e prímimplikáns. s= a(a + b)(b + e)eec(c + d)(d + e) =
Segédfüggvény felírása Ebben a feladatban ránézésre megállapítható volt, mint a segédfüggvénnyel felírt alakban: VAGY kapcsolat a DNF alakban Legegyszerűbb alak a prímimplikánsból lefedi a tagot s= a(a + b)(b + e)eec(c + d)(d + e) = = abecd + aecd + abec + aec aec F = a + c + e = ABC + ABD + CD Beszorzás elvégzése Legegyszerűbb DNF alak (Ugyanazt kaptuk itt, mint a prímimplikáns tábla alapján.)
Quine-McCluskey: NTSH hálózatok esetén Közömbös dont care függvényértékek megadásakor az összevonásoknál I.-II.-III. stb. oszlopok felírásánál a dont care értékeket nek tekintjük, továbbá a közömbös mintermeket nem kell figyelembe venni a prímimplikáns tábla felírásakor (hiszen azok lefedéséről nem kell gondoskodnunk) Végül, legtöbb esetben az S segédfüggvény felírása ad jó megoldást eredményül