2.1 Disjunktiv och konjunktiv normalform

Relevanta dokument
ÅBO AKADEMI LOGIKSTYRNING. Hannu Toivonen Jari Böling. Augusti Biskopsgatan 8 FIN Åbo Finland

Quine McCluskys algoritm

Definition av kombinatorisk logik Olika sätt att representera kombinatorisk logik Minimering av logiska uttryck

Digitalteknik syntes Arne Linde 2012

IE1205 Digital Design: F4 : Karnaugh-diagrammet, två- och fler-nivå minimering

Digital- och datorteknik

Digitalteknik F2. Digitalteknik F2 bild 1

Mintermer. SP-form med tre mintermer. William Sandqvist

Digital Design IE1204

Styrteknik: Grundläggande logiska funktioner D2:1

SMD033 Digitalteknik. Digitalteknik F1 bild 1

Grundläggande Datorteknik Digital- och datorteknik

EDA Digital och Datorteknik 2009/2010

Digital Design IE1204

IE1205 Digital Design. F2 : Logiska Grindar och Kretsar, Boolesk Algebra. Fredrik Jonsson KTH/ICT/ES

Tentamen i Digitalteknik, EITF65

Switch. En switch har två lägen. Sluten/Till (Closed/On) Öppen/Från (Open/Off) Sluten. Öppen. Symbol. William Sandqvist

Maurice Karnaugh. Karnaugh-diagrammet gör det enkelt att minimera Boolska uttryck! William Sandqvist

IE1204 Digital Design

Laboration D181. ELEKTRONIK Digitalteknik. Kombinatoriska kretsar, HCMOS v 2.1

EDA Digital och Datorteknik 2010/2011

Tentamen i Digital Design

F5 Introduktion till digitalteknik

Switchnätsalgebra. Negation, ICKE NOT-grind (Inverterare) Konjunktion, OCH AND-grind. Disjunktion, ELLER OR-grind

Lösningsförslag till tentamen i Digitalteknik, TSEA22

Booleska variabler och översättning mellan programuttryck och booleska variabler

Sanningstabell. En logisk funktion kan också beskrivas genom en sanningstabell (truth table) 1 står för sann (true) 0 står för falsk (false)

Logik. Boolesk algebra. Logik. Operationer. Boolesk algebra

Tentamen med lösningar för IE1204/5 Digital Design Torsdag 15/

Tentamen i EDA320 Digitalteknik för D2

Grundläggande digitalteknik

Programmerbar logik. Kapitel 4

Följddiagram för händelsestyrda rörelser

Sekvensnät Som Du kommer ihåg

IE1204/IE1205 Digital Design

Tentamen i IE1204/5 Digital Design måndagen den 15/

Digital Design IE1204

Försättsblad till skriftlig tentamen vid Linköpings universitet

