Архитектура AVR от Atmel

Микроконтроллер AVR от Atmel

AVR - самая обширная производственная линии среди других флэш-микроконтроллеров корпорации Atmel. Atmel представила первый 8-разрядный флэш-микроконтроллер в 1993 году и с тех пор непрерывно совершенствует технологию. Прогресс данной технологии наблюдался в

· снижении удельного энергопотребления (мА/МГц),

· расширении диапазона питающих напряжений (до 1.8 В) для продления ресурса батарейных систем,

· увеличении быстродействия до 16 млн. операций в секунду,

· встраивании эмуляции в реальном масштабе времени,

· реализации функции самопрограммирования,

· совершенствовании и расширении количества периферийных модулей,

· встраивании специализированных устройств (радиочастотный передатчик, USB-контроллер, драйвер ЖКИ, программируемая логика, контроллер DVD, устройства защиты данных) и др.

Успех AVR-микроконтроллеров объясняется возможностью простого выполнения проекта с достижением необходимого результата в кратчайшие сроки, чему способствует доступность большого числа инструментальных средств проектирования, поставляемых, как непосредственно корпорацией Atmel, так и сторонними производителями. Ведущие сторонние производители выпускают полный спектр компиляторов, программаторов, ассемблеров, отладчиков, разъемов и адаптеров. Отличительной чертой инструментальных средств от Atmel является их невысокая стоимость.

Другая особенность AVR-микроконтроллеров, которая способствовала их популярности, это использование RISC-архитектуры с мощным набором инструкций, большинство которых выполняются за один машинный цикл.

Это означает, что при равной частоте тактового генератора они обеспечивают производительность в 12 (6) раз больше производительности предшествующих микроконтроллеров на основе CISC-архитектуры (например, MCS51). С другой стороны, в рамках одного приложения с заданным быстродействием, AVR-микроконтроллер может тактироваться в 12 (6) раз меньшей тактовой частотой, обеспечивая равное быстродействие, но при этом потребляя гораздо меньшую мощность. Таким образом, AVR-микроконтроллеры представляют более широкие возможности по оптимизации производительности/энергопотребления, что особенно важно при разработке приложений с батарейным питанием. Микроконтроллеры обеспечивает производительность до 16 млн. оп. в секунду и поддерживают флэш-память программ различной емкости: 1… 256 кбайт. AVR-архитектура оптимизирована под язык высокого уровня Си, а большинство представителей семейства megaAVR содержат 8-канальный 10-разрядный АЦП, а также совместимый с IEEE 1149.1 интерфейс JTAG или debugWIRE для встроенной отладки. Кроме того, все микроконтроллеры megaAVR с флэш-памятью емкостью 16 кбайт и более могут программироваться через интерфейс JTAG.

Пример использования

· Основные параметры

· Гарвардская архитектура.

· RISC.

· Количество команд 90…130.

· Число выводов 8…64.

· Частота тактового генератора 10…16 МГц.

· Большинство инструкций выполняются за 1 цикл тактового генератора ТГ.

· Производительность 10…16 МIPS (Millions Instructions per Second).

· Память программ типа FLASH ROM. Перепрограммируется до 1000 раз.

· Память данных ОЗУ (тип EEPROM). Перепрограммируется до 100000 раз.

· 32 регистра общего назначения.

· Есть режимы с пониженным энергопотреблением.

· Отладчик AVR Studio, бесплатный.

Семейства

· Tiny AVR – миниатюрные МК. Flash ROM 1…2 Кбайт, ОЗУ типа EEPROM 64 байт

· Classic AVR. Flash ROM 2…8 Кбайт, ОЗУ типа EEPROM 64…512 байт, ОЗУ типа SRAM 128…512 байт

· Mega AVR Flash ROM 2…128 Кбайт, ОЗУ типа EEPROM 64…512 байт, ОЗУ типа SRAM 2…4 Кбайт, 10 разрядный 8-и канальный АЦП, аппаратный умножитель 8*8

Микроконтроллер AT90S2313 выбран как пример для изучения основ. Это современный 8-битный КМОП МК. Он имеет производительность 1 MIPS при частоте ТГ в 1 МГц, так как почти все его команды выполняются за 1 период ТГ.

Используется расширенная RISC архитектура от ARM, 32 регистра общего назначения. Все регистры подключены к арифметико-логическому устройству АЛУ, что дает доступ к 2-м регистрам в течение 1 цикла. Его основные характеристики:

· 2 Кб загружаемой FLASH памяти. Может быть перепрограммирования через интерфейс SPI.

· 128 байт EEPROM для данных.

· 15 линий ввода/вывода общего назначения.

· 2 таймера/счетчика (один 8-разрядный, другой 16-разрядный.).

· Внешние и внутренние прерывания

· Встроенный последовательный порт.

· Программируемый сторожевой таймер со встроенным генератором.

· Последовательный порт SPI для загрузки программ.

· 2 выбираемых программно режима низкого энергопотребления.

Описание выводов

· VCC – питание.

· GND – земля.

· PORT B (PB7…PB0) – 8-разрядный параллельный порт ввода/вывода. Выводы PBO, PB1 являются также положительным (A1N0) и отрицательным (A1N1) входами встроенного аналогового компаратора.

· PORT D (PD6…PD0) – 7-разрядный двунаправленный параллельный порт ввода/вывода с встроенными подтягивающими резисторами. Входы воспринимают ток до 20 мА.

· RESET – вход сброса для перезапуска МК.

· XTAL1 и XTAL2 – вход и выход инвертирующего усилителя, используемые для построения ТГ. К ним можно подключить кварцевый резонатор, задающий частоту ТГ.

· Обзор архитектуры

Файл регистров общего назначения РОН. 32 8-разрядных. Регистровый файл занимает адреса $00…$1F, поэтому к регистрам можно обращаться и как ячейкам памяти данных.

Большинство команд, использующих регистры, могут обращаться к любым РОН. Исключение составляют команды, работающих с константами: SBCI, SUBI, CPI, ANDI, ORI, LDI. Они работают только со второй половиной файла РОН – R16…R31.

Каждому регистру присвоен и адрес в первых 32 ячейках ОЗУ. Это удобно.

Пространство ввода/вывода состоит из 64 адресов $20…$5F.

АЛУ поддерживает арифметические и логические операции.

6 РОН (R26…R31) можно использовать как 3 16-разрядных указателя X,Y,Z в адресном пространстве данных. Указатель Z можно использовать для адресации таблиц в памяти программ.

· Структура памяти

Использована Гарвардская архитектура – данные и программа в разных устройствах памяти.

Во время выполнения одной команды следующая команда считывается одновременно из памяти программ.

· Режимы адресации

Прямая регистровая адресация с одним регистром. В качестве источника используется любой РОН. Результат заносится туда же.

Код команды содержит 1 слово. КОП – код операции, РОН определяет используемый регистр.

Прямая регистровая адресация с двумя регистрами. Код команды содержит 1 слово: КОП – код операции, Rr – источник данных, Rd – получатель результата.

 

Прямая адресация к области ввода вывода. Операция осуществляется с данными в поле P. Используется регистр РОН, он может быть источником или получателем данных.

Прямая адресация к памяти данных. Код команды состоит из 2-х слов. В старшем слове команды размещены - код операции КОП и используемый РОН. В младшем слове находится 16-разрядный адрес ячейки памяти данных.

 

Косвенная адресация к памяти данных. Адрес операнда находится в одном из регистров X, Y, Z.

 

Косвенная адресация к памяти данных со смещением. Адрес операнда определяется как сумма содержимого Z или Y регистра и смещения.

 

Косвенная адресация к памяти данных с предварительным декрементом. Адрес операнда находится в одном из регистров X, Y или Z. Перед выполнением операции он уменьшается на 1.

 

Косвенная адресация к памяти данных с постинкрементом. Адрес операнда находится в одном из регистров X, Y или Z. После выполнение операции он увеличивается на 1.

Адресация к константам в памяти программ. Константа в регистре Z. 15 старших битов определяют адрес слова, а младший (0) бит задают младший (если 0) или старший (если 1) байт константы в памяти программ.

Косвенная адресация памяти программ. После операций IJMP или ICALL выполнение программы продолжается с адреса записанного в регистре Z. Его содержимое переносится в счетчик команд.

 

Относительная адресация памяти программ. После операций RJMP или RCALL выполнение программы продолжается с адреса (Счетчик команд)+k+1. Относительный адрес k = -2048…2047

 

 

Память программ. Содержит 2 Кб флэш-памяти. Она организована как 1Кх16. Может перепрограммироваться до 1000 раз.. Программный счетчик имеет 10 разрядов и может адресовать 1024 слов памяти программ.

EEPROM память данных. Содержит 128 байтов электрически стираемой энергонезависимой памяти (EEPROM). Организована как отдельная область данных, каждый байт которой может быть прочитан и при необходимости переписан. Выдерживает не менее 100000 циклов записи/стирания. К этой памяти может обращаться программа. Данные а нее можно занести с помощью внешнего программатора.

Оперативная память данных включает 224 ячейки: регистровый файл (32 адреса), память ввода/вывода (64 адреса), оперативная память данных (128 адресов).