Kombinatoorsete süsteemide disain  Mitmetasemelised loogikafunktsioonid  L10. Mitmetasemeliste loogikafunktsioonide esitusviisid, teisendused, optimeerimine  L11.

Download Report

Transcript Kombinatoorsete süsteemide disain  Mitmetasemelised loogikafunktsioonid  L10. Mitmetasemeliste loogikafunktsioonide esitusviisid, teisendused, optimeerimine  L11.

Kombinatoorsete
süsteemide disain
 Mitmetasemelised loogikafunktsioonid
 L10. Mitmetasemeliste loogikafunktsioonide
esitusviisid, teisendused, optimeerimine
 L11. Funktsioonide algebraline jagamine,
testitavuse alused, viite analüüs
© Peeter Ellervee
I207 - Digitaalloogika ja -süsteemid - L11
1
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)=)
© Peeter Ellervee
I207 - Digitaalloogika ja -süsteemid - L11
2
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
&
 (a+b)(a+c)=fi
© Peeter Ellervee
fj = a + b
kuid
{a,b}{a,c}
I207 - Digitaalloogika ja -süsteemid - L11
3
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);
}
© Peeter Ellervee
I207 - Digitaalloogika ja -süsteemid - L11
4
Jagamine - näide #1
 fjagatav = ac + ad + bc + bd + e
 A = {ac, ad, bc, bd, e}
&
&
fjagaja = a + b
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
© Peeter Ellervee
I207 - Digitaalloogika ja -süsteemid - L11
5
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
© Peeter Ellervee
I207 - Digitaalloogika ja -süsteemid - L11
6
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 ]
© Peeter Ellervee
I207 - Digitaalloogika ja -süsteemid - L11
7
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 –
© Peeter Ellervee
ac + be / a + b
I207 - Digitaalloogika ja -süsteemid - L11
8
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 = ?
© Peeter Ellervee
ab+ac+bc = ab+(a+b)c
I207 - Digitaalloogika ja -süsteemid - L11
9
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;
© Peeter Ellervee
I207 - Digitaalloogika ja -süsteemid - L11
10
Ü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)
© Peeter Ellervee
I207 - Digitaalloogika ja -süsteemid - L11
11
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)
© Peeter Ellervee
I207 - Digitaalloogika ja -süsteemid - L11
12
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;
© Peeter Ellervee
ft = sc + d;
fx = te + g;
I207 - Digitaalloogika ja -süsteemid - L11
13
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
© Peeter Ellervee
I207 - Digitaalloogika ja -süsteemid - L11
14
Näide
 Skeem: w=ab; x=w+c; y=wc;
 Lühis 0-ga
w=0;  x=c; y=0;
 Lühis 1-ga
w=1;  x=1; y=c;
 Kas w on jälgitav?
a
b
x
w
y
c
a
b
x
w
y
c
 Millised väljundid sõltuvad w-st?
 Kas w on juhitav?
 Kas leidub sisendkombinatsioon,
mis lubab w-le seada soovitud
väärtuse?
© Peeter Ellervee
I207 - Digitaalloogika ja -süsteemid - L11
a
b
x
w
c
y
15
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
© Peeter Ellervee
I207 - Digitaalloogika ja -süsteemid - L11
16
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=ab
 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
© Peeter Ellervee
I207 - Digitaalloogika ja -süsteemid - L11
17
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
© Peeter Ellervee
I207 - Digitaalloogika ja -süsteemid - L11
18
Näide
a
b
Lühis 0-ga

dxw’
w
= wc’ &
dyw’
= wc
a
b
 sisend - abc == 111
 väljund x - 1 (peab olema 1)
 väljund y - 0 (peab olema 1)
a
b
I207 - Digitaalloogika ja -süsteemid - L11
y
c
 sisend - abc == 110
 väljund x - 0 (peab olema 1)
 väljund y - 0 (peab olema 0)
© Peeter Ellervee
x
x
w
y
c
x
w
c
y
19
Näide
a
b
Lühis 1-ga

dxw’
w
= w’c’ &
dyw’
= w’c
a
b
 sisend - abc == 001
 väljund x - 1 (peab olema 1)
 väljund y - 1 (peab olema 0)
a
b
I207 - Digitaalloogika ja -süsteemid - L11
y
c
 sisend - abc == 000
 väljund x - 1 (peab olema 0)
 väljund y - 0 (peab olema 0)