18 juni 2007, 240 minuter Inga hjälpmedel, förutom skrivmateriel. Betygsgränser: 15p. för Godkänd, 24p. för Väl Godkänd (av maximalt 36p.

Tentamen EDAA05 Datorer i system

Logik och kontrollstrukturer

Digital elektronik CL0090

Tentamen i Digitalteknik, EIT020

Tentamen. TSEA22 Digitalteknik 5 juni, 2015, kl

DIGITALTEKNIK I. Laboration DE1. Kombinatoriska nät och kretsar

F5 Introduktion till digitalteknik

Kombinatorik. Kapitel 2. Allmänt kan sägas att inom kombinatoriken sysslar man huvudsakligen med beräkningar av

Repetition och sammanfattning av syntes och analys av sekvensnät

Tentamen i IE1204/5 Digital Design onsdagen den 5/

EDA451 - Digital och Datorteknik 2010/2011. EDA Digital och Datorteknik 2010/2011

IE1205 Digital Design: F10: Synkrona tillståndsautomater del 2

Tentamen i Digitalteknik, EIT020

Tenta i Digitalteknik

DIGITALTEKNIK. Laboration D173. Grundläggande digital logik

Styrteknik: MELSEC FX och numeriska värden

Digital- och datorteknik

Tentamen i TTIT07 Diskreta Strukturer

Exempeluppgift i Logikstyrning. 1 Inledning. 2 Insignaler och utsignaler

Tentamen i IE1204/5 Digital Design onsdagen den 5/

Satslogik Mängdlära Boolesk algebra (S = sant, F = falskt) (U = grundmängden) Kommutativitet p q q p A B = B A x+ y = y + x p q q p A B = B A xy = yx

Tentamen i. TDDC67 Funktionell programmering och Lisp

Block 2 Algebra och Diskret Matematik A. Följder, strängar och tal. Referenser. Inledning. 1. Följder

Finaltävling i Stockholm den 22 november 2008

Grundläggande logik och modellteori

Institutionen för systemteknik, ISY, LiTH. Tentamen i. Tid: kl

Kombinationskretsar. Föreläsning 4 Digitalteknik Mattias Krysander Institutionen för systemteknik

MATEMATIKENS SPRÅK. Avsnitt 1

Digital- och datorteknik

DIGITALTEKNIK. Laboration D172

Hur implementera algoritmerna på maskinnivå - datorns byggstenar

Vektorgeometri för gymnasister

Vad är det? Översikt. Innehåll. Vi behöver modeller!!! Kontinuerlig/diskret. Varför modeller??? Exempel. Statiska system

Hambley avsnitt 12.7 (7.3 för den som vill läsa lite mer om grindar) sann 1 falsk 0

Sekvensstyrningsproblem

Utsagor (Propositioner) sammansatta utsagor sanningstabeller logisk ekvivalens predikat (öppna utsagor) kvantifierare Section

Lektion 8: Konstruktion av semantiska tablåer för PTL-formler

DIGITALTEKNIK. Laboration D161. Kombinatoriska kretsar och nät

Introduktion till formella metoder Programmeringsmetodik 1. Inledning

Tentamen i kurserna Beräkningsmodeller (TDA181/INN110) och Grundläggande Datalogi (TDA180)

y y 1 = k(x x 1 ) f(x) = 3 x

Tenta i Digitalteknik

Tenta i Digitalteknik

Lösningsförslag till Tentamen i 5B1118 Diskret matematik 5p 11 april, 2002

1 Minkostnadsflödesproblem i nätverk

Laboration D151. Kombinatoriska kretsar, HCMOS. Namn: Datum: Epostadr: Kurs:

IE1204 Digital Design

Komposanter, koordinater och vektorlängd Ja, den här teorin gick vi igenom igår. Istället koncentrerar vi oss på träning inför KS3 och tentamen.

Funktionsstudier med derivata

Programmerbar logik (PLD) Programmeringsspråket VHDL Kombinatoriska funktioner i VHDL för PLD Sekvensfunktioner i VHDL för PLD

Lösningsförslag till övningsuppgifter, del II

2 Dataanalys och beskrivande statistik

TSEA22 Digitalteknik 2019!

5B1146 med Matlab. Laborationsr. Laborationsgrupp: Sebastian Johnson Erik Lundberg, Ann-Sofi Åhn ( endst tal1-3

Digital- och datorteknik

Föreläsningsanteckningar, Introduktion till datavetenskap HT S4 Datastrukturer. Tobias Wrigstad

Föreläsning 5: Kardinalitet. Funktioners tillväxt

Introduktion till logik

Laborationshandledning

Objektorienterad programmering Föreläsning 8. Copyright Mahmud Al Hakim Agenda (halvdag)

Digital elektronik CL0090

Transkript:

Kapitel 2 Booleska funktioner 2. Disjunktiv och konjunktiv normalform Låt x,..., x n vara booleska variabler. En boolesk funktion f(x,..., x n ) är då en funktion av variablerna x,..., x n som antar något av värdena 0 eller. Funktionen kan beskrivas fullständigt med en funktionstabell, i vilken funktionens värde anges för alla de olika kombinationer av variabelvärden. Följande exempel illustrerar hur funktionstabellen på ett helt naturligt sätt kan konstrueras på basen av specifikationerna för ett logikstyrningsproblem. Exempel 2. Funktionstabell Betrakta en konsol som styr en maskin. Maskinen kan startas och stoppas med en ON/OFF switch. Dessutom finns en nyckel utan vilken konsolen ej kan opereras. Styrsystemet har följande insignaler: A representerar ON/OFF switchen: A =, om switchen befinner sig i ON läget A = 0, om switchen befinner sig i OFF läget B representerar låset: B =, om nyckeln är i B = 0, om nyckeln inte är i C representerar maskinen: C =, om maskinen går C = 0, om maskinen står Utsignalen X från styrsystemet skall styra maskinen: X = anger att maskinen skall gå, X = 0 anger att maskinen skall stanna eller stå. Utsignalen X skall vara definierad för varje tänkbar kombination av insignalerna A,B och C. Detta kan sammanfattas i nedanstående funktionstabell. Observera att man kan ta bort nyckeln utan att motorn stängs av, men att ON/OFF switchen då slutar fungera. 9

20 KAPITEL 2. BOOLESKA FUNKTIONER Funktionstabell Minterm Maxterm A B C X p i p i 0 0 0 0 A B C A + B + C 0 0 A BC A + B + C 0 0 0 C A + B + C 0 0 C A + B + C 0 0 0 C A + B + C 0 C A + B + C 0 C A + B + C C A + B + C Funktionstabellen definierar X som en boolesk funktion X(A, B, C). Oberoende av sättet på vilket logikstyrningsproblemet realiseras bör den booleska funktionen X = X(A, B, C) uttryckas i form av ett explicit booleskt uttryck i variablerna A, B och C. Vi söker alltså ett funktionsuttryck som antar de värden som kolumnen för X anger för de olika variabelkombinationerna. Ett sådant kan enkelt konstrueras på följande sätt. För givna värden på variablerna A, B och C så finns enbart en term p i bestående av produkten av alla variabler (med eller utan icke) som tar värdet (nämligen det som finns angivet i motsvarande rad i tabellen), medan de övriga är 0. Vi kan ta en p i för varje situation vid vilken X skall bli, och uttrycka X som summan dessa termer (jmf. tabellen) X = A BC + C + C + C I uttrycket ovan kallas A BC, osv., termer, och uttrycket för X är ett exempel på disjunktiv form (summa av produkter). En disjunktiv form där varje variabel förekommer i varje term kallas disjunktiv normalform. En term där varje variabel förekommer kallas minterm (minimalpolynom, elementarprodukt). Termerna p i i tabellen är mintermer. Vi kan även konstruera termer p i som för givna värden på variablerna A, B och C är den enda summan av alla variabler (med eller utan icke) som är 0. Man kan på motsvarande sätt välja alla termer p i som motsvaras av variabelvärden för vilka X skall vara noll, och uttrycka X som produkten av dessa. I det här fallet fås X = (A + B + C) (A + B + C) (A + B + C) (A + B + C) Detta uttryck är ett exempel på konjunktiv form (produkt av summor). Faktorerna i en konjunktiv form kallas altermer. En konjunktiv form i vilken varje variabel förekommer i varje alterm kallas konjunktiv normalform. Altermerna i en konjunktiv normalform kallas maxtermer (maximalpolynom, elementarsummor). Termerna p i i tabellen är maxtermer. Ur konstruktionerna ovan är det uppenbart att vilken som helst boolesk funktion kan beskrivas med ett uttryck i disjunktiv form, eller alternativt ett uttryck i konjunktiv form (Shannons expansionsteorem). Dessa uttryck kan konstrueras direkt på basen av funktionstabellen. Detta resultat visar också att en godtycklig boolesk funktion alltid kan uttryckas med hjälp av ett algebraiskt uttryck i den booleska algebran, vilket inte är helt självklart på förhand. 2.2 Förenkling av booleska uttryck Då ett logikstyrningsproblem karakteriseras med hjälp av en eller flera booleska funktioner blir de erhållna booleska funktionsuttrycken ofta onödigt komplicerade. För att kunna realisera en funktion möjligast enkelt (minsta antalet logiska grindar, eller minsta antalet programsteg) är det av vikt att kunna förenkla booleska uttryck. Förenklingen kan alltid göras algebraiskt, genom att använda den booleska algebrans räknelagar.

2.2. FÖRENKLING AV BOOLESKA UTTRYCK 2 Uppgift 2. Hur många logiska grindar behövs att realisera den booleska funktionen i exempel 2.? Uppgift 2.2 Förenkla uttrycket x = (A + B)(B + C)(C + A)(C + A B C) Den algebraiska metoden har åtminstone följande nackdelar:. Klar systematik saknas 2. Metoden besvärlig i synnerhet då variablernas antal ökar 3. Metoden ger ingen garanti för att det uttryck som erhålls faktiskt är det enklaste, och ej kan förenklas vidare. Det har utvecklats systematiska metoder för förenkling av booleska funktionsuttryck, med vilka förenklingen kan göras effektivare, och vilka producerar det enklast möjliga uttrycken.

22 KAPITEL 2. BOOLESKA FUNKTIONER 2.2. Karnaugh-diagram En standard procedur för förenkling av booleska funktioner baserar sig egenskaperna hos s.k. Karnaughdiagram. I dessa anges funktionsvärdena i rutor i ett diagram. Varje ruta motsvarar en kombination av variabelvärden. Nedan ges exempel på Karnaugh-diagram (utan insatta funktionsvärden) för två, tre, fyra och fem variabler. Två variabler: Tre variabler: A 0 0 0 B 0 C 0 Fyra variabler: Fem variabler: C 0 0 0 0 0 0 0 DE 0 0 0 Karnaugh-diagrammen är så konstruerade, att variabelvärdena för två avgränsande (närbelägna, adjacenta) rutor skiljer sig i en och endast en variabel. Omvänt skall två variabelkombinationer som skiljer sig i exakt en variabel finnas i närbelägna rutor. Härvid uppfattas radernas och kolumnernas ändrutor som angränsande. Diagrammet för fem variabler kan uppfattas som tredimensionell, så att den högra delen av diagrammet ligger bakom den vänstra. Förenklingen av booleska funktioner med hjälp av Karnaugh-diagram baserar sig på ovannämnda egenskaper hos närbelägna rutor, vilket illustreras av följande exempel. Exempel 2.2 Karnaugh-diagram Betrakta den booleska funktionen X = A BC + C + C + C från exempel 2.. Karnaugh-diagrammet får följande utseende (med endast ettorna insatta): 0 0 C 0 X = + BC Tack vare diagrammets konstruktion kan förenklingarna C + C =

2.2. FÖRENKLING AV BOOLESKA UTTRYCK 23 A BC + C = BC upptäckas direkt från diagrammet. Man ser ytterligare att förenklingen C + C = AC kan göras men detta leder ej till ett lika enkelt uttryck för X. 0 0 C 0 X = A BC + C + AC Man kan formulera fem regler för förenklingsproceduren:. Varje ruta som inehåller en etta måste täckas av minst en cell (en ruta får täckas av flera celler). 2. Endast rutor med ettor får täckas av celler. 3. Varje cell måste täcka en potens av 2 (, 2, 4, 8,...) antal rutor. 4. Antalet celler bör vara så litet som möjligt 5. Varje cell bör vara så stor som möjligt Av dessa är reglerna -3 ovillkorliga medan 4-5 strävar till att hitta den enklaste realisationen. Det faktum att man får täcka ettor med flera olika celler innebär i ovanstående exempel att användande av alla tre möjliga celler som täcker två rutor ger X = + BC + AC. Detta kan i sin tur förenklas till + BC, m.h.a. transivitetslagen (R8). Om vi följer regel 4 så kommer man direkt till detta uttryck Förenkling av booleska uttryck med hjälp av Karnaugh-diagram grundar sig således på att mintermer som kan kombineras till enklare termer upptar närbelägna rutor i diagrammet. Förenklingarna kan därmed ses direkt från diagrammet. För fyra variabler har vi fyra typer av termer:. Mintermer med alla fyra variabler, som täcker en ruta, och som ej kan kombineras med andra termer: 0 0 0 0

24 KAPITEL 2. BOOLESKA FUNKTIONER 2. Termer med tre variabler, som täcker två rutor (två skilda exempel): 0 0 0 0 0 0 0 0 B B 3. Termer med två variabler, som täcker fyra rutor (tre skilda exempel): 0 0 0 0 0 0 0 0 0 0 0 0 AD B D 4. Termer med en variabel, som täcker åtta rutor (två skilda exempel): 0 0 0 0 0 0 0 0 D D Karnaugh-diagrammen lämpar sig bäst för funktioner med högst fyra variabler. Det går emellertid att använda metoden även för funktioner med upp till åtta variabler.

2.2. FÖRENKLING AV BOOLESKA UTTRYCK 25 Exempel 2.3 Fem variabler C 0 0 0 0 DE 0 C + D 0 Exempel 2.4 Sex variabler 0 0 0 0 0 0 0 0 0 0 0 0 EF + BE F + A BE F + AC D EF + AC DEF + AE Primimplikatorer En funktion f(x, x 2,..., x n ) säges inkludera en annan funktion g(x, x 2,..., x n ) om de värden för variablerna x, x 2,..., x n för vilka g =, också ger f =. Således inkluderar f t.ex. termerna i ett disjunktivt uttryck för f. En primimplikator π för en funktion f(x, x 2,..., x n ) definieras som en term i ett disjunktivt uttryck för f som har den egenskapen, att om någon av de i termen ingående variablerna avlägsnas, så inkluderar f inte den återstående produkten. Exempel 2.5 har primimplikatorerna f(x, x 2, x 3, x 4 ) = x x 2 x 4 + x 2 x 3 x 4 + x x 3 x 4 π = x x 2 x 4, π 2 = x 2 x 3 x 4, π 3 = x x 3 Obs. att x x 3 x 4 är inte en primimplikator.

26 KAPITEL 2. BOOLESKA FUNKTIONER 0 x 3 x 4 0 x x 2 0 0 Vid förenkling av en boolesk funktion är man i första hand intresserad av att uttrycka funktionen som en summa av primimplikatorer, ty man kan visa att detta resulterar i det i en viss mening enklaste uttrycket. I praktiken så skall man just följa reglerna 4 och 5 givna ovan, d.v.s. vi bör försöka täcka ettorna med möjligast få och möjligast stora celler. Och man bör komma ihåg att antalet är viktigare än storleken. Utvecklingen av en funktion i primimplikatorer behöver inte vara entydig. En väsentlig (essential) primimplikator är en primimplikator som alltid bör ingå i varje minimalform. En väsentlig primimplikator kännetecknas i ett Karnaugh-diagram av att den inkluderar åtminstone en ruta som ej kan ingå i någon annan primimplikator. Det är viktigt att man börjar med att ringa alla väsentliga primimplikatorer för att det minimala uttrycket skall erhållas. Exempel 2.6 anger rutor som definierar en väsentlig primimplikator. C + A + C + A 0 0 0 0 Notera att vi enbart introducerar en term till (BD) om vi introducerar den största möjliga cellen i det här fallet. Uppgift 2.3 Bestäm de väsentliga primimplikatorerna och den minimala formen för funktionen i diagrammet nedan. 0 0 0 0 Sedan de väsentliga primimplikatorerna uttagits, kan de återstående oinringade rutorna med ettor inkluderas av primimplikatorer på ett antal alternativa sätt. Dessa skall väljas så att möjligast enkla termer fås.

2.2. FÖRENKLING AV BOOLESKA UTTRYCK 27 Exempel 2.7 Flera minimala uttryck 0 0 0 0 Väsentliga primimplikatorer: BD, A B D Termen C D kan inkluderas antingen i A C D eller i C (icke-väsentliga primimplikatorer). Detta ger två alternativa minimala uttryck: eller BD + A B D + A C D BD + A B D + C Ofullständigt specificerade funktioner De booleska funktioner som uppträder i praktiska logikstyrningsproblem är ofta ofullständigt specificerade, dvs. funktionens värde för vissa kombinationer av variabelvärden är likgiltig. Vissa kombinationer av variabelvärden kan t.ex. vara fysikaliskt omöjliga (jmf. Ex..), så att de aldrig förekommer. Funktionsvärdet för dessa omöjliga variabelkombinationer är då likgiltigt. Sådana likgiltiga funktionsvärden kallas don t care tillstånd. I ett Karnaugh-diagram anges de med ett streck,, och anger således att funktionsvärdet kan vara 0 eller. Detta kan utnyttjas för att konstruera ett möjligast enkelt funktionsuttryck. Exempel 2.8 Don t care tillstånden kan utnyttjas så att funktionen kan uttryckas i den minimala formen BD + AD + D 0 0 0 0 - - - - - - 2.2.2 QMC-metoden Den grafiska metoden med Karnaugh-diagram blir givetvis oanvändbar då antalet variabler ökar. För större problem fordras algoritmer som kan programmeras. Den vanligaste algoritmen för förenkling av booleska funktioner är en metod enligt Quine och McClusky (QMC-metoden), som skall beskrivas nedan.

28 KAPITEL 2. BOOLESKA FUNKTIONER Vi börjar med att numrera funktionstabellens rader i enlighet med det binära talsystemet. För tre variabler identifierar vi således de olika variabelkombinationerna enligt följande tabell. j A B C 0 0 0 0 0 0 2 0 0 3 0 4 0 0 5 0 6 0 7 (2 2 2 2 0 ) Proceduren är sedan följande. Först uppställs en funktionstabell med endast de rader för vilka funktionen antar värdet insatta. En funktion med Karnaugh-diagrammet nedan får således funktionstabellen i Tab. 2.. 0 0 0 0 Nästa steg är att undersöka vilka rader i tabellen som kan kombineras till en enklare term. Detta är möjligt då två rader överensstämmer så när som i en variabel. Raderna 0 och 2 i Tab. 2.(a) kombineras t.ex. till den nya raden 0 0 0 (Detta motsvarar kombination av termer enligt A B C D + A B = A B D) De på detta sätt konstruerade nya raderna samlas till en ny tabell, Tab. 2.(b). Proceduren upprepas tills ytterligare kombinationer inte mera kan göras i Tab. 2.(c). De termer som i denna procedur inte mera kan förenklas är primimplikatorer. Dessa har i Tabell 2. betecknats p, p 2,..., p 7. Såsom vi tidigare sett, ger en disjunktion av primimplikatorerna i allmänhet ej ett minimalt funktionsuttryck, eftersom alla primimplikatorer inte behöver medtas. För att finna vilka primimplikatorer som bör medtas uppgörs en primimplikatortabell, Tabell 2.2. I denna anger kolumnerna den ursprungliga funktionstabellens termer (Tab. 2. (a)), och raderna anger primimplikatorer. De termer som inkluderas av en primimplikator anges med x. Proceduren är sedan följande.. De kryss som förekommer ensamma i en kolumn omringas ( x ). Motsvarande primimplikator är en väsentlig primimplikator och bör medtas i funktionsuttrycket. De väsentliga primimplikatorerna anges med asterisk. 2. Alla kryss som förekommer i en rad med omringat x anges med klammer, [x]. 3. Ange alla de kryss som förekommer i en kolumn med [x] med parentes, (x). Detta anger att motsvarande term redan ingår i de primimplikatorer som medtagits och inte behöver beaktas i fortsättningen.

2.2. FÖRENKLING AV BOOLESKA UTTRYCK 29 Tabell 2.: Stegvis förenkling (a) (b) (c) {j} A B C D 0, 2 0 0-0 0, 8-0 0 0 2, 3 0 0 - p 2, 0-0 0 3, 7 0 - p 2 5, 7 0 - p 3 5, 3-0 p 4 8, 0 0-0 8, 2-0 0 0, 4-0 2, 3 0 - p 5 2, 4-0 j A B C D 0 0 0 0 0 2 0 0 0 3 0 0 5 0 0 7 0 8 0 0 0 0 0 0 2 0 0 3 0 4 0 {j} A B C D 0, 2, 8, 0-0 - 0 p 6 8, 0, 2, 4 - - 0 p 7 4. Välj från de återstående valbara primimplikatorerna (p p 5 ) ett antal så att de återstående kryssen medtas. Ange raderna med dubbel asterisk. Valet skall göras så att funktionsuttrycket blir minimalt, dvs. Antalet termer (primimplikatorer) är minimalt, Termerna (primimplikatorerna) är korta (av två primimplikatorer i tabellen är den vars rad innehåller de flesta kryssen den kortare). Tabell 2.2: Primimplikatortabell j 0 2 3 5 7 8 0 2 3 4 p (x) x p 2 x x p 3 x x p 4 x x p 5 (x) x p 6 x [x] [x] [x] p 7 [x] [x] [x] x I Tabell 2.2 är de valbara primimplikatorerna p p 5 alla lika långa. Det optimala valet är p 2 och p 4, ty alla andra val skulle kräva minst tre primimplikatorer. Enligt Tabell 2.2 ges det minimala funktionsuttrycket som en disjunktion av primimplikatorerna p 2, p 4, p 6 och p 7, av vilka p 6 och p 7 är väsentliga primimplikatorer. Uttrycket blir (jmf. Tab. 2.) B D + AD + A + B I exemplet i Tabell 2. var funktionen fullständigt specificerad. Proceduren kan emellertid enkelt anpassas för ofullständigt specificerade funktioner, med don t care funktionsvärden för vissa variabelkombinationer. Härvid inkluderar man de rader för vilka funktionsvärdet är ospecificerat ( don t care ) i funktionstabellen (Tab. 2.), och bildar primimplikatorerna såsom ovan. Vid uppställningen av primimplikatortabellen (Tab. 2.), lämnas emellertid motsvarande kolumner bort. (Då funktionens värde för dessa tillstånd inte spelar någon roll, behöver de ju ej beaktas då primimplikatorerna väljs ut. Däremot bör de

30 KAPITEL 2. BOOLESKA FUNKTIONER beaktas i det första skedet då primimplikatorerna bildas, ty de kan endast leda till kortare primimplikatorer, ej längre.) Denna procedur leder till ett minimalt funktionsuttryck för ofullständigt specificerade funktioner. Uppgift 2.4 Förenkla den logiska funktionen X med följande Karnoughdiagram (- motsvar don t care tillstånd): C 0 0 0 - - Vi ställer upp en funktionstabell, där vi förutom ettorna tar med don t care tillstånd: j A B C 2 4 5 6 7 j A B C j A B C Efter att ha bestämt alla primimplikatorer, sätter vi dem i en Primimplikatortabell. Nu skall vi inte ta med don t care mintermer, bara de som måste bli för given insignalkombination: 5 6 7 Vi får denna gång X genom att ta summan av väsentliga mintermer, dvs X = A + BC. QMC-metoden kan enkelt programmeras. I Friedman Logical Design of Automation Systems (Prentice Hall, 990), ges ett Fortran-program primp, som förenklar booleska uttryck. På denna kurs hemsida så finns även en Matlab-implementering av QMC-metoden tillgänglig. Nedan visas en exempelkörning där programmet tillämpats för funktionen i Tabell 2. (a). Funktionsvärdena läses in i ordningsföljd, och programmet ger en förteckning över primimplikatorerna (observera att numreringen ej överensstämmer med den i Tabellerna 2. och 2.2, primp sorterar primimplikatorerna, så de kommer i ordningen p 6, p, p 2, p 4, p 3, p 7, p 5 ), samt anger vilka som är väsentliga och vilka som väljs bland de valbara. I constraint table anges slutligen vilka mintermer de olika icke-väsentliga primimplikatorerna inkluderar (täcker).

2.2. FÖRENKLING AV BOOLESKA UTTRYCK 3 % ~jboling/sst/primp SIMPLIFICATION OF BOOLEN FUNCTIONS BY PRIME IMPLICANT ANALYSIS ************************************************************** NUMBER OF VARILES : 4 INPUT FUNCTION VALUES IN TRUTH TLE ( 6 VALUES: = TRUE / 0 = FALSE / - = DON T CARE ) : 0 0 0 0 0 0 *** BOOLEAN MINIMIZATION PROGRAM *** THIS FUNCTION CONTAINS 4 VARILES A LISTING OF THE INPUT DATA FOLLOWS TRUE MINTERMS = FALSE MINTERMS = 0 REDUNDANT MINTERMS (DON T CARES) = - 0 0 =, = 0, 2 =, 3 =, 4 = 0, 5 =, 6 = 0, 7 =, 8 =, 9 = 0, 0 =, = 0, 2 =, 3 =, 4 =, 5 = 0, 0 THE FOLLOWING IS A LIST OF THE PRIME IMPLICANTS OF THE MINIMIZED FUNCTION. ESSENTIAL PRIME IMPLICANTS ARE SO LELED, AND PRIME IMPLICANTS SELECTED FROM A CYCLIC CHART ARE LELED AS CHOSEN. NO. COST PRIME IMPLICANTS A B C D 2-0 - 0 ESSENTIAL 2 3 0 0-3 3 0 - CHOSEN 4 3-0 CHOSEN 5 3 0-6 2 - - 0 ESSENTIAL 7 3 0 - - INDICATES A MISSING VARILE, 0 INDICATES A COMPLEMENTED VARILE AND INDICATES A TRUE VARILE. THE FUNCTION IS REPRESENTED BY THE SUM OF BOTH THE ESSENTIAL AND THE CHOSEN PRIME IMPLICANTS. CONSTRAINT TLE ------------------

32 KAPITEL 2. BOOLESKA FUNKTIONER COVERED MINTERM COVERING PRIME IMPLICANTS. 3 2 3 5 4 5 7 3 5 3 4 7 Samma problem kan också lösas med matlab-rutinen qmc, hittas alltså på kursens hemsida: >> qmc Program for minimizing Boolean expressions with the QMC-method Either a truth table or a boolean expression should be given. Use standard MATL logical operators: AND = & OR = NOT = ~ Logical terms should be separated with parentesis: (A ~B) & (B ~C) & (C ~A) & ((A & B & C) (~A & ~B & ~C)) Logical expression (L) or truth table (T)): T Number of variables: 4 A B C D 0: 0 0 0 0 : 0 0 0 0 2: 0 0 0 3: 0 0 4: 0 0 0 0 5: 0 0 6: 0 0 0 7: 0 8: 0 0 0 9: 0 0 0 0: 0 0 : 0 0 2: 0 0 3: 0 4: 0 5: 0 Processing... Truth table: i A B C D f ---------------- 0 0 0 0 0 0 0 0 0 2 0 0 0 3 0 0 4 0 0 0 0 5 0 0 6 0 0 0 7 0

2.2. FÖRENKLING AV BOOLESKA UTTRYCK 33 8 0 0 0 9 0 0 0 0 0 0 0 0 2 0 0 3 0 4 0 5 0 Prime implicants: : 0 2 8 0 2: 8 0 2 4 3: 2 3 - - 4: 3 7 - - 5: 5 7 - - 6: 5 3 - - 7: 2 3 - - Essential prime implicants: 2 Chosen prime implicants: 4 6 Logical expression: (~B & ~D) (A & ~D) (~A & C & D) (B & ~C & D) Matlab-programmet klarar också av att förenkla logiska uttryck, det generar själv en sanningstabell och sedan beräknar minimalt uttryck. Nedan löses uppgift 2.2. >>qmc Program for minimizing Boolean expressions with the QMC-method Either a truth table or a boolean expression should be given. Use standard MATL logical operators: AND = & OR = NOT = ~ Logical terms should be separated with parentesis: (A ~B) & (B ~C) & (C ~A) & ((A & B & C) (~A & ~B & ~C)) Logical expression (L) or truth table (T)): L Give logical function: (A ~B)&(B ~C)&(C ~A)&((A&B&C) (~A&~B&~C)) Processing... Truth table: i A B C f ------------- 0 0 0 0 0 0 0 2 0 0 0 3 0 0 4 0 0 0

