˚ ABO AKADEMI
TEKNISKA DEPARTMENT OF
FAKULTETEN ENGINEERING
Laboratoriet f¨ or Process Control
reglerteknik Laboratory
LOGIKSTYRNING
Hannu Toivonen Jari B¨ oling
Augusti 2012
Biskopsgatan 8
FIN–20500 ˚ Abo Finland
Inneh˚ all
0 Inledning 5
0.1 Litteratur . . . . 8
1 Klassisk logik och boolesk algebra 9 1.1 Insignaler, utsignaler och tillst˚ and . . . . 9
1.2 Propositionskalkyl . . . . 11
1.3 Boolesk algebra . . . . 12
1.4 N˚ agot om implementeringen av logiska funktioner . . . . 14
2 Booleska funktioner 17 2.1 Disjunktiv och konjunktiv normalform . . . . 17
2.2 F¨ orenkling av booleska uttryck . . . . 18
2.2.1 Karnaugh-diagram . . . . 19
2.2.2 QMC-metoden . . . . 24
2.2.3 System med flera utsignaler . . . . 29
2.2.4 Konjunktiv minimalform . . . . 31
2.3 Kombinatoriska automationsproblem . . . . 33
3 Sekvensstyrningsproblem 35 3.1 Syntes av sekventiella system . . . . 36
3.2 Deterministiska sekvensstyrningsproblem . . . . 41
4 Programmerbar logik 45 4.1 Funktionss¨ attet hos en PLC . . . . 46
4.2 Programmering av en PLC . . . . 47
4.2.1 L˚ ag-niv˚ a programmeringsspr˚ ak (IL) . . . . 48
4.2.2 Kontaktdiagram (LD) . . . . 49
4.2.3 Function Block Diagram (FBD) . . . . 51
5 Petri n¨ at 53
6 Planering av s¨ akerhet f¨ or styrsystem 59
3
4 INNEH˚ALL
Kapitel 0
Inledning
Man kan dela in regler- och styrproblem i tre grupper:
1. Reglering och styrning av procesesser som kan beskrivas med hj¨alp av differential- eller differen- sekvationer. Ing˚aende variabler beskrivs av reella tal. T.ex. temperatur, sp¨anning, position och dylikt.
r - + -
- Gk u -
Gp
y- 6
2. Styrning av sekventiella processer, vars dynamiska egenskaper karakteriseras av diskreta h¨andelser.
Ing˚aende variabler beskrivs av logiska tal eller heltal. T.ex. en ventil som kan vara ¨oppen eller st¨angd, en beh˚allare som kan vara tom, halvfull eller full.
3. Hybrida system, blandning av ovanst˚aende typer.
I samtliga fall s˚a ¨onskar man styra processessen s˚a att ¨onskad funktion uppn˚as. Kursen logikstyrning ¨ar inriktad p˚a grupp 2.
Exempel p˚a logikstyrningsproblem
• Processindustrin:
– Start och nedk¨orning av processer – Byte av driftstillst˚and
– S¨akerhetssystem, ˚atg¨arder vid felsituationer – Operation av batch-processer
• Styckegodsindsutrin – Operation av verktyg – Robotar
• Vardagen – Tjuvlarm – Bankomater – All slags elektronik
• Telefonv¨axlar
5
6 KAPITEL 0. INLEDNING
Angr¨ansande omr˚aden:
• Digitalteknik och elektronik
• Datateknik: Realtidssystem
Denna kurs fokuserar p˚a industriella sekvensstyrningsproblem och implementering med hj¨alp av program- merbar logik.
Exempel 0.1 Blandningsprocess
Reaktor
A B
? ?
VA VB
?
VR
∞
Onskad funktion f¨¨ or blandningsprocessen:
Reaktorna skall fyllas med inneh˚allen i beh˚allarna A och B, reaktorns inneh˚all skall omr¨oras och upp- v¨armas till 80oC, varefter reaktorn skall t¨ommas.
7 Schematiskt:
Reaktorn tom VR st¨angd
Oppna V¨ A och VB
A t¨oms B t¨oms
St¨ang VAd˚a A tom
A t¨omd
St¨ang VB d˚a B tom
B t¨omd
Sl˚a p˚a uppv¨arming
Uppv¨arming
Sl˚a av uppv¨arming och
¨oppna VR d˚a T ≥ 80oC
Reaktorn t¨oms
St¨ang VRd˚a reaktorn tom
Slut
Problemet att styra sekventiella processer av denna typ ¨ar ett exempel p˚a logikstyrning: styrningen kan realiseras med hj¨alp av logiska funktioner av typen
Utf¨or aktionen A ifall premissen P ¨ar uppfylld
Logikstyrning implementerades tidigare med hj¨alp av rel¨aer, och numera oftast med programmerbar logik.
Sm˚a sekvensstyrningsproblem kr¨aver ingen djupare analys, utan implementeringen kan vanligen baseras p˚a enkel boolesk algebra. St¨orre system ¨ar d¨aremot inte s˚a l¨atta att ¨overblicka, utan fordrar systematiska analysmetoder.
8 KAPITEL 0. INLEDNING
0.1 Litteratur
Litteratururvalet p˚a detta omr˚ade ¨ar inte s¨arskilt stort, och det finns egentligen ingen bok som skulle vara riktigt l¨amplig som kursbok. F¨oljande b¨ocker kan dock n¨amnas som bredvidl¨asning f¨or den intresserade:
1. L. Alm: Styrteknik. Studentlitteratur 1991. Fokuserar p˚a verkstads- och styckegodsprocesser.
2. W. Bolton: Programmable logic controllers. Newnes, fj¨arde upplagan, 2006.
3. G.C. Cassandras och S Lafortune: Introduction to discrete event systems. Kluwer 1999 och Springer 2007. Ganska teoretisk, behandlar Petri-n¨at utf¨orligt.
4. M. Costanza: Programmable logic controllers - The industrisl computer. Arnold 1997.
5. A.J Crispin: Programmable logic controllers and their engineering applications. McGraw-Hill 1997.
Inneh˚aller IEC-standarden f¨or programmering av PLC:n.
6. K.H. Fasol: Bin¨are steuerungstechnik. Springer 1988.
7. T. Floyd: Digital fundamentals. Prentice-Hall 1997.
8. S. Friedman: Logical design of automation systems. Prentice-Hall 1980.
9. B. Haag: Industriell systemteknik – Ell¨ara, elektronik och automation. Studentlitteratur 1998.
10. T.R. McCalla: Digital logic and computer design. MacMillan 1992.
11. E.W. Kamen: Industrial controls and manufacturing. Academic Press 1999.
12. J. Palmer och D. Perlman: Introduction to digital systems (Schaum’s outline). McGraw-Hill 1993.
13. M. Treseler: Designing state machine controllers using programmable logic. Prentice Hall 1992.
Kapitel 1
Klassisk logik och boolesk algebra
1.1 Insignaler, utsignaler och tillst˚ and
Ett sekvensstyrsystem kan schematiskt framst¨allas i form av f¨oljande diagram:
- -- --
- --
..
. ... ...
... ... ... un
... u2 u1
ym
... y2 y1
xp
... x1
x+1, . . . , x+p Minne
Logisk funktion
Nytt tillst˚and Tillst˚and
Insignaler (fr˚an process) Utsignaler(till process)
Insignaler, utsignaler och tillst˚and antas i denna kurs ha logiska v¨arden. Utsignalernas Y ={yi} och det interna tillst˚andens X+ ={x+i } nya v¨arden best¨ams som funktioner av insignalerna U = {ui} och de tidigare tillst˚anden X = {xi}. Dessa funktioner kan i praktiken beskrivas med hj¨alp av klassisk logik eller, analogt, med boolesk algebra.
Exempel 1.1 Transport¨or
A B
Insignaler: U ={ui}
1. G˚a till v¨anster (← -knapp) 2. G˚a till h¨oger (→ -knapp)
3. Stopp (STOP-knapp)
4. L¨agessensor vid A (A) 5. L¨agessensor vid B (B)
9
10 KAPITEL 1. KLASSISK LOGIK OCH BOOLESK ALGEBRA Tillst˚and: X ={xi}
1. Stillast˚aende vid A 2. Stillast˚aende vid B
3. Stillast˚aende mellan A och B 4. P˚a v¨ag mot h¨oger (mot B) 5. P˚a v¨ag mot v¨anster (mot A) Utsignaler: Y ={yi}
1. Mot v¨anster (V) 2. Mot h¨oger (H)
3. Stilla (S)
Styrsystemets funktion kan representeras med hj¨alp av en graf, s.k. tillst˚andsgraf, d¨ar
• tillst˚and representeras av noder,
• tillst˚ands¨overg˚angar representeras av riktade l¨ankar mellan noderna, och
• insignal resp. utsignal associerade med tillst˚ands¨overg˚angen anges vid l¨anken.
-
xi xj
un/ym
Exempel 1.2 Tillst˚andsgraf f¨or styrsystemet i exempel 1.1.
1 3 2
5 : 4
→ /H
z A/S
y
A/S 9 ← /V
→ /H : 6
→ /H
?
← /V 6
ST OP/S
?
ST OP/S
I en tillst˚andstabell (Huffman-tabell) anges
xs/yk = (f¨oljande tillst˚and/utsignal) som funktion av insignaler och tillst˚and i tabellform.
Exempel 1.3 Tillst˚andstabell f¨or styrsystemet i exempel 1.1.
Insignaler
← → STOP A B
Tillst˚and 1 2 3 4 5
1. Vid A 1/S 4/H 1/S 1/S (1/S)
2. Vid B 5/V 2/S 2/S (2/S) 2/S
3. Mellan A och B 5/V 4/H 3/S 1/S 2/S
4. Mot B 3/S 4/H 3/S 4/H 2/S
5. Mot A 5/V 3/S 3/S 1/S 5/V
Vissa situationerna f¨orekommer ej normalt (beteckna dessa med parentes), endast vid felsituationer. F¨or att felsituationerna skall klaras av, b¨or man i praktiken definiera f¨ornuftiga tillst˚ands¨overg˚angar och aktioner ¨aven f¨or dessa situationer.
I praktiken kan sekvensstyrningsproblem ofta leda till t¨amligen komplicerade operationer. Det kr¨avs d˚a systematiska metoder vid planeringen av systemet. Analys och syntes av sekventiella processer baserar sig i h¨og grad p˚a klassisk logik och boolesk algebra. Vi skall d¨arf¨or b¨orja med att behandla dessa.
1.2. PROPOSITIONSKALKYL 11
1.2 Propositionskalkyl
Propositionskalkylen eller propositionslogiken ¨ar en del av den formella logiken som kan h¨arledas till- baka till Aristoteles (382 – 322 f.Kr.). I propositionskalkylen ¨ar grundbyggstenarna p˚ast˚aenden, eller propositioner. Ett p˚ast˚aende ¨ar antingen sant (S) eller falskt (F ).
Exempel 1.4 Propositioner
P : ’Granen ¨ar ett finskt tr¨adslag’
Q : ’Kokospalmen v¨axer vild p˚a ˚Aland’
Tydligen g¨aller P = S, Q = F .
I propositionskalkylen sammans¨atts propositioner till nya propositioner med hj¨alp av de logiska konnek- tiven ”och”, ”eller” samt negationen ”icke”. Man brukar anv¨anda beteckningarna
∨ ”eller” (OR)
∧ ”och” (AND)
P ”icke P” (NOT P)
Propositionkalkylens konstanter ¨ar S (sann) och F (falsk). F¨or dessa inf¨ors f¨oljande postulat, som ¨ar i enlighet med vardagens spr˚akbruk och intuition:
F∨ F = F (P 1)
S∨ S = S (P 2)
S∨ F = F ∨ S = S (P 3)
S∧ S = S (P 4)
F∧ F = F (P 5)
F∧ S = S ∧ F = F (P 6)
F = S (P 7)
S = F (P 8)
Ur dessa postulat f¨oljer f¨or en godtycklig proposition x (vars sanningshalt, S eller F , inte ¨ar given, dvs.
en variabel) f¨oljande samband:
x∨ x = x (R1)
x∨ x = S (R2)
x∨ S = S (R3)
x∨ F = x (R4)
x∧ x = x (R5)
x∧ x = F (R6)
x∧ F = F (R7)
x∧ S = x (R8)
x = x (R9)
Vidare kan logiska samband f¨or uttryck som inneh˚aller tv˚a eller flera propositioner h¨arledas. N˚agra av de viktigaste sambanden i propositionskalkylen kommer att diskuteras nedan i samband med den booleska algebran.
12 KAPITEL 1. KLASSISK LOGIK OCH BOOLESK ALGEBRA
1.3 Boolesk algebra
Boole introducerade ˚ar 1854 en tv˚av¨ard algebra som ¨ar isomorf1 med propositionskalkylen. P˚a detta s¨att var det m¨ojligt att beskriva den klassiska logiken matematiskt (i form av en tv˚av¨ard algebra). I boolesk algebra antar variabler n˚agot av v¨ardena (konstanterna) 0 eller 1. Operationerna i boolesk algebra ¨ar ELLER (OR), logisk summa (disjunktion), med beteckningen + (x + y)
OCH (AND), logisk produkt (konjuktion), med beteckningen· (x · y eller xy)
ICKE (NOT), logisk invers, med beteckningen x (= icke x). Beteckningarna x′ och¬x anv¨ands ¨aven.
Operationerna definieras med hj¨alp av f¨oljande postulat:
0 + 0 = 0 (P 1)
1 + 1 = 1 (P 2)
0 + 1 = 1 + 0 = 1 (P 3)
1· 1 = 1 (P 4)
0· 0 = 0 (P 5)
0· 1 = 1 · 0 = 0 (P 6)
0 = 1 (P 7)
1 = 0 (P 8)
Operationerna kan sammanfattas i form av en sanningstabell:
A B A A + B AB
0 0 1 0 0
1 0 0 1 0
1 1 0 1 1
0 1 1 1 0
F¨orutom ovann¨amnda operationer brukar man inf¨ora ytterligare ett antal operatationer:
NOR (icke eller) A + B
XOR (exklusivt eller) A⊕ B XNOR (exklusivt NOR) A⊕ B
NAND (icke och) AB
Dessa operationer beskrivs av sanningstabellen
A B A + B A⊕ B A ⊕ B AB
0 0 1 0 1 1
1 0 0 1 0 1
1 1 0 0 1 0
0 1 0 1 0 1
Den egenskap som g¨or boolesk algebra speciellt viktig ¨ar dess isomorfi med propositionskalkylen. Denna isomorfi ges enligt f¨oljande:
Boolesk algebra Propositionskalkyl
1 ←→ S
0 ←→ F
+ ←→ ∨
· ←→ ∧
x ←→ x
1isomorf = med samma struktur
1.3. BOOLESK ALGEBRA 13 Postulaten (P 1)− (P 8) f¨or propositionskalkyl respektive boolesk algebra ¨ar ekvivalenta om man substi- tuerar konstanter och operationer enligt ovan.
Alla de lagar i logiken som f¨oljer ur propositionskalkylens postulat (P 1)− (P 8) har s˚aledes sina exakta motsvarigheter i boolesk algebra. Den klassiska logiken (beskriven av propositionskalkyl) kan s˚aledes representeras rent algebraiskt i form av den tv˚av¨arda booleska algebran.
Sambanden (R1)− (R9) givna tidigare f¨or propositionskalkylen blir f¨or boolesk algebra:
x + x = x (R1)
x + x = 1 (R2)
x + 1 = 1 (R3)
x + 0 = x (R4)
x· x = x (R5) x· x = 0 (R6) x· 0 = 0 (R7) x· 1 = x (R8)
x = x (R9)
I f¨oljande tabell anges n˚agra av de viktigaste r¨aknereglerna f¨or tv˚a och tre variabler, som kan h¨arledas fr˚an postulaten (P 1)− (P 8).
Associationslagar:
(R10) x + (y + z) = (x + y) + z
(R11) x(yz) = (xy)z
Kommutationslagar:
(R12) x + y = y + x
(R13) xy = yx
Distributionslagar:
(R14) x(y + z) = xy + xz
(R15) x + yz = (x + y)(x + z)
Absorptionslagar:
(R16) x + xy = x
(R17) x(x + y) = x
Transivitetslagar (konsensus):
(R18) xy + xz + yz = xy + xz (R19) (x + y)(x + z)(y + z) = (x + y)(x + z) de Morgans lagar:
(R20) x + y = x· y
(R21) xy = x + y
Lagarna kan direkt generaliseras till flera variabler. De Morgans lagar generaliseras t.ex. till (R20)′ x1+ x2+ . . . + xn = x1· x2· . . . · xn
(R21)′ x1· x2· . . . · xn = x1+ x2+ . . . + xn
Anm. S˚asom nedan framg˚att, f¨oljer ur isomorfin mellan propositionskalkyl och boolesk algebra att alla lagar som kan h¨arledas f¨or den senare har sin motsvarighet i propositionskalkyl.
Uppgift 1.1 Ange de Morgans lagar med hj¨alp av propositionskalkyl.
Alla lagar i boolesk algebra f¨oljer ur postulaten (P 1)− (P 8). Lagarna kan visas och h¨arledas, antingen
• genom att unders¨oka de ing˚aende uttryckens v¨arden f¨or samtliga kombinationer av variabelv¨arden med hj¨alp av en sanningstabell, och konstaterande av ekvivalens (sk. perfekt induktion), eller
• genom algebraisk h¨arledning och anv¨andning av redan bevisade lagar.
14 KAPITEL 1. KLASSISK LOGIK OCH BOOLESK ALGEBRA Vi skall illustrera procedurerna med exempel:
Uppgift 1.2 Visa a) de Morgans lagar b) transivitetslagen (R18)
1.4 N˚ agot om implementeringen av logiska funktio- ner
C.E. Shannon visade ˚ar 1938 (i sitt diplomarbete) att boolesk algebra kan anv¨andas f¨or att beskriva funktionen hos vissa elektriska och elektroniska kretsar, t.ex. de som anv¨ands i telefonv¨axlar. Omv¨ant kan varje logisk samband som kan beskrivas med boolesk algebra implementeras elektroniskt.
L˚at tillst˚andet hos en kontakt representera en variabel x, s˚a att x = 1 d˚a kontakten ¨ar sluten x = 0 d˚a kontakten ¨ar ¨oppen och l˚at en sp¨anningsniv˚a representera en variabel z, enligt
z = 1 d˚a sp¨anningen ¨ar h¨og (typiskt 2.4− 5.5V ) z = 0 d˚a sp¨anningen ¨ar l˚ag (typiskt 0− 0.4V )
5.5V
2.4V z = 1
0.4V
0 z = 0
Operationerna i den booleska algebran kan d˚a implementeras med hj¨alp av s.k. logiska grindar. T.ex.
x y
1 z = xy (AND)
y x
1 z = x + y (OR)
I praktiken ¨ar den elektroniska realiseringen av olika grindtyper betydligt mer komplicerad. Tabell 1.1 ger en sammanfattning av symbolerna f¨or de enkla logiska grindarna.
1.4. N˚AGOT OM IMPLEMENTERINGEN AV LOGISKA FUNKTIONER 15
Tabell 1.1: Symbolerna f¨or de logiska grindarna (K¨alla: Sten Gustafsson)
OCH &
>1
− X
A B A
B X A
B X
A 1 X
A 1 X
&
A
B X
>1
− X
A B
A X B
=1
A X
X
X
X
X
X A
A
A
A
A B B B B
X = A + B X = A B.
X = A + B X = A B. X = A X = A
X = A + B Buffert
Inverterare
NAND
ELLER
NOR
XOR
Grind Funktion IEC−symbol Amerikansk symbol
F¨orutom symbolerna i tabell 1.1 anges invertering av insignalen symboliskt, t.ex.:
x = A· B:
B
A 1 &
x
≡
B
A &
x
x = A + B:
B
A 1
1
≥ 1 x
≡
B
A ≥ 1
x
De enkla logiska grindarna kan anv¨andas f¨or implementering av allm¨anna logiska funktioner, och kan s˚aledes utnyttjas f¨or processtyrningsproblem.
Uppgift 1.3 Planera ett n¨at som med hj¨alp av logiska grindar realiserar den logiska funktionen x = AB + AC
16 KAPITEL 1. KLASSISK LOGIK OCH BOOLESK ALGEBRA Det ¨ar l¨att att inse att de logiska grindarna ocks˚a kan implementeras mekaniskt, hydrauliskt eller pneuma- tiskt. I den sistn¨amnda representeras variablerna av ventill¨agen (¨oppen/st¨angd) samt tryck (h¨ogt/l˚agt).
Dessa metoder finns n¨armare beskrivna i speciallitteraturen.
Figur 1.1: Exempel p˚a mekaniska logiska grindar
Figur 1.2: Exempel p˚a pneumatiska logiska grindar
I praktiken implementeras ˚atminstone enklare logiska styrproblem ofta elektroniskt med hj¨alp av logiska grindar som baserar sig p˚a halvledarteknik, vilken ersatt tidigare rel¨ateknik. I omgivningar d¨ar elektro- niska komponenter ¨ar ol¨ampliga, t.ex. p.g.a. explosionsfara, anv¨ands ¨aven pneumatiska logiska grindar.
Mera komplicerade logikstyrningsproblem implementeras nuf¨ortiden med hj¨alp av s.k. programmerbar lo- gik. Dessa ¨ar sm˚a, billiga datorer speciellt konstruerade f¨or sekvensstyrningsproblem i industriell milj¨o.
Ocks˚a vanliga mikrodatorer anv¨ands. Realiseringen av sekvensstyrningsproblem med hj¨alp av program- merbara datorer tas upp i kapitel 4.
Kapitel 2
Booleska funktioner
2.1 Disjunktiv och konjunktiv normalform
L˚at x1, . . . , xn vara booleska variabler. En boolesk funktion f (x1, . . . , xn) ¨ar d˚a en funktion av variab- lerna x1, . . . , xn som antar n˚agot av v¨ardena 0 eller 1. Funktionen kan beskrivas fullst¨andigt med en funktionstabell, i vilken funktionens v¨arde anges f¨or alla de olika kombinationer av variabelv¨arden.
F¨oljande exempel illustrerar hur funktionstabellen p˚a ett helt naturligt s¨att kan konstrueras p˚a basen av specifikationerna f¨or ett logikstyrningsproblem.
Exempel 2.1 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¨oljande insignaler:
A representerar ON/OFF switchen:
A = 1, om switchen befinner sig i ON l¨aget A = 0, om switchen befinner sig i OFF l¨aget B representerar l˚aset:
B = 1, om nyckeln ¨ar i B = 0, om nyckeln inte ¨ar i C representerar maskinen:
C = 1, om maskinen g˚ar C = 0, om maskinen st˚ar
Utsignalen X fr˚an styrsystemet skall styra maskinen:
X = 1 anger att maskinen skall g˚a,
X = 0 anger att maskinen skall stanna eller st˚a.
Utsignalen X skall vara definierad f¨or varje t¨ankbar kombination av insignalerna A,B och C. Detta kan sammanfattas i nedanst˚aende funktionstabell. Observera att man kan ta bort nyckeln utan att motorn st¨angs av, men att ON/OFF switchen d˚a slutar fungera.
Funktionstabell Minterm Maxterm
A B C X pi pi
0 0 0 0 A B C A + B + C
0 0 1 1 A BC A + B + C
0 1 0 0 ABC A + B + C
0 1 1 0 ABC A + B + C
1 0 0 0 AB C A + B + C
1 0 1 1 ABC A + B + C
1 1 0 1 ABC A + B + C
1 1 1 1 ABC A + B + C
17
18 KAPITEL 2. BOOLESKA FUNKTIONER Funktionstabellen definierar X som en boolesk funktion X(A, B, C). Oberoende av s¨attet p˚a vilket lo- gikstyrningsproblemet realiseras b¨or den booleska funktionen X = X(A, B, C) uttryckas i form av ett explicit booleskt uttryck i variablerna A, B och C.
Vi s¨oker allts˚a ett funktionsuttryck som antar de v¨arden som kolumnen f¨or X anger f¨or de olika varia- belkombinationerna. Ett s˚adant kan enkelt konstrueras p˚a f¨oljande s¨att. F¨or givna v¨arden p˚a variablerna A, B och C s˚a finns enbart en term pi best˚aende av produkten av alla variabler (med eller utan icke) som tar v¨ardet 1 (n¨amligen det som finns angivet i motsvarande rad i tabellen), medan de ¨ovriga ¨ar 0. Vi kan ta en pi f¨or varje situation vid vilken X skall bli 1, och uttrycka X som summan dessa termer (jmf.
tabellen)
X = A BC + ABC + ABC + ABC
I uttrycket ovan kallas A BC, osv., termer, och uttrycket f¨or X ¨ar ett exempel p˚a disjunktiv form (summa av produkter). En disjunktiv form d¨ar varje variabel f¨orekommer i varje term kallas disjunktiv normalform.
En term d¨ar varje variabel f¨orekommer kallas minterm (minimalpolynom, elementarprodukt). Termerna pi i tabellen ¨ar mintermer.
Vi kan ¨aven konstruera termer pi som f¨or givna v¨arden p˚a variablerna A, B och C ¨ar den enda summan av alla variabler (med eller utan icke) som ¨ar 0. Man kan p˚a motsvarande s¨att v¨alja alla termer pi som motsvaras av variabelv¨arden f¨or vilka X skall vara noll, och uttrycka X som produkten av dessa. I det h¨ar fallet f˚as
X = (A + B + C)· (A + B + C) · (A + B + C) · (A + B + C)
Detta uttryck ¨ar ett exempel p˚a konjunktiv form (produkt av summor). Faktorerna i en konjunktiv form kallas altermer. En konjunktiv form i vilken varje variabel f¨orekommer i varje alterm kallas konjunktiv normalform. Altermerna i en konjunktiv normalform kallas maxtermer (maximalpolynom, elementarsum- mor). Termerna pi i tabellen ¨ar maxtermer.
Ur konstruktionerna ovan ¨ar 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˚a basen av funktionstabellen. Detta resultat visar ocks˚a att en godtycklig boolesk funktion alltid kan uttryckas med hj¨alp av ett algebraiskt uttryck i den booleska algebran, vilket inte ¨ar helt sj¨alvklart p˚a f¨orhand.
2.2 F¨ orenkling av booleska uttryck
D˚a ett logikstyrningsproblem karakteriseras med hj¨alp av en eller flera booleska funktioner blir de erh˚allna booleska funktionsuttrycken ofta on¨odigt komplicerade. F¨or att kunna realisera en funktion m¨ojligast enkelt (minsta antalet logiska grindar, eller minsta antalet programsteg) ¨ar det av vikt att kunna f¨orenkla booleska uttryck. F¨orenklingen kan alltid g¨oras algebraiskt, genom att anv¨anda den booleska algebrans r¨aknelagar.
Uppgift 2.1 Hur m˚anga logiska grindar beh¨ovs att realisera den booleska funktionen i exempel 2.1?
Uppgift 2.2 F¨orenkla uttrycket x = (A + B)(B + C)(C + A)(ABC + A B C)
Den algebraiska metoden har ˚atminstone f¨oljande nackdelar:
1. Klar systematik saknas
2. Metoden besv¨arlig i synnerhet d˚a variablernas antal ¨okar
3. Metoden ger ingen garanti f¨or att det uttryck som erh˚alls faktiskt ¨ar det enklaste, och ej kan f¨orenklas vidare.
Det har utvecklats systematiska metoder f¨or f¨orenkling av booleska funktionsuttryck, med vilka f¨orenk- lingen kan g¨oras effektivare, och vilka producerar det enklast m¨ojliga uttrycken.
2.2. F ¨ORENKLING AV BOOLESKA UTTRYCK 19
2.2.1 Karnaugh-diagram
En standard procedur f¨or f¨orenkling av booleska funktioner baserar sig egenskaperna hos s.k. Karnaugh- diagram. I dessa anges funktionsv¨ardena i rutor i ett diagram. Varje ruta motsvarar en kombination av variabelv¨arden. Nedan ges exempel p˚a Karnaugh-diagram (utan insatta funktionsv¨arden) f¨or tv˚a, tre, fyra och fem variabler.
Tv˚a variabler: Tre variabler:
A 0 1
B 0
1
AB 00 01 11 10
C 0
1
Fyra variabler: Fem variabler:
AB 00 01 11 10
CD 00 01 11 10
ABC
000 001 011 010 100 101 111 110
DE 00 01 11 10
Karnaugh-diagrammen ¨ar s˚a konstruerade, att variabelv¨ardena f¨or tv˚a avgr¨ansande (n¨arbel¨agna, adja- centa) rutor skiljer sig i en och endast en variabel. Omv¨ant skall tv˚a variabelkombinationer som skiljer sig i exakt en variabel finnas i n¨arbel¨agna rutor. H¨arvid uppfattas radernas och kolumnernas ¨andrutor som angr¨ansande. Diagrammet f¨or fem variabler kan uppfattas som tredimensionell, s˚a att den h¨ogra delen av diagrammet ligger bakom den v¨anstra.
F¨orenklingen av booleska funktioner med hj¨alp av Karnaugh-diagram baserar sig p˚a ovann¨amnda egen- skaper hos n¨arbel¨agna rutor, vilket illustreras av f¨oljande exempel.
Exempel 2.2 Karnaugh-diagram Betrakta den booleska funktionen
X = A BC + ABC + ABC + ABC
fr˚an exempel 2.1. Karnaugh-diagrammet f˚ar f¨oljande utseende (med endast ettorna insatta):
AB 00 01 11 10
C 0
1 1 1
1
1 X = AB + BC
Tack vare diagrammets konstruktion kan f¨orenklingarna ABC + ABC = AB A BC + ABC = BC
uppt¨ackas direkt fr˚an diagrammet. Man ser ytterligare att f¨orenklingen ABC + ABC = AC
kan g¨oras men detta leder ej till ett lika enkelt uttryck f¨or X.
20 KAPITEL 2. BOOLESKA FUNKTIONER
AB 00 01 11 10
C 0
1 1 1
1
1 X = A BC + ABC + AC
Man kan formulera fem regler f¨or f¨orenklingsproceduren:
1. Varje ruta som ineh˚aller en etta m˚aste t¨ackas av minst en cell (en ruta f˚ar t¨ackas av flera celler).
2. Endast rutor med ettor f˚ar t¨ackas av celler.
3. Cellerna m˚aste vara rektangul¨ara, och t¨acka en potens av 2 (1, 2, 4, 8, ...) antal rutor.
4. Antalet celler b¨or vara s˚a litet som m¨ojligt 5. Varje cell b¨or vara s˚a stor som m¨ojligt
Av dessa ¨ar reglerna 1-3 ovillkorliga medan 4-5 str¨avar till att hitta den enklaste realisationen.
Det faktum att man f˚ar t¨acka ettor med flera olika celler inneb¨ar i ovanst˚aende exempel att anv¨andande av alla tre m¨ojliga celler som t¨acker tv˚a rutor ger X = AB + BC + AC. Detta kan i sin tur f¨orenklas till AB + BC, m.h.a. transivitetslagen (R18). Om vi f¨oljer regel 4 s˚a kommer man direkt till detta uttryck F¨orenkling av booleska uttryck med hj¨alp av Karnaugh-diagram grundar sig s˚aledes p˚a att mintermer som kan kombineras till enklare termer upptar n¨arbel¨agna rutor i diagrammet. F¨orenklingarna kan d¨armed ses direkt fr˚an diagrammet.
F¨or fyra variabler har vi fyra typer av termer:
1. Mintermer med alla fyra variabler, som t¨acker en ruta, och som ej kan kombineras med andra termer:
AB 00 01 11 10
CD 00 01 11 10
1 ABCD
2. Termer med tre variabler, som t¨acker tv˚a rutor (tv˚a skilda exempel):
AB 00 01 11 10
CD 00 01 11 10
1 1
AB 00 01 11 10
CD 00 01 11 10
1 1
BCD B CD
3. Termer med tv˚a variabler, som t¨acker fyra rutor (tre skilda exempel):
2.2. F ¨ORENKLING AV BOOLESKA UTTRYCK 21
AB 00 01 11 10
CD 00 01 11 10
1 1 1 1
AB 00 01 11 10
CD 00 01 11 10
1 1
1 1
AB 00 01 11 10
CD 00 01 11 10
1 1
1 1
CD AD B D
4. Termer med en variabel, som t¨acker ˚atta rutor (tv˚a skilda exempel):
AB 00 01 11 10
CD 00 01 11 10
1 1 1 1
1 1 1 1
AB 00 01 11 10
CD 00 01 11 10
1 1 1 1
1 1 1 1
D D
Karnaugh-diagrammen l¨ampar sig b¨ast f¨or funktioner med h¨ogst fyra variabler. Det g˚ar emellertid att anv¨anda metoden ¨aven f¨or funktioner med upp till ˚atta variabler.
Exempel 2.3 Fem variabler
ABC
DE 00 01 11 10
000 001 011 010 100 101 111 110 1 1
1 1
1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
C + D
Exempel 2.4 Sex variabler
AB
CD
EF 00
01 11 10
00 01 11 10 00 01 11 10 00 01 11 10 00 01 11 10
00 01 11 10
1 1 1
1 1
1 1
1 1 1 1
1 1 1 1
1 1
1 1 1
1 1
AB + BCDE F + A BCDE F + AC D EF + AC DEF + ACDE
22 KAPITEL 2. BOOLESKA FUNKTIONER
Primimplikatorer
En funktion f (x1, x2, . . . , xn) s¨ages inkludera en annan funktion g(x1, x2, . . . , xn) om de v¨arden f¨or vari- ablerna x1, x2, . . . , xnf¨or vilka g = 1, ocks˚a ger f = 1. S˚aledes inkluderar f t.ex. termerna i ett disjunktivt uttryck f¨or f .
En primimplikator π f¨or en funktion f (x1, x2, . . . , xn) definieras som en term i ett disjunktivt uttryck f¨or f som har den egenskapen, att om n˚agon av de i termen ing˚aende variablerna avl¨agsnas, s˚a inkluderar f inte den ˚aterst˚aende produkten.
Exempel 2.5
f (x1, x2, x3, x4) = x1x2x4+ x2x3x4+ x1x3x4
har primimplikatorerna
π1= x1x2x4 , π2= x2x3x4 , π3= x1x3
Obs. att x1x3x4 ¨ar inte en primimplikator.
x1x2
00 01 11 10
x3x4 00 01 11 10
1
1 1
1 1 1
Vid f¨orenkling av en boolesk funktion ¨ar man i f¨orsta 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˚a skall man just f¨olja reglerna 4 och 5 givna ovan, d.v.s. vi b¨or f¨ors¨oka t¨acka ettorna med m¨ojligast f˚a och m¨ojligast stora celler. Och typiskt s˚a ¨ar antalet viktigare ¨an storleken vid minimiering av uttryck.
Utvecklingen av en funktion i primimplikatorer beh¨over inte vara entydig. En v¨asentlig (essential) pri- mimplikator ¨ar en primimplikator som alltid b¨or ing˚a i varje minimalform. En v¨asentlig primimplikator k¨annetecknas i ett Karnaugh-diagram av att den inkluderar ˚atminstone en ruta som ej kan ing˚a i n˚agon annan primimplikator. Det ¨ar viktigt att man b¨orjar med att ringa alla v¨asentliga primimplikatorer f¨or att det minimala uttrycket skall erh˚allas.
Exempel 2.6 ∗ anger rutor som definierar en v¨asentlig primimplikator.
ABC + ACD + ABC + ACD
AB 00 01 11 10
CD 00 01 11 10
1
1 1 1
1 1 1
1
∗
∗
∗
∗
Notera att vi enbart introducerar en term till (BD) om vi introducerar den st¨orsta m¨ojliga cellen i det h¨ar fallet.
2.2. F ¨ORENKLING AV BOOLESKA UTTRYCK 23 Uppgift 2.3 Best¨am de v¨asentliga primimplikatorerna och den minimala formen f¨or funktionen i dia- grammet nedan. Till˚atet att l¨osa denna uppgift i kompendiet.
AB 00 01 11 10
CD 00 01 11 10
1 1 1
1
1 1 1 1
1 1 1
Sedan de v¨asentliga primimplikatorerna uttagits, kan de ˚aterst˚aende oinringade rutorna med ettor inklu- deras av primimplikatorer p˚a ett antal alternativa s¨att. Dessa skall v¨aljas s˚a att m¨ojligast enkla termer f˚as.
Exempel 2.7 Flera minimala uttryck
AB 00 01 11 10
CD 00 01 11 10
1 1 1 1 1 1
∗1
∗
V¨asentliga primimplikatorer:
BD , A B D
Termen ABC D kan inkluderas antingen i A C D eller i ABC (icke-v¨asentliga primimplikatorer). Detta ger tv˚a alternativa minimala uttryck:
BD + A B D + A C D eller BD + A B D + ABC
Ofullst¨ andigt specificerade funktioner
De booleska funktioner som upptr¨ader i praktiska logikstyrningsproblem ¨ar ofta ofullst¨andigt specificera- de, dvs. funktionens v¨arde f¨or vissa kombinationer av variabelv¨arden ¨ar likgiltig. Vissa kombinationer av variabelv¨arden kan t.ex. vara fysikaliskt om¨ojliga (jmf. Ex. 1.1), s˚a att de aldrig f¨orekommer. Funktions- v¨ardet f¨or dessa om¨ojliga variabelkombinationer ¨ar d˚a likgiltigt.
S˚adana likgiltiga funktionsv¨arden kallas ”don’t care” tillst˚and. I ett Karnaugh-diagram anges de med ett streck, ”–”, och anger s˚aledes att funktionsv¨ardet kan vara 0 eller 1. Detta kan utnyttjas f¨or att konstruera ett m¨ojligast enkelt funktionsuttryck.
Exempel 2.8 ”Don’t care” tillst˚anden kan utnyttjas s˚a att funktionen kan uttryckas i den minimala formen
BD + AD + ABD AB 00 01 11 10
CD 00 01 11 10
1
1 1 1
- - - -
- -
24 KAPITEL 2. BOOLESKA FUNKTIONER
2.2.2 QMC-metoden
Den grafiska metoden med Karnaugh-diagram blir givetvis oanv¨andbar d˚a antalet variabler ¨okar. F¨or st¨orre problem fordras algoritmer som kan programmeras. Den vanligaste algoritmen f¨or f¨orenkling av booleska funktioner ¨ar en metod enligt Quine och McClusky (QMC-metoden), som skall beskrivas nedan.
Vi b¨orjar med att numrera funktionstabellens rader i enlighet med det bin¨ara talsystemet. F¨or tre vari- abler identifierar vi s˚aledes de olika variabelkombinationerna enligt f¨oljande tabell.
j A B C
0 0 0 0
1 0 0 1
2 0 1 0
3 0 1 1
4 1 0 0
5 1 0 1
6 1 1 0
7 1 1 1
(22 21 20)
Proceduren ¨ar sedan f¨oljande. F¨orst uppst¨alls en funktionstabell med endast de rader f¨or vilka funktionen antar v¨ardet 1 insatta. En funktion med Karnaugh-diagrammet nedan f˚ar s˚aledes funktionstabellen i Tab.
2.1.
AB 00 01 11 10
CD 00 01 11 10
1 1 1
1 1 1 1
1 1 1
N¨asta steg ¨ar att unders¨oka vilka rader i tabellen som kan kombineras till en enklare term. Detta ¨ar m¨ojligt d˚a tv˚a rader ¨overensst¨ammer s˚a n¨ar som i en variabel. Raderna 0 och 2 i Tab. 2.1(a) kombineras t.ex. till den nya raden
0 0 − 0
(Detta motsvarar kombination av termer enligt A B C D + A BCD = A B D)
De p˚a detta s¨att konstruerade nya raderna samlas till en ny tabell, Tab. 2.1(b). Proceduren upprepas tills ytterligare kombinationer inte mera kan g¨oras i Tab. 2.1(c). De termer som i denna procedur inte mera kan f¨orenklas ¨ar primimplikatorer. Dessa har i Tabell 2.1 betecknats p1, p2, . . . , p7.
S˚asom vi tidigare sett, ger en disjunktion av primimplikatorerna i allm¨anhet ej ett minimalt funktionsut- tryck, eftersom alla primimplikatorer inte beh¨over medtas. F¨or att finna vilka primimplikatorer som b¨or medtas uppg¨ors en primimplikatortabell, Tabell 2.2. I denna anger kolumnerna den ursprungliga funk- tionstabellens termer (Tab. 2.1 (a)), och raderna anger primimplikatorer. De termer som inkluderas av en primimplikator anges med ”x”. Proceduren ¨ar sedan f¨oljande.
1. De kryss som f¨orekommer ensamma i en kolumn omringas ( x ). Motsvarande primimplikator ¨ar en v¨asentlig primimplikator och b¨or medtas i funktionsuttrycket. De v¨asentliga primimplikatorerna anges med asterisk∗.
2. Alla kryss som f¨orekommer i en rad med omringat x anges med klammer, [x].
3. Ange alla de kryss som f¨orekommer i en kolumn med [x] med parentes, (x). Detta anger att mot- svarande term redan ing˚ar i de primimplikatorer som medtagits och inte beh¨over beaktas i forts¨att- ningen.
2.2. F ¨ORENKLING AV BOOLESKA UTTRYCK 25
Tabell 2.1: Stegvis f¨orenkling
(a) (b) (c)
j A B C D
0 0 0 0 0
2 0 0 1 0
3 0 0 1 1
5 0 1 0 1
7 0 1 1 1
8 1 0 0 0
10 1 0 1 0
12 1 1 0 0
13 1 1 0 1
14 1 1 1 0
{j} A B C D
0, 2 0 0 - 0
0, 8 - 0 0 0
2, 3 0 0 1 - p1
2, 10 - 0 1 0
3, 7 0 - 1 1 p2
5, 7 0 1 - 1 p3
5, 13 - 1 0 1 p4
8, 10 1 0 - 0
8, 12 1 - 0 0
10, 14 1 - 1 0
12, 13 1 1 0 - p5
12, 14 1 1 - 0
{j} A B C D 0, 2, 8, 10 - 0 - 0 p6
8, 10, 12, 14 1 - - 0 p7
4. V¨alj fr˚an de ˚aterst˚aende valbara primimplikatorerna (p1−p5) ett antal s˚a att de ˚aterst˚aende kryssen medtas. Ange raderna med dubbel asterisk ∗∗. Valet skall g¨oras s˚a att funktionsuttrycket blir minimalt, dvs.
• Antalet termer (primimplikatorer) ¨ar minimalt,
• Termerna (primimplikatorerna) ¨ar korta (av tv˚a primimplikatorer i tabellen ¨ar den vars rad inneh˚aller de flesta kryssen den kortare).
Tabell 2.2: Primimplikatortabell j
0 2 3 5 7 8 10 12 13 14
p1 (x) x
∗∗ p2 x x
p3 x x
∗∗ p4 x x
p5 (x) x
∗ p6 x [x] [x] [x]
∗ p7 [x] [x] [x] x
I Tabell 2.2 ¨ar de valbara primimplikatorerna p1− p5 alla lika l˚anga. Det optimala valet ¨ar p2 och p4, ty alla andra val skulle kr¨ava minst tre primimplikatorer. Enligt Tabell 2.2 ges det minimala funktions- uttrycket som en disjunktion av primimplikatorerna p2, p4, p6 och p7, av vilka p6 och p7 ¨ar v¨asentliga primimplikatorer. Uttrycket blir (jmf. Tab. 2.1)
B D + AD + ACD + BCD
I exemplet i Tabell 2.1 var funktionen fullst¨andigt specificerad. Proceduren kan emellertid enkelt an- passas f¨or ofullst¨andigt specificerade funktioner, med ”don’t care” funktionsv¨arden f¨or vissa variabel- kombinationer. H¨arvid inkluderar man de rader f¨or vilka funktionsv¨ardet ¨ar ospecificerat (”don’t care”) i funktionstabellen (Tab. 2.1), och bildar primimplikatorerna s˚asom ovan. Vid uppst¨allningen av primimpli- katortabellen (Tab. 2.1), l¨amnas emellertid motsvarande kolumner bort. (D˚a funktionens v¨arde f¨or dessa tillst˚and inte spelar n˚agon roll, beh¨over de ju ej beaktas d˚a primimplikatorerna v¨aljs ut. D¨aremot b¨or de beaktas i det f¨orsta skedet d˚a primimplikatorerna bildas, ty de kan endast leda till kortare primimplika- torer, ej l¨angre.) Denna procedur leder till ett minimalt funktionsuttryck f¨or ofullst¨andigt specificerade funktioner.
26 KAPITEL 2. BOOLESKA FUNKTIONER Uppgift 2.4 F¨orenkla den logiska funktionen X med f¨oljande Karnoughdiagram (- motsvar don’t care tillst˚and):
AB 00 01 11 10
C 0
1
- 1 -
1 1 1
QMC-metoden kan enkelt programmeras. I Friedman Logical Design of Automation Systems (Prentice – Hall, 1990), ges ett Fortran-program primp, som f¨orenklar booleska uttryck. P˚a denna kurs hemsida s˚a finns ¨aven en Matlab-implementering av QMC-metoden tillg¨anglig, och en Scilab-version ¨ar ocks˚a under arbete.
Nedan visas en exempelk¨orning d¨ar programmet till¨ampats f¨or funktionen i Tabell 2.1 (a). Funktions- v¨ardena l¨ases in i ordningsf¨oljd, och programmet ger en f¨orteckning ¨over primimplikatorerna (observera att numreringen ej ¨overensst¨ammer med den i Tabellerna 2.1 och 2.2, primp sorterar primimplikatorer- na, s˚a de kommer i ordningen p6, p1, p2, p4, p3, p7, p5), samt anger vilka som ¨ar v¨asentliga och vilka som v¨aljs bland de valbara. I constraint table anges slutligen vilka mintermer de olika icke-v¨asentliga primimplikatorerna inkluderar (t¨acker).
% ~jboling/sst/primp
SIMPLIFICATION OF BOOLEN FUNCTIONS BY PRIME IMPLICANT ANALYSIS
**************************************************************
NUMBER OF VARIABLES : 4
INPUT FUNCTION VALUES IN TRUTH TABLE
( 16 VALUES: 1 = TRUE / 0 = FALSE / -1 = DON’T CARE ) : 1 0 1 1 0 1 0 1 1 0 1 0 1 1 1 0
*** BOOLEAN MINIMIZATION PROGRAM ***
THIS FUNCTION CONTAINS 4 VARIABLES A LISTING OF THE INPUT DATA FOLLOWS TRUE MINTERMS = 1
FALSE MINTERMS = 0
REDUNDANT MINTERMS (DON’T CARES) = -1
0 0 = 1, 1 = 0, 2 = 1, 3 = 1, 4 = 0,
5 = 1, 6 = 0, 7 = 1, 8 = 1, 9 = 0,
10 = 1, 11 = 0, 12 = 1, 13 = 1, 14 = 1,
15 = 0,
0 THE FOLLOWING IS A LIST OF THE PRIME IMPLICANTS OF THE MINIMIZED FUNCTION.
ESSENTIAL PRIME IMPLICANTS ARE SO LABELED, AND PRIME IMPLICANTS SELECTED FROM A CYCLIC CHART ARE LABELED AS CHOSEN.
2.2. F ¨ORENKLING AV BOOLESKA UTTRYCK 27
NO. COST PRIME IMPLICANTS
A B C D
1 2 - 0 - 0 ESSENTIAL
2 3 0 0 1 -
3 3 0 - 1 1 CHOSEN
4 3 - 1 0 1 CHOSEN
5 3 0 1 - 1
6 2 1 - - 0 ESSENTIAL
7 3 1 1 0 -
- INDICATES A MISSING VARIABLE, 0 INDICATES A COMPLEMENTED VARIABLE AND 1 INDICATES A TRUE VARIABLE.
THE FUNCTION IS REPRESENTED BY THE SUM OF BOTH THE ESSENTIAL AND THE CHOSEN PRIME IMPLICANTS.
CONSTRAINT TABLE --- COVERED COVERING PRIME MINTERM IMPLICANTS.
3 2 3
5 4 5
7 3 5
13 4 7
Samma problem kan ocks˚a l¨osas med matlab-rutinen qmc, hittas allts˚a p˚a 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 MATLAB 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 1 1: 0 0 0 1 0 2: 0 0 1 0 1 3: 0 0 1 1 1 4: 0 1 0 0 0 5: 0 1 0 1 1 6: 0 1 1 0 0 7: 0 1 1 1 1 8: 1 0 0 0 1 9: 1 0 0 1 0 10: 1 0 1 0 1 11: 1 0 1 1 0 12: 1 1 0 0 1 13: 1 1 0 1 1 14: 1 1 1 0 1 15: 1 1 1 1 0 Processing....
28 KAPITEL 2. BOOLESKA FUNKTIONER
Truth table:
i A B C D f
---
0 0 0 0 0 1
1 0 0 0 1 0
2 0 0 1 0 1
3 0 0 1 1 1
4 0 1 0 0 0
5 0 1 0 1 1
6 0 1 1 0 0
7 0 1 1 1 1
8 1 0 0 0 1
9 1 0 0 1 0
10 1 0 1 0 1 11 1 0 1 1 0 12 1 1 0 0 1 13 1 1 0 1 1 14 1 1 1 0 1 15 1 1 1 1 0 Prime implicants:
1: 0 2 8 10 2: 8 10 12 14
3: 2 3 - -
4: 3 7 - -
5: 5 7 - -
6: 5 13 - - 7: 12 13 - -
Essential prime implicants:
1 2
Chosen prime implicants:
4 6
Logical expression: (~B & ~D) | (A & ~D) | (~A & C & D) | (B & ~C & D)
Matlab-programmet klarar ocks˚a av att f¨orenkla logiska uttryck, det generar sj¨alv en sanningstabell och sedan ber¨aknar minimalt uttryck. Nedan l¨oses 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 MATLAB 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....
2.2. F ¨ORENKLING AV BOOLESKA UTTRYCK 29
Truth table:
i A B C f --- 0 0 0 0 1 1 0 0 1 0 2 0 1 0 0 3 0 1 1 0 4 1 0 0 0 5 1 0 1 0 6 1 1 0 0 7 1 1 1 1 Prime implicants:
1: 0 2: 7
Essential prime implicants:
1 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 x1, x2, . . . , xn, som ¨ar funktioner av variablerna A, B, . . .. I s˚adana fall kan man givetvis konstruera ett minimalt uttryck f¨or varje funktion separat enligt metoderna som behandlats ovan. En f¨orenkling kan emellertid f˚as om man beaktar att vissa termer kan vara gemensamma f¨or de olika funktionerna. S˚adana termer som delas av flera funktioner f˚as fram genom att betrakta produkter av formen x1· x2, x1· x3, x1· x2· x3, . . .. Vi skall illustrera proceduren med ett exempel.
Exempel 2.9 Flera utsignaler
Betrakta funktionerna x1, x2 och x3 med Karnaugh-diagrammen i Fig 2.1. I Fig 3.5 ges Karnaugh- diagrammen f¨or x1, x2och x3 samt produktfunktionerna x1· x2, x1· x3, x2· x3och x1· x2· x3. Primimpli- katorerna inf¨ors nu som normalt men s˚a att man startar med produkten av h¨ogsta grad, x1· x2· x3, forts¨atter med x1 · x2, x1 · x3 och x2· x3, och d¨arefter betraktar x1, x2 och x3. H¨arvid markeras en primimplikator inte om den redan f¨orekommer i en produktfunktion av h¨ogre grad.
AB 00 01 11 10
CD 00 01 11 10
1 1 1
1
1 1
AB 00 01 11 10
CD 00 01 11 10
1 1 1
1 1
AB 00 01 11 10
CD 00 01 11 10
1 1
1 1
1 1
x1 x2 x3
Figur 2.1: Utsignalerna x1, x2 och x3 Proceduren ger primimplikatorer i Tab. 2.3.
30 KAPITEL 2. BOOLESKA FUNKTIONER
AB 00 01 11 10
CD 00 01 11 10
1 1 1
1
1 1
AB 00 01 11 10
CD 00 01 11 10
1 1 1
1 1
AB 00 01 11 10
CD 00 01 11 10
1 1
1 1
1 1
x1 x2 x3
AB 00 01 11 10
CD 00 01 11 10
1 1
1 1
AB 00 01 11 10
CD 00 01 11 10
1
1
1 1
AB 00 01 11 10
CD 00 01 11 10
1 1
AB 00 01 11 10
CD 00 01 11 10
1 1
x1· x2 x1· x3 x2· x3 x1· x2· x3
Figur 2.2: F¨orenkling av x1, x2 och x3
Tabell 2.3: Primimplikatorer x1· x2· x3: p1 = ABC
x1· x3: p2 = ABC D p3 = BCD x1· x2: p4 = ABC D
p5 = ABCD
x3: p6 = A BD p7 = BC x2: p8 = ABC
p9 = BCD x1 p10 = BC D
p11 = ABC
Eftersom termen p1 = ABC kan anv¨andas i alla tre funktioner b¨or den medtas. Termerna p2 − p5
upptr¨ader i tv˚a funktioner och ¨ar s˚aledes lovande kandidater f¨or att medtas. Primimplikatorn p6hos x3
¨ar v¨asentlig och b¨or medtas. Termen p7 inkluderas d¨aremot av p1, p3 och p6. Allts˚a medtas ¨aven p3. Aven p¨ 2 m˚aste medtas f¨or att funktionen x3 skall kunna beskrivas. ˚Aterst˚ar de fyra rutor som t¨acks av termerna p4, p5, p8, p9, p10 och p11. Fr˚an figuren ses att minst tre termer b¨or medtas: antingen p4, p9
och p11, eller p5, p8 och p10. Detta resulterar i de minimala formerna x1 = ABC + BCD + ABC D + ABC x2 = ABC + ABC D + BCD
x3 = ABC + ABC D + BCD + A BD respektive
x1 = ABC + BCD + ABCD + BC D x2 = ABC + ABCD + ABC
x3 = ABC + ABC D + BCD + A BD
Uppgift 2.5 Konstruera ett n¨at som med hj¨alp av logiska grindar realiserar funktionerna x1, x2och x3.
Man kan ¨aven f¨orenkla logiska uttryck med flera utsignaler med QMC-metoden. Man b¨orjar med att s¨oka efter primimplikatorer som vanligt, fast man skall g¨ora det f¨or samtliga utsignaler och samtliga kombina- tioner av produkter av utsignaler. Varje kombination betraktas som separat fall, med separata primimpli- katorer. I exempel 2.9 inneb¨ar det att man skall best¨amma primimplikatorer f¨or alla 7 Karnough-diagram.
Det har vi i praktiken redan gjort, s˚a l˚at oss g˚a till f¨oljande steg, som ¨ar att bilda en primimplikatortabell, som ser ut enligt f¨oljande: Sedan skall f¨oljande steg utf¨oras:
2.2. F ¨ORENKLING AV BOOLESKA UTTRYCK 31
Tabell 2.4: Primimplikatortabell
x1 x2 x3
2 4 10 11 12 13 4 5 10 11 13 1 2 3 10 11 12
p1 x x
p3 x x x1
p10 x x
p11 x x
p1 x x
p8 x x x2
p9 x x
p1 x x
p2 x
p6 x x x3
p7 x x x x
p1 x x x x
p4 x x x1· x2
p5 x x
p1 x x x x
p2 x x x1· x3
p3 x x x x
p1 x x x x x x x1· x2· x3
1. De kryss som ¨ar ensamma i en kolumn skall inringas x , de motsvarar en v¨asentlig primimplikator.
M¨ark motsvarande rader med asterisk∗.
2. Kontrollera ¨aven v¨asentliga primimplikatorer f¨or de enskilda utsignalerna. Om de ¨ovriga kryssen i samma kolumn kommer fr˚an samma primimplikator, s˚a ¨ar denna primimplikator oundviklig, och krysset skall inringas (p˚a den plats d¨ar det f¨orekommer l¨angst ner). M¨ark ¨aven dessa rader med asterisk∗. ¨Ovriga kryss i kolumnen anges med parentes.
3. Alla rader d¨ar inringat kryss f¨orekommer skall anges med klammer [x].
4. Ange alla de kryss som f¨orekommer i en kolumn med [x] med parentes, (x). Detta anger att mot- svarande term redan ing˚ar i de primimplikatorer som medtagits och inte beh¨over beaktas i forts¨att- ningen.
5. V¨alj fr˚an de ˚aterst˚aende valbara primimplikatorerna ett antal s˚a att de ˚aterst˚aende kryssen medtas.
M¨ark raderna med dubbel asterisk∗∗. Valet skall g¨oras s˚a att funktionsuttrycket blir minimalt.
6. Funktionerna konstrueras genom att ta summan av de f¨or varje enskild funktion v¨asentliga, ound- vikliga och valda primimplikatorer. Dvs man tittar p˚a en kolumn ˚at g˚angen och tar alla primimpli- katorer som har kryss med ring runt, eller som ¨ar vald. De primimplikatorer som har kryss med enbart klamrar beh¨ovs eventellt inte, detta m˚aste skilt kontrolleras. I exemplet ovan s˚a ¨ar p2 ound- viklig f¨or x3, men ej f¨or x1 (d¨arf¨or att p2 t¨acks av p10 eller p11 som ¨ar valbara f¨or x1), och den beh¨over s˚aledes enbart medtas i x3.
Vi kommer givetvis till samma resultat som i exempel 2.9 p˚a detta s¨att. D˚a vi g¨or ovann¨amnda procedur s˚a kommer vi att, som tidigare, se att p6 ¨ar en v¨asentlig primimplikator. Det som inte tidigare framgick
¨
ar att p1, p2och p3 ¨ar oundvikliga f¨or en disjunktiv form, vilket nu inses via punkt 2 i proceduren ovan.
2.2.4 Konjunktiv minimalform
De minimala uttryck som studerats ovan ¨ar disjunktiva minimalformer (summor av produkter). Det ¨ar ofta av vikt att ocks˚a unders¨oka den konjunktiva minimalformen (produkt av summor). Enligt de Morgans lag (R21)′ kan ett konjunktivt uttryck f¨or en funktion x uttryckas med hj¨alp av ett disjunktivt uttryck f¨or x. Den konjunktiva minimalformen kan s˚aledes best¨ammas genom att best¨amma den disjunktiva normalformen f¨or x.
32 KAPITEL 2. BOOLESKA FUNKTIONER Exempel 2.10 Betrakta en funktion X med f¨oljande Karnaugh-diagram.
AB 00 01 11 10
CD 00 01 11 10
1 1 1
1 1 1
1 1 1
Den minimala disjunktiva formen ¨ar
X = BD + BC + AD + AC F¨or X f˚as ett minimalt uttryck enligt f¨oljande.
AB 00 01 11 10
CD 00 01 11 10
0 1 1 1
0 0 0 0
0 1 1 1
0 1 1 1
Disjunktiv minimalform f¨or X:
X = A B + CD
Den konjunktiva minimalformen f¨or X f˚as med hj¨alp av de Morgans lagar (R21)′, (R20)′: X = A B + CD = A B· CD = (A + B) · (C + D)
I detta exempel leder den konjunktiva minimalformen till ett enklare uttryck ¨an den disjunktiva.
Man kan ¨aven best¨amma den konjuktiva minimalformen med QMC-metoden. Man skall d˚a st¨alla upp funktionstabellen med endast de rader f¨or vilka funktionen antar v¨ardet 0 (i st¨allet f¨or 1), ¨ovriga steg of¨or¨andrade. Detta ger p˚a samma s¨att som med Karnough-diagram en disjunktiv minimalform f¨or X, som kan omvandlas till konjunktiv minimalform f¨or X med de Morgans lagar.
Vid anv¨andning av programmet primp eller qmc s˚a skall man ta logisk icke p˚a varje enskilt funktionsv¨arde, s˚a ber¨aknar programmet disjunktiv minimalform f¨or X, som kan omvandlas till konjunktiv minimalform f¨or X.
Man kan ¨aven se att man fr˚an Karnoughdiagram eller QMC-primimplikatorer direkt kan utl¨asa den konjunktiva minimalformen. Man skall g¨ora som n¨ar man utl¨aser den disjunktiva normalformen, men byta ut + mot · och vise versa (och s¨atta parenteser d¨ar det beh¨ovs, f¨or + skall ju ske f¨ore ·), samt ta logiskt icke p˚a alla enskilda variabler. Detta ¨ar analogt med hur konjunktiv normalform best¨amdes i kapitel 2.1.
F¨or att det minimala uttrycket skall hittas b¨or s˚av¨al den disjunktiva som den konjunktiva minimalformen unders¨okas.
Observera att f¨or programmering av uttrycken kan det totala antalet operationer (additioner och multi- plikationer) ofta ytterligare minskas genom distributionslagarna (R14)′, (R15)′. T.ex.
X = BD + BC + AD + AC = B· (D + C) + A · (D + C)
= (A + B)· (D + C)
I detta fall r˚akade detta leda till den konjunktiva minimalformen. Detta g¨aller dock ej allm¨ant.
2.3. KOMBINATORISKA AUTOMATIONSPROBLEM 33
2.3 Kombinatoriska automationsproblem
I ett kombinatoriskt automationsproblem best¨ams utsignalerna fr˚an styrsystemet som booleska funktio- ner av insignalerna.
- --
- --
un
u2
u1
yn
y2
y1
Insignaler Utsignaler
(fr˚an process) (till process)
... ...
J¨amf¨or Ex. 2.1. De booleska funktionerna f¨oljer ur specifikationerna och kan sammanfattas i form av en funktionstabell. De i avsnitt 2.2 diskuterade metoderna kan sedan till¨ampas f¨or att vid behov f¨orenkla de booleska uttrycken.
Hasard
D˚a ett kombinatoriskt automationsproblem realiseras med hj¨alp av logiska grindar b¨or man beakta even- tuell f¨orekomst av sk. statisk hasard, och konstruera n¨atet s˚a att det ¨ar hasardfritt. Problemet illustreras av f¨oljande exempel.
Exempel 2.11 Betrakta en funktion X med Karnaugh-diagrammet nedan.
AB 00 01 11 10
C 0
1
1
1 1 1
Funktionen har tv˚a v¨asentliga primimplikatorer vilka ger den disjunktiva minimala formen X = AC + AB
Funktionen kan tydligen realiseras med hj¨alp av tv˚a AND- och en OR-grind:
C B A
AC AB
X
&
&
≥ 1
Betrakta nu vad som h¨ander d˚a insignalerna ¨andras fr˚an 011 till 111:
AB 00 01 11 10
C 0
1
1 1 1-1
34 KAPITEL 2. BOOLESKA FUNKTIONER Funktionen X har fortfarande v¨ardet 1 och ¨andras s˚aledes ej. I praktiken ¨ar emellertid tv˚a grindar aldrig exakt lika snabba. Om den nedre grinden i figuren ¨ar n˚agot snabbare ¨an den ¨ovre, s˚a ¨ar utsignalerna fr˚an AND-grindarna 0 under ett kort ¨ogonblick efter att den nedre grindens utsignal ¨andrats fr˚an 1 till 0, men innan den ¨ovre grindens utsignal ¨andrats fr˚an 0 till 1. Systemets utsignal ser d˚a ut s˚a h¨ar:
0 -
1 X
t Detta o¨onskade beteende kallas statisk hasard.
Statisk hasard kan undvikas genom att observera att hasard inte f¨orekommer f¨or variabelf¨or¨andringar som sker inom en primimplikator som medtagits i realiseringen (t.ex. ¨andringen 001 till 011 f¨ororsakar ej hasard f¨or n¨atet ovan). Vi inkluderar d¨arf¨or l¨ampliga icke-v¨asentliga primimplikatorer f¨or att undvika hasard:
AB 00 01 11 10
C 0
1
1
1 1 1
I icke-v¨asentlig primimplikator X uttrycks nu i den icke-minimala formen
X = AC + AB + BC Denna funktion kan realiseras med tre AND- och en OR-grind:
C B A
X
&
&
&
≥ 1
Denna realisering ¨ar hasardfri.
Nuf¨ortiden f¨orverkligas logikstyrningsproblem oftast med hj¨alp av programmerbar logik eller mikrodato- rer, i vilka de booleska funktionerna programmeras. Dessa fungerar s˚a att utsignalerna ges nya v¨arden f¨orst d˚a hela programmet utf¨orts, varefter cykeln upprepas, osv. S˚aledes uppst˚ar problemet med statisk hasard inte vid implementering med hj¨alp av programmerbar logik resp. mikrodatorer.
Kapitel 3
Sekvensstyrningsproblem
Vid kombinatoriska styrproblem av den typ som betraktades i avsnitt 2.3, och i Ex. 2.1, best¨amdes utsignalerna fr˚an styrsystemet som booleska funktioner av insignalerna. F¨or att f¨orverkliga mera generella sekvensstyrningsproblem b¨or systemet ocks˚a h˚alla reda p˚a tillst˚andet som processen befinner sig i vid en given tidpunkt. Detta sker i praktiken genom att inf¨ora tillst˚andsvariabler{xi}, vilkas v¨arden definierar systemets olika tillst˚and. Styrsystemet kan schematiskt beskrivas med f¨oljande figur.
- -- --
- --
..
. ... ...
... ... ... un
... u2
u1
ym
... y2
y1
xp ... x1
x+1, . . . , x+p Minne
Logisk funktion
Nytt tillst˚and Tillst˚and
Insignaler (fr˚an process) Utsignaler(till process)
Figur 3.1: Styrsystem med minne
H¨ar ¨ar utsignalerna y1, . . . , ymtill processen och tillst˚andsvariablernas nya v¨arden x+1, . . . , x+p (det nya till- st˚andet) booleska funktioner av insignalerna u1, . . . , unfr˚an processen samt tillst˚andsvariablerna x1, . . . , xp
(det tidigare tillst˚andet).
De booleska funktionerna kan behandlas med de metoder som diskuterades i avsnitt 2. Det nya problemet som tillkommer vid sekvensstyrningsproblem ¨ar att definiera tillst˚and och tillst˚andsvariabler samt att best¨amma hur de nya v¨ardena x+1, . . . , x+p skall best¨ammas.
Sekvensstyrningsproblem kan ytterligare indelas i deterministiska sekvensstyrningsproblem, d¨ar processen skall genomg˚a en p˚a f¨orhand best¨amd sekvens (t.ex. fyllning och t¨omning av reaktor), och stokastis- ta sekvensstyrningsproblem, d¨ar systemet skall funktionera rationellt f¨or godtyckliga insignalsekvenser (jmf. Ex. 1.1). De stokastiska sekvensstyringsproblemen ¨ar i allm¨anhet besv¨arligare att behandla ¨an de deterministiska.
Vippor
Medan kombinatoriska styrproblem kan realiseras enbart med hj¨alp av logiska grindar, fordrar sekventiella styrproblem dessutom element som h˚aller reda p˚a tillst˚andet, dvs. fungerar som minne. I elektroniken realiseras minnesfunktioner med hj¨alp av vippor (flip-flops).
Den viktigaste typen av vippa ¨ar RS-vippan (Reset-Set) (¨aven SR-vippa), vars symbol och sanningstabell ges i Fig. 3.2
Vippan fungerar allts˚a s˚a, att f¨or S = 1 (Set) blir x = 1, f¨or R = 1 (Reset) blir x = 0, och f¨or R = S = 0 f¨orblir x vid sitt tidigare v¨arde. Vippan fungerar allts˚a som en minnesfunktion, d¨ar v¨ardet hos variabeln
35