AVR mikrokontrolleru arhitektūra — Atmel RISC, īpašības un vēsture

Uzzini AVR mikrokontrolleru arhitektūras vēsturi, Atmel RISC īpašības, veiktspēju un reģistru dizainu — tehnisks, salīdzinošs un praktisks pārskats par AVR.

Autors: Leandro Alegsa

AVR mikrokontrolleru arhitektūru Atmel publicēja 1996. gadā. Tā bāzējas uz Hārvarda mikrokontrolleru arhitektūras principiem — programmata un datu atmiņa ir atdalītas, ko ļauj optimizēt ātrdarbību. Viens no AVR agrīnajiem tehnoloģiskajiem ieguvumiem bija tas, ka programmas atmiņā izmantoja programmējamu zibatmiņu (flash) — pretstatā iepriekš biežāk lietotajām vienreiz programmējamām ROM, EPROM vai EEPROM risinājumiem — kas atviegloja atkārtotu programmēšanu un attīstīja plašu izstrādātāju ekosistēmu.

AVR arhitektūru izstrādāja Norvēģijas inženieri Alf‑Egil Bogen un Vegard Wollan (Atmel Norway). Tā ir 8 bitu RISC tipa arhitektūra ar skaidru instrukciju tipu kopu, vienkāršotu adresēšanu un mērķi nodrošināt augstu izpildes ātrumu un zemu enerģijas patēriņu iebūvētām ierīcēm.

Galvenās īpašības

  • 32 vispārējas nozīmes reģistri (R0–R31), tieši pieejami ALU operācijām — divi reģistri var tikt nolasīti vienā instrukcijā, kas ļauj veikt lielāko daļu operāciju vienā takts ciklā.
  • Hārvarda arhitektūra — atsevišķa programmas (flash) un datu (SRAM) atmiņa, kas ļauj vienlaikus veikt instrukciju fetch un datu piekļuvi.
  • Krūvju (pipeline) šēma — vienkārša divu soļu pipeline (fetch + execute), kas nodrošina, ka lielākā daļa instrukciju tiek izpildītas vienā takts ciklā.
  • Atbalsts programmējamai flash atmiņai programmu uzglabāšanai un pārprogrammēšanai in‑circuit (ISP), kas padara izstrādi un atjaunināšanu ērtāku.
  • Bagātīgs perifērijas komplekts — taimeri, ADC, PWM, UART/USART, SPI, I2C (TWI), watchdog, EEPROM un citi atkarībā no konkrētā AVR draivera sērijas.
  • Zemo enerģijas režīmu atbalsts un funkcijas, piemēram, brown‑out detektors un dažādi miega režīmi, kas svarīgi bateriju darbināmām ierīcēm.

Instrukciju izpilde un reģistri

AVR instrukciju kods ir visbiežāk 16 bitu garš (ir arī 32 bitu instrukcijas specifiskām operācijām), un arhitektūra ir optimizēta, lai lielākā daļa instrukciju tiktu izpildītas vienā takts ciklā. Salīdzinājumam, klasiskās MCS‑51 (8051) arhitektūras mašīnas cikls bija 12 oscilatora cikli, tādēļ AVR ierīces pie tā paša oscilatora ātruma var nodrošināt daudz lielāku instrukciju caurlaidspēju — praktiski līdz 12 reižu priekšrocība noteiktos režīmos, jo AVR izpilda instrukcijas vienā ciklā.

Reģistru faili (R0–R31) atrodas mikrokontroliera kodolā un ir tieši savienoti ar ALU, kas nozīmē ātru piekļuvi un vienkāršāku programmēšanu ar mazāku atmiņas pieprasījumu. Bieži izmantojamie rādītāji un datus var glabāt reģistros, savukārt staka rādītājs un statusa reģistrs nodrošina izpildes kontekstu un nosacījumu baitu (C, Z, N, V, S, T, H).

Atšķirīgie AVR veidi un paplašinājumi

Atmel (vēlāk Microchip) izlaida vairākas AVR sērijas, piemēram, tinyAVR (mazas I/O funkcijas, zemais cenu līmenis), megaAVR (vairāk perifēriju un atmiņas), XMEGA (augstāka veiktspēja, paplašināta perifērija) un arī 32 bitu AVR32 arhitektūru, kas ir atsevišķs projekts un neatbilst klasiskajam 8 bitu AVR. Dažos Atmega/XMEGA variantos ir integrēta aparatūras reizinātāja bloka atbalsts un papildu DMA funkcijas.

Praktiskie aspekti un ekosistēma

  • Izstrādes rīki: plaši izmantota atklātā koda toolchain — avr‑gcc, avr‑libc, avrdude, un oficiālā Atmel/Microchip Studio ar debuggēšanas atbalstu.
  • Programēšana un debug: ISP (in‑system programming), PDI/JTAG/UPDI atkarībā no sērijas, kā arī bootloader risinājumi.
  • Popularitāte: AVR mikrokontrolieri kļuva ļoti populāri hobiju un profesionālajā jomā — piemēram, Arduino platformas sākotnējie modeļi izmantoja Atmel AVR (ATmega328P u.c.), kas vēl vairāk palielināja pieejamību un mācību materiālu skaitu.

Vēsturisks un tehnoloģisks nozīmīgums

AVR arhitektūra būtiski ietekmēja iebūvēto sistēmu izstrādi, pateicoties vienkāršajai RISC filozofijai, spēcīgajai perifērijai un vieglai programmēšanai. Tā kā flash programmējamība bija agrīni pieejama un cena/jauda attīstījās, AVR ierīces kļuva par vienu no populārākajiem risinājumiem prototipēšanā, mācībās un komerciālās iekārtās.

Ja vēlaties, varu papildināt rakstu ar tehniskiem piemēriem (instrukciju piemēriem, reģistru aprakstu), salīdzinājumu ar citām arhitektūrām vai īsu ceļvedi, kā sākt programmēt AVR ar avr‑gcc vai Arduino vidē.

Atmel AVR ATmega8 28-pin DIP.Zoom
Atmel AVR ATmega8 28-pin DIP.

Pamatģimenes

tinyAVR

  • 0,5-8 kB programmas atmiņas
  • līdz 0,5 kB SRAM
  • līdz 0,5 kB EEPROM
  • līdz 20 MHz
  • 6-32 adatu komplekts


megaAVR

  • 4-256 kB programmas atmiņas
  • 0,5-16 kB SRAM
  • 0,5-4 kB EEPROM
  • līdz 20 MHz
  • 20-100 adatu komplekts


XMEGA

  • 16-384 kB programmas atmiņas
  • 2-32 kB SRAM
  • ārējā kopnes saskarne līdz 16M baitu SRAM SDRAM atmiņai
  • 1-4 kB EEPROM
  • līdz 32 MHz
  • 44-100 adatu komplekts

 

Funkcijas

Katram AVR ir daži ieejas/izejas porti. Portam uz tā iepakojuma ir līdz 8 fiziskajiem kontaktiem. Katru pin var konfigurēt kā ieeju vai izeju. Ja kontakttīkls tiek izmantots kā ievade, tajā var ieslēgt iebūvētos vilkšanas rezistorus, izmantojot PORTx reģistru. Ja kontakttīkls ir konfigurēts kā izeja, tas var izturēt līdz 40 mA slodzi uz vienu kontakttīkla un ne vairāk kā 100 mA visiem portā esošajiem kontakttīkliem.

A/D pārveidotājs

  • 10 bitu (tinyAVR, megaAVR) ar multipleksu līdz 8 kanāliem
  • 12 bitu (XMEGA) ar multipleksu līdz 16 kanāliem

Taimeri/skaitītāji (8 bitu vai 16 bitu)

  • Lietotāji to var konfigurēt kā PWM, skaitītāju vai taimeri.
  • Vienkāršā PWM režīmā skaitīšanas reģistrs darbojas bez apstāšanās un tiek salīdzināts ar citu reģistru. Ja skaitīšanas reģistrs ir lielāks nekā otra reģistra kontakts Ocx tiek iestatīts uz "1". Citā gadījumā kontakts Ocx ir iestatīts uz "0".
  • Skaitītājam ir kāds ārējs avots, piemēram, foto sensors, un tas var saskaitīt cilvēku skaitu, kas iziet caur foto sensoru.
  • Taimeris dod impulsus precīzi noteiktā laikā. To izmanto pulksteņa programmēšanas lietojumprogrammām.

TWI - divu vadu interfeiss Izmanto tādu pašu protokolu kā 2IC, un to var izmantot kā 2IC interfeisu.

UART/USART UART var izmantot RS232/RS485 komunikācijai.

SPI - sērijveida perifērijas interfeiss

  • ļoti ātra sērijveida kopne, ko izmanto datu pārsūtīšanai saziņai ar ierīcēm.
  • izmantojot šo kopni, var ierakstīt/lasīt programmu no/uz programmas atmiņas vai EEPROM.

USI - universālā sērijveida saskarne

  • izmanto divu vai trīs vadu sinhronajai datu pārraidei.

JTAG

  • tiešsaistes atkļūdošanas saskarne

D/A pārveidotājs

  • 12 bitu (tikai XMEGA) ar multipleksu līdz 2 kanāliem

Saistītās lapas

  • Arduino

Jautājumi un atbildes

J: Kad tika izstrādāta AVR mikrokontrolleru arhitektūra?


A: AVR mikrokontrolleru arhitektūru 1996. gadā izstrādāja Atmel.

Q: Uz kādas arhitektūras ir balstīts AVR mikrokontrolieris?


A: AVR mikrokontroliera pamatā ir Hārvarda mikrokontroliera arhitektūra.

J: Ar ko AVR mikrokontrolieris atšķiras no citiem mikrokontrolieriem tā izstrādes laikā?


A: AVR mikrokontrolierī programmu glabāšanai izmanto mikroshēmā iebūvētu zibatmiņu, nevis vienreiz programmējamu ROM, EPROM vai EEPROM, ko tajā laikā izmantoja citi mikrokontrolieri.

J: Kāda ir vispārpieņemtā saīsinājuma AVR nozīme?


A: Daudzi uzskata, ka AVR ir Alf (Egil Bogen) un Vegard (Wollan) Risc procesors.

J: Kādu arhitektūru aizstāja AVR mikrokontrolieris?


A: AVR mikrokontrolieris aizstāja vecāko MCS-51 arhitektūru.

Jautājums: Cik takts ciklu aizņem viens MCS-51 mašīnas cikls?


A: Viens MCS-51 mašīnas cikls aizņem 12 takts ciklus.

J: Kādas ir AVR mikrokontrolleru priekšrocības salīdzinājumā ar MCS-51 attiecībā uz veiktspēju vienā taktā?


A: AVR mikrokontrolleru veiktspēja uz taktāttaktometru ir 12 reižu lielāka.


Meklēt
AlegsaOnline.com - 2020 / 2025 - License CC3