34 KAPITEL 2. BOOLESKA FUNKTIONER 5 0 0 6 0 0 7 Prime implicants: : 0 2: 7 Essential prime implicants: 2 Logical expression: (~A & ~B & ~C) (A & B & C) 2.2.3 System med flera utsignaler I praktiken har man ofta inte en, utan flera funktioner x, x 2,..., x n, som är funktioner av variablerna A, B,.... I sådana fall kan man givetvis konstruera ett minimalt uttryck för varje funktion separat enligt metoderna som behandlats ovan. En förenkling kan emellertid fås om man beaktar att vissa termer kan vara gemensamma för de olika funktionerna. Sådana termer som delas av flera funktioner fås fram genom att betrakta produkter av formen x x 2, x x 3, x x 2 x 3,.... Vi skall illustrera proceduren med ett exempel. Exempel 2.9 Flera utsignaler Betrakta funktionerna x, x 2 och x 3 med Karnaugh-diagrammen i Fig 2.. I Fig 2.2 ges Karnaughdiagrammen för x, x 2 och x 3 samt produktfunktionerna x x 2, x x 3, x 2 x 3 och x x 2 x 3. Primimplikatorerna införs nu som normalt men så att man startar med produkten av högsta grad, x x 2 x 3, fortsätter med x x 2, x x 3 och x 2 x 3, och därefter betraktar x, x 2 och x 3. Härvid markeras en primimplikator inte om den redan förekommer i en produktfunktion av högre grad. 0 0 0 0 0 0 0 0 0 0 0 0 Proceduren ger primimplikatorer i Tab. 2.3. x x 2 x 3 Figur 2.: Utsignalerna x, x 2 och x 3

