Upload
others
View
2
Download
0
Embed Size (px)
Citation preview
ATR0110 ANALOOG- JA
DIGITAALTEHNIKA
Kevad 2019
Digitaaltehnika – arvutid
Martin Jaanus NRG-308
[email protected] 56 91 31 93
Õppetöö : http://isc.ttu.ee
Õppematerjalid : http://isc.ttu.ee/martin
Teemad
Digitaalelektroonika analoogmaailmas
• Arvuti ahkitektuur
• Mikroprotsessor, mikrokontroller
Mikroprotsessoriga süsteem (arvuti)
• Mikroprotsessorist ei piisa.
Mikroprotsessor
Takt
Liidestamise siin
RAM ROM
USB Video Ethernet Kõvaketas
Andmesiinid
Von Neumanni arvutistruktuur
• Olemuselt digitaalautomaat (John von Neumann, 1945)
• Aritmeetika loogikaseade
• Juhtseade (käsuloendur)
• Mälu (käsukoodidele, andmetele)
• Välised seadmed
https://en.wikipedia.org/wiki/Von_Neumann_architecture
Harvardi arvutistruktuur
• Arvutis Harvard Mark I (1944)
• Eraldi andmed ja käsud ( nii mälu kui ka töötlus)
• Eelis, saab samaaegselt tegeleda mõlema mäluga
• Enamkasutatav
Mikroprotsessor
• Mikroprotsessor on mitmeotstarbeline programmeeritav seade, mis võtab sisendina vastu digitaalse info, töötleb seda vastavalt mälus salvestatud masinakäskudele ja annab tulemuse väljundina. (wikipedia)
• Tehnoloogia ajas muutub, idee jääb samaks
Intel 4004 (1971)https://en.wikipedia.org/wiki/Intel_4004
Saab luua lihtloogikaelementidest
• ALU (aritmeetika-loogika seade)
• Aadressiregister
• Käsuregister
• Inforegister• Andmesiin
• Aadressisiin
X86 mikroprotsessorid
• 1978 Intel 8086 täissiiniga 16 bitine mikroprotsessor
• Nimetus X86 tuleb sellest, et hilisemate protsessorite
nimed lõppesid 86ga
• 80186, 80286, 80386 ja 80486
• Erinevad tootjad, arhitektuur muutus
kohmakaks kuid eelis – ühilduvus eelkäija protsessoriga !
• Tänu sellele : PC arvutite võidukäik 1981- tänaseni
• Vanmema tarkvara „jookseb“ uuema arvuti peal.
• CISC protsessorid (complex instruction set) – palju käske
toetatud riistvaras.
ARM mikroprotsessorid
• ARM - Advanced RISC Machine, Acorn RISC Machine
• RISC - reduced instruction set computing (vähendatud käsustikuga protsessor)
• Lihtsam siseehitus, suurm kiirus
• Telefonid, tahvelarvutid
• Mikrokontrollerid
• Hea näide on Arduino Uno
• „ehituskiviks“ olev ATmega168
RISC protsessor – vähe käske.
https://en.wikipedia.org/wiki/ARM_architecture
Suvapöördus - arvutimälu
• Iga biti jaoks eraldi mäluelement
• Vajab adresseerimist
• Sisend ja väljund on omavahel sageli koos
Ühemõõtmeline (4 bitti) Kahemõõtmeline
Mälumahu suurendamine
• Mida võib ette võtta:
- suurendada järkude arvu,
• - suurendada säilitatavate sõnade arvu.
• Järkude arvu suurendamine → aadressiini paralleelne lülitus
Aadressi sõna antakse kõigile MS korraga. D0 väljundil iga MS antavalaadressil loetakse maha 1 bit infot.
•
Skeem 4 järgulise sõna jaoks
Mälumahu suurendamine
• Säilitatavate sõnade arvu suurendamine (aadressimahu suurendamine)
• Tuleb kasutada lisadekoorderid (A11, A10). Vastavalt sellele koodile dekooder lülitab vajaliku mälu. Iga mälu maht on 1K ∙ 1. Kokku on siis antaval juhul 4K ∙ 1 ja 12 –järguline aadressi sõna. Iga mälu juhitakse
• aadressi koodiga A9…A0.
• Kasutusel on mõlemad variandid (ka samaaegselt)
Tänapäevane arvutimälu RAM
• Juhupöördusega mälu (Random Access Memory)
• Staatiline (basserub trigeril), kiirem, kallim
• Dünaamiline (mäluelement – kondensaator), võtab vähem ruumi, aga vajab värskndust – laeng aja jooksul väheneb.
• Info hävineb toite katkestamisel !
SRAM DRAM
https://en.wikipedia.org/wiki/Random-access_memory
Tegelikud mälumikroskeemid• Näide -TMM4164
• Antava mikroskeemi organisatsioon on 64K∙1, kuid ta omab ainult 8 aadressi sisendit (A7...A0).
• Strobeerimissignaalid
• RAS ja CAS aitavad vähendada aadressi sisendite arvu, sest 64K sõnade arvu juhul oleks vaja 16 järgulist aadressi koodi. Pool nendest järkudest vastutavad rea valiku eest ja pool – veeru valiku eest. Seepärast
• vanimad ja noorimad aadressisõna järgud antakse ühtede ja samade sisendite peale kordamööda.
• Peale madala pinge nivoo andmist sisendile antakse aadressi sisenditele aadressisõna 8 noorimat järku. Seega on EME maatriksist vajaliku rea valik tehtud. Peale seda antakse pinge madal nivoo sisendile ja aadressi sisenditel formeerivad ülejäänud aadressisõna 8 vanimat järku. Nemad siis omaette valivad maatriksi vajalik veeru.
• Peab ära märkima, et antaval juhul signaali CS ei kasutata. Tema rolli mängivad signaalid , , mida antakse järjestikult, kordamööda.
•
Tänapäevane arvutimälu ROM
• Ainult lugemiseks (Read Only Memory).
• Informatsioon säilib toite katkestamisel.
• Kasutamine sarnaneb RAM mäluga.
Püsimälu idee:https://www.cl.cam.ac.uk/teaching/1213/SysOnChip/materials/sg3bus/zhp4c6e8640b.html
• ROM – info sisestatakse valmistamisel
• EPROM – infot saabkasutaja sisestada,
kustutamine UV kiirgusega (vananenud)
• EEPROM – elektriliselt kustutatav ning
programmeeritav mälu, aeglane• Flash EEPROM , sama, aga kiirem ning
tänapäevasem variant, masskasutus.
https://en.wikipedia.org/wiki/Flash_memory
• EEPROM mälude põhipuudus –
kirjutuskordade arv on piiratud.• Flash mäluga üritatakse asendada RAM mälu
„Ujuva paisuga“ EEPROM
Vcc
Arvuti siseehitus (näide – ZX spectrum)
• 8 bitine koduarvuti (1982-1992) . Suurbritaannia (Sinclair)
• 8 bitine protsessor Z80, mäluruum 64 kb (16 kB ROM, 28kB RAM) , välismälu – kassettmagnetofon, monitoriks televiisor – sobib tänapäeval õppematerjaliks
• Väga odav tolle aja kohta – £179
• Oli ülipopulaarne ka Eestis 80ndate lõpp, 90ndate algus
(kloonid, iseehitamine)
• Tänapäeva mõistes lihtne skeem võimaldab iseehitust.
• Mängude arv tuhandetes, tehakse ka tänapäeval
• Tänapäeval – emulaatorid, hobielektroonika
https://en.wikipedia.org/wiki/ZX_Spectrum
ZX spectrum 2
ZX spectrum• http://www.worldofspectrum.org/documentation.html
ZX spectrum (elektriskeem)
• https://spectrumforeveryone.com/wp-content/uploads/2017/08/ZXSpectrumIssue3-
Schematics.gif
ZX spectrum
• Protsessor
ja ühendused
CPU
Andmesiin
Aadresssiin
Siini juhtsignaalid
ROM
RAM
DC
ZX spectrum
• Sisend –
väljund
• Spetsiaalne
mikroskeem
ZX spectrum
• Skeem ilma ULA-ta (fragment)
• http://trastero.speccy.org/cosas/JL/Harlequin/Documentac
ion/harlequin_rev_g.pdf
ZX spectrum
• Klaviatuur (maatriksühendus) – sama idee ka PC-l
Aritmeetika-loogika seade
• Mikroprotsessori koostisosa
• ALU juurde kuuluvad ka registrid info hoidmiseks.
• ALU ise on kombinatsioonloogikaseade – mälu ei ole.
• Riistvaraliselt on toetatud järgmised tehted:
• → aritmeetiline liitmine;
• → aritmeetiline lahutamine;
• → loogikaline korrutamine;
• → loogikaline liitmine;
• → liitmine mooduli 2 järgi;
• → inversioon; nihe vasakule, nihe paremale, inkrement, dekrement.
ALU -Liitmine
• Elementaaroperatsioon – välistav VÕI
• Vaja lisada NING element, et saada ülekannet,
kuid ei arvestata eelmist ülekannet –
Poolsummaator (half adder)
Ülekanne järgmisesse järku
0101010101 ||| XXXXXXXXXXS
ALU - Täissummaator
• Koostatakse kahest poolsummaatorist
101101 PXXPXXS
10101 PXXXXP
ALU - summaator
• Järjestikülekanne: Igale järgule eraldi
(näide 4 bitiline –kerge on suurendada
bittide arvu)
• Z – tulemuse mahalugemiseks
sandmesiinile.
• Aega võtab ülekande liikumine.
• Saab teha ka paralleelülekandega
ALU - lahutamine• Tegelikult tehakse liitmine aga täiendkoodiga !
• Kuigi erakdi märgibitt ning arvubitid tundub loogiline, on see halb
• Esitatakse täiendkoodis.
• Täiendkood: Sama posiivne arv , vahetame nullid ühtedeks ning ühed nullideks ja liidame juurde 1 (sisuliselt teeme nullkoha nihutamise)
• Arv +14(dec)= 00001110b
• Arv -14(dec)= 11110001b+00000001b=11110010b
• Kontroll 00001110b
• + 11110010b
• -------------------
• (1)00000000b
NB !
Arv -14 võib olla aga ka positiivne arv 242 !!! Arvuti ei tee sellel vahet !, vahet peab tegema programmeerija (ja vahest ka kompilaator).
Ülekanne (Carry), kui ei võeta spetsiaalselt midagi ette, läheb see kaduma !
ALU-lahutaja - näide
• Näide riistvaraliselt liitjast-lahutajast
ALU -Korrutamine
• Ühe biti puhul lihtne – NING element
• Korrutamine – erikorrutiste liitmine (sarnaneb paberil
„kirjaliku“ korrutamisega
• Nii saab hakkama kui bitte on vähe !
• Keerukus kasvab hüppeliselt
bittide arvu kasvades.
ALU -Korrutamine
• Reaalne lahendus -
Osakorrutisteks jagamine ja
summeerimine
• Iga plokk peab tegema
korrutamise ja liitmise ja
arvestama veel ka ülekannet.
• Mi = A∙B + C + D
ALU- korrutamine• Eelmise slaidi jätk
• Siia juurde kuuluvad
veel NING elemendid
osakorrutise saamiseks
Mikrokontroller
• Mirkroprotsessorsüsteem ühes mikroskeemis
Protsessor
Takt
Liidestamise siin
RAM EEPROM
SPI,I2C,USB DAC,ADC I/O registrid SD/MMC
Andmesiin
Mikrokontrolleri eripärad
• Reeglina üsna aeglased või võimalus teha aeglaseks. (energiakulu !)
• Programmeeritakse vaid konkreetse ülesande jaoks.
• Programmeerija peab teadma üldist tööpõhimõtet.
• Sisend-väljund klemmid reeglina universaalsed ja multifunktsionaalsed.
• Kasutusel arendusplatvormises (nt. Arduino, PI...)
• Odavad, programmeeritakse madala taseme keeles (C, ASM)
AVR arhitektuur
• 8 bitine sisemine andmesiin,
millega liiguvad andmed
aritmeetika-loogika-
seadmesse(ALU)
• status register (SREG)
• program counter (PC),
• Juhupöördusega
mälu(SRAM)
• Programm on eraldi mälus
(Flash)
• ALU on 32 8-bitilist
üldotstarbelist registrit.
AVR arhitektuur (CPU) käsustik
• Vaata andmelehte !
Siin ja edaspidi mikrokontrollerite pildid – AVR
http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-2545-8-bit-AVR-Microcontroller-ATmega48-88-168_Datasheet.pdf
Mikrokontrolleri sisend-väljund
• Näide – Atmega328 (Arduino)
• Kolm üldotstarbelist porti
• Arduino – arenduskeskkond
• Oluline on lugeda andmelehte !
• Enne kasutamist tuleb seadistada
(nt Arduino – pinMode)
• Võimaldab nii sisendit kui ka väljundit.
• Sisendifunktsioonis kasulik
konfigureeritav takisti sisendi ja
toite vahele (pull-up), osadel kontrolleritel ka „maa“ vahele
(pull-down)
• Portidel on olemas ka
„alternatiivfunktsioonid“
Mikrokontrolleri sisend-väljund
Registerid
• Võib vaadelda kui koduelektroonika nupupaneeliga
• Iga nupp teeb midagi, aga õigesti vaid siis kui ta on õigel
ajal sisse lülitatud.
http://home.roboticlab.eu/en/avr/registers
Kassettmagnetofoni nupud Register buttons and bit values
S – set
Binary value 01100001
Decimal value – 97
Hexdecimal value – 61
Octal value -141
S S S
Registrid
• CPU sees – harilikult D või RS trigerid (8,16,32 või 64 bitti)
• Registril on juurdepääsuaadress (ja harilikult nimi)
• Saab pöörduda protsessorikäsuga( C keeles peab olema
defineeritud kui muutuja)
• Harilikult annab tootja nimetused (include file)
• Arvutuse jaoks või sisend-väljundiga ühendatud.
4- bit parallel register 4 bit serial register
https://www.electronicshub.org/d-flip-flop/
Katkestused
• Informaatikas tähendab katkestus asünkroonset signaali,
mis katkestab programmi täitmise tsükli, et kontroll
järgmisele protseduurile üle anda .
https://www.slideshare.net/ramadanahmadramdan/timer-interrupt
Katkestused
• Mikrokontrolleri puhul võib katkestus tekkida loendurite, andmesideliidese, konverterite jne..puhul või ka signaali loogilise oleku muutuse korral.
• Iga katkestus on seotud oma sündmusega (alamprogrammiga)
• C näide (ka Arduino)
• #include <avr/interrupt.h>
•
• ISR(XXX_vect)
• {
• // Do something
• }
Katkestused (paha näide)
• Oletame, et meil on 16 bitine muutuja , mille väärtusi saab muuta
mitmes kohas :
Y võib olla 0x3333, 0x1111 kuid samuti 0x3311 ! Kuidas parandada ?
Lihtne digitaalne väljund
• Sobib siis, kui tarbijaid vähe, väljaviike palju.
• Voolu tarbitakse läbi protsessori !
• Arvestada tuleb voolutarvet , see ei tohi ületada lubatut !
Puhverdatud digitaalne väljund
• Vajab nihkeregistreid
• Lisatavate sõltumatute väljundite arv on piiramatu.
• Suhteliselt lihtne programmeerida
Dünaamiline indikatsioon
• Sobib , kui vaja palju valgusdioode juhtida
• Saab juhtida n2 valgusdioodi (2 baidiga 256 )
• Programmeerimine keerukam (taimeriga ja katkestusega alamprogramm)
• Lihtne skeem
http://www.siwawi.arubi.uni-kl.de/avr_projects/matrix44/index.html
Digitaalsisendid• Kui väljaviike on piisavalt – lihtne, saab kasutada kui puudu, kasutada puhvrit,
skaneerimist, multiplekserit
• Eelistatakse madalapingelist aktiivset olekut
• Sisendpinge ei tohi olla suurem kui Vcc ja väiksem kui 0V !!!!!!
• Vajadusel kasutada pingejagurit , optroni ,transistorlülitit…
Komparaator
• Töö sarnaneb OV tööga, sageli kasutataksegi OV-d
• Kõige lihtsam 1 bitine A/D muundur
• Kui lisame positiivse tagasiside, saame Schmitti trigeri
Väljund:
• Kõrge (1) kui Vin>Vref
• Madal (0) kui Vin<Vref
Veel kasutusalasi:• Signaali nullist läbimise detektor
• Digisignaalide mürast puhastaja
Analoogmaailm –pidevad suurused
Digitaalmaailm – diskreetsed(lõplikud) suurused.
Võivad olla kombineeritud (diskreetne aeg analoogsüsteemis ja vastupidi )
ADMX(t)
kood
Pideva signaali x(t) teisendamine arvude jadaks xi
1. Diskreetimine (aeg)
2. Kvantimine (nivood)
3. Kodeerimine
Lõplik arv väärtusi väljundis
Analoog-digitaalmuundur
Diskreetimine (sampling)
Pidevate signaalide x(t) esitus arvude jadana xi, i=1, 2, 3, ..
Ts valik
Kui signaali spektris on maksimaalne sagedus F, siis tuleb F(f) diskreetimisintervall
Ts valida tingimusest: Ts<=1/(2F) ehk Fs>2F . Kui ei ole täidetud tekivad moonutused.
( Nyquist–Shannoni teoreem )
Analoog-digitaalmuundur
Kvantimine (quantization)
Signaalile (reaalarvule X) seatakse vastavusse väljundsignaal (ratsionaalarv m/n
ehk täisarv kvante i=1/n). Kuidas teha nii, et viga oleks kõige väiksem?
• arvude ümardamine /rounding/
Analoog-digitaalmuundur
Parim karakteristik koostatakse järgmiselt:
(sisendsignaal on pidev suurus, väljundsignaal –diskreetne.
sisend ja väljundsuurusi mõõdetakse kvantides q)
- sisendi väärtusel 0 on väljund 0 - sisendsignaalil q/2 muutub väljund q
- sisendi muutudes q võrra muutub väljund q võrra.
Mõõtepiirkond (Full Scale) on sisendsignaali
vahemik kus viga Δ ei välju piiridest ±q/2
ning on väärtusega FS=(n+1/2)*q
nn. „täisskaala“)
Analoog-digitaalmuundur
ADM tegelikud vead on palju suuremad
Analoog-digitaalmuundur
• Muundusaeg . Signaal ei tohi muundamishetkel muutuda
Signaal X(t) muutub ajas. Tulemus saadakse ajahetkel t2, see vastab signaalile
mingil eelneval ajahetkel, seda hetke on raske fikseerida täpselt,
eksisteerib ebamäärasus Δt nn. “apertuuriaeg”.
Fikseerida X(t) väärtused kindlatel ajahetketel
ja teha siis ADM-ga muundamine.
(sample & hold)
Analoog-digitaalmuundur
Järkude arv n=log2(N)
• 8 bitisel muunduril 256 nivood
• 16 bitisel muunduril 65536 nivood
Mida suurem , seda täpsemini saab signaali digiteerida.
AD/DA muundamisel tekib kvantimismüra ( q/2), mis lisandub kasulikule signaalile.
Kn(dB)=6n+3 . See on alati olemas !!!
Analoog-digitaalmuundur
Paralleelmuundur
• Kiire
• Reaalajas toimiv
• Vajab 2n-1komparaatorit !
• Kasutatakse kuni 8 bitiste muundurite korral (256 taset)
• Videotöötlus
Kõik teised on aeglasemad !
Sisend+
-
Vref
R/2
+
-
+
-
R
R
R/2
DC
Komparaatorid koodimuundur
2 bitine väljund
Analoog-digitaalmuundur
Integraatormuundur
C
V I 123456
Schmitti triger loendur
nullimine
f0
f0
• Pinge muundatakse ajamuutuseks (ka VCO – voltage controlled oscillator)
• Kõige täpsemad kuid kõige aeglasemad (aega saab mõõta väga täpselt)
• Kasutusel eelkõige multimeetrites
loendamine
SisendS/H
Analoog-
mälu Integraator
Analoog-digitaalmuundur
Kaalumismuundur
Sisend+
-Nihkeregister
D/A muundur
Vref
kood
Komparaator
• Tööpõhimõte sarnaneb kangkaaludega kaalumisega. Koodid proovitakse läbi.
• Enamlevinud meetod. Täpsus sõltub D/A muunduri kvaliteedist.
• muundusaeg- n-takti ( n- muunduri bittide arv)
Clk
S/H
Analoog-
mälu
Analoog-digitaalmuundur
Väljundkood avaldub kujul:
𝐾𝑜𝑜𝑑 =𝑉𝑖𝑛𝑉𝑅𝑒𝑓
∗ (2𝑛−1)
Kus n on muunduri bittide arv
AD muundur tänapäeva mikrokontrolleris
• Kasutamisel tuleb hoolega lugeda andmelehte (datasheet) !
• Reeglina on sisendis mux ja üks muundur protsessori kohta.
• Tavaliselt kas 8 või 10bitine.
• Mõnikord on lisatud ka võimendi.
• VRef kas sisene või väline.
• Sisend ja VRef peavad olema
positiivsed ja mitte suuremad kui
toitepinge.
Väljundkood avaldub kujul:
𝐾𝑜𝑜𝑑 =𝑉𝑖𝑛𝑉𝑅𝑒𝑓
∗ (2𝑛−1)
Kus n on muunduri bittide arv
• Enamikes mikrokontrolleris on AD muundur
• Kasutatakse multiplekserit, juhtimine täpselt andmelehe järgi.
• Tugipinge – kas sisemine või välimine.
• Vajadusel ette võimendi või pingejagur !
AD muundur tänapäeva mikrokontrolleris
DA muundur
Paralleelmuundur
• Iga biti väärtus korrutatakse tema kaaluteguriga 2n ning korrutised liidetakse.
• Lihtsam variant –kasutada takisteid, millest iga järgmine on 2 korda väiksem
Kasutusala – diskreetelemendid
(takistid), kui vajalik bittide arv on
väike.
Näiteks 12 biti puhul peab takistite
suhe olema juba 2048 ! Seetõttu on see variant ebapraktiline ja
vähe kasutuses.
DA muundur
Paralleelmuundur
• Iga biti väärtus korrutatakse tema kaaluteguriga 2n ning
korrutised liidetakse.
• Parem variant –kasutada püsiva impedantsiga R-2R ahelat
Eelis- takistite takistused ei ole
kriitilise suurusega, kuid peavad
olema võimalikult ühesugused,
mikroskeemides lihtne realiseerida.
DA muundur
1 bitine muundur (impulss-laius muundur, PWM)
• Sisendsignaaliks on nelinurksignaal, mille harvendustegur
(duty cycle) muutub vastavalt keskväärtusele.
• Väljundis peab olema kindlasti
integreeriv element (kondensaator,
mootor, küttekeha, valjuhääldi) !
• Vajab signaali sämplimissageduse
tõstmist 2n korda (n-bittide arv)
• Odav
• Kvaliteetse analoogsignaali
saamiseks vajab väga head filtrit !
Ideaalsignaal
Sama keskväärtusega nelinurksignaal
Tegelik ,filtreeritud väljundsignaal
PWM mikrokontrolleris• Reguleeritakse nelinurksignaali harvendustegurit
• Võimalus reguleerida näiteks valgusdioodi heledust
• Lihtne võimalus saada analoogpinget.
• Arduino - analogWrite
𝑉ä𝑙𝑗𝑢𝑛𝑑𝑝𝑖𝑛𝑔𝑒 𝑘𝑒𝑠𝑘𝑣ää𝑟𝑡𝑢𝑠 = 𝑇𝑜𝑖𝑡𝑒𝑝𝑖𝑛𝑔𝑒 ∗𝐼𝑚𝑝𝑢𝑙𝑠𝑖 𝑝𝑖𝑘𝑘𝑢𝑠
𝑃𝑒𝑟𝑖𝑜𝑜𝑑𝑖 𝑝𝑖𝑘𝑘𝑢𝑠
𝑉ä𝑙𝑗𝑢𝑛𝑑𝑝𝑖𝑛𝑔𝑒 𝑒𝑓𝑒𝑘𝑡𝑖𝑖𝑣𝑣ää𝑟𝑡𝑢𝑠 = 𝑇𝑜𝑖𝑡𝑒𝑝𝑖𝑛𝑔𝑒 ∗𝐼𝑚𝑝𝑢𝑙𝑠𝑖 𝑝𝑖𝑘𝑘𝑢𝑠
𝑃𝑒𝑟𝑖𝑜𝑜𝑑𝑖 𝑝𝑖𝑘𝑘𝑢𝑠