1 / 30

Kombinatoorsete süsteemide disain

Kombinatoorsete süsteemide disain. Mitmetasemelised loogikafunktsioonid L6. Mitmetasemeliste loogikafunktsioonide esitusviisid, teisendused, optimeerimine L7. Funktsioonide algebraline jagamine, testitavuse alused, viite analüüs. Algebraline jagamine. Kaks algebralist avaldist

silvio
Télécharger la présentation

Kombinatoorsete süsteemide disain

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Kombinatoorsete süsteemide disain • Mitmetasemelised loogikafunktsioonid • L6. Mitmetasemeliste loogikafunktsioonide esitusviisid, teisendused, optimeerimine • L7. Funktsioonide algebraline jagamine, testitavuse alused, viite analüüs I207 - Digitaalloogika ja -süsteemid - L7

  2. Algebraline jagamine • Kaks algebralist avaldist • jagatav (dividend),   jagaja (divisor),jagatis (quotient),   jääk (remainder) •   fjagatis = fjagatav / fjagaja , kui •   fjagatav = fjagaja fjagatis + fjääk •   fjagaja fjagatis • ning fjagaja ja fjagatis muutujate hulgad ei kattu (sup(fjagaja)sup(fjagatis)=) I207 - Digitaalloogika ja -süsteemid - L7

  3. Algebraline jagamine • Algebraline jagamine • fjagatav = ac + ad + bc + bd + e   &   fjagaja = a + b • fjagatis = c + d    &    fjääk = e • (a+b)(c+d)+e=fjagatav    &    {a,b}{c,d}= • Mitte-algebraline jagamine • fi = a + bc    &    fj = a + b • (a+b)(a+c)=fi    kuid    {a,b}{a,c} I207 - Digitaalloogika ja -süsteemid - L7

  4. Jagamisalgoritm • A = { CjA, j=1,2,...,l} - jagatava kuupide hulk • B = { CiB, i=1,2,...,n} - jagaja kuupide hulk • Jagatis Q ja jääk R on kuupide summad     ALGEBRAIC_DIVISION (A,B) {         for (i=1 to n) {             D={CjA such that CjACiB};             if (D==) return(,A);             Di=D with var. in sup(CiB) dropped;             if (i==1)   Q=Di;   else Q=QDi;         }         R=A-QB;         return(Q,R);     } I207 - Digitaalloogika ja -süsteemid - L7

  5. Jagamine - näide #1 •   fjagatav = ac + ad + bc + bd + e   &    fjagaja = a + b •   A = {ac, ad, bc, bd, e}    &    B = {a, b} • i = 1 • C1B=a,    D={ac, ad}   &   D1={c,d}; Q = {c,d} • i = 2 • C2B=b,    D={bc,bd}   &   D2={c,d} • Q = {c,d}{c,d} = {c,d}      –kuup vastab elemendile! • Tulemus • Q = {c,d}   &   R = {e} • fjagatis=c+d   &   fjääk=e I207 - Digitaalloogika ja -süsteemid - L7

  6. Jagamine - näide #2 •  fjagatav = axc + axd + bc + bxd + e  & fjagaja = ax + b •   A = {axc, axd, bc, bxd, e}    &    B = {ax, b} • i = 1 • C1B=ax,    D={axc, axd}   &   D1={c,d}; Q = {c,d} • i = 2 • C2B=b,    D={bc,bxd}   &   D2={c,xd} • Q = {c,d}{c,xd} = {c}      –kuup vastab elemendile! • Tulemus • Q = {c}   &   R = {axd,bxd,e} • fjagatis=c   &   fjääk=axd+bxd+e I207 - Digitaalloogika ja -süsteemid - L7

  7. Mis siis ikkagi toimub? • A = ac + ad + bc + bd + e    &    B = a + b • (1)   a (c+d) + bc + bd + e • (2)   a (c+d) + b (c+d) + e        (c+d) “” (c+d) “=” (c+d) • (R)   [ ac+ad+bc+bd+e ] “-” [ (a+b) (c+d) ] “=”   “=” [ ac+ad+bc+bd+e ] “-” [ ac+ad+bc+bd ] “=” [ e ] • A = axc + axd + bc + bxd + e    &    B = ax + b • (1)   ax (c+d) + bc + bxd + e • (2)   ax (c+d) + b (c+xd) + e        (c+d) “” (c+xd) “=” (c) • (R)   [ axc+axd+bc+bxd+e ] “-” [ (ax+b) (c) ] “=”   “=” [ axc+axd+bc+bxd+e ] “-” [ axc+bc ] “=” [ axd+bxd+e ] I207 - Digitaalloogika ja -süsteemid - L7

  8. Jagatise eksisteerimine? • Antud kaks algebralist avaldist fi ja fj • fi / fj on tühi, kui üks järgnevaist tingimustest on täidetud: • fj sisaldab muutujat, mida pole fi-s; • fj sisaldab kuupi, mille tugimuutujad ei sisaldu üheski fi kuubi tugimuutujate hulgas ($ sup(Cj)sup(Ci), "Cifi); • fj sisaldab rohkem liikmeid kui fi; • suvalist muutujat on fj-s rohkem kui fi-s. • Kasutusel kiireks kontrolliks • Ei garanteeri jagatise leidumist – ac + be / a + b I207 - Digitaalloogika ja -süsteemid - L7

  9. Jagatise eksisteerimine? • fj sisaldab muutujat, mida pole fi-s; • ab + cd / a + e  a(b)+e(?)+cd • fj sisaldab kuupi, mille tugimuutujad ei sisaldu üheski fi kuubi tugimuutujate hulgas; • abc + def / ab + ad  ab(c)+ad(?)+def • fj sisaldab rohkem liikmeid kui fi; • ab + cd / a + b + c  a(b)+b(?)+c(d) • suvalist muutujat on fj-s rohkem kui fi-s • abc+ade+bcd / ab+ad+ac  ab(c)+ad(e)+ac(?) • Osaline kattumine? • ab+ac+bc / a + b = ? ab+ac+bc = ab+(a+b)c I207 - Digitaalloogika ja -süsteemid - L7

  10. Jagamise kasutamine • Asendamine • Vaadeldakse avaldiste paare • Jagamine suvalises järjekorras • t=ka+kb+e; q=a+b;  t=kq+e; • Eraldamine • Ühiste alam-avaldiste otsimine • p=ce+de; t=ac+ad+bc+bd+e;  k=c+d; p=ke; t=ka+kb+e; I207 - Digitaalloogika ja -süsteemid - L7

  11. Ühiste alam-avaldiste otsimine • Üksikute kuupide eraldamine - monoom • Mitme kuubi eraldamine - tuum (kernel) • Sobivate jagajate leidmine • Kuubivaba (cube-free) avaldis • pole võimalik faktoriseerida kuupi kasutades • Avaldise tuum • avaldise kuubivaba jagatis, kui jagaja on kuup (kaas-tuum (co-kernel)) • Avaldise tuumade hulk K(f) I207 - Digitaalloogika ja -süsteemid - L7

  12. Tuumad - näide •   fx = ace + bce + de + g •   fx / a   -->   ce   --> ei ole kuubivaba •   fx / b   -->   ce   --> ei ole kuubivaba •   fx / c   -->   ae + be   --> ei ole kuubivaba •   fx / ce   -->   a + b   --> kuubivaba --> tuum •   fx / d   -->   e   --> ei ole kuubivaba •   fx / e   -->   ac+bc+d   --> kuubivaba --> tuum •   fx / g   -->   1   --> ei ole kuubivaba •   fx / 1   -->   ace+bce+de+g   --> kuubivaba --> tuum •   K(fx) = { (a+b), (ac+bc+d), (ace+bce+de+g) } • jagada võib näiteks ka “ac+bc”-ga (osa “ac+bc+d”-st) I207 - Digitaalloogika ja -süsteemid - L7

  13. Dekompositsioon • Tuumadel põhinev dekompositsioon • Avaldist jagatakse rekursiivselt • fx = ace + bce + de + g • K(fx) = { (a+b), (ac+bc+d), (ace+bce+de+g) } • ft = ac + bc + d;      fx = te + g; • K(ft) = { (a+b), (ac+bc+d) } • fs = a + b;      ft = sc + d;      fx = te + g; I207 - Digitaalloogika ja -süsteemid - L7

  14. Testitavuse alused • Aga mis saab siis, kui valmis skeem ei tööta? • mudeli tasemel – valideerimine ja verifitseerimine • valmis skeem – testimine • Rikke mudel - mingi ahela lühis 0 või 1-ga ( stuck-at-0 / stuck-at-1 ) • Ahela w kontroll lühisele 0-ga • sisendkombinatsiooniga seatakse vastav ahel 1-ks • võrreldakse väljundeid – vigase skeemi väljund on erinev soovitust • Ahela w kontroll lühisele 1-ga • sisuliselt sama, kuid jälgitav ahel seatakse 0-ks • Ahel w peab olema juhitav ja jälgitav • testitavus sõltub skeemi struktuurist I207 - Digitaalloogika ja -süsteemid - L7

  15. Skeem:   w=ab;   x=w+c;   y=wc; Lühis 0-gaw=0;    x=c;   y=0; Lühis 1-gaw=1;    x=1;   y=c; Kas w on jälgitav? Millised väljundid sõltuvad w-st? Kas w on juhitav? Kas leidub sisendkombinatsioon, mis lubab w-le seada soovitud väärtuse? a a x x b b w w y y a c c x b w y c Näide I207 - Digitaalloogika ja -süsteemid - L7

  16. Testitavuse alused • Vt. ka J.F. Wakerly “Digital Design: Principles and Practices” - 11.2 • Süntees testitavust silmas pidades • võimalikult suur osa sisemisi ahelaid peaksid olema jälgitavad ja juhitavad • liiasuste eemaldamine mitmetasemelisel loogikafunktsioonide minimeerimisel • Ahel w peab olema juhitav ja jälgitav • Peab leiduma ühisosa juhitavust ja jälgitavust määravate sisend-kombinatsioonide vahel, vastasel korral pole mõni riketest määratav • Funktsionaalne test – ainult töö õigsuse kontroll, rike ei pruugi olla määratav • Diagnostika – konkreetse rikke (või isegi mitme rikke) täpne määramine I207 - Digitaalloogika ja -süsteemid - L7

  17. Jälgitavus & juhitavus • Jälgitavus - Boole’i diferentsiaal -   f/xi = fxi fx’i • Kas väljund x (x=w+c) sõltub w-st? Kas väljund y (y=wc) sõltub w-st? • Kofaktorid --   xw=1 ;    xw’=c ;    yw=c ;    yw’=0 ; • x/w = xw xw’ = 1  c = c’      (sõltub siis, kui c==0) • y/w = yw yw’ = c  0 = c      (sõltub siis, kui c==1) • Nii x kui ka y sõltuvad w-st, kuid erinevatel c väärtustel  w on jälgitav väljunditel x ja y (teatud mööndustega) • Juhitavus - soovitud väärtuse seadmine w-l • w = a b • lühis 0-ga juhtimiseks  w==1  a==1 ja b==1 • lühis 1-ga juhtimiseks  w==0  a==0 või b==0 I207 - Digitaalloogika ja -süsteemid - L7

  18. Häiritus (perturbation) • Konsensus (Cxw=xwxw’) - milline osa ei sõltu w-st • Cxw= xw xw’ = 1  c = c ;      Cyw= yw yw’ = c  0 = 0 ; • Lühis 0-ga -   dw’ = w(x/w) = x  xw’ • x --   dxw’ = w(x/w) = x  xw’ = wc’ • y --   dyw’ = w(y/w) = y  yw’ = wc • Lühis 1-ga -   dw = w’(x/w) = x’  xw • x -- dxw’ = w’(x/w) = x’  xw = w’c’ • y --   dyw’ = w’(y/w) = y’  yw = w’c I207 - Digitaalloogika ja -süsteemid - L7

  19. a a x x b b w w y y a c c x b w y c Näide • Lühis 0-ga • dxw’ = wc’   &   dyw’ = wc • sisend - abc == 110 • väljund x - 0 (peab olema 1) • väljund y - 0 (peab olema 0) • sisend - abc == 111 • väljund x - 1 (peab olema 1) • väljund y - 0 (peab olema 1) I207 - Digitaalloogika ja -süsteemid - L7

  20. a a x x b b w w y y a c c x b w y c Näide • Lühis 1-ga • dxw’ = w’c’   &   dyw’ = w’c • sisend - abc == 000 • väljund x - 1 (peab olema 0) • väljund y - 0 (peab olema 0) • sisend - abc == 001 • väljund x - 1 (peab olema 1) • väljund y - 1 (peab olema 0) I207 - Digitaalloogika ja -süsteemid - L7

  21. Mudeli kontroll • Valideerimine • funktsionaalsuse e. käitumise kontroll • simuleerimine • mudeli väljundit võrreldakse soovituga • spetsifikatsioon ↔ mudel • loogikavõrrandid (DNK) ↔ skeem loogikalülidest • Verifitseerimine • erinevate kirjelduste formaalne võrdlus • tõeväärtustabel ↔ loogikavõrrandid ↔ skeem • kirjelduse loogilisuse kontroll • koodikaetus (code coverage) • täielikkus, vastuolude puudumine, kasutatavus, … I207 - Digitaalloogika ja -süsteemid - L7

  22. // Näide if ( t1 ) { do_A; } else { do_B; } if ( t2 ) { if ( t3 ) do_C; else do_D; } else { if ( t3 ) { if (t1) do_E; else do_F; } else do_G; } Esialgne idee (ülesanne) sõltuvalt sisend-tingimustest täita tegevuste jadad [do_A,do_C], [do_B,do_C] jne. Kas kõik variandid on võimalikud? Kuidas seda formaalselt kontrollida? Koodikaetus – tingimuslike harude loetlemine ja analüüs ning koodi optimeerimine Koodikaetus I207 - Digitaalloogika ja -süsteemid - L7

  23. // Näide if ( t1 ) { do_A; } else { do_B; } if ( t2 ) { if ( t3 ) do_C; else do_D; } else { if ( t3 ) { if (t1) do_E; else do_F; } else do_G; } Koodikaetus Jadad & tingimused {do_A;do_C;} –> t1&(t2&t3) {do_A;do_D;} –> t1&(t2&!t3) {do_A;do_E;} –> t1&(!t2&(t3&t1)) {do_A;do_F;} –> t1&(!t2&(t3&!t1)) {do_A;do_G;} –> t1&(!t2&!t3) {do_B;do_C;} –> !t1&(t2&t3) {do_B;do_D;} –> !t1&(t2&!t3) {do_B;do_E;} –> !t1&(!t2&(t3&t1)) {do_B;do_F;} –> !t1&(!t2&(t3&!t1)) {do_B;do_G;} –> !t1&(!t2&!t3) Minimeeri! t1&t2&t3 t1&t2&!t3 t1&!t2&t3 0 ?!?! t1&!t2&!t3 !t1&t2&t3 !t1&t2&!t3 0 ?!?! !t1&!t2&t3 !t1&!t2&!t3 Jadad { do_A; do_C; } { do_B; do_C; } { do_A; do_D; } { do_B; do_D; } { do_A; do_E; } { do_B; do_E; } { do_A; do_F; } { do_B; do_F; } { do_A; do_G; } { do_B; do_G; } • Mis juhtus? • Üks kahest – ülesanne on vigane või liiane… I207 - Digitaalloogika ja -süsteemid - L7

  24. Viite arvutamine / ennustamine • Sünteesi tulemuse kontroll • viide on nõutavast väiksem • sisend/väljund signaalide ajastus on korrektne • Minimeerimine • vähima pindala puhul peab viide jääma etteantud piiridesse • viite minimeerimisel peab pindala jääma etteantud piiridesse • Viite mudel • sõltub loogikalülide (alamavaldiste) viite mudelitest • Loogikaelemendi (alamavaldise) viite mudel • virtuaalsed loogikalülid -- loogika-avaldised • lihtsaim mudel -- ühikviide sõlme kohta • täpsustatud mudelid -- sõltuvad koormatusest (fanout) ja/või avaldise keerukusest I207 - Digitaalloogika ja -süsteemid - L7

  25. a 2 b c f 4 d 5 3 e Viite arvutamine • Sisenditest väljundite suunas arvutamine • andmete valmisoleku-ajad (data-ready time) - ti • ti = di + max j|(j,i)E ( tj ) • sisendid  väljundid • ta=tb=te=0; tc=5; td=1; • t2 = max(ta,tb)+d2 = max(0,0) + 2 = 2 • t3 = max(td,te)+d3 = max(1,0) + 3 = 4 • t5 = max(tb,t3)+d5 = max(0,4) + 5 = 9 • t4 = max(t2,tc,t5)+d4 = max(2,5,9) + 4 = 13 • tf = max(t4)+df = max(13) + 0 = 13 • Suurim viide - 13 I207 - Digitaalloogika ja -süsteemid - L7

  26. a 2 b c f 4 d 5 3 e Viite arvutamine • Väljunditest sisendite suunas arvutamine • nõutavad andmete valmisoleku-ajad (required data-ready time) - t’i • t’i = min j|(i,j) E ( t’j - dj ) • väljundid  sisendid • ta=tb=te=0; tc=5; td=1; t’f=15; • t’4 = min(t’f-df) = min(15-0) = 15 • t’5, t’2 = min(t’4-d4) = min(15-4) = 11 • t’3 = min(t’5-d5) = min(11-5) = 6 • t’a = min(t’2-d2) = min(11-2) = 9 • t’b = min(t’2-d2,t’5-d5) = min(11-2,11-5) = 6 • t’c = min(t’4-d4) = min(15-4) = 11 • t’d, t’e = min(t’3-d3) = min(6-3) = 3 I207 - Digitaalloogika ja -süsteemid - L7

  27. a 2 b c f 4 d 5 3 e Viite arvutamine • Sobivus (slack) -- si = t’i - ti • sa = t’a - ta = 9 - 0 = 9 • sb = t’b - tb = 6 - 0 = 6 • sc = t’c - tc = 11 - 5 = 6 • sd = t’d - td = 3 - 1 = 2 väikseim sobivus  suurim viide 15-2=13 • se = t’e - te = 3 - 0 = 3 • Topoloogiline kriitiline tee (topological critical path) • tee maksimaalse viitega • tee minimaalse sobivusega I207 - Digitaalloogika ja -süsteemid - L7

  28. Lähteülesanne implikantide loetelu tõeväärtustabel, loogika-avaldised (nt. DNK), jne. Minimeerimine implikantide arvu vähendamine täpselt (nt. Quine-McCluskey meetod) võiheuristiliselt (nt. Karnaugh kaart) c b abc xyz 1 0 1 1 abc xyz 000 111 a 0 0 1 0 011 110 001 011 x 111 101 010 101 0-0 101 1 1 1 0 011 110 00- 011 0 1 0 0 100 000 -01 010 y 101 010 110 000 1 1 0 1 111 101 0 0 1 0 z Loogikafunktsioonide süntees I207 - Digitaalloogika ja -süsteemid - L7

  29. Skeemi süntees loogikatehete asendamine JA- ja VÕI- elementidega abc xyz 011 110 111 101 0-0 101 a 00- 011 -01 010 b x c y z 11 l.e. / 64 tr. Loogikafunktsioonide süntees x(a,b,c)=a’bc+abc+a’c’ y(a,b,c)=a’bc+a’b’+b’c z(a,b,c)=abc+a’c’+a’b’ I207 - Digitaalloogika ja -süsteemid - L7

  30. Optimeerimine loogika-elementide teisendamine suuruse või viite vähendamise eesmärgil Analüüs viite analüüs testitavuse analüüs a b x c y z 11 l.e. / 48 tr. a b x y c z 10 l.e. / 52 tr. Loogikafunktsioonide süntees I207 - Digitaalloogika ja -süsteemid - L7

More Related