AVR-mikrokontrolleri (Atmel) – RISC-arkkitehtuuri, rekisterit ja suorituskyky
Tutustu AVR-mikrokontrolleriin (Atmel): RISC-arkkitehtuuri, 32 rekisteriä, yhden konesyklin suorituskyky ja tehokas flash-muisti — vertailu MCS-51:een ja suoritusmittarit.
Atmel kehitti AVR-mikrokontrolleriarkkitehtuurin vuonna 1996. Se perustuu Harvard-tyyppiseen arkkitehtuuriin, jossa ohjelma- ja datamuisti ovat erillisiä ja voivat toimia samanaikaisesti. AVR oli yksi ensimmäisistä mikro-ohjainperheistä, jotka käyttivät ohjelman tallentamiseen piirin sisäistä flash-muistia verrattuna monien sitä aikaisempien mikro-ohjainten kertakäyttöisesti ohjelmoitaviin ROM-, EPROM- tai EEPROM-muisteille. Flashin käyttö mahdollisti laitteiden helpon päivitettävyyden ja yleistyi nopeasti sulautetuissa sovelluksissa.
Historia ja nimen alkuperä
AVR-nimen katsotaan tulevan Atmelin alkuperäisten suunnittelijoiden Alf‑Egil Bogenin ja Vegard Wollanin nimikirjaimista (Alf and Vegard's RISC processor). Myöhemmin markkinointisyistä ja dokumentaatiossa on käytetty myös takakronyymiä Advanced Virtual RISC, mutta alkuperäinen nimi juontuu suunnittelijoista.
Arkkitehtuuri ja muistit
AVR on RISC-pohjainen mikro-ohjainperhe, joka käyttää erillisiä ohjelma- ja dataväyliä (Harvard-arkkitehtuuri). Ohjelmakoodi säilytetään sisäisessä flash-muistissa, data SRAMissa ja pysyväksi tallennukseksi käytetään tarvittaessa EEPROMia tai ulkoista muistia. Ohjeet ovat pääosin 16-bittisiä sanoja, mutta joukossa on myös 32-bittisiä käskyjä esimerkiksi monimutkaisemmille operaatioille.
Rekisterit ja ALU
Ytimessä on 32 yleiskäyttöistä 8‑bittistä rekisteriä (R0–R31), jotka ovat suoraan liitetty aritmetiikka-/logiikka‑yksikköön (ALU). Tämä rekisteritiedosto mahdollistaa sen, että useimmat kaksi-operandin käskyt voivat käyttää kahta rekisteriä suoraan ja suorittaa operaation yhdessä konesyklissä. Osa rekistereistä voidaan yhdistää pareja käyttämällä 16‑bittisiksi osoitin- tai laskentarekistereiksi (esim. X, Y, Z), mikä helpottaa muistiosoittimien käyttöä ja 16‑bittisten laskutoimitusten suorittamista.
Prosessorilla on myös erillisiä erikoisrekistereitä kuten status‑rekisteri (SREG), jolla ylläpidetään lippuja (esim. C-carry, Z-zero, N-negative, V-overflow, I-interrupt enable) ja joukko erityisiä ohjaus- ja väliaikaisrekistereitä (IO- ja SFR-alue).
Kellosyklit, pipelointi ja suorituskyky
Perinteisiin 8‑bittisiin arkkitehtuureihin verrattuna AVR:n etu on, että suurin osa käskyistä suoritetaan yhdellä kellojaksolla. AVR-ydin käyttää yksinkertaista kahden vaiheen putkistoa (fetch ja execute), joten seuraava käsky voidaan hakea samaan aikaan kun nykyinen suoritetaan. Verrattuna esimerkiksi klassiseen MCS‑51 (8051) -arkkitehtuuriin, jossa yksi konejakso vastaa usein 12 kellojaksoa ja useimmat käskyt vaativat yhden konejakson, AVR pystyy per‑kellosyklin suorituskyvyssä tarjoamaan merkittävän edun (teoriassa jopa noin 12× tehokkaampi saman kellotaajuuden perusteella, kun vertaillaan yhden käskyn suorittumista).
Käskykanta ja ominaisuudet
AVR:llä on laaja RISC-tyylinen käskykanta, joka sisältää aritmeettisia ja loogisia operaatioita, siirto- ja vertailukäskyjä, haarautumisia ja ehdollisia hyppyjä, sekä käskyjä I/O‑laitteiden, pinon ja muistinkäsittelyn hallintaan. Monet käskyt ovat 16‑bittisiä ja suorittuvat yhdellä kellojaksolla; monimutkaisemmat toiminnot, kuten 32‑bittiset laskut tai tietyt hyppykäskyt, voivat vaatia useamman kellojakson.
Periferia, virranhallinta ja ohjelmointi
AVR-perheet tarjoavat laajan valikoiman periferiakomponentteja: taimerit/pulssileveysmodulaattorit (PWM), A/D‑muunnin, UART, SPI, I²C (TWI), erilaisia viestintä‑ ja liitäntäominaisuuksia (joissain malleissa USB), sekä edistyneempiä ominaisuuksia XMEGA‑sarjassa kuten DMA ja paremmin konfiguroitavat ADC:t/DAC:t. Laitteet tukevat tyypillisesti ISP‑ohjelmointia (In-System Programming), JTAG- ja debugWIRE‑debuggausta sekä bootloader‑ratkaisuja.
Virranhallinta on huomioitu monipuolisesti: useita lepo‑ ja virransäästötiloja (Idle, ADC Noise Reduction, Power‑down, Power‑save, Standby) helpottavat energiatiiviiden sovellusten toteutusta.
Käyttökohteet ja kehitystyökalut
AVR‑mikrokontrollereita käytetään laajasti sekä harrastus- että kaupallisissa sovelluksissa — tunnettu esimerkki on Arduino‑alusta, joka perustuu ATmega‑sarjaan (esim. ATmega328P). Kehittäjätyökaluja ovat mm. Microchip Studio (ent. Atmel Studio), gcc‑pohjainen avr‑gcc, avrdude ja lukuisat kolmannen osapuolen kirjastot ja IDE:t. AVR tarjoaa helpon polun opetteluun, mutta samalla riittävät ominaisuudet moniin vaativiin sulautettuihin käyttökohteisiin.
Yhteenvetona: AVR yhdistää RISC‑periaatteet ja sisäisen flash‑muistin kätevyyden tehokkaaseen arkkitehtuuriin, jossa 32‑rekisterinen rekisteritiedosto, yksinkertainen pipelointi ja laaja periferiatuki tekevät siitä edelleen suositun valinnan pieniin ja keskisuuriin sulautettuihin projekteihin.

Atmel AVR ATmega8, 28-nastainen DIP.
Perusperheet
tinyAVR
- 0,5-8 kB ohjelmamuisti
- enintään 0,5 kB SRAM
- enintään 0,5 kB EEPROM
- enintään 20 MHz
- 6-32 nastapakkaus
megaAVR
- 4-256 kB ohjelmamuisti
- 0,5-16kB SRAM
- 0,5-4 kB EEPROM
- enintään 20 MHz
- 20-100-nastainen paketti
XMEGA
- 16-384kB ohjelmamuisti
- 2-32 kB SRAM
- ulkoinen väyläliitäntä jopa 16 Mt:n SDRAM SRAM-muistia varten.
- 1-4 kB EEPROM
- enintään 32 MHz
- 44-100 nastapakkaus
Ominaisuudet
Jokaisessa AVR:ssä on joitakin tulo-/lähtöportteja. Portilla on enintään 8 fyysistä pinniä pakkauksessaan. Jokainen nasta voidaan konfiguroida tuloksi tai lähdöksi. Jos nastaa käytetään tulona, se voi kytkeä sisäänrakennetut pull-up-vastukset päälle rekisterin PORTx kautta. Jos nasta on konfiguroitu ulostuloksi, se voi käsitellä enintään 40 mA:n kuormitusta nastaa kohti ja enintään 100 mA:n kuormitusta portin kaikkien nastojen osalta.
A/D-muunnin
- 10-bittinen (tinyAVR, megaAVR), jossa on jopa 8 kanavan multipleksijärjestelmä
- 12-bittinen (XMEGA), jossa on jopa 16 kanavan multipleksi
Ajastimet/laskurit (8- tai 16-bittiset)
- Käyttäjät voivat konfiguroida sen PWM, laskuri tai ajastin.
- Yksinkertaisessa PWM-tilassa laskentarekisteri toimii pysähtymättä ja sitä verrataan toiseen rekisteriin. Jos laskentarekisteri on suurempi kuin toinen rekisteri, nasta Ocx asetetaan arvoon "1". Muuna aikana pin Ocx asetetaan arvoon "0".
- Laskurilla on jokin ulkoinen lähde, kuten valokenno, ja se voi laskea valokennon ohittaneiden ihmisten määrän.
- Ajastin antaa pulssit täsmälleen ajallaan. Sitä käytetään kellosovellusten ohjelmointiin.
TWI - Two Wire Interface Tämä käyttää samaa protokollaa kuin 2IC ja sitä voidaan käyttää 2IC-liitäntänä.
UART/USART UARTia voidaan käyttää RS232/RS485-viestintään.
SPI - Sarjaohjattu oheisliitäntä
- erittäin nopea sarjaväylä, jota käytetään tiedonsiirtoon laitteiden kanssa käytävässä viestinnässä.
- voit polttaa/lukea ohjelmaa ohjelmamuistiin tai EEPROM-muistiin tämän väylän kautta.
USI - Yleinen sarjaliitäntä
- käytetään kaksi- tai kolmijohtimiseen synkroniseen tiedonsiirtoon
JTAG
- käyttöliittymä online-virheenkorjausta varten
D/A-muunnin
- 12-bittinen (vain XMEGA), jossa on jopa 2 kanavan multipleksijärjestelmä
Aiheeseen liittyvät sivut
- Arduino
Kysymyksiä ja vastauksia
K: Milloin AVR-mikrokontrolleriarkkitehtuuri kehitettiin?
V: Atmel kehitti AVR-mikrokontrolleriarkkitehtuurin vuonna 1996.
K: Mihin arkkitehtuuriin AVR-mikrokontrolleri perustuu?
V: AVR-mikrokontrolleri perustuu Harvard-mikrokontrolleriarkkitehtuuriin.
K: Mikä erottaa AVR-mikrokontrollerin muista mikrokontrollereista sen kehittämisen aikaan?
V: AVR-mikrokontrolleri käyttää ohjelman tallentamiseen piirin sisäistä flash-muistia, toisin kuin muissa mikrokontrollereissa tuolloin käytetyt kertakäyttöisesti ohjelmoitavat ROM-, EPROM- tai EEPROM-muistit.
K: Mikä on lyhenteen AVR yleisesti uskottu merkitys?
V: Monet uskovat, että AVR tarkoittaa Alf (Egil Bogen) ja Vegard (Wollan) Risc-prosessoria.
K: Minkä arkkitehtuurin AVR-mikrokontrolleri korvasi?
V: AVR-mikrokontrolleri korvasi vanhemman MCS-51-arkkitehtuurin.
K: Kuinka monta kellosykliä yksi MCS-51:n konesykli kestää?
V: Yksi MCS-51:n konesykli kestää 12 kellojaksoa.
K: Mikä on AVR-mikrokontrollerien etu MCS-51:een verrattuna suorituskyvyn osalta kellojaksoa kohden?
V: Suorituskyky kellojaksoa kohti on 12 kertaa suurempi AVR-mikrokontrollereilla.
Etsiä