Digital Design IE24 F4 Karnaugh-diagrammet, två- och fler-nivå minimering william@kth.se
IE24 Digital Design F F3 F2 F4 Ö Booles algebra, Grindar MOS-teknologi, minimering F5 F6 Ö2 Aritmetik Ö3 KK LAB Kombinatoriska kretsar F7 F8 Ö4 F9 Ö5 Multipleor KK2 LAB2 Låskretsar, vippor, FSM F F Ö6 KK3 LAB3 FSM, VHDL introduktion F2 Ö7 F3 Asynkron FSM Ö8 F4 tentamen Minnen Föreläsningar och övningar bygger på varandra! Ta alltid igen det Du missat! Läs på i förväg delta i undervisningen arbeta igenom materialet efteråt!
Detta har hänt i kursen Talsystem: Decimala, headecimala, oktala, binära (75,5) = ( AE.8) = (256.4) = (.) 6 8 2 AND OR NOT XOR XNOR Sanningstabell, mintermer Matermer PS-form SP-form demorgans lag Bubbelgrindar Fullständig logik NAND NOR CMOS grindar, standardkretsar
Mintermer OR f 2 3 En minterm är en produktterm som innehåller alla variabler och som anger den kombination av :or och :or som tillsammans gör att termen antar värdet. SP-form med tre mintermer. f = m + (,2,3) = +
Minimering med boolesk algebra,2,3) ( m f + + = = 3 2 f OR Förenkling med boolesk algebra ) ( ) ( ) ( ) ( vsh + = = + + = = + + = = + + = = + + = = + + = Som väntat!
Matermer OR f 2 3 En materm är en summafaktor som innehåller alla variabler och som anger den kombination av :or och :or som tillsammans gör att faktorn antar värdet. f = M ( ) = + Denna gång fick vi det enkla uttrycket med en materm direkt!
OR Venn-diagram Alla mintermer OR, några av mintermerna I ett Venn-diagram kan man se att en funktion kan uttryckas på en mängd olika sätt, men det är inte lätt att se vad som är optimalt. En annan fråga är också hur man kan rita Venn-diagram för mer än tre variabler???
Grafisk minimeringsmetod 3 2 f OR m m m 2 m 3 3 2 ) ( m m = + = = + = + 3 ) ( m m = + = = + = + f + =
Grafisk minimeringsmetod OR f 2 3 f = + Gör hoptagningar av par av rutor med :or (horisontellt eller vertikalt), behåll de variabler i produktermerna som är gemensamma.
Grindfunktioner på grafisk form AND OR XOR NAND NOR XNOR + + { } { dm} + dm + +
3D boolesk talrymd Kubens hörn är kodade med Gray-kod. För hörn som är grannar är det bara skillnad i en variabel.
ÖH 3.4 kubrepresentation 2 2 2 2 2 2 ) 2,3,4,6 (, ),, ( m f + + + + = = = Så här representerar man en funktion av tre variabler, som en 3D kub med Graykodade hörn.
ÖH 3.4 minimering med kub 2 2 En yta representeras av en variabel, en sida av en produktterm med två variabler, och ett hörn en minterm med tre variabler. Kub-metoden kan generaliseras till Hyperkuber med godtyckligt antal variabler.
Hyperkuber Ett hörn är en -dimension subspace, en sida kallas för en -dimension subspace, en yta kallas för en 2-dimension subspace, en kub kallas för en 3-dimension subspace Det finns minimeringsmetoder för hyperkuber, och de går att tillämpa för valfritt antal variabler! Metoderna med hyperkuber är lämpade för datoralgoritmer.
Graykoden är en speglad binärkod Man kan lätt ta fram den Graykod med ett godtyckligt antal bitar som behövs för att numrera hyperhörnen i hyperkuber med!
Graykoden är en speglad binärkod Man kan lätt ta fram den Graykod med ett godtyckligt antal bitar som behövs för att numrera hyperhörnen i hyperkuber med!
Graykoden är en speglad binärkod Man kan lätt ta fram den Graykod med ett godtyckligt antal bitar som behövs för att numrera hyperhörnen i hyperkuber med!
Graykoden är en speglad binärkod Man kan lätt ta fram den Graykod med ett godtyckligt antal bitar som behövs för att numrera hyperhörnen i hyperkuber med!
Graykoden är en speglad binärkod Man kan lätt ta fram den Graykod med ett godtyckligt antal bitar som behövs för att numrera hyperhörnen i hyperkuber med!
Graykoden är en speglad binärkod Man kan lätt ta fram den Graykod med ett godtyckligt antal bitar som behövs för att numrera hyperhörnen i hyperkuber med!
Graykoden är en speglad binärkod Man kan lätt ta fram den Graykod med ett godtyckligt antal bitar som behövs för att numrera hyperhörnen i hyperkuber med!
Graykoden är en speglad binärkod Man kan lätt ta fram den Graykod med ett godtyckligt antal bitar som behövs för att numrera hyperhörnen i hyperkuber med!
Graykoden är en speglad binärkod Man kan lätt ta fram den Graykod med ett godtyckligt antal bitar som behövs för att numrera hyperhörnen i hyperkuber med!
Graykoden är en speglad binärkod Man kan lätt ta fram den Graykod med ett godtyckligt antal bitar som behövs för att numrera hyperhörnen i hyperkuber med! Och så vidare
Hur ritar man en 3D-kub? Man ritar två st 2D-kuber ( = kvadrater), och sammanbinder sedan deras hörn.
Hur ritar man en 3D-kub? Man ritar två st 2D-kuber ( = kvadrater), och sammanbinder sedan deras hörn.
Hur ritar man en 4D-kub? Man ritar två st 3D-kuber (kuber), och sammanbinder sedan deras hörn.
Hur ritar man en 4D-kub? Man ritar två st 3D-kuber (kuber), och sammanbinder sedan deras hörn.
4D-kuben i Paris
4D-Donut 4D-hyperkuben kan också representeras med en toroid, en donut.
4D-kuber i USA
3D-Kub 2D-diagram a b c b = Gray-kod spegla b = b c a
Karnaugh-diagrammet Grafisk metod för minimering med papper och penna av mindre booleska funktioner ( för upp till se variabler ) Maurice Karnaugh ( The Map for Synthesis of Combinational Logic Circuits, AIEE, Nov. 953 )
En funktion av fyra variabler a b c d Sanningstabellen med st :or och 5 st :or. Funktionen kan ut-tryckas på SP-form med st mintermer eller på PS-form med 5 st matermer.
4D-Kub 2D-diagram Karnaughdiagrammet är sanningstabellen men med en annan ordning. Lägg märke till numreringen! Rutorna är ordnade så att endast en bit ändras mellan två vertikala eller horisontella rutor. Denna ordning kallas för Gray-kod.
Två grannar bc d Rutorna "5" och "3" är "grannar" i Karnaughdiagrammet. De svarar mot två mintermer med fyra variabler, och i figuren visas hur de med Booles algebra, kan reduceras till en term med tre variabler. Det de två rutorna har gemensamt är att b=, c= och d=, och den reducerade termen uttrycker precis detta. Överallt i Karnaughdiagrammet där man hittar två ettor som är "grannar" ( vertikalt eller horisontellt ) kan man reducera de min-termerna till det som är gemensamt för de två rutorna. Detta kallas för en hoptagning.
Fyra grannar a d Rutorna "" "3" "5" "7" är en grupp av fyra rutor med ettor som ligger som "grannar" till varandra. Även här går de fyra mintermerna att reducera till en term som uttrycker det som är gemensamt för rutorna, nämligen att a= och d=. Överallt i Karnaughdiagrammet där man hittar sådana grupper av fyra ettor kan man göra sådana förenklingar, hoptagningar.
Åtta grannar a Alla grupper av 2, 4, 8, (... 2 N dvs. med jämna 2- potenser ) rutor, som innehåller ettor kan reduceras till en term, med "det som är gemensamt", en hoptagning.
Karnaugh - toroid b d 4 5 7 2 3 5 Egentligen bör man avbilda Karnaughdiagrammet på en toroid ( en donut ). Når man en kant, så börjar diagrammet om från den motsatta sidan! Ruta är således "granne" med ruta 2, men även "granne" med ruta 8 som är granne med ruta. De fyra ettorna i hörnen har b= och d= gemensamt och kan därför bilda en hoptagning.
Karnaugh - toroid
Bästa hoptagningar? Man söker efter så stora hoptagningar som möjligt. I eemplet finns det en hoptagning med åtta ettor ( rutorna,,3,2,4,5,7,6 ). Hörnen (,2,8, ) är en hoptagning av fyra ettor. Två av rutorna (, ) har redan tagits med i den första hoptagningen, men inget hindrar att en ruta bir medtagen flera gånger. Alla ettor måste med i funktionen, antingen i en hoptagning, eller som en minterm. Ettan i ruta 3 kan bilda en hoptagning med ettan i ruta 5, någon större hoptagning finns tyvärr inte för denna etta. f ( a, b, c, d) = a + b d + bc d
Hoptagningar av :or Karnaughdiagrammet är också användbart för hoptagning av :or. Hoptagningarna kan omfatta samma antal rutor som i fallet med hoptagning av :or. I detta eempel kan :orna tas ihop i par med sina "grannar". Matermerna förenklas till det som är gemensamt för rutorna. f ( a, b, c, d) = ( a + b + d)( a + c + d)( a + b + d)
Andra variabelantal 6 Karnaughdiagram med tre och två variabler är också användbara.
Minimeringseempel 2 3 7 f ( a, b, c) = m(,2,3,5,7) b c a 5 a bc 3 2 4 5 7 6
Implikanter Ringa in min-termer som ligger bredvid varandra b c f ( a, b, c) = m(,2,3,5,7) bc a a
Lite implikant-terminologi Implikant - en inringning av min-termer Prim-implikant - en inringning av min-termer som inte kan göras större. Essentiell prim-implikant - en maimal inringning av min-termer som måste vara med för att funktionen skall täckas. Redundant prim-implikant en maimal inringning av min-termer som inte nödvändigtvis måste vara med för att funktionen skall täckas.
Implikanter b c a f f = = a c a c + bc + ab + ac + ac f Redundanta implikanter - bägge är inte nödvändiga (en måste vara med) för att täcka funktionen. bc a ( a, b, c) = m(,2,3,5,7)
Två-nivå minimering
Minimal Summa-Produkt Implementation f ( a, b, c) = m(,2,3,5,7) a bc a b c f f = a c + bc + ac
Programmable Logic Array (PLA) Programerbar AND och OR matris. Programmeringen består av att man bränner av anslutningar man inte vill ha kvar. (nu föråldrad teknik)
Programmable Logic Array (PLA) Grind-matriserna har så många ingångar att man brukar rita grindarna med ett förenklat ritsätt
Programmable Logic Array (PLA) PLA. Både AND- och ORmatriserna är programmerbara. 2 3 Förenklat ritsätt. P P 2 P 3 OR plane ( en kostsam fleibilitet ) AND plane P 4 f f2
Programmable Array Logic (PAL) 2 3 P PAL. Bara ANDmatrisen är programmerbar. ( en ekonomisk kompromisslösning ) P 2 P 3 P 4 f f 2
PAL, vilka funktioner döljer sig bakom kryssen? 2 3 P P 2 f? P 3 P 4 f 2?
Sub-kub vid fyra varibler 3 2 Vi ringar alltid in en hel sub-kub (så stor som möjligt)!!! f = 3
Sub-kub vid fyra varibler 3 2 Vi ringar alltid in en hel sub-kub (så stor som möjligt)!!! f =
XOR kan vara till hjälp Om två fyra-inringningar inte kan bilda en åttainringning kan kanske XOR/XNOR-funktionen vara till hjälp. 3 2 Detta under förutsättningen att det finns en särskilt effektiv implementering av XOR-funktionen. f = + = 2 2 2
4D Mintermernas ordning... f 3, 2,, ) = m(,3,7,4) ( MSB 3 2 LSB 3 2 4 5 7 6 2 3 5 4 8 9
5D fem variabler 3 2 4 = 4 4 = 3 2 Samma i båda diagrammen, oberoende av 4. 2 3
Spegling med 5 variabler Spegla! 4 3 2 3 2
och med en annan ordning 2 4 3 3 2
Karnaugh-diagram med 6 variabler 5 = 5 5 = 3 2 = 4 = 4 4 3 2 3 2 3 2 3 2 Oberoende av 5 och 4.
OBS! Spegling med 6 variabler 4 5 3 2 3 2
och med en annan ordning 2 5 4 3 3 2
Hoptagningar med :or 3 2 :an som minterm helt fel! f = f = = f = 32 invertera, så blir det rätt! 3 2 { dm} = ( + 2 + + ) 3 = Ringa in nollorna om dom är färre än ettorna!!!
Don t care Ofta kan man förenkla specifikationen för den logiska funktionen eftersom man vet att vissa kombinationer kan aldrig förekomma För dessa kombinationer använder vi värdet don t care Det finns olika symboler för don t care i bruk d, D, -, Φ,
Ofullständig funktionsspecifikation 3 2 3 2 2 d d d d d d d d ( + ) ( 2 + ) (a) SOP implementation (b) POS implementation Två implementeringar av funktionen f ( 3,, ) = Σ m(2, 4, 5, 6, ) + D(2, 3, 4, 5).
Annan notation (-) 3 2 3 2 2 - - - - - - - - ( + ) ( 2 + ) (a) SOP implementation (b) POS implementation Två implementeringar av funktionen f ( 3,, ) = Σ m(2, 4, 5, 6, ) + D(2, 3, 4, 5).
Funktioner med flera utgångar Olika utgångar kan dela prim-implikanter!!! f + = f 3
Fler-nivå minimering
Behöver man fler nivåer än två? Man kan ju realisera alla kombinatoriska kretsar med två nivåer (AND-OR, OR-AND) Antagandet är då att alla ingångar finns också i inverterade form (som i PAL, PLA)
Varför fler-nivå logik? Antalet ingångar i en krets kan vara begränsad Hög fan-in leder till långa fördröjningar Det kan vara mer kostnadseffektiv att använda en implementering med fler nivåer
Två strategier för fler-nivå logik Faktorisering 2 Funktionell dekomposition
Faktorisering f = 2 3 4 5 6 + 2 3 4 5 6 Vi har bara AND med som mest 4 ingångar? Bryt ut 4 6 f = ( + 5) 4 6 2 3 5 2 3
Faktorisering 2 3 4 6 5 2 3 5 f = ( + 5) 4 6 2 3 5 2 3
Funktionell dekomposition Man kan ofta reducerar kompleiteten av en logisk funktion genom att återanvända funktioner flera gånger För implementeringen betyder det att man återanvänder en krets vid flera ställen i sin konstruktion
Funktionell dekomposition f = 2 3 + 2 3 + 2 4 + 2 4 Funktioner kan ses som sammansatta av underfunktioner.
Funktionell dekomposition Bryt ut 3 respektive 4 f = 2 3 + 2 3 + 2 4 + 2 4 = ( 2 + 2 ) 3 + ( 2 + 2 ) 4 XOR = g XNOR = g f = g 3 + g 4 Hade Du kommit på det?
( XOR och XNOR ) XOR = XNOR 2 XOR 2 2 2 XNOR + 2 + 2 Med en effektiv implementering av XOR-grindar (få transistorer) så kan man se lösningar i Karnaughdiagrammet även när det inte går att göra några hoptagningar!
Funktionell dekomposition Implementeringen 2 g 3 4 f g = + 2 2 f = g 3 + g 4 2 g 3 4 h f
Algoritmer för minimering Karnaugh-minimering ger en bra inblick hur man kan minimera logiska funktioner Men för att minimera komplea funktioner med hjälp av datorstöd finns det bättre algoritmer Kapitel 4.9 och 4. i Brown/Vranesic ger en introduktion i minimeringsalgoritmer (för den intresserade studenten)
Sammanfattning Karnaugh-diagrammet är ett bra verktyg för att minimera logiska funktioner med få variabler Det finns algoritmer för både två-nivå och flernivås-minimering