2.2. FÖRENKLING AV BOOLESKA UTTRYCK 35 0 0 0 0 0 0 0 0 0 0 0 0 x x 2 x 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 x x 2 x x 3 x 2 x 3 x x 2 x 3 Figur 2.2: Förenkling av x, x 2 och x 3 Tabell 2.3: Primimplikatorer x x 2 x 3 : p = C x x 3 : p 2 = C D p 3 = B x x 2 : p 4 = C D p 5 = x 3 : p 6 = A BD p 7 = BC x 2 : p 8 = C p 9 = B x p 0 = BC D p = C Eftersom termen p = C kan användas i alla tre funktioner bör den medtas. Termerna p 2 p 5 uppträder i två funktioner och är således lovande kandidater för att medtas. Primimplikatorn p 6 hos x 3 är väsentlig och bör medtas. Termen p 7 inkluderas däremot av p, p 3 och p 6. Alltså medtas även p 3. Även p 2 måste medtas för att funktionen x 3 skall kunna beskrivas. Återstår de fyra rutor som täcks av termerna p 4, p 5, p 8, p 9, p 0 och p. Från figuren ses att minst tre termer bör medtas: antingen p 4, p 9 och p, eller p 5, p 8 och p 0. Detta resulterar i de minimala formerna x = C + B + C D + C x 2 = C + C D + B x 3 = C + C D + B + A BD respektive x = C + B + + BC D x 2 = C + + C x 3 = C + C D + B + A BD Uppgift 2.5 Konstruera ett nät som med hjälp av logiska grindar realiserar funktionerna x, x 2 och x 3.

