Transcript pps

Digitaalsüsteemid, andme- ja
juht-osa, modelleerimise alused
 L2. Arvusüsteemid ja kahend-loogika
 L3. Loogikafunktsioonide esitamine ja
teisendamine
 L4. Digitaalsüsteemid, andme- ja juht-osa,
modelleerimise alused
© Peeter Ellervee
I207 - Digitaalloogika ja -süsteemid – L4
1
Digitaalsüsteem
 Süsteemid
 NB! Piirid pole täpselt paigas…
 Mehhaanikasüsteem
 Elektrisüsteem
 Elektroonikasüsteem
– liikumine
– elektrienergia
– infotöötlus
 Analoogsüsteem – signaalide esitamine ja
töötlus pidevate suurustena
 Digitaalsüsteem – signaalide esitamine ja
töötlus diskreetsete suurustena
 Sardsüsteem (embedded system)
 kaasajal (hajutatud) digitaalsüsteem, mis sisaldab nii analoogalamsüsteeme aga ka mehhaanilisi ja elektrilisi komponente
 Suvaline digitaalsüsteem sissaldab alati analoog, elektrilisi ja
mehhaanilisi komponente – nt. nivoomuundurid, toide, lülitid, …
© Peeter Ellervee
I207 - Digitaalloogika ja -süsteemid – L4
2
Rakendusprogrammid
Kasutajaliides
Progr.
keeled
Assembler /
binaarkood
Arvutisüsteem:
CPU + RAM
reaalarvud
Operatsioonisüsteem
sümbolid /
kümnendarvud
Abstraktsioonitasemed
kahendarvud /
kahendloogika
Protsessor
RTL:
ALU & Co
Pooljuhid:
Si, GaAs & Co
Transistorid /
traadid
Loogikaelemendid
Loogikafunktsioonid
digitaalsüsteem
© Peeter Ellervee
I207 - Digitaalloogika ja -süsteemid – L4
3
Abstraktsioonitasemed
 Süsteemi tase
 moodulid & infokanalid
 Algoritmi tase
 alam-moodulid & protokollid
 Register-siirete (RT) tase
 ALS-d, registrid & siinid
 Loogikatase
 skeem loogikaelementidest
 Füüsikatase
 skeem transistoridest
 kristalli pinnalaotus
© Peeter Ellervee
I207 - Digitaalloogika ja -süsteemid – L4
4
Abstraktsioonitasemed
Süsteemi tase
Algoritmi tase
Käitumuslik mõõde
Register-siirete tase
Struktuurne mõõde
süsteemi spetsifikatsioon
CPU, mälu
Loogika
tase
algoritm
protsessor, alamsüsteem
register-siirete kirjeldus
ALU, register, MUX
Skeemi tase
loogika-avaldised
loogikalüli, triger
diferentsiaalvõrrandid
transistor
ristkülik / polügon
std.element / alam-element
makro-element
plokk / kiip
kiip / trükkplaat
Füüsikaline mõõde
© Peeter Ellervee
I207 - Digitaalloogika ja -süsteemid – L4
5
Abstraktsioonitasemed
Tase
Süsteem
Abstraktsioon
Käitumine ruumis ja ajas,
väljaviigud, ajalised piirangud
Arhitektuur
Funktsionaalsete üksuste
üldine jaotus
Registersiire
Andmevoo sidumine sõlmede
ja mikrokäskudega
Funktsionaalsed Primitiivsed operatsioonid ja
moodulid
juhtimisvahendid
Loogika
Loogikafunktsioonid, skeemid
loogikaelementidest
Lülitus
Transistorskeemide
elektrilised omadused
Pinnalaotus
Geomeetrilised parameetrid
© Peeter Ellervee
Vahendid
Plokk-skeemid, diagrammid,
kõrgtaseme keeled
HDL-d, pinnaplaneeringu
vahendid ennustamiseks
Süntees, simuleerimine,
resursside kasutamine
Teegid, moodulite
generaatorid, skeemisisestus
Skeemisisestus, süntees ja
simuleerimine, test
RC ekstraheerimine, ajastuse
kontroll ja analüüs
Pinnalaotuse redaktor, DRC,
laotus ja trasseerimine
I207 - Digitaalloogika ja -süsteemid – L4
6
Disaininäide
 Neli kahend-sisendit ja
-väljundit
 nt. 4 lülitit (S1-S4) ja
4 valgusdioodi (L1-L4)
 Sisendite muutumine
muudab väljundeid
 Võimalik programm
int s3p=0, s4p=0, v=0; l4=0;
while (1) {
if (s1&!s2) l1=1; else l1=0;
if (!s1&((s3^s3p)&s3)) v++;
if (v>3) v=0;
l2=v/2; l3=v%2;
if (s1&s2&((s4^s4p)&!s4)) l4~=l4;
s3p=s3; s4p=s4; wait_100ms();
}
 kui S1=1 & S2=0, siis
L1←1, muidu L1←0
 s1…s4 – lülitid
 kui S1=0 & S3↑, siis
V++ (V[1]≡L2, V[0]≡L3)
 l1…l4 – LED-d (tuled)
 kui S1=1 & S2=1 & S4↓,
siis L4← ┐L4
© Peeter Ellervee
 DIP1…DIP4 programmis
 leds – kõik 4 ühes sõnas!
 üksikute bittidega
manipuleerimine?
I207 - Digitaalloogika ja -süsteemid – L4
7
Protsessor / kontroller
 (C)PU – (Central) Processing Unit
 sisendid/väljundid (lülitid, lambid, releed, ...)
 vahetulemused (nt. muutujad registrites/mälus)
 töötlus- e. arvutus-sõlm (nt. aritmeetika-loogikaseade)
 juhtosa (käsuloendur ja -register, juhtautomaat, ...)
aritmeetikaloogikaseade
juhtautomaat
registrid
© Peeter Ellervee
sisend/
väljund
I207 - Digitaalloogika ja -süsteemid – L4
8
Disaininäide – mikrokontroller
 Esialgne programm
 leds: and -> ‘0’; or -> ‘1’
 dubleeritud lugemine
 Optimeeritud programm
 ~~ Shannoni arendus
char leds=0,dip3p=0,dip4p=0,v=0;
// Initsialiseerimine
while (1) {
if (DIP1&&!DIP2) leds|=0b1000;
else leds&=0b0111;
if (!DIP1&&((DIP3^dip3p)&&DIP3))
v++;
if (v>3) v=0;
leds=(leds&0b1001)|(v<<1);
if (DIP1&&DIP2&&
((DIP4^dip4p)&&!DIP4))
leds^=0b0001;
dip3p=DIP3; dip4p=DIP4;
led_out(leds); delay_100ms;
}
char leds=0,dip3p=0,dip4p=0,v=0;
// Initsialiseerimine
while (1) {
if (DIP1) {
if (DIP2) {
if ((DIP4^dip4p)&&!DIP4) leds^=0b0001;
leds&=0b0111;
}
else leds|=0b1000;
}
else {
if ((DIP3^dip3p)&&DIP3) v++;
if (v>3) v=0;
leds=(leds&0b0001)|(v<<1);
}
dip3p=DIP3; dip4p=DIP4;
led_out(leds); delay_100ms;
}
ROM – 548 / RAM – 81
ROM – 518 / RAM – 81
© Peeter Ellervee
I207 - Digitaalloogika ja -süsteemid - L4
9
Disaininäide – skeem
 Kombinatsioon-skeem
 Tegevused
 kui S1=1 & S2=0, siis
L1←1, muidu L1←0
 L1 ← S1 & !S2
 Loendur + loogika
 kui S1=0 & S3↑, siis
V++ (V[1]≡L2, V[0]≡L3)
 D-tiger – S3p ← S3
 kui S1=1 & S2=1 & S4↓,
siis L4← ┐L4
 L2 ←V[1]; L3 ← V[0]
 Kolm parallelset osa
 kombinatsioon-skeem
 loendur + loogika
 T-triger + loogika
 v++ ← !S1 & !S3p & S3
 T-triger + loogika
 D-tiger – S4p ← S4
 !L4 ← S1 & S2 & S4p & !S4
 Asünkroonsed pisihädad
 takti ja signaali muutuse
sünkroniseerimine
 vt. S3 muutmist…
© Peeter Ellervee
I207 - Digitaalloogika ja -süsteemid - L4
10
Disaininäide – skeem
http://www.itcollege.ee/~lrv/I207/switch4led4.txt
© Peeter Ellervee
I207 - Digitaalloogika ja -süsteemid - L4
11
Andme-osa & juht-osa
 Digitaalsüsteem = andme-osa + juht-osa
© Peeter Ellervee
I207 - Digitaalloogika ja -süsteemid – L4
12
Andme-osa & juht-osa
 Andme-osa (operatsioonosa e. operatsioonautomaat)
 andmete töötlus (arvutamine) – operatsioonid (loogikafunktsioonid)
 andmete salvestamine (mälu) – registrid (mäluelemendid)
 taktsignaal
 operatsioonid: registri väljund –> registri sisend
 register: salvestab tulemusi
 Juht-osa (juhtautomaat)
 operatsioonide järjestamine
 tingimuslik järjestamine
 (eelmiste) operatsioonide tulemused / välised tingimused
(sisendsignaalid)
 Algoritm – operatsioonide järjestus / mikroprogramm
© Peeter Ellervee
I207 - Digitaalloogika ja -süsteemid – L4
13
Disaininäide #2 – valgusfoor
 Valgusfoor kui digitaalsüsteem
 andmeosa + juhtosa
 Kogutsükkel 30 sek., andurid puuduvad
 roheline
 kollane
 punane
 kollane+punane
12 sek.
3 sek.
12 sek.
3 sek.
punane
kollane+punane
roheline
kollane
 Andme-osa – loendur (0...14)
 Juht-osa – automaat
 I={<12,≥12},
© Peeter Ellervee
O={R1,Y1,G1,R2,Y2,G2,rst_cnt(?)}
I207 - Digitaalloogika ja -süsteemid – L4
14
Valgusfoor – andme-osa
 Andme-osa = loendur
andme-osa
 0…14 → 4 bitti (0…15!)
 asünkroonne nullimine kui
loendur == 15 (e. 4-NAND)
 12 sek. == 0…11
 3 sek. == 12…14 e. ≥12
 ≥12 == 1100+1101+1110
(+1111 määramatusena)
 ≥12 == 11-- (e. 2-AND)
 rst_cnt vajalikkus?
 sõltub juht-osa “tarkusest”
© Peeter Ellervee
rst_cnt
≥12
juht-osa
R1 Y1 G1
R2 Y2 G2
http://enos.itcollege.ee/~lrv/I207/tlc-datapath.txt
I207 - Digitaalloogika ja -süsteemid – L4
15
Valgusfoor – tulemus
http://www.itcollege.ee/~lrv/I207/tlc-applet.txt
© Peeter Ellervee
I207 - Digitaalloogika ja -süsteemid – L4
16
Tulemuse kontroll
 Modelleerimine
Valmis-seade/prototüüp …
 mudeli korrektsus?
 simuleeritavus
 Kasutatav keel?
 C++?
 Paralleelsus!
 C++ lõimed?
 ADA?
 Spetsiaalkeeled?
• Veel üks keel! :-(
© Peeter Ellervee
… või mudel?
I207 - Digitaalloogika ja -süsteemid - L4
17
SW vs HW
 Tarkvara
 üksik kontrollvoog
 mitu kontrollvoogu
 ühel protsessoril
 mitmel protsessoril
• hajutatud ülesanded - protsessorite vaheline kaugus
 sünkroniseerimispunktid (muutujad)
 Riistvara
 paralleelselt töötavad moodulid
 sünkroniseerimissignaalid
© Peeter Ellervee
I207 - Digitaalloogika ja -süsteemid - L4
18
Riistvara modelleerimine




Paralleelselt töötavad moodulid
Mudel üksikul protsessoril
Tulemus peaks olema korratav
Lihtne põhimõte – signaalil uus ja vana väärtus
 arvutatakse kõikide signaalide uued väärtused
 signaalidele omistatakse uued väärtused
 Analoogsüsteemid
 igal simulatsioonitsüklil uus arvutus
 Digitaalsüsteemid
 uus arvutus ainult muutunud sisendite korral
© Peeter Ellervee
I207 - Digitaalloogika ja -süsteemid - L4
19
Digitaalsed simulaatorid
 Sama-aegsed operatsioonid
 modelleerimine järjestikulises süsteemis
 Simulatsioonitsükkel
 signaalide järgmiste väärtuste leidmine
 signaalide jooksvate väärtuste värskendamine
 Tsükkelpõhised ja sündmustepõhised
 cycle-based vs. event-based
 Viite modelleerimine
 ühikviide (unit-delay)
 nullviide (zero-delay)
 deltaviide (delta-delay)
© Peeter Ellervee
I207 - Digitaalloogika ja -süsteemid - L5
20
Ühikviide
 Peamiselt tsükkelpõhised simulaatorid
 Igas simulatsioonitsüklis
 arvuta (kõigi) signaalide uued väärtused
 värskenda signaalide väärtused
 suurenda simulatsiooniaega ühe ühiku võrra
[ja korda tsüklit 1-st alates]
leia uued
väärtused
© Peeter Ellervee
värskenda
väärtused
I207 - Digitaalloogika ja -süsteemid - L5
21
Ühikviide
a
X1 <= a and b;
x2 <= not c;
y <= x1 xor x2;
b
c
x1
a
b
x2
x1
c
y
y
t
x2
sündmuste
jadad
© Peeter Ellervee
t+1ns t+2ns
b=1
x1=1
c=0
x2=1
I207 - Digitaalloogika ja -süsteemid - L5
y=0
time
[ns]
22
Nullviide
 Sündmustepõhised simulaatorid
 Simulatsioonitsükkel - tsükkel tsüklis
 sündmuse alusel arvuta uus väärtus, eemalda sündmus
 lisa uus sündmus sündmuste jadasse
 korda 1-st alates kuni leidub jooksvale simulatsiooniajale
planeeritud sündmusi
 suurenda simulatsiooniaega ühe ühiku võrra
[ja korda tsüklit 1-st alates]
leia uus
väärtus,
eemalda
sündmus
© Peeter Ellervee
lisa uus
sündmus
I207 - Digitaalloogika ja -süsteemid - L5
suurenda
simul.aega
23
Nullviide (#1)
a
X1 <= a and b;
x2 <= not c;
y <= x1 xor x2;
b
c
x1
a
b
x2
x1
c
y
y
x2
sündmuste
jadad
t
t
t
b=1
b=1
c=0
c=0
c=0
I207 - Digitaalloogika ja -süsteemid - L5
t
x1=1 x2=1
x1=1 x2=1
x1=1 x2=1
© Peeter Ellervee
t
time
[ns]
y=0
y=0
24
Nullviide (#2)
a
X1 <= a and b;
x2 <= not c;
y <= x1 xor x2;
b
c
x1
a
b
x2
x1
c
y
y
x2
sündmuste
jadad
© Peeter Ellervee
t
t
b=1
b=1
x1=1
y=1
x2=1
c=0
x1=1
y=1
c=0
y=0
c=0
c=0
x2=1
I207 - Digitaalloogika ja -süsteemid - L5
t
t
t
time
[ns]
25
Deltaviide – -viide / -delay
 Sündmustepõhised simulaatorid
 Simulatsioonitsükkel - tsükkel tsüklis tsüklis
 kõikide sündmuste jaoks arvuta uued väärtused (1. tsükkel)
 eemalda kasutatud ja lisa uued sündmused sündmuste jadasse
 korda 1-st alates kuni leidub jooksvale simulatsiooniajale
planeeritud sündmusi
 suurenda simulatsiooniaega ühe ühiku võrra
[ja korda tsüklit 1-st alates]
leia uued
väärtused
kõikidele
jooksvatele
sündmustele
© Peeter Ellervee
eemalda
vanad ja
lisa uued
sündmused
I207 - Digitaalloogika ja -süsteemid - L5
suurenda
simul.aega
26
Deltaviide
a
X1 <= a and b;
x2 <= not c;
y <= x1 xor x2;
b
c
x1
a
b
x2
x1
c
© Peeter Ellervee
y
x2
y
t
t+
b=1
x1=1
c=0
x2=1
I207 - Digitaalloogika ja -süsteemid - L5
t+2 
y=0
time
[ns]
27
Motivatsioon
 Riistvara kirjelduskeel
 Hardware Description Language (HDL)
 Erinevad abstraktsiooni-tasemed
 Sama keel kõikidel projekteerimisetappidel
… või vähemalt enamikel projekteerimisetappidel
 Sama mooduli erinevate kirjelduste
võrreldavus
 Simuleerimine erinevatel kirjeldustasemetel
 Dokumenteerimine
 Modelleeritav spetsifikatsioon
© Peeter Ellervee
I207 - Digitaalloogika ja -süsteemid - L4
28