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 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);
}
© 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), "Cifi);
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=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
© Peeter Ellervee
I207 - Digitaalloogika ja -süsteemid - L11
18
Näide
a
b
Lühis 0-ga
dxw’
w
= wc’ &
dyw’
= wc
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