36 KAPITEL 2. BOOLESKA FUNKTIONER Man kan även förenkla logiska uttryck med flera utsignaler med QMC-metoden. Man börjar med att söka efter primimplikatorer som vanligt, fast man skall göra det för samtliga utsignaler och samtliga kombinationer av produkter av utsignaler. Varje kombination betraktas som separat fall, med separata primimplikatorer. I exempel 2.9 innebär det att man skall bestämma primimplikatorer för alla 7 Karnough-diagram. Det har vi i praktiken redan gjort, så låt oss gå till följande steg, som är att bilda en primimplikatortabell, som ser ut enligt följande: Sedan skall följande steg utföras: Tabell 2.4: Primimplikatortabell x x 2 x 3 2 4 0 2 3 4 5 0 3 2 3 0 2 p x x p 3 x x x p 0 x x p x x p x x p 8 x x x 2 p 9 x x p x x p 2 p 6 x x x 3 p 7 x x x x p x x x x p 4 x x x x 2 p 5 x x p x x x x p 2 x x x x 3 p 3 x x x x p x x x x x x x x 2 x 3 x. De kryss som är ensamma i en kolumn skall inringas x, de motsvarar en väsentlig primimplikator. Märk motsvarande rader med asterisk. 2. Kontrollera även väsentliga primimplikatorer för de enskilda utsignalerna. Om de övriga kryssen i samma kolumn kommer från samma primimplikator, så är denna primimplikator oundviklig, och krysset skall inringas (på den plats där det förekommer längst ner). Märk även dessa rader med asterisk. Övriga kryss i kolumnen anges med parentes. 3. Alla rader där inringat kryss förekommer skall anges med klammer [x]. 4. Ange alla de kryss som förekommer i en kolumn med [x] med parentes, (x). Detta anger att motsvarande term redan ingår i de primimplikatorer som medtagits och inte behöver beaktas i fortsättningen. 5. Välj från de återstående valbara primimplikatorerna ett antal så att de återstående kryssen medtas. Märk raderna med dubbel asterisk. Valet skall göras så att funktionsuttrycket blir minimalt. 6. Funktionerna konstrueras genom att ta summan av de för varje enskild funktion väsentliga, oundvikliga och valda primimplikatorer. Dvs man tittar på en kolumn åt gången och tar alla primimplikatorer som har kryss med ring runt, eller som är vald. De primimplikatorer som har kryss med enbart klamrar behövs eventellt inte, detta måste skilt kontrolleras. I exemplet ovan så är p 2 oundviklig för x 3, men ej för x (därför att p 2 täcks av p 0 eller p som är valbara för x ), och den behöver således enbart medtas i x 3.

