300 likes | 584 Views
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
E N D
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
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
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
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 CjACiB}; if (D==) return(,A); Di=D with var. in sup(CiB) dropped; if (i==1) Q=Di; else Q=QDi; } R=A-QB; return(Q,R); } I207 - Digitaalloogika ja -süsteemid - L7
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
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
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
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), "Cifi); • 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
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
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
Ü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
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
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
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
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
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
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
Häiritus (perturbation) • Konsensus (Cxw=xwxw’) - 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’ = wc’ • y -- dyw’ = w(y/w) = y yw’ = wc • 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
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’ = wc’ & dyw’ = wc • 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
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
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
// 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
// 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
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
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
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
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
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
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
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