ВверхДомой

Доклад по AVR-процессорам фирмы Atmel.

AVR - это новое семейство высокопроизводительных 8-разрядных RISC (Reduced Instruction Set Computers) микроконтроллеров общего назначения, объединенных общей маркой. AVR – это аббревиатура, из инициалов двух разработчиков и названия архитектуры Alf Bogen / Vergard Wollan / Risc architecture. Целью создания серии таких микроконтроллеров явилась попытка фирмы Atmel (США) создать чипы с оптимальным соотношением цена-производительность-энергопотребление.

Микроконтроллеры MCS51, выпускаемые Intel, Philips, Temic, OKI, Siemens практически стали промышленным стандартом для 8-разрядных систем и действительно замечательно справляются со своими обязанностями (особенно если выбирать высокочастотные кристаллы с расширенной периферией). Но эти микропроцессоры являются крайне неэкономичными с точки зрения потребления энергии.

Широко развитые линии PIC-контроллеров фирмы Microchip и микроконтроллеров H8/300 фирмы Hitachi обеспечивают достаточно высокую производительность (до 5 MIPS) при небольшом энергопотреблении. Эффективность работы микроконтроллеров Dallas Semiconductor, имеющих базовую архитектуру MCS51, также в среднем превышает стандартную в 2,5 - 3 раза. Но такие чипы как правило очень дороги, что не позволяет использовать их для многих устройств например, для SMART-карт).

Фирма Atmel решила создать схемы, которые, обладая высокой производительностью и развитой периферией, в то же время отличались бы низкой ценой и малым энергопотреблением.

В основу нового поколения чипов легли три идеи:

1.Использовать новейшую, наиболее скоростную и экономичную КМОП технологию фирмы Atmel в сочетании с RISC архитектурой для разработки и производства быстрых 8-разрядных микроконтроллеров, сравнимых с 16-разрядными микропроцессорами и микроконтроллерами по производительности и превосходящих микросхемы стандартной КМОП логики по скорости.

Ожидаемая производительность - до 20 MIPS на частоте 20 МГц, что всего на 30% меньше, чем у Intel KU80386EXTC-25 при операциях типа "регистр-регистр". Время выполнения короткой команды на такой тактовой частоте составляет 50 нс;

 2.Разрабатывать архитектуру и систему команд AVR в теснейшем согласии с принципами языка Си. При таком подходе существенно сокращается время разработки проектов и, соответственно, снижается их стоимость, а также облегчается создание универсальных средств поддержки разработок.

Язык Си является наиболее популярным и эффективным средством для программирования микроконтроллеров, поэтому система команд AVR разрабатывалась при непосредственном участии экспертов по языку Си и учитывает все основные особенности стандарта ANSI C. Результат налицо: компиляция исходных текстов, написанных на Си, осуществляется быстро и дает компактный, эффективный код.

 3.Функционально расширить микроконтроллер возможностью программирования в системе (ISP) путем объединения Flash-технологии фирмы Atmel со стандартным скоростным последовательным интерфейсом (SPI, Serial Peripheral Interface). Это позволяет многократно модифицировать программу не только с помощью обычного программатора, но и непосредственно в системе, в конечном устройстве пользователя. При этом не требуется вводить никаких дополнительных аппаратных узлов и вспомогательных источников питания.

Все микропроцессоры AVR построены на основе Гарвардской архитектуры. Гарвардская архитектура AVR реализует полное логическое и физическое разделение не только адресных пространств, но и информационных шин для обращения к памяти программ и к памяти данных. Способы адресации и доступа к ним также различны. Такое построение уже ближе к структуре скоростных цифровых сигнальных процессоров и обеспечивает существенное повышение производительности за счет:

а) одновременной работы центрального процессора как с памятью программ, так и с памятью данных;

б) расширения до 16 бит разрядной сетки шины данных памяти программ.

Кроме того, у AVR появляется технология конвейеризации, вследствие чего цикл "выборка-исполнение" команды может быть заметно сокращен, повышая тем самым производительность процессора. Например, у микроконтроллеров семейства MCS51 короткая команда выполняется за 12 тактов генератора (1 машинный цикл), в течение которого процессор последовательно считывает код операции и исполняет ее. В PIC-контроллерах фирмы Microchip уже реализована конвейерная обработка. Короткая команда выполняется у них в течение 8 периодов тактовой частоты (2 машинных цикла). За это время последовательно дешифрируется и считывается код операции, исполняется команда, фиксируется результат и одновременно считывается код следующей операции (конвейер). Поэтому одна короткая команда в общем потоке реализуется за 4 периода тактовой частоты или за один машинный цикл. В микроконтроллерах AVR тоже используется одноуровневый конвейер при обращении к памяти программ и короткая команда в общем потоке выполняется, как и в PIC-контроллерах, за один машинный цикл. Главное же отличие состоит в том, что этот цикл у AVR длится всего один период тактовой частоты по сравнению с четырьмя у PIC. Следовательно тактовый генератор при той же производительности работает на меньшей частоте. Так как КМОП микросхемы тем экономичнее, чем на меньшей частоте они работают, то значит энергопотребление кристаллов AVR намного меньше обычного.

Следующая отличительная черта архитектуры микроконтроллеров AVR - регистровый файл быстрого доступа. Каждый из 32-х регистров общего назначения длиной 1 байт непосредственно соединен с арифметико-логическим устройством (ALU) процессора. Это означает, что в AVR существует 32 регистра-аккумулятора. Это позволяет в сочетании с конвейерной обработкой выполнять одну операцию в ALU за один машинный цикл. Например, два операнда извлекаются из регистрового файла, выполняется команда и результат записывается обратно в регистровый файл в течение только одного машинного цикла!

Шесть из 32-х регистров файла могут использоваться как три 16-разрядных указателя адреса при косвенной адресации данных. Один из этих указателей применяется также для доступа к таблицам перекодировок, записанных в памяти программ микроконтроллера. Использование трех 16-битных указателей (X, Y и Z Pointers) существенно повышает скорость пересылки данных при работе прикладной программы.

Регистровый файл занимает младшие 32 байта в общем адресном пространстве SRAM AVR. Такое архитектурное решение позволяет получать доступ к быстрой "регистровой" оперативной памяти микроконтроллера двумя путями – непосредственной адресацией в коде команды к любой ячейке и обычными (пятью) способами адресации ячеек SRAM. В технической документации фирмы Atmel это свойство носит название "быстрое контекстное переключение" и является еще одной отличительной особенностью архитектуры AVR, повышающей эффективность работы микроконтроллера.

Во время переходов к выполнению процедур обработки прерываний или подпрограмм текущее состояние программного счетчика сохраняется в стеке. Только у одного из микроконтроллеров AT90S1200 стек реализован аппаратно с глубиной вложений, равной 3. Во всех остальных типах AVR микроконтроллеров стек формируется программно и располагается в общем адресном пространстве оперативной памяти данных. Размер стека лимитируется только общим объемом SRAM и степенью ее использования прикладной программой. 16-разрядный указатель стека находится в общем адресном пространстве оперативной памяти и доступен для чтения и записи.

Усовершенствованные RISC микроконтроллеры AVR поддерживают эффективную и мощную систему адресации.

-Прямая регистровая, отдельный регистр Rd. - адрес регистра указывается в битах 0..4 кода команды, операнд содержится в регистре Rd.

-Косвенная регистровая, - регистр адресуется через указатель Z-регистр (R30).

-Прямая регистровая, два регистра Rd и Rr, - адреса регистров указываются в битах 0..4 (Rd) и 5..9 (Rr) кода команды. Операнды содержатся в регистрах Rd и Rr. Результат помещается в регистр Rd.

-Прямая ввода/вывода. - Адрес операнда содержится в битах 0..5 кода команды, адрес регистра в битах 6..10.

-Относительная программная адресация, RJMP и RCALL. Смещение относительно программного счетчика указывается в битах 0..11 кода операции. Выполнение программы передается по адресу PC+k. Относительный адрес k лежит в диапазоне от +2кБ до -(2кБ-1).

Система команд AVR весьма развита и насчитывает 120 различных инструкций (89 для AT90S1200). Почти все команды имеют фиксированную длину в одно слово (16 бит), что позволяет в большинстве случаев объединять в одной команде и код операции, и операнд(ы). Различают пять групп команд AVR: условного ветвления, безусловного ветвления, арифметические и логические операции, команды пересылки данных, команды работы с битами. По разнообразию и количеству реализованных инструкций AVR больше похожи на CISC, чем на RISC процессоры. Например, у PIC-контроллеров система команд насчитывает от 33 до 58 различных инструкций, а у MCS51 она составляет 111.

Компания Atmel представляет широкий выбор средств разработки AVR: компиляторы, внутрисхемные эмуляторы, отладчики, программаторы, простейшие отладочные платы-конструкторы.

 

Все AVR имеют Flash-память программ ROM объемом 1K...8К, которая может быть загружена как с помощью обычного программатора, так и посредством SPI интерфейса, и внутреннюю оперативную память SRAM (кроме AT90S1200) объемом 128 ... 512 байт. Число циклов перезаписи ROM - не менее 1000. Два программируемых бита секретности позволяют защитить память программ от несанкционированного считывания. Все AVR имеют также блок энергонезависимой электрически стираемой памяти данных EEPROM объемом 64 ... 512 байт. Этот тип памяти, доступный программе микроконтроллера непосредственно в ходе ее выполнения, удобен для хранения промежуточных данных, различных констант, таблиц перекодировок, калибровочных коэффициентов и т. п. EEPROM может быть загружена извне как через SPI интерфейс, так и с помощью обычного программатора. Число циклов перезаписи - не менее 100000. Памятью программ является внутренняя загружаемая flash память. Доступ к памяти программ производится через одноуровневый буфер.

Внутренний тактовый генератор может запускаться от внешнего источника опорной частоты, от внешнего кварцевого резонатора или от внутренней RC-цепочки. Поскольку все AVR полностью статические, минимальная допустимая частота ничем не ограничена (вплоть до пошагового режима). Максимальная рабочая частота определяется конкретным типом микроконтроллера. Ограничения верхней границы частотного диапазона связаны с технологическими проблемами при производстве микросхем и будут устранены в последующих версиях кристаллов. В настоящее время контроллер AT90S1200 версии "F" может работать на частоте 16 МГц при комнатной температуре, а ограничение 12 МГц действует во всем температурном диапазоне. То же самое относится и к версии "B" контроллера AT90S8515 - при комнатной температуре он может быть "разогнан" до 12 МГц, но гарантированная работа во всем температурном диапазоне определена Atmel как 8 МГц. Температурный диапазон составляет от 0 до 70С для чипов коммерческого стандарта и от –40 до 85С для чипов индустриального стандарта.

Если времязадающим элементом для тактового генератора AVR является внутренняя RC-цепочка, то частота, на которой работает микроконтроллер, фиксирована и составляет 1 МГц. Это значение приближенное и изменяется в зависимости от величины напряжения питания и температуры корпуса. Выбор источника тактовой частоты (внутренний/внешний) программируется, правда только с помощью внешнего программатора.

Периферия микроконтроллера AVR включает: таймеры-счетчики, широтно-импульсные модуляторы, поддержку внешних прерываний, аналоговые компараторы, 10-разрядный 8-канальный АЦП, параллельные порты (от 3 до 48 линий ввода и вывода), интерфейсы UART (асинхронный дуплексный последовательный порт) и SPI, сторожевой таймер, устройство сброса по понижению питания. Все эти качества превращают AVR микроконтроллеры в мощный инструмент для построения современных, высокопроизводительных и экономичных контроллеров различного назначения

Таймер/Счетчик можно использовать как таймер, с внутренним источником импульсов или как счетчик, управляемый внешними счетными импульсами. 8-разрядный таймер/счетчик может получать импульсы тактовой частоты - CK, импульсы с предварительного делителя (CK/8, CK/64, CK/256 или CK/1024), импульсы с внешнего вывода или быть остановлен соответствующими установками управляющего регистра. По истечении заданного времени генерируется прерывание от таймера. Установками соответствующих регистров можно разрешать и запрещать прерывание от таймера.

Некоторые микроконтроллеры AVR имеют дополнительный 8-разрядный таймер. Он имеет режимы сравнения и широтно-импульсного модулятора, но главная его особенность заключается в том, что он может работать в асинхронном от всей системы режиме, используя дополнительный внешний часовой кварц частотой 32,768 кГц, что позволяет вести отсчет реального времени в микропроцессорной системе в астрономических единицах.

Сторожевой таймер предназначен для защиты микроконтроллера от сбоев в процессе работы. Он имеет свой собственный RC-генератор, работающий на частоте 1 МГц. Управляя предварительным делителем сторожевого таймера можно задавать интервал сброса таймера от 16 до 2048 периодов. При истечении заданного интервала на вход процессора подается сигнал сброса, затем отрабатывается обработка прерывания от сторожевого таймера. Как и для основного внутреннего RC-генератора, значение 1 МГц является приближенным и зависит прежде всего от величины напряжения питания микроконтроллера и от температуры.

Порты ввода/вывода AVR имеют число независимых линий "Вход/Выход" от 5 до 32. Каждый разряд любого порта может быть запрограммирован на ввод или на вывод информации. Мощные выходные драйверы обеспечивают типовую токовую нагрузочную способность 20 мА на линию порта (втекающий ток) при максимальном значении 40 мА, что позволяет, например, непосредственно подключать к микроконтроллеру светодиоды и биполярные транзисторы. Общая токовая нагрузка на все линии одного порта не должна превышать 80 мА. Все значения приведены для напряжения питания 5 В.

Для приема и передачи данных в асинхронном последовательном формате AVR-микроконтроллеры содержат универсальный асинхронный приемопередатчик (Universal Asynchronous Receiver and Transmitter - UART). Также этот периферийный узел называют адаптером последовательного канала. Отличительными особенностями его работы являются:

•Наличие программно управляемого тактового генератора, специализированного только для обслуживания UART, обеспечивающего большой набор тактовых частот и возможность передачи данных на высоких частотах даже при низкой системной тактовой частоте;

•Способность работы в дуплексном режиме (одновременная передача и прием данных);

•Возможность передавать как 8-и, так и 9-битные данные;

•Фильтрация помех на входе путем многократного опроса каждого бита;

•Аппаратная фиксация ошибок переполнения и кадрирования (ложный стоп-бит) при приеме данных;

•Формирование трех различных прерываний с индивидуальными адресами векторов прерывания: при завершении передачи, при завершении приема и при освобождении регистра данных передатчика.

Аналоговый компаратор сравнивает входные напряжения на положительном и отрицательном входе. Когда напряжение на положительном входе больше напряжения на отрицательном, устанавливается соответствующий бит регистра ACO (Analog Comparator Output). Выход аналогового компаратора можно включить на прерывание от аналогового компаратора. Пользователь может установить срабатывание прерывание по нарастающему или спадающему фронту, или по переключению.

AVR работают в широком диапазоне питающих напряжений от 2,7В до 6,0 В. Ток потребления в активном режиме зависит от величины напряжения питания и частоты, на которой работает микроконтроллер, и составляет менее 1 мА для 500 кГц,5 ... 6 мА для 5 МГц и 8 ... 9 мА для частоты 12 МГц. AVR также могут быть переведены программным путем в один из трех режимов пониженного энергопотребления.

Первый - режим холостого хода (IDLE), когда прекращает работу только процессор и фиксируется содержимое памяти данных, а внутренний генератор синхросигналов, таймеры, система прерываний и сторожевой таймер продолжают функционировать. Ток потребления здесь не превышает 2,5 мА на частоте 12 МГц.

Второй – стоповый режим (POWER DOWN), когда сохраняется содержимое регистрового файла, но останавливается внутренний генератор синхросигналов и, следовательно останавливаются все функции, пока не поступит сигнал внешнего прерывания или аппаратного сброса. При включенном сторожевом таймере ток потребления в этом режиме составляет около 80 мкА, а при выключенном - менее 1 мкА. (Все вышеприведенные значения справедливы для напряжения питания 5 В).

Третий режим - экономичный (POWER SAVE). В этом режиме продолжает работать только генератор таймера, что обеспечивает сохранность временной базы. Все остальные функции отключены.

Часть микроконтроллеров снабжена полезным периферийным узлом - схемой сброса микроконтроллера при понижении уровня питающего напряжения (Brown-Out Protection). При плавном понижении напряжения питания процессор некоторое время продолжает работать, что может вызвать неверное декодирование и/или выборку команд, что, в свою очередь, может вызвать несанкционированную запись в EEPROM. Детектор понижения напряжения питания (Brown-out reset) при понижении напряжения питания ниже установленного предела выдает на процессор сигнал Reset, останавливая тем самым его работу.

ВверхДомой