2.2. FÖRENKLING AV BOOLESKA UTTRYCK 37 Vi kommer givetvis till samma resultat som i exempel 2.9 på detta sätt. Då vi gör ovannämnda procedur så kommer vi att, som tidigare, se att p 6 är en väsentlig primimplikator. Det som inte tidigare framgick är att p, p 2 och p 3 är oundvikliga för en disjunktiv form, vilket nu inses via punkt 2 i proceduren ovan. 2.2.4 Konjunktiv minimalform De minimala uttryck som studerats ovan är disjunktiva minimalformer (summor av produkter). Det är ofta av vikt att också undersöka den konjunktiva minimalformen (produkt av summor). Enligt de Morgans lag (R2) kan ett konjunktivt uttryck för en funktion x uttryckas med hjälp av ett disjunktivt uttryck för x. Den konjunktiva minimalformen kan således bestämmas genom att bestämma den disjunktiva normalformen för x. Exempel 2.0 Betrakta en funktion X med följande Karnaugh-diagram. 0 0 0 0 Den minimala disjunktiva formen är För X fås ett minimalt uttryck enligt följande. X = BD + BC + AD + AC 0 0 0 0 0 0 0 0 0 0 0 Disjunktiv minimalform för X: X = A B + Den konjunktiva minimalformen för X fås med hjälp av de Morgans lagar (R2), (R20) : X = A B + = A B = (A + B) (C + D) I detta exempel leder den konjunktiva minimalformen till ett enklare uttryck än den disjunktiva.

