Un circuit combinaional C, este definit prin relaiile dintre intrri i ieiri : f i : B n B, (B={0,1}), z i = f i (x 1 ,x 2 , , x n ),
unde : o z i , 0 s i s m-1, este una dintre liniile de ieire ale circuitului, iar o x 0 , x 1 , , x n-1 sunt liniile de intrare n circuitul combinaional considerat (diagrama modelului circuitelor combinaionale, este prezentat n figura 1).
x 0
1. Introducere
Se poate remarca, din relaia care leag liniile de intrare de liniile de ieire, dependena n exclusivitate a valorilor ieirilor de valorile aplicate intrrilor. Ca particularitate, funciile Boole-ene sunt, ntotdeauna, funcii cu domeniul de definiie finit. Aa cum au fost prezentate mai sus funciile f i au 2 n puncte, n-uple, distincte n domeniul lor de definiie (produsul cartezian al mulimii B cu aceasta nsi de n ori). Datorit faptului c funciile au un domeniu de definiie cu 2 n n-uple distincte, iar funciile pot lua doar dou valori, atunci numrul funciilor distincte, astfel considerate, este . n 2 2
Exemplul 1.1 Funciile distincte f i : B 2 B cu dou variabile sunt :
Tabelul 1.1 Mulimea tuturor funciilor Boole-ene cu dou variabile. x 1 x 0 f 0 f 1 f 2 f 3 f 4 f 5 f 6 f 7 f 8 f 9 f 10 f 11 f 12 f 13 f 14 f 15
Figura 1. Reprezentarea modelului unui circuit combinaional 1 Note de curs, dr.ing.mat. Ion I. Bucur
2 Dintre acestea, se remarc, pentru ilustrarea exemplului : - funciile constante 0 i 1, respectiv f 0 i f 15 ; - funciile identic x 1 i x 0 , respectiv f 3 i f 5 ; - funciile x 1 i x 0 , respectiv f 12 i f 10 ; - funciile SAU i I, respectiv f 7 i f 1 .
Circuitele combinaionale pot fi introduse prin enumerarea valorilor funciei corespunztoare punctelor, n numr finit, domeniului de definiie sau printr-o descriere comportamental a circuitului. Cea de-a doua cale este reductibil la prima.
Exemplul 1.2 Se consider un circuit combinaional care realizeaz suma a dou numere binare a i b fr semn reprezentate fiecare printr-un singur rang. Un astfel de circuit se numete, tradiional, semi-sumator.
Circuitul, se poate remarca, este introdus printr-o descriere comportamental. Acestei descrieri se poate asoca, simplu, o descriere enumerativ punct cu punct, dup cum urmeaz :
Se remarc utilizarea unui mod de scriere explicit att al valorilor argumentelor a i b ct i al valorilor funciilor de ieire suma i transportul, separnd prin caracterul bar vertical ( | ) punctul curent din domeniul de definiie, de valorile funciilor n acel punct. Acest mod de scriere este mult rpndit n literatur.
Cele dou funcii sunt exprimabile separat ca formule Boole-ene utiliznd fie valorile 1 (acolo unde funcia este asertat), fie valorile 0 (acolo unde funcia este complementat). n acest exemplu se va considera exprimarea celor dou funcii prin aseriuni.
Pentru aceasta se construiesc formulele celor dou funcii utiliznd teorema de reprezentare a algebrelor Boole-ene :
suma(a,b) = ab + ab ; transportul(a,b) = ab.
S-a utilizat notaia, mult rspndit, a pentru variabila a complementat.
Exist o strns coresponden ntre definirea punct cu punct (numit i definirea prin tabelul de adevr) i scrierea prin formule a unei funcii. n realitate, ambele cuprind aceeai informaie. Se poate remarca, din forma canonic disjunctiv, c produsele variabilelor funciilor sunt calculate acolo unde funcia ia valoarea 1. Produsele respective se numesc, tradiional, termeni produs (din cauza analogiei, curent practicate, dintre funcia I i Multiplicarea numerelor reale) i se calculeaz astfel : - valoare 0 a variabilei, variabila apare n produs complementat, - valoare 1 a variabilei, variabila apare n produs asertat.
Pentru termenii produs se mai utilizeaz, alternativ, denumirea de mintermi. Mintermii sunt indiciai, curent, cu valorile zecimale corespunztoare scrierii binare a mintermului. Astfel formulele pentru cele dou funcii pot fi scrise, n aceeai ordine, astfel :
suma(a,b) = m 1 + m 2 ; transportul(a,b) = m 3 .
Construcia formulelor prin punctele unde funciile sunt complementate se poate deduce similar sau se poate calcula simplu utiliznd relaiile De Morgan aplicate formulei deduse pentru punctele unde funciile sunt asertate. Este un foarte bun exerciiu.
PROIECTAREA LOGIC
1.1 Dualitatea i Legile DeMorgan
Dualitatea este o proprietate foarte util a algebrelor booleene. Expresia dual a unei expresii Boole- ene se deduce prin: - nlocuirea operatorului I (), prin operatorul SAU (+) i reciproc; - nlocuirea constantei 0, prin constanta 1 i reciproc; - n timp ce, variabilele expresiei rmn neschimbate.
Orice teorem ori propoziie demonstrat din algebra boolean ca fiind adevrat, are ntodeauna o dual, deasemenea adevrat. Dualitatea este, n esen, o meta-teorem, cu alte cuvinte o teorem despre teoreme.
Cu toate c dualitatea nu cuprinde, n sine, o modalitate direct de simplificare a expresiilor booleene, aceasta ofer posibilitatea deducerii unor noi teoreme din cele deja cunoscute ajuntnd astfel n procesul de simplificare al expresiilor.
Astfel, teorema de unificare x y + x y = x, are duala formulat astfel (x + y) (x + y) = y.
O demonstraie a dualei teoremei de unificare decurge, succesiv, n dou etape astfel: (1) aplicnd legea de distributivitate se poate transcrie expresia membrului stng al dualei teoremei de unificare: (x + y) (x + y) = x (x + y) + y (x + y), (2) n continuare, expresia obinut devine: x (x + y) + y (x + y) = x + y x = x ( y + 1) = x, ceea ce trebuia demonstrat.
Se consider expresia: f = abc + a(b + c), pentru care se calculeaz duala. O cale simpl de calcul a dualei poate fi imaginat prin divizarea expresiei date n sub-expresii mai mici pentru care efortul de calcul poate fi mai uor controlat: f = e 1 + e 2 , unde e 1 = abc, iar e 2 = a(b + c). Se noteaz, tradiional, duala expresiei f prin f D , rezultnd c: f D = e 1D e 2D . Aplicnd principiul dualitii sub-expresiei e 1D , rezult: e 1D = a + b + c. Similar, se calculeaz sub-expresia: e 2D = a + bc. Rezultatul final arat astfel : f D = (a + b + c)( a + bc).
Legea DeMorgan ofer o modalitate teoretic de complementare a unei funcii, de complexitate modic. Expresia complementar a unei expresii date se formeaz pornind de la expresia original prin nlocuirile: - oricare literal, prin complementul su (x prin x i reciproc), - oricare constant, prin complementara sa (0 se substituie prin 1 i reciproc), - operatorul I se substituie prin operatorul SAU i reciproc.
Aceast teorem, aplicat chiar operatorilor I i SAU arat relaiile cu operatorii complementari SAU-NU respectiv I-NU: (x + y) = x y, (x y) = x + y.
Relaiile anterioare pot fi interpretate astfel: 3 Note de curs, dr.ing.mat. Ion I. Bucur
4 Operatorul SAU-NU aplicat unor variabile, este identic cu operatorul I aplicat variabilelor respective dar complementate, n timp ce operatorul I-NU aplicat unor variabile este identic cu operatorul SAU aplicat variabilelor respective dar complementate.
Se consider expresia boolean de trei variabile E(a,b,c) = abc + abc + abc + abc. Complementara acesteia se calculeaz, pas cu pas astfel: (E(a,b,c)) = (abc + abc + abc + abc), (E(a,b,c)) = (abc) (abc) (abc) (abc), (E(a,b,c)) = (a + b + c) (a + b + c) (a + b + c) (a + b + c), (E(a,b,c)) = (a + ab + ac + ab + bc + bc + c) (a + ab + ac + ab + bc + ac + bc), (E(a,b,c)) = (a + bc + bc + c) (a + bc + bc), (E(a,b,c)) = (a + c)(a + bc + bc), (E(a,b,c)) = abc + abc + ac + bc, (E(a,b,c)) = abc + bc + ac.
O metod, puin mai simpl, pentru calculul formal al complementului expresiei unei funcii const n calculul dualei expresiei funciei urmat de complementarea fiecrui literal.
Astfel, complementul expresiei booleene de trei variabile din exemplul precedent ar putea fi calculat dup cum urmeaz: E D (a,b,c) = (a + b + c) (a + b + c) (a + b + c) (a + b + c), Complementnd fiecare literal din expresia dualei rezult: (E(a,b,c)) = (a + b + c) (a + b + c) (a + b + c) (a + b + c).
De remarcat faptul c duala unei expresii i legea DeMorgan aplicat aceleiai expresii nu sunt unul i acelai lucru. Procedeul de obinere al dualei este similar cu meniunea c literalii nu sunt complementai pe durata procesului de calcul. Astfel, duala funciei SAU-NU este funcia I-NU i reciproc, iar duala funciei I este funcia SAU i reciproc. Atunci cnd se aplic, unei funcii, teorema dualitii se obine o cu totul alt funcie. Prin aplicarea legii DeMorgan unei funcii anumite se obine complementara respectivei funcii.
2. Optimizarea circuitelor logice combinaionale
n continuare se vor aborda principiile optimizrii circuitelor logice combinaionale modelate prin expresii formate din sume de produse (SDP) n dou niveluri sau, echivalent, prin forme tabelare (FT) cum ar fi, spre exemplu, tabelele de implicani. Translatarea ntre cele dou forme este imediat, n ambele sensuri. Dat fiind faptul c translatarea ntre cele doua forme este fr echivoc, pentru fixarea ideilor, se poate considera n continuare c orice circuit este prezentat sub prima form, suma de produse.
Minimizarea exact unei funcii scalare Booleene are drept principal obiectiv, pentru respectiva funcie, stabilirea unei expresii algebrice echivalente, prin sume de produse, minime ca numr de termeni i avnd, eventual, un numr minim de literali. Astfel de exprimare se mai numete, tradiional, acoperire prin sum de produse. Sunt utilizate, n acest scop, toate punctele din domeniul de definiie n care funcia este definit prin valoarea 1 i punctele n care valoarea funciei nu este precizat, dac astfel de puncte exist n specificaia funciei. Gsirea unei forme n produs de sume este similar i simplu de dedus din forma n sum de produse.
nainte s se considere aspecte att teoretice ct i de natur tehnologic, pragmatice, este util s se aib n vedere un exemplu, de complexitate redus dar care s contureze aspectele definitorii ale acestei probleme, eseniale n proiectarea logic. PROIECTAREA LOGIC
Exemplul 2.1. Pentru funcia specificat prin suma de mintermi: f = m 5 + m 6 + m 9 + m 10 + m 13 + m 14 , se dorete stabilirea unor posibile implementri, ct mai simple Numrul (minim) de variabile pentru aceast funcie este patru, i aceste variabile vor fi notate prin: x 8 , x 4 , x 2 i x 1 .
Exprimarea mintermilor n format binar este prezentat n tabelul 4:
Tabelul 2.1 Funcia din exemplul 2.1 Variabilele funciei Mintermii funciei f x 8 x 4 x 2 x 1
m 5 0 1 0 1 m 6 0 1 1 0 m 9 1 0 0 1 m 10 1 0 1 0 m 13 1 1 0 1 m 14 1 1 1 0
Translatarea literal, n ordine, a mintermilor funciei conduce la aceast expresie, n sume de produse canonice, a funciei considerate: f = x 8 'x 4 x 2 'x 1 + x 8 'x 4 x 2 x 1 ' + x 8 x 4 'x 2 'x 1 + x 8 x 4 'x 2 x 1 ' + x 8 x 4 x 2 'x 1 + x 8 x 4 x 2 x 1 ', (1)
innd cont de comutativitatea operatorului + i de faptul c n algebrele Boole-ene are loc identitatea a + a = a, expresia funciei f se poate scrie, dup o prealabil grupare convenabil a termenilor produs, astfel: f = (x 8 'x 4 x 2 'x 1 + x 8 x 4 x 2 'x 1 ) + (x 8 x 4 'x 2 'x 1 + x 8 x 4 x 2 'x 1 ) + & & x 1 ' x 2''
x 4 ' x 8'
x & & + & x 1 ' & x 2'
x 4'
x 8'
x 1'
x 2 ' x 4'
x 8 ' x 1'
x 2 ' x 4 ' x 8'
x 1'
x 2 ' x 4''
x 8'
x 1 ' x 2'
x 4'
x 8 ' f (a) & x 1' x 2 ' x 8' & x 1 ' x 2' x 4' + & 1' x 2 ' x 4' & x x 1 ' x 2' x 8' f (b) 1'
& x 2 ' & x 2'
x 1 ' + x f + 4 x 8 (c) Figura 2.1. Realizri posibile ale funciei din exemplul 2.1. 5 Note de curs, dr.ing.mat. Ion I. Bucur
6 (x 8 'x 4 x 2 x 1 ' + x 8 x 4 x 2 x 1 ' ) + (x 8 x 4 'x 2 x 1 ' + x 8 x 4 x 2 x 1 '), (2) n expresia anterioar a funciei f, din fiecare parantez se pot factoriza produse de cte trei variabile, astfel: f = x 4 x 2 'x 1 (x 8 ' + x 8 ) + x 8 x 2 'x 1 (x 4 + x 4 ') + x 4 x 2 x 1 '(x 8 '+ x 8 ) + x 8 x 2 x 1 '(x 4 ' + x 4 ), (3) Considernd identitile Boole-ene a + a' = 1 i a 1 = a, expresia funciei f se rescrie astfel: f = x 4 x 2 'x 1 + x 8 x 2 'x 1 + x 4 x 2 x 1 ' + x 8 x 2 x 1 '. (4) Se poate remarca, n expresia anterioar a funciei f, urmtoarea factorizare: f = (x 4 + x 8 )x 2 'x 1 + (x 4 + x 8 )x 2 x 1 '. (5) Expresia iniial a funciei, expresia (1), forma minimizat (4) i forma factorizat (5) sunt reprezentate schematic, simbolic, n figura 2 (a), (b) i respectiv (c).
Cercetnd circuitele din figura 2.1 se poate observa cu uurin c dintre cele trei realizri ale funciei f, cea mai complex este cea din figura 2.1.(a). Comparnd, n continuare, circuitele 2.1.(b) i 2.1.(c) se poate spune c n cazul circuitului 2.1(c) sunt utilizate mai puine componente dar, n acelai timp se observ c, spre deosebire de celelalte dou circuite are mai multe niveluri. Un numr crescut de niveluri poate implica, depinznd de tehnologie, o vitez de lucru mai sczut pentru un circuit combinaional.
Alegerea ntre un circuit mai economicos, dar mai lent, i unul mai costisitor, dar mai rapid, este tranat prin considerente care in seama de contextul n care este plasat circuitul aflat n discuie. Este de reinut c toate considerentele ce vor fi fcute n continuare se vor referi exclusiv la circuitele cu dou niveluri. De remarcat faptul c n cazul circuitelor combinaionale cu dou niveluri, aa cum se poate vedea n figura 2.1(b), fiecare produs din suma de produse reprezint o poart (I) iar fiecare literal dintr-un produs reprezint o intrare ntr-o poart. ntreaga sum de produse corespunde unei pori (SAU). Similar se ntmpl n cazul implementrii circuitelor combinaionale prin produse de sume: fiecare sum reprezint o poart (SAU) iar ntregul circuit este realizat printr-o poart (I). Ca i n cazul sumelor de produse, un literal dintr-o sum este o linie de intrare ntr-o poart SAU. Trebuie remarcat, pe scurt, c numrul de linii de intrare ntr-o poart este, n general, limitat iar numrul respectiv depinde de tehnologia n care este construit poarta n cauz.
Porile au costuri dup cum i liniile de intrare n pori au costurile lor. Raportul dintre costul unei linii de intrare ntr-o poart i costul acelei pori este dependent de tipul porii, de tehnologia n care se realizeaz poarta etc. Se poate aprecia, n general, c atunci cnd se pune problema unei pori suplimentare, costul acesteia este de cteva ori mai mare dect costul unei linii de intrare ntr-o poart deja existent n circuitul respectiv. Din acest punct de vedere, micorarea numrului de pori este un criteriu important n gsirea, n general, a unei forme mai simple pentru o funcie Boole-ean dat.
2.1 Principiile optimizrii logice.
Obiectivul minimizrii logice n dou niveluri este reducerea mrimii reprezentrii funciilor Booleene n oricare din formele de reprezentare sume de produse ori produse de sume. Se poate remarca faptul c oricare din cele dou forme ale funciilor Booleene poate fi dedus din cealalt cu ajutorul legilor De Morgan iar aceast transformare pstreaz numrul de termeni i de literali. Prin urmare, se poate concentra abordarea doar asupra minimizrii unei singure forme i anume suma de produse, fr s se piard din generalitate.
Obiectivul detaliat al minimizrii logice n dou niveluri poate varia puin n funcie de stilurile de implementare. Circuitele PLA sunt un astfel de stil de implementare. Prima int a minimizrii logice, pentru acest stil de implementare este reducerea numrului de produse i inta secundar este reducerea literalilor din produse.
PROIECTAREA LOGIC
Alte obiective de optimizare sunt relevante atunci cnd funciile modelate prin forme n dou niveluri sunt implementate altfel dect prin PLA-uri. Reprezentrile logice n doua niveluri pentru funcii scalare, spre exemplu, pot fi implementate prin pori complexe a cror mrime este corelat cu numrul de literali din forma factorizat a acelei reprezentri. n astfel de situaii obiectivul major este minimizarea numrului de literali.
Minimizarea logic pentru o funcie scalar sau o funcie vectorial se face dup aceleai principii, dar cazul vectorial este mult mai complex. Minimizarea disjunct a componentelor scalare ale unei funcii vectoriale poate conduce la rezultate suboptimale deoarece optimizarea nu poate exploata comunitatea unor termeni produs. Un rezultat important n optimizarea logic n dou niveluri este echivalena funciilor vectoriale binare de variabile binare cu funciile binare scalare de variabile multi-valorice. Din astfel de raiuni, pentru nceput, abordarea se va concentra asupra tehnicilor de optimizare ale funciilor scalare de variabile bi-valorice.
2.2 Definiii
Se vor considera funcii binare (Boole-ene) de variabile binare incomplet specificate, de forma: f: B n {0, 1, *} m , deoarece funciile complet specificate sunt un caz particular al funciilor cu puncte nedefinite, nespecificate (dont care).
Pentru fiecare linie de ieire f i (1 i m) se definesc trei mulimi de puncte disjuncte, partiii ale domeniului de definiie: - mulimea punctelor n care funcia f i are valoarea 1, - mulimea punctelor n care funcia f i are valoarea 0 i - mulimea punctelor n care funcia f i are valoarea * sau mulimea punctelor nedefinite.
Aceste partiii sunt notate respectiv prin mp1, mp0, respectiv mp* (submulimi ale domeniului de definiie B n ). Prin aceast partiionare a domeniului de definiie, fiecare funcie scalar incomplet specificat poate fi privit ca un triplet de funcii complet specificate.
Funciile sunt reprezentate (prin sume de produse ori tabelar) ca liste de implicani. Conceptul implicantului multi-ieire (multi-funcie) este general ca natur, deoarece combin vectorul valorilor liniilor de intrare cu vectorul valorilor corespunztoare liniilor de ieire. n consideraiile care urmeaz se va restriciona noiunea de implicant doar la valoarea 1 sau * (neprecizat) a unei funcii.
n consecin, partea de ieire a unui implicant multi-ieire este bivaloric pentru o component scalar a respectivei funcii vectoriale, avnd urmtoarea semnificaie: - o valoare 1 implic fie o valoare 1, fie o valoare * a componentei scalare respective, n timp ce, - o valoare 0 nu implic atribuirea unei valori a respectivei componente scalare; pur i simplu acea component scalar este ignorat n punctul corespunztor prii de intrare.
n astfel de situaii partea de intrare a implicantului, cu alte cuvinte, se refer la unul sau mai multe puncte din domeniul de definiie, unde anumite componente scalare ale funciei vectoriale iau valoarea 1 ori * i anume acele componente pentru care partea de ieire a implicantului multi-valoric este nenul.
Definiia 2.1 Un implicant multi-ieire (multi-funcie) al unei funcii vectoriale f: B n {0, 1, *} m
este o pereche de vectori linie de dimensiune n i m numii partea de intrare i respectiv partea de ieire.
7 Note de curs, dr.ing.mat. Ion I. Bucur
8 Partea de intrare are componente cu valori din mulimea {0, 1, *} i reprezint un produs de literali. Partea de ieire are componente cu valori din mulimea {0, 1}. Pentru fiecare componenta a ieirii o valoare nenul implic o valoare 1 sau * a respectivei funcii scalare n punctul (punctele) corespunztor (corespunztoare) prii de intrare.
Mintermii multi-ieire sunt implicani supui unor restricii deosebite.
Definiia 2.2 Un minterm multi-ieire al unei funcii precum cea definit anterior este un implicant multi-ieire a crui parte de intrare are componente cu valori din mulimea {0, 1} (exact n literali) i care implic valoare nenul pentru una i numai pentru una dintre componentele (funciile scalare) de ieire.
Exemplul care urmeaz ilustreaz printr-o funcie vectorial simpl, cu dou componente scalare, aspectele definitorii ale implicanilor canonici, mintermii, n cazul funciilor vectoriale.
Exemplul 2.2. f = (f 1 , f 2 ); f 1 = abc + abc + abc + abc+ abc, f 2 = abc + abc
Un implicant multi-ieire al acestei funcii vectoriale f este (*01|11) .
Acest implicant multi-ieire reprezint patru mintermi multi-ieire:
(001|10), (101|10), (001|01) i (101|01).
Datorit faptului c un implicant, necanonic, poate acoperi mai muli implicani canonici (mintermi) multi-ieire, se poate concepe reprezentarea unei funcii printr-o mulime de implicani necanonici. Iar numrul implicanilor necanonici ai respectivei mulimi s fie, posibil, mai mic dect numrul implicanilor canonici ai funciei. O astfel de mulime cu implicani necanonici, asociat unei funcii date, este definit n continuare.
Definiia 2.3 O acoperire a unei funcii vectoriale binare este o mulime (o list) de implicani care conin (acoper) mintermii acelei funcii.
Se noteaz prin F acoperirea funciei f. Mulimile mp1, mp0, mp* pot fi modelate prin acoperiri, unde implicanii i mintermii sunt corespunztori funciilor complet specificate respective. Acoperirile mp1, mp0 i mp* sunt notate, tradiional, prin F ON , F OFF i respectiv F DC . O acoperire F a unei funcii f satisface inegalitatea: F ON _ F _ F ON F DC . Atunci cnd o funcie este complet definit, F ON i F sunt identice (deoarece F DC este mulimea vid).
Mrimea sau cardinalitatea unei acoperiri este numrul de implicani ai acelei acoperiri.
Definiia 2.4. O acoperire minim este o acoperire de cardinalitate minim.
n cele ce urmeaz se va considera c obiectivul minimizrii logice combinaionale exacte n dou niveluri este determinarea unei acoperiri minime. Este, adesea, util s se determine acoperiri minimale, locale, numite acoperiri minimale, deoarece calculul acestora poate fi atins cu resurse (memorie i timp) mai reduse. Obiectivul minimizrii euristice logice combinaionale n dou niveluri este determinarea unei acoperiri minimale. Astfel de acoperiri sunt adesea foarte apropiate n cardinalitate de acoperirile minime i pot astfel oferi soluii eficiente pentru problemele practice. n mod normal minimalitatea local se definete n termeni de coninere, includere.
Definiia 2.5 O acoperire iredundant a unei funcii este o acoperire care nu este un superset propriu al niciunei alte acoperiri pentru aceeai funcie.
PROIECTAREA LOGIC
Altfel spus, ndeprtarea oricrui implicant dintr-o acoperire minim nu mai acoper, nu mai conine, funcia. Echivalent, nici un implicant nu este coninut n orice subset de implicani ai acoperirii. O proprietate de minimalitate mai slab este minimalitatea n raport cu coninerea unui singur implicant, numit adeseori, coninerea singular.
Definiia 2.6 O acoperire este minimal n raport cu coninerea singular dac nici un implicant nu este coninut n orice alt implicant al acoperirii.
O acoperire iredundant este deasemenea minimal n raport cu coninerea singular, dar nu i reciproc. Raiunea acestei afirmaii este aceea c un implicant poate fi redundant deoarece este coninut ntr-un subset de implicani ai acoperirii i nu de un singur implicant. Din acest motiv, redundana este o proprietate mai puternic.
Exemplul 2.3. Se reia funcia f = (f 1 , f 2 ) din exemplul 2.2. O acoperire minimal de cardinalitate trei este specificat prin:
(00*|10) (*01|11) (11*|10)
O acoperire iredundant de cardinalitate patru este definit prin:
(00*|10) (*01|01) (1*1|10) (11*|10)
O acoperire redundant de cardinalitate cinci, dar care este minimal n raport cu coninerea singular este exemplificat prin:
(00*|10) (*01|01) (*01|10) (1*1|10) (11*|10)
De reinut c cel de-al treilea implicant (cel indicat printr-o sgeat orizontal) este coninut n reuniunea dintre primul i cel de-al patrulea implicant.
O alt proprietate a implicanilor i a acoperirilor este aceea de a fi primi, respectiv prime.
Definiia 2.7. Un implicant este prim dac nu este coninut de nici un alt implicant al funciei. O acoperire este prim dac toi implicanii si sunt primi.
n raport cu definiia 2.7 se cuvin fcute cteva remarci complementare: - definiia calitii de implicant prim a unui implicant este legat de toi implicanii posibili ai funciei i nu doar de cei ai acoperirii considerate; - pentru funciile scalare, un implicant prim corespunde unui produs de literali, unde nici un literal nu poate fi eliminat fr s se piard proprietatea de implicant.
n termeni generici, un implicant prim corespunde unui implicant cu dimensiune maximal. Dimensiunea maximal nseamn cea mai mare dimensiune ce poate fi atins fr s se intersecteze F OFF sau, echivalent, mp0.
Pentru funciile vectoriale, un implicant prim conine i un numr maxim de componente scalare (funcii scalare) ale funciei vectoriale reprezentate n partea de ieire a implicantului. Implicanii 9 Note de curs, dr.ing.mat. Ion I. Bucur
10 primi sunt adesea numii primi, pentru o exprimare mai scurt, mai simpl, fr s existe riscul de echivoc.
Exemplul 2.4. Se reia funcia vectorial de variabile binare din exemplele precedente. Lista tuturor implicanilor primi arat astfel:
(00*|10) (*01|11) (1*1|10) (11*|10)
Prin definiie nici un implicant prim nu este coninut n alt implicant prim al funciei. Implicanii anteriori reprezint o acoperire prim, dar care nu este minim. In adevr, al treilea implicant prim este coninut n reuniunea dintre al doilea i al patrulea implicant prim. Prin definiia unui implicant prim, dac acoperirea este prim, atunci aceasta este minimal n raport cu coninerea singular. nlturnd cel de-al treilea implicant prim se obine o acoperire minim care este necesar iredundant. Se presupune, acum, c funcia este incomplet specificat i mulimea mp* (sau F DC ) pentru ambele ieiri este specificat, simplu, prin implicantul cu partea de intrare 100.
Atunci, implicanii primi ar fi: (*0*|10), (*01|11), (1**|10).
Aceti implicani primi formeaz o acoperire minim.
Anumii implicani primi au proprietatea special c trebuie s fie inclui n orice acoperire a funciei. Aceti implicani sunt numii implicani primi eseniali.
Definiia 2.8. Un implicant prim este esenial dac exist un minterm al funciei acoperit (coninut) n exclusivitate (fa de mulimea tuturor implicanilor primi ai funciei) de acest implicant prim.
Exemplul urmtor abordeaz cteva proprieti importante ale implicanilor primi.
Exemplul 2.5. Funcia considerat n exemplele anterioare are asociai aceti implicani primi: (00*|10) (*01|11) (1*1|10) (11*|10)
Pentru prima component scalar se observ c primul implicant prim este esenial deoarece acoper n exclusivitate mintermul (000|10), iar al patrulea implicant prim este deasemenea esenial pentru c acoper n exclusivitate mintermul (110 |10).
A doua funcie scalar este implicat de numai un singur implicant, mai exact de al doilea implicant. Acest implicant este, n consecin, esenial. Dintre toi implicanii primi, doar al treilea nu este esenial.
Minimizarea logic exact
Minimizarea logic exact vizeaz rezolvarea gsirii unei acoperiri minimale. Este considerat o problema clasic n teoria funciilor binare de variabile discrete i primul rezultat remarcabil n gsirea unei acoperiri minime a fost formulat de Quine i McCluskey. Soluia problemei, aa cum a fost PROIECTAREA LOGIC
formulat de autori, se bazeaz pe teorema lui Quine, teorem care delimiteaz spaiul cutrilor soluiei optime.
Teorema Quine
Exist o acoperire minim care este prim.
Demonstraie Se consider o acoperire minim care nu este alctuit din implicani primi. Fiecare implicant care nu este prim poate fi nlocuit printr-un implicant prim care-l conine. Astfel, mulimea rezultat de implicani este o acoperire i are aceeai cardinalitate ca i acoperirea iniial. n consecin, exist o acoperire minim care este alctuit doar din implicani primi.
Teorema Quine permite limitarea cutrii unei acoperiri minimale la acele acoperiri care constau exclusiv din implicani primi. Se remarc faptul ca teorema se poate generaliza pentru a manevra definiii mai largi ale acoperirii minime, unde costul unui implicant este ntotdeauna mai mic sau egal cu costul unui implicant pe care-l conine. Teorema se aplic, spre exemplu, cazului de minimizare al numrului literalilor pentru funciile scalare (cu o singur ieire).
E. McCluskey a formulat cutarea unei acoperiri minime ca o problema de acoperire ntr-un tabel de implicani primi. Se va aborda aceasta formulare considernd funcii scalare complet definite. Un tabel de implicani primi este, n fapt, o matrice binar A ale crei coloane sunt n coresponden biunivoc cu implicanii primi ai funciei f, iar rndurile sunt n coresponden biunivoc cu mintermii funciei. Un element a i,j eA este 1 dac i numai dac cel de-al j-lea prim acoper (conine) cel de-al i- lea minterm. O acoperire minim este o mulime minim de coloane care acoper toate liniile, sau echivalent: o mulime minim de primi ce acoper (conin) toi mintermii funciei. Se poate observa c: Problema acoperirii poate fi vzut ca fiind problema gsirii unui vector binar x reprezentnd o mulime de implicani primi cu cardinalitate ( |x| ) minim astfel nct : Ax >= 1 (1) Matricea A poate fi privit ca matricea de inciden a unui hipergraf ale crui noduri corespund mintermilor, iar arcele corespund implicanilor primi. ntr-o astfel de modelare, problema acoperirii corespunde unei acoperiri cu arce ale hipergrafului.
Exemplul 2.6. Fie funcia scalar de trei variabile a, b i c:
f(a, b, c) = abc + abc + abc + abc + abc
Se poate verifica cu uurin faptul c implicanii primi ai acestei funcii sunt acetia:
innd seama de implicanii primi p, q, r i s, matricea A arat astfel:
p q r s 000 1 0 0 0 001 1 1 0 0 101 0 1 1 0 111 0 0 1 1 110 0 0 0 1
Vectorul x = [1101] T reprezint o acoperire, pentru c Ax >= 1. Se poate afirma c vectorul x selecteaz implicanii primi p,q i s. 11 Note de curs, dr.ing.mat. Ion I. Bucur
12
Minimizarea exact poate fi rezolvat calculnd nti tabelul de implicani primi i apoi soluionnd problema de acoperire rezultat. De remarcat faptul c problema de acoperire n acest caz este unat, deoarece toate clauzele de acoperire pot fi exprimate ca o disjuncie de implicani. Dificultatea abordrii const din intractabilitatea problemei de acoperire i din mrimea tabelului de implicani.
O funcie scalar binar cu n variabile binare poate avea 3 n /n primi i 2 n-1 mintermi. De aceea, un algoritm exponenial al unei probleme de mrime exponenial este probabil s necesite un timp lung de calcul i un volum mare de memorie. Rezultatele actuale arat c multe probleme practice de minimizarea logic ale unor funcii dificile pot fi rezolvate exact prin algoritmi performani care exploateaz natura problemei i structuri de date eficiente.
Tabelul de implicani poate fi redus. Se pot extrage coloanele eseniale corespunztoare implicanilor primi eseniali, deoarece acetia oricum trebuie s aparin oricrei soluii. Se pot nltura liniile dominante i coloanele dominate. Extracia implicanilor primi eseniali i nlturarea coloanelor dominate i a liniilor dominante se poate face iterativ. Se obine astfel, n final, tabelul redus al implicanilor primi.
Dac tabelul redus se ntmpl sa fie vid, atunci s-a gsit soluia deja, prin implicanii primi eseniali anterior extrai. Altfel, tabelul redus, numit uneori i tabel ciclic, modeleaz aa-zisul miez ciclic al problemei. Metoda original propus de E. McCluskey revine la branri, adic se aleg diferite combinaii de coloane (implicani primi) i se evalueaz costul corespunztor.
Chiar dac alegerea unei coloane (un prim implicant) poate conduce la simplificri bazate pe regulile de dominan i de eseniali, procesul este exponenial (n cel mai defavorabil caz) n raport cu mrimea tabelei reduse.
Exemplul 2.7. Se consider matricea A din exemplul 2.6.
p q r s 000 1 0 0 0 001 1 1 0 0 101 0 1 1 0 111 0 0 1 1 110 0 0 0 1
Se remarc imediat c implicanii p i s sunt eseniali. Aceasta revine la a spune c implicanii primi p i s aparin oricrei acoperiri. Din acest motiv, coloanele corespunztoare pot fi terse la fel ca i liniile incidente lor. Dup procesul de reducere al matricei, matricea astfel obinut are o singur linie i dou coloane, artnd astfel : q r 101 1 1
n acest caz matricea ilustreaz faptul c oricare dintre cei doi implicani q i r poate fi folosit pentru a completa o acoperire minim. Matricea redus nu este ciclic i nu este necesar, n consecin, un proces de branare.
n concluzie, exist dou soluii ale problemei acoperirii prime pentru aceast funcie:
{p, q, s} i {p, r, s}.
O alt abordare clasic numit, adesea, metoda lui Petrick const n scrierea clauzelor de acoperire ale tabelului (redus) de implicani n forma unui produs de sume. Fiecare clauz (sau, echivalent, fiecare sum din acest produs) corespunde unui minterm i aceasta reprezint disjuncia implicanilor primi PROIECTAREA LOGIC
13 care acoper respectivul minterm. Produsul de sume este apoi transformat ntr-o suma de produse ce este satisfcut ori de cte ori un termen al su ia valoarea 1. n acest caz, termenii produs reprezint implicanii primi care au fost alei. Costul unei acoperiri este legat de numrul de literali din produs. Ca rezultat, o acoperire minim este identificat prin orice termen produs al SDP avnd cei mai puini literali.
Exemplul 2.8. Se aplic metoda lui Petrick matricei A (tabelului cu incidena implicanilor primi, cum mai este numit) din exemplul 2.6.
p q r s 000 1 0 0 0 001 1 1 0 0 101 0 1 1 0 111 0 0 1 1 110 0 0 0 1
Clauza care stabilete acoperirea primului minterm este p; clauza relativ la cel de-al doilea minterm este p +q, etc. Produsul de sume arat astfel:
(p)(p + q)(q + r)(r + s)(s) = 1
Calculnd produsele se obine forma sum de produse (SDP):
pqs + prs = 1
ceea ce exprim faptul c exista dou acoperiri minime avnd aceeai cardinalitate, 3.
Prima acoperire este alctuit din aceast submulime {p, q, s} a implicanilor primi, iar a doua reprezint submulimea {p, r, s} a implicanilor primi.
De remarcat c metoda lui Petrick s-ar fi putut aplica, nc mai eficient, tabelului redus de implicani primi i ar fi condus la o singura clauz:
|+ =1
Astfel, ori implicantul prim q ori implicantul prim r, mpreun cu implicanii primi eseniali {p, s} determin o acoperire minim alctuit din implicani primi ai funciei considerate.
Chiar dac exprimarea produsului de sume i alegerea termenului produs din suma de produse sunt imediate, transformarea produsului de sume ntr-o sum de produse (SDP) implic un numr exponenial de operaii. Acest fapt limiteaz metoda Petrick la tabele cu dimensiuni relativ mici.
Algoritmul Quine-McCluskey poate fi extins la funcii vectoriale prin calculul implicanilor primi multi-ieire i a tabelei corespunztoare. Extensii pentru ca acest algoritm s opereze cu funcii incomplet specificate sunt, de asemenea, relativ simplu de alctuit i de aplicat.