Quine McCluskys algoritm Tabellmetod för att systematiskt finna alla primimplikatorer ƒ(a,b,c,d) = m(4,5,6,8,9,0,3) + d(0,7,5) Moment : Finn alla primimplikatorer Steg: Fyll i alla mintermer i kolumn. Bilda grupper med mintermer där varje term har lika många ettor. Column I 0000 Implikatortabell 000 000 00 00 00 00 0 0 Digitalteknik F3 bild
Quine McCluskys algoritm Tabellmetod för att systematiskt finna alla primimplikatorer ƒ(a,b,c,d) = m(4,5,6,8,9,0,3) + d(0,7,5) Moment : Finn alla primimplikatorer Steg: Fyll i alla mintermer i kolumn. Bilda grupper med mintermer där varje term har lika många ettor. Steg 2: Tillämpa (x+x ) = Jämför implikatorer i rad Q N ettor med implikatorer med N+ ettor. Skillnad i en position innebär att (x+x ) är uppfyllt för en variabel. Ta bort variabeln och placera den nya implikatorn i nästa kolumn. Ex: 0000 och 000 ger 0-00 0000 och 000 ger -000 Implikatorer som kan kombineras markeras med. De som inte kan kombineras markeras med *. Dessa är primimplikatorer. Implikatortabell Column I Column II 0000 0-00 -000 000 000 00-0-0 00 00-00 0-0 00 00 0- -0 0 0-0 -0 - - Digitalteknik F3 bild 2
Quine McCluskys algoritm Tabellmetod för att systematiskt finna alla primimplikatorer ƒ(a,b,c,d) = m(4,5,6,8,9,0,3) + d(0,7,5) Moment : Finn alla primimplikatorer Steg: Fyll i alla mintermer i kolumn. Bilda grupper med mintermer där varje term har lika många ettor. Steg 2: Tillämpa (x+x ) = Jämför implikatorer i rad Q N ettor med implikatorer med N+ ettor. Skillnad i en position innebär att (x+x ) är uppfyllt för en variabel. Ta bort variabeln och placera den nya implikatorn i nästa kolumn. Ex: 0000 och 000 ger 0-00 0000 och 000 ger -000 Implikatorer som kan kombineras markeras med. De som inte kan kombineras markeras med *. Dessa är primimplikatorer. Steg 3: Upprepa tills inga fler kombinationer kan göras Implikatortabell Column I Column II Column III 0000 0-00 * 0-- * -000 * 000 -- * 000 00-0-0 00 00- * 00 0-0 * 00 00 0- -0 0 0-0 -0 * - - Digitalteknik F3 bild 3
Quine McCluskys algoritm AB CD 00 0 0 00 X 0 0 0 0 0 X X 0 0 0 Primimplikatorer: 0-00 = A' C' D' 00- = A B' C' -0 = A C' D -- = B D -000 = B' C' D' 0-0 = A B' D' 0-- = A' B Digitalteknik F3 bild 4
Quine McCluskys algoritm AB CD 00 0 0 00 X 0 0 0 0 0 X X 0 0 0 Primimplikatorer: 0-00 = A' C' D' 00- = A B' C' -0 = A C' D -- = B D -000 = B' C' D' 0-0 = A B' D' 0-- = A' B Moment 2: Identifiera den minsta mängd primimplikatorer som behövs för att täcka samtliga mintermer Kom ihåg att samtliga mintermer måste vara täckta av åtminstone en primimplikator. Vi använder en tabellmetod primimplikatortabellen Digitalteknik F3 bild 5
Primimplikatortabellen rader = primimplikatorer kolonner = mintermer X markerar att en minterm täcks av en primimplikator Digitalteknik F3 bild 6
Primimplikatortabellen rader = primimplikatorer kolonner = mintermer X markerar att en minterm täcks av en primimplikator Om en kolonn har endast ett X så är motsvarande primimplikator väsentlig. Denna måste vara med i den minimerade funktionen. Digitalteknik F3 bild 7
Primimplikatortabellen Ta bort alla kolonner som täcks av väsentliga primimplikatorer Digitalteknik F3 bild 8
Primimplikatortabellen Stryk alla kolonner som täcks av väsentliga primimplikatorer Identifiera den minsta mängd rader som täcker resterande kolonner. (Kan innebära val mellan likvärdiga alternativ.) ƒ = A B' D' + A C' D + A' B Digitalteknik F3 bild 9
Iterativ konsensus Minimeringsmetod som utnyttjar dels konsensuslagen, dels täckningsteoremet i den Booleska algebran:. Generering av termer xy + x z = xy + x z + yz 2. Stykning av termer x + xy = x x + x = x 3. Val av primimplikatorer Metoden kan transformeras till tabellmetod lämplig för datorberäkning Digitalteknik F3 bild 0
Iterativ konsensus - exempel AB CD 00 0 0 00 0 0 0 0 0 0 0 0 0 Ofullständigt minimerad funktion: ƒ(abcd) = abd + bc d + bcd + b cd 2 3 4 5 (-2) abc 6 (-3) abc 0 7 (2-3) bd 8 (4-6) acd 9 (4-7) cd 0 (5-6) ab De kursiva termerna återstår efter strykning. De kan inte bilda ytterligare konsensustermer Digitalteknik F3 bild
Iterativ konsensus - exempel AB CD 00 0 0 00 0 0 0 0 0 0 0 0 0 Ofullständigt minimerad funktion: ƒ(abcd) = abd + bc d + bcd + b cd 2 3 4 5 (-2) abc 6 (-3) abc 0 7 (2-3) bd 8 (4-6) acd 9 (4-7) cd 0 (5-6) ab I detta fall är samtliga primimplikatorer väsentliga. Urval behöver ej göras. ƒ(abcd) = ab + bd + cd Digitalteknik F3 bild 2
Espressoalgoritmen Ett alternativ som minskar beräkningstiden. Nödvändigt för funktioner med många insignaler. n Övre gräns: 3 /n, där n är antalet insignaler. Att finna en minimal lösning är ett NP-komplett problem, dvs en process som är mycket beräkningskrävande och som inte kan uttryckas som en effektiv algoritm. (Samtliga lösningar måste genereras och testas...) Espresso: prioriterar beräkningshastighet framför att finna den minimala lösningen. genererar inte samtliga primimplikatorer (Quine-McCluskey moment ) väljer ut en delmängd primimplikatorer som täcker samtliga mintermer arbetssättet påminner om det manuella arbetet med Karnaughdiagram Digitalteknik F3 bild 3
Espressoalgoritmen. Implikatorer expanderas till maximal storlek Implikatorer som täcks av en expanderad implikator ingår inte i det fortsatta arbetet Resultatets kvalitet beror på ordninen för implikatorexpansionen Heuristiska metoder (försök-misstag) används för att bestämma ordningen Momentet kallas expansion 2. 3. 4. 5. Icke-redundant täckning (t ex en ofullständig delmängd är också en täckning) bryts ut från de expanderade primimplikatorerna Detta görs med en primimplikatortabell på samma sätt som QuineMcCluskymetoden Momentet kallas irredundant cover Lösningen är vanligen ganska bra men kan ibland förbättras Det kan existera en annan täckning med färre termer eller insignaler Minska primimplikatorerna till dess minsta storlek där de fortfarande täcker hela funktionen Momentet kallas reducering Upprepa sekvensen reducera expandera irredundant cover i syfte att finna alternativa primimplikatorer så länge den nya lösningen är en förbättring Ett antal optimeringar, t ex att identifiera och ta bort väsentliga primimplikatorer i ett tidigt skede, ingår också Digitalteknik F3 bild 4
Espressoalgoritmen ƒ(a,b,c,d) = m(4,5,6,8,9,0,3) + d(0,7,5) Espresso Indata Espresso Utdata.i 4.o.ilb a b c d.ob f.p 0 000 00 00 000 00 00 0 0000-0 - -.e -- # inputs -- # outputs -- input names -- output name -- number of product terms -- A'BC'D' -- A'BC'D -- A'BCD' -- AB'C'D' -- AB'C'D -- AB'CD' -- ABC'D -- A'B'C'D' don't care -- A'BCD don't care -- ABCD don't care -- end of list.i 4.o.ilb a b c d.ob f.p 3-0 0-0 0--.e ƒ = A C' D + A B' D' + A' B Digitalteknik F3 bild 5
Espressoalgoritmen: iteration över reducera - irredundant cover - expandera AB CD 00 0 0 AB CD 00 0 0 00 0 0 00 0 0 0 0 0 0 0 0 0 0 Första lösning genererad av steg och steg 2 i Espressoalgoritmen 4 primimplikatorer, icke-redundant lösning som inte är minimal! Resultat av reducering: Minska primimplikatorerna så att de fortfarande täcker funktionen Valet av minskningsordning är väsentligt Digitalteknik F3 bild 6
Espressoalgoritmen: iteration över reducera - irredundant cover - expandera AB CD 00 0 0 00 0 0 AB CD 00 0 0 00 0 0 0 0 0 0 0 0 0 0 Andra expansionen genererar en annan mängd primimplikatorer Icke-redundant täckning upptäcks av Espresso Endast tre primimplikatorer! Digitalteknik F3 bild 7
Tvånivåminimering - sammanfattning Syfte: tvånivåimplementering med minimalt antal grindar och ingångar på grindarna Erhålls med hjälp av räknereglerna i Boolesk algebra eller Booleska kuber och (x+x ) = eller Karnaughdiagram (upp till 6 insignaler) eller Quine-McCluskeys algoritm eller Iterativ konsensusalgoritmen eller Espressoalgoritmen Digitalteknik F3 bild 8
Implementationsdetaljer - Att representera en minterm i datorn Varje insignal kan vara 0, eller don t care, dvs tre alternativ En minterm kan beskrivas t ex: 00d d00 d0d d00 I datorns minne kan detta lagras i två 6-bitars ord: One-set: 000 000 000 000 Zero-set: 00 00 000 00 Det går att definiera operationer för att testa/utföra jämförelse, x+x =, x+xy =, konsensus etc för mintermer representerade på detta vis. Detta är en förutsättning för att kunna bearbeta Booleska funktioner med dator. Av effektivitetsskäl bör datorns maskininstruktioner användas... Digitalteknik F3 bild 9
term X + term X = term Princip: C: C2: C.t C.f C2.t C2.f Exempel: C: C2: 00 000 000 00 Beräkna bitvis xor: C.t xor C2.t C.f xor C2.f En etta i respektive delresultat? Om ja: Beräkna resulterande term Beräkna bitvis xor: 000 000 En etta i respektive delresultat? Om ja: Beräkna resulterande term C3: C.t and C2.t C.f and C2.f C3: 000 000 Om nej: term X + term X = term ej tillämpligt reducerad term Digitalteknik F3 bild 20
Täckning (x + xy = x)? Princip: C: C2: C.t C.f C2.t C2.f Exempel: C: C2: 00 000 0 000 Beräkna bitvis or: Beräkna bitvis or: C.t or C2.t C.f or C2.f = C2.t? = C2.f? 0 000 = C2.t = C2.f Båda svaren ja: C täcker C2 (implikatorn C2 är en delmängd av implikatorn C) Båda villkoren uppfyllda, dvs C2 är en delmängd av C Ett eller båda svaren nej: C täcker inte C2 Digitalteknik F3 bild 2
Konsensus (xy + x z = xy + x z + yz) Princip: C: C2: C.t C.f C2.t C2.f Exempel: C: C2: 00 0000 000 000 Beräkna: T: F: C.t or C2.t C.f or C2.f Beräkna: 00 000 D: T and F D: 000 Ingen etta - konsensus existerar ej En etta - konsensus existerar En etta - konsensus existerar Flera ettor - Konsensustermen = 0 Beräkna konsensusterm T: F: Beräkna konsensusterm: C3: T and not D F and not D C3: 000 0000 Digitalteknik F3 bild 22
Timing i kombinatoriska kretsar Timingen påverkar kretsarnas funktion: - reagerar utsignalen tillräckligt snabbt? - förekommer icke önskade variationer i utsignalen? Grafisk presentation tydliggör händelseförloppen Simulering kan användas för att studera en konstruktion i ett tidigt stadium Termer: grindfördröjning Den tid det tar för en ändring i insignal att ändra utsignalen i en grind. Specificeras som dels typvärde, dels maxvärde. Konstruktörer använder maxvärdet, optimister använder typvärdet! kretsfördröjning samma som d.o. för en hel krets stigtid tid för en utgång att växla från låg till hög nivå falltid tid för en utgång att växla från hög till låg nivå Digitalteknik F3 bild 23
Pulsskapande krets A' A = 0 3 grindfördröjningar D förblir under tre grindfördröjningar efter A:s växling från 0 till F är inte alltid 0! Digitalteknik F3 bild 24
Hasard/glitchar och hur man undviker dem Icke önskvärda växlingar av utsignalen Uppträder då olika signalvägar genom kretsen har olika fördröjning Förorsakar problem om efterföljande logik tar beslut medan utsignalen är instabil eller styr en asynkron ingång (som reagerar direkt på signalen i stället för att vänta på synk.). Vanliga lösningar: vänta tills signalerna är stabila (synkronisera med klocka) använd aldrig kretsar med asynkrona ingångar konstruera hasardfri logik I regel används de två första alternativen, men metoder för att konstruera hasardfri logik skall vara kända. Digitalteknik F3 bild 25
Hasardtyper 0 0 0 Statisk -hasard Statisk 0-hasard Insignalen skapar en nollpuls på utsignalen Förekommer i AND/OR- och NAND/NANDkretsar. Insignalen skapar en ettpuls på utsignalen Förekommer i OR/AND- och NOR/NORkretsar. 0 0 Dynamiska hasarder Insignalen skapar ett kortare eller längre pulståg på utsignalen. Förekommer i flernivåkretsar. 0 0 Digitalteknik F3 bild 26
Statisk -hasard A C A D A C A D 0 0 0 G G2 0 ABCD = 0 G G2 0 0 G3 G3 F 0 F ABCD = 00 (A är fortfarande 0) A AB 00 0 0 CD 00 0 0 0 0 0 C 0 0 0 0 0 B F = A' D + A C' D A C A D 0 0 G G3 F G2 ABCD = 00 (A är nu ) A AC A A D F Digitalteknik F3 bild 27
Att förebygga statisk hasard Generell strategi: lägg till redundanta primimplikatorer F = A' D + A C' blir A' D + A C' + C' D Detta tar bort -hasarden. 0-hasard då? Skriv om F i konjunktiv form: F = (A' + C')(A + D) AB CD 00 A 00 0 0 0 0 Hasard förekommer! Lägg till: (C' + D) 0 0 0 D Detta uttryck är ekvivalent med den hasardfria funktionen ovan. C 0 0 0 0 0 B Digitalteknik F3 bild 28