38 KAPITEL 2. BOOLESKA FUNKTIONER Man kan även bestämma den konjuktiva minimalformen med QMC-metoden. Man skall då ställa upp funktionstabellen med endast de rader för vilka funktionen antar värdet 0 (i stället för ), övriga steg oförändrade. Detta ger på samma sätt som med Karnough-diagram en disjunktiv minimalform för X, som kan omvandlas till konjunktiv minimalform med de Morgans lagar. Vid användning av programmet primp så skall man ta logisk icke på varje enskilt funktionsvärde, så beräknar programmet disjunktiv minimalform för X. Man kan även se att man från Karnoughdiagram eller QMC-primimplikatorer direkt kan utläsa den konjunktiva minimalformen. Man skall göra som när man utläser den disjunktiva normalformen, men byta ut + mot och vise versa (och sätta parenteser där det behövs, för + skall ju ske före ), samt ta logiskt icke på alla enskilda variabler. Detta är analogt med hur konjunktiv normalform bestämdes i kapitel 2.. För att det minimala uttrycket skall hittas bör såväl den disjunktiva som den konjunktiva minimalformen undersökas. Observera att för programmering av uttrycken kan det totala antalet operationer (additioner och multiplikationer) ofta ytterligare minskas genom distributionslagarna (R4), (R5). T.ex. X = BD + BC + AD + AC = B (D + C) + A (D + C) = (A + B) (D + C) I detta fall råkade detta leda till den konjunktiva minimalformen. Detta gäller dock ej allmänt. 2.3 Kombinatoriska automationsproblem I ett kombinatoriskt automationsproblem bestäms utsignalerna från styrsystemet som booleska funktioner av insignalerna. u u 2.. u n Insignaler (från process).. Utsignaler (till process) y y 2 y n Jämför Ex. 2.. De booleska funktionerna följer ur specifikationerna och kan sammanfattas i form av en funktionstabell. De i avsnitt 2.2 diskuterade metoderna kan sedan tillämpas för att vid behov förenkla de booleska uttrycken. Hasard Då ett kombinatoriskt automationsproblem realiseras med hjälp av logiska grindar bör man beakta eventuell förekomst av sk. statisk hasard, och konstruera nätet så att det är hasardfritt. Problemet illustreras av följande exempel. Exempel 2. Betrakta en funktion X med Karnaugh-diagrammet nedan.

2.3. KOMBINATORISKA AUTOMATIONSPROBLEM 39 C 0 0 0 Funktionen har två väsentliga primimplikatorer vilka ger den disjunktiva minimala formen X = AC + Funktionen kan tydligen realiseras med hjälp av två AND- och en OR-grind: A B & & X C AC Betrakta nu vad som händer då insignalerna ändras från 0 till : C 0 0 0 Funktionen X har fortfarande värdet och ändras således ej. I praktiken är emellertid två grindar aldrig exakt lika snabba. Om den nedre grinden i figuren är något snabbare än den övre, så är utsignalerna från AND-grindarna 0 under ett kort ögonblick efter att den nedre grindens utsignal ändrats från till 0, men innan den övre grindens utsignal ändrats från 0 till. Systemets utsignal ser då ut så här: X 0 t Detta oönskade beteende kallas statisk hasard. Statisk hasard kan undvikas genom att observera att hasard inte förekommer för variabelförändringar som sker inom en primimplikator som medtagits i realiseringen (t.ex. ändringen till 0 förorsakar ej hasard för nätet ovan). Vi inkluderar därför lämpliga icke-väsentliga primimplikatorer för att undvika hasard:

40 KAPITEL 2. BOOLESKA FUNKTIONER C 0 0 0 icke-väsentlig primimplikator X uttrycks nu i den icke-minimala formen X = AC + + BC Denna funktion kan realiseras med tre AND- och en OR-grind: A & B & X C & Denna realisering är hasardfri. Nuförtiden förverkligas logikstyrningsproblem oftast med hjälp av programmerbar logik eller mikrodatorer, i vilka de booleska funktionerna programmeras. Dessa funktionerar så att utsignalerna ges nya värden först då hela programmet utförts, varefter cykeln upprepas, osv. Således uppstår problemet med statisk hasard inte vid implementering med hjälp av programmerbar logik resp. mikrodatorer.