© Peeter Ellervee
x
x
w
y
c
x
w
c
y
20
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, …
© Peeter Ellervee
I207 - Digitaalloogika ja -süsteemid - L11
21
Koodikaetus
// Näide
if ( t1 ) {
else
{
if ( t2 ) {
if ( t3 )
else
} else {
if ( t3 )
if (t1)
else
}
else
}
© Peeter Ellervee
 Esialgne idee (ülesanne)
do_A; }
do_B; }
do_C;
do_D;
{
do_E;
do_F;
do_G;
sõltuvalt sisendtingimustest 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
I207 - Digitaalloogika ja -süsteemid - L11
22
Koodikaetus
// Näide
if ( t1 ) {
else
{
if ( t2 ) {
if ( t3 )
else
} else {
if ( t3 )
if (t1)
else
}
else
}
Jadad
{ do_A;
{ do_A;
{ do_A;
{ do_A;
{ do_A;
do_A; }
do_B; }
do_C;
do_D;
{
do_E;
do_F;
do_G;
do_C;
do_D;
do_E;
do_F;
do_G;
© Peeter Ellervee
}
}
}
}
}
{
{
{
{
{
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)
do_B;
do_B;
do_B;
do_B;
do_B;
do_C;
do_D;
do_E;
do_F;
do_G;
}
}
}
}
}
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
Mis juhtus?
Üks kahest – ülesanne
on vigane või liiane…
I207 - Digitaalloogika ja -süsteemid - L11
23
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
© Peeter Ellervee
I207 - Digitaalloogika ja -süsteemid - L11
24
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






a
b
c
d
ta=tb=te=0; tc=5; td=1;
e
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
2
f
4
3
5
 Suurim viide - 13
© Peeter Ellervee
I207 - Digitaalloogika ja -süsteemid - L11
25
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








a
b
c
d
ta=tb=te=0; tc=5; td=1; t’f=15;
e
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
© Peeter Ellervee
I207 - Digitaalloogika ja -süsteemid - L11
2
f
4
3
5
26
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
a
b
c
2
d
e
3
f
4
5
 se = t’e - te = 3 - 0 = 3
 Topoloogiline kriitiline tee (topological critical path)
 tee maksimaalse viitega
 tee minimaalse sobivusega
© Peeter Ellervee
I207 - Digitaalloogika ja -süsteemid - L11
27
Loogikafunktsioonide süntees
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õi
heuristiliselt
(nt. Karnaugh kaart)
© Peeter Ellervee
abc
xyz
000
111
001
011
010
101
011
110
100
000
101
010
110
000
1
1
1
0
111
101
0
1
0
0
c
a
b
1
0
1
1
0
0
1
0
x
y
abc
xyz
011
110
111
101
0-0
101
00-
011
-01
010
I207 - Digitaalloogika ja -süsteemid - L11
1
1
0
1
0
0
1
0
z
28
Loogikafunktsioonide süntees
Skeemi süntees
 loogikatehete
asendamine
JA- ja VÕIelementidega
abc
xyz
011
110
111
101
0-0
101
00-
011
-01
010
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’
a
b
x
c
y
z
11 l.e. / 64 tr.
© Peeter Ellervee
I207 - Digitaalloogika ja -süsteemid - L11
29
Loogikafunktsioonide süntees
Optimeerimine
 loogika-elementide
teisendamine
 suuruse või
viite vähendamise
eesmärgil
a
b
x
c
y
z
11 l.e. / 48 tr.
a
 Analüüs
 viite analüüs
 testitavuse analüüs
b
x
c
y
z
10 l.e. / 52 tr.
© Peeter Ellervee
I207 - Digitaalloogika ja -süsteemid - L11
30
Inverteeritud väljundid?
 Osa väljundeid inverteeritud?
 espresso tulemus võtmega -Dopoall
000
001
010
011
100
101
110
111
-
c=6(0)
c=5(0)
c=5(0)
c=6(0)
c=6(0)
c=6(0)
c=6(0)
c=5(0)
in=13
in=12
in=11
in=13
in=14
in=13
in=14
in=12
out=8
out=8
out=8
out=8
out=9
out=8
out=8
out=9
tot=21
tot=20
tot=19
tot=21
tot=23
tot=21
tot=22
tot=21
 Kuidas interpreteerida?
 c – implikantide arv
 in – JA-elementide sisendite arv
 out – VÕI-elementide sisendite arv
 tot – sisendite koguarv
© Peeter Ellervee
.phase 111
.phase 010
abc
xyz
abc
xyz
011
110
011
011
111
101
00-
010
-01
010
10-
001
0-0
101
1-0
101
00-
011
-01
110
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’
x(a,b,c)=(ac’+b’c)’
y(a,b,c)= a’bc+a’b’+b’c
z(a,b,c)=(a’bc+ab’+ac’)’
I207 - Digitaalloogika ja -süsteemid - L11
31
Inverteeritud väljundid?
x(a,b,c)=a’bc+abc+a’c’
x(a,b,c)=(ac’+b’c)’
y(a,b,c)=a’bc+a’b’+b’c
y(a,b,c)= a’bc+a’b’+b’c
z(a,b,c)=abc+a’c’+a’b’
z(a,b,c)=(a’bc+ab’+ac’)’
c
a
c
b
1
0
1
1
0
0
1
0
a
b
1
0
1
1
0
0
1
0
x
1
1
0
1
1
1
0
0
1
0
0
0
1
0
0
y
b
x
c
y
y
1
1
0
1
1
1
0
1
0
0
1
0
0
0
1
0
© Peeter Ellervee
a
x
1
z
11 l.e. / 56 tr.
z
z
I207 - Digitaalloogika ja -süsteemid - L11
32