ATR0110 ANALOOG-JA...

Post on 22-Jan-2021

2 views 0 download

Transcript of ATR0110 ANALOOG-JA...

ATR0110 ANALOOG- JA

DIGITAALTEHNIKA

Kevad 2019

Digitaaltehnika – arvutid

Martin Jaanus NRG-308

martin.jaanus@ttu.ee 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

𝑉ä𝑙𝑗𝑢𝑛𝑑𝑝𝑖𝑛𝑔𝑒 𝑘𝑒𝑠𝑘𝑣ää𝑟𝑡𝑢𝑠 = 𝑇𝑜𝑖𝑡𝑒𝑝𝑖𝑛𝑔𝑒 ∗𝐼𝑚𝑝𝑢𝑙𝑠𝑖 𝑝𝑖𝑘𝑘𝑢𝑠

𝑃𝑒𝑟𝑖𝑜𝑜𝑑𝑖 𝑝𝑖𝑘𝑘𝑢𝑠

𝑉ä𝑙𝑗𝑢𝑛𝑑𝑝𝑖𝑛𝑔𝑒 𝑒𝑓𝑒𝑘𝑡𝑖𝑖𝑣𝑣ää𝑟𝑡𝑢𝑠 = 𝑇𝑜𝑖𝑡𝑒𝑝𝑖𝑛𝑔𝑒 ∗𝐼𝑚𝑝𝑢𝑙𝑠𝑖 𝑝𝑖𝑘𝑘𝑢𝑠

𝑃𝑒𝑟𝑖𝑜𝑜𝑑𝑖 𝑝𝑖𝑘𝑘𝑢𝑠