ATMEL: 32-разрядные Flash-микроконтроллеры на ядре AVR32

№ 11’2008
PDF версия
В прежние годы параллельно существовали два типа микросхем с микропроцессорным ядром на кристалле — универсальные микроконтроллеры и процессоры цифровой обработки сигналов (DSP). Каждый тип имел те или иные преимущества и использовался для «своих» задач. Если разрабатывалось устройство с функциями сигнальной обработки и управления, приходилось ставить на плату и DSP, и микроконтроллер, каждый со своим генератором, внешней памятью и шинными формирователями. С ростом возможностей технологии разработчики микросхем стали размещать оба микроконтроллера на одном кристалле.

Корпорация ATMEL также приняла участие в реализации этой идеологии. В свое время микросхема AT75C220, содержащая на кристалле контроллер на ядре ARM7 и 16-разрядный OakDSP-контроллер с фиксированной точкой, была передовой разработкой, при том, что на кристалле были размещены и два МАС-интерфейса 10/100 Мбит. Появление таких микросхем сильно упростило жизнь разработчикам печатных плат, но для программиста это, как и раньше, была двухпроцессорная система, для которой нужны две различных среды разработки, два эмулятора и много часов творческой работы по сопряжению двух ядер.

Однако со временем совершенствуется не только технология изготовления кристалла, но и сама архитектура ядра контроллера. Очевидная мысль — совместить в едином наборе команд как управляющие, так и «числодробильные» инструкции — получила несколько лет назад воплощение «в железе» в разработках ведущих мировых производителей. Такой комплексный набор команд — одна из особенностей инновационной архитектуры AVR32, разработанной в норвежском дизайн-центре корпорации ATMEL.

ATMEL выпускает широкий спектр микроконтроллеров. Ранее они строились на основе ядер, разработанных внешними фирмами — Intel и ARM. Со временем корпорация стала применять собственные ядра, причем эти ядра имеют лучшие технические характеристики. На рис. 1 представлены основные семейства микроконтроллеров, выпускаемые корпорацией в настоящее время, по горизонтальной оси они расположены в соответствии с производительностью, а по вертикальнойв соответствии с энергопотреблением.

 

Рис. 1. Микроконтроллеры корпорации ATMEL

На рис. 1 видно, что микросхемы на ядре С51 — явные «аутсайдеры», так как при невысокой производительности имеют достаточно большую потребляемую мощность, и их не следует применять в новых разработках. Напротив, микросхемы на ядре AVR32 имеют очень хорошее соотношение производительность/энергопотребление, что, естественно, вызывает повышенный интерес у разработчиков. Особенность ядра AVR32—выполнение за такт больше чем одной команды. Максимальная производительность микросхемы AP7200 на частоте 250 МГц составляет 360 DMIPS.

Архитектура AVR32 лежит в основе двух семейств — AVR32AP7 (суффикс AP означает “Application Processor”) и AVR32UC3 (суффикс UC означает “microcontroller”). Первое семейство — это мощные микросхемы, оптимизированные для работы под операционной системой Linux, и их рассмотрение выходит за рамки данной статьи.

В свою очередь, семейство AVR32UC3 также разделено на серии — A, B, C и L, каждая из которых имеет несколько цифровых индексов. Сводная диаграмма представителей семейства UC3 представлена на рис. 2.

 

Рис. 2. Состав семейства контроллеров UC3

Снижение потребляемой мощности достигнуто применением ряда мер. Напряжение питания ядра составляет 1,8 В, питание выходных каскадов — 3,3 В. На кристалле есть преобразователь, который формирует напряжение 1,8 В. Входы микросхемы могут работать с уровнями сигналов до 5 В. Для тактирования ядра и периферийных модулей могут использоваться несколько генераторов. В дополнение к внутренним RC-генераторам к микросхеме одновременно можно подключить кварцевый резонатор с частотой от 450 кГц до 16 МГц и «часовой резонатор» с частотой 32 768 Гц. Для обеспечения одновременной работы ядра на оптимальной частоте (она может динамически изменяться в реальном времени) и интерфейса USB, которому требуется стабильная частота 48 МГц, используют два модуля PLL. Периферийные модули, не активные в текущий момент времени, отключаются. Типовое потребление ядра UC3 при работе на частоте 60 МГц составляет в активном режиме 23 мА, или 1,3 мВт/МГц, что является рекордом для микроконтроллеров этого класса.

Архитектура AVR32 базируется на расширенном наборе RISC-команд. Команды могут иметь длину 16 или 32 бита и следовать общим потоком. В отличие от архитектуры ARM, нет необходимости переключаться между двумя режимами. Большинство команд выбирается, декодируется и выполняется за один тактовый цикл. Все команды распознаются непосредственно в конвейере.

Ядро AVR32UC3 представляет собой усеченную версию ядра AVR32AP7, оптимизированную по энергопотреблению. Так же, как и в старшем ядре, здесь есть конвейер команд, но его глубина уменьшена с 7 до 3 ступеней. Конвейер AVR32UC3 имеет 3 стадии: IF (Instruction Fetch) — выборка команды, ID (Instruction Decode) — декодирование команды и EX (Instruction Execute) — выполнение команды. Структурная схема ядра AVR32 UC3 приведена на рис. 3.

 

Рис. 3. Структурная схема ядра контроллеров AVR32UC3

В соответствии со статистическим анализом типичной программы, в среднем около 30% процессорного времени уходит на выполнение команд чтения/записи. Архитектура AVR32 уменьшает число требуемых циклов для этих команд, совмещая их с арифметическими операциями над указателем, снижая таким образом время доступа к данным в таблицах, структурах и произвольно расположенных в памяти данных, которые потребуются в ближайших последующих циклах.

В микроконтроллерах используется Flash-память с низким потреблением, поэтому она имеет время доступа 30 нс. Таким образом, при работе ядра на частоте выше 33 МГц нужно при чтении памяти добавлять такт ожидания (wait state). Для минимизации времени ожидания программа размещается в двух 32-разрядных банках Flash-памяти, в каждом из которых хранятся соответственно четные и нечетные слова. Если происходит последовательная выборка команд или констант из памяти, такт ожидания добавлять не требуется. При выполнении реальной программы скорость чтения памяти снижается на 10%. Таким образом, при работе ядра на частоте до 33 МГц удельная производительность составляет 1,49 DMIPS, а в диапазоне частот 33–66 МГц снижается до 1,38 DMIPS. Содержимое Flash-памяти надежно защищено от несанкционированного копирования установкой lock-бита, который можно снять только командой стирания микросхемы, причем сначала происходит собственно стирание, а только затем сброс lock-бита. Число циклов запись/стирание — не менее ста тысяч. По аналогии с 8-разрядными AVR-контроллерами здесь также есть набор fuse-битов, отвечающих за активизацию и настройку порога срабатывания модуля BOD (Brown Out Detector — детектор провалов питания). Память может быть загружена скоростным программатором или через JTAG-интерфейс при помощи эмулятора ATJTAG ICE2. Также предусмотрен режим загрузки через интерфейс USB при помощи предварительно загруженной программы USB-bootloader. Для операций программирования/стирания Flash-памяти и fuse-битов на кристалле есть специальный модуль Flash-controller.

Высокая удельная вычислительная мощность достигается наличием конвейера с обратной связью и параллельной работой трех вычислительных блоков: умножителя (MUL), арифметическо-логического устройства (ALU) и быстродействующего блока работы с памятью (LS). Механизм предсказания ветвления позволяет избегать перезагрузки конвейера при выполнении операций ветвления. Совместно с высокой плотностью кода это дает возможность снизить интенсивность обращений к памяти и производить переходы без потери циклов.

Команды обращения к памяти могут работать с данными размером 8, 16, 32 и 64 бита. Архитектура AVR32 аппаратно поддержива- ет операции множественного доступа к данным, что позволяет увеличить скорость работы программы до 4 раз. Система команд в архитектуре AVR32 содержит более 200 инструкций, причем DSP-инструкции выпол- няются в одном потоке с «контроллерными» инструкциями, без потери тактов на переключение.

Краткие сравнительные характеристики системы команд нескольких 32-разрядных ядер приведены в таблице 1.

 

Таблица 1. Сравнение системы команд 32$разрядных ядер

Ядро AVR32 UC ARM7-TDMI ARM9E Cortex-M3
Архитектура Гарвард Фон$Нейман Гарвард Гарвард
Конвейер 3-stage pipeline 3-stage pipeline 5-stage pipeline 3-stage pipeline
Производительность 1,4 MIPS/МГц <0,9 MIPS/МГц 1,1 MIPS/МГц 1,25 MIPS/МГц
Единый набор команд ×
ARM/Thumb
×
ARM/Thumb
Доступ к SRAM за 1 такт × ×
Pipeline inter$lock
×
burst only
Команда деления × ×
Фракциональное умножение
с накоплением (1 такт)
× ×
2–4 cycles, no fractional
×
2 cycles, no fractional
DSP Saturation × ×
Команды работы с битами × ×
Побитовая команда
чтение–модификация–запись
× ×
swap only
Вход в прерывание (max) 16 cycles 8 reg. saved 29 cycles 8 reg. saved 24 cycles 8 reg. saved 12 cycles 8r eg. saved

При анализе таблицы 1 становится ясно, что из популярных ядер наиболее близким по параметрам к AVR32 является ядро Cortex-M3. Интересно, что по результатам сравнительного тестирования программных реализаций алгоритмов цифровой фильтрации для AVR32 и Cortex-M3 (которое не имеет DSP-инструкций) программа для AVR32 дает 10-кратный выигрыш по времени исполнения при использовании БИХ-фильтра и 11-кратный выигрыш при КИХ-фильтре.

 

Рис. 4. Структурная схема контроллеров AT32UC3A

Инновации в архитектуре AVR32 относятся не только к ядру, но и к построению всего кристалла. На рис. 4 приведена структурная схема микросхемы AT32UC3A. На кристалле размещена обширная периферия. Ядро связано с периферийными модулями системой внутренних 32-разрядных шин. В отличие от шинной организации, применяемой, например, в контроллерах AT91SAM7/SAM9, здесь использовано несколько шинных структур:

  • высокоскоростная шинная матрица;
  • периферийная шина А, связь с периферийными модулями;
  • периферийная шина В, конфигурационная шина;
  • внешняя параллельная шина (у корпусов QFP144).

Периферийная шина А может работать на пониженной частоте.

В «базовой комплектации» контроллеры AT32UC3A имеют на кристалле порт USB 2.0 Full Speed (12 Mbps) с поддержкой режима On-The-Go, OTG, обеспечивающий работу контроллера в режиме Host, модуль Ethernet MAC 10/100 Мбит. Из стандартных микроконтроллерных интерфейсов — несколько портов USART, интерфейс SPI и интерфейс SSC с возможностью работы в режиме I2S. Максимальная частота работы этих интерфейсов ограничивается быстродействием выходных ключей контроллера и составляет 33 МГц. Интерфейс TWI с эмуляцией интерфейса I2C может работать на частотах до 400 кГц.

Фирменная черта микроконтроллеров ATMEL — хорошо продуманная технология обмена данными между ядром и портами ввода/вывода. Встроенные приложения должны иметь возможность взаимодействия как с внешними устройствами, так и с ядром, и предоставлять программисту максимальные возможности управления этими операциями. Необходимо также обеспечить бесшовную и непрерывную передачу данных между памятью и периферийными устройствами без остановок на переинициализацию счетчика транзакций. Это особенно актуально, если нужно производить передачу потоков данных одновременно по нескольким каналам. Таким образом, в ряде задач на первое место выходит подсистема обслуживания процесса обмена данными между внешними устройствами и внутренней памятью контроллера — иными словами, модуль прямого доступа к памяти. В AVR32UC3 скоростным обменом данными занимается многоканальный периферийный контроллер каналов прямого доступа к памяти (PDC — Peripheral DMA Controller), напрямую осуществляющий обмен данными между периферийными устройствами, внутренними регистрами контроллера и внешней памятью.

Основная часть периферийных модулей AT32UC3A имеет два выделенных канала PDC, для приема и передачи данных соответственно. Пользовательский интерфейс канала периферийного контроллера PDC встроен в каждый периферийный модуль и содержит 32-битный регистр-указатель адреса, 16-битный регистр-счетчик пересылок, 32-битный регистр для указателя следующего адреса памяти и 16-битный регистр-счетчик для следующих пересылок. Периферийные модули переключают потоки данных PDC, используя сигналы приема-передачи. По окончании пересылки первого программного блока данных соответствующий периферийный модуль генерирует прерывание окончания пересылки. Автоматически начинается пересылка второго блока данных, а обработка данных первого блока может выполняться параллельно процессором, без медленных прерываний в режиме реального времени, замедляющих обновление регистров-указателей в процессоре, при поддержке высокоскоростной пересылки данных в периферийный модуль. PDC имеет выделенные регистры состояния, указывающие для каждого канала возможность или невозможность пересылки. В любой момент можно считать из памяти адрес размещения очередной пересылки и количество оставшихся пересылок. В таблице 2 показана степень загрузки ядра при передаче данных через интерфейс SPI. Из таблицы видно, что максимальная скорость работы этого интерфейса без использования контроллера DMA не превышает 4 Мбит/с, а с включенным DMA-контроллером, даже на скорости обмена 33 МГц, загрузка процессора составляет менее 15%.

 

Таблица 2. Загрузка ядра процессора

Скорость
передачи
Peripheral DMA
включен отключен
0 кбит/с 0,00% 0,00%
400 кбит/с 0,40% 17,70%
1,2 Мбит/с 1,20% 53,40%
2 Мбит/с 2,20% 89,90%
4 Мбит/с 4,40% N/A
33 Мбит/с 14,70% N/A

Микроконтроллер AT32UC3A содержит расширенный контроллер прерываний, имеющий следующие характеристики:

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

Внешним прерыванием можно перевести микросхему из ждущего режима в активный.

На кристалле есть 8-канальный 10-разрядный АЦП со временем преобразования 384 kSPS для 10-разрядного режима и 533 kSPS для 8-разрядного режима. На кристалле также размещен двухканальный 16-разрядный модуль ЦАП (ABDAC — Audio Bitstream DAC), к выходу которого можно подключить аудиоусилитель класса D.

Контроллер содержит набор таймеров, работающих в разных режимах, и многоканальный ШИМ-контроллер.

В настоящее время выпускаются контроллеры AVR32UC3 подсемейств A и B, их краткие характеристики приведены в таблице 3.

 

Таблица 3. Краткие характеристики контроллеров UC3A и UC3B

  UC3A0 UC3A1 UC3B0 UC3B1
Частота ядра, МГц 66 60
Напряжение
питания, В
3,3 3,3
Flash, кбайт 512/256/128 256/128/64
RAM, кбайт 64/64/32 32/16/16
Число шин 6 5
Число каналов DMA 15 9
Интерфейс EBI Есть Нет Нет
Ethernet MAC Есть Нет
Интерфейс USB Device & Host
(OTG)
Device & Host (OTG)
Число таймеров 3 3
Число каналов PWM 6+1 6+1
Интерфейс USART 4 3 2
Интерфейс SPI 2 1
Интерфейс TWI 1 1
Интерфейс SSC 1 1 Нет
Число каналов ADC 8 (10-бит) 8 (10-бит) 6 (10$бит)
Тип корпуса QFP144 QFP100 QFP/QFN 64 QFP/QFN 48
Выводы (ток 16 мА) Нет Нет 4×16 мА
Число линий в/выв 109 69 44 28

Далее рассмотрим новые серии AVR32UC3, которые будут выпущены в 2009 году. Следует отметить, что представленная информация — предварительная, поэтому возможны изменения.

Контроллеры AT32UC3A3 предназначены для высокоскоростных коммуникаций, поэтому в них модуль 100 Мбит MAC заменен на контроллер High Speed USB, 480 Mbps, поддерживающий режимы работы Host и Device. Из интересных дополнений можно отметить контроллер MMC новой версии, работающий практически со всеми типами современных SD-карт, включая SDHC.

На рис. 5 представлена блок-схема AVR32UC3A3.

 

Рис. 5. Блок-схема контроллера AT32UC3A3

Контроллеры AT32UC3C отличаются расширенным диапазоном напряжений питания: они могут быть непосредственно подключены к источнику питания 5 В. Другая особенность — применение периферийных модулей, первоначально отработанных на микроконтроллерах ATxmega:

  • 8-канальный 12-разрядный АЦП, скорость преобразования 1,5 Mbps;
  • двухканальный 12-разрядный ЦАП, скорость преобразования 1 Msps;
  • 4-канальный компаратор.

Также на кристалле AT32UC3C0 будет двухканальный CAN-контроллер.

На рис. 6 представлена блок-схема AVR32UC3C0.

 

Рис. 6. Блок$схема контроллера AT32UC3C0

Наконец, серия AT32UC3L0 — это микросхемы в малогабаритных 48-выводных корпусах, имеющих еще меньшее энергопотребление, типовое значение менее 1 мВт/МГц. Особенности этой серии — многоканальный ШИМ-контроллер, работа от единственного источника питания напряжением 1,8 В, а так же модуль PLL новой версии со сверхшироким входным частотным диапазоном. Блоксхема контроллера AT32UC3L0 представлена на рис. 7.

 

Рис. 7. Блок$схема контроллера AT32UC3L0

Разработку и отладку программного обеспечения можно вести с использованием коммерческого пакета фирмы IAR “IAR Embedded Workbench for Atmel AVR32”, который можно заказать у европейского дистрибьютора IAR— компании INELTEK GmbH.

Кроме того, для всех микроконтроллеров AVR32 корпорация ATMEL предлагает единую среду разработки AVR32 Studio. Эта бесплатная среда построена на базе пакета Eclipse и использует компилятор GCC. Несомненным удобством AVR32 Studio является то, что она есть в двух вариантах, для работы под Windows и под Linux, что способствует расширению ее применения. В дополнение к AVR32 Studio выпущен комплект стандартных программ для создания приложений—AVR32 GNU Toolchain. Загрузить оба дистрибутива можно с сайта http://www.atmel.com/ dyn/products/tools.asp?family_id=682#801.

На рис. 8 представлено рабочее окно AVR32 Studio.

 

Рис. 8. Рабочее окно AVR32 Studio

В состав пакета AVR32 Studio входит комплект драйверов и библиотек UC3 Software framework, который включает в себя следующее:

  • драйверы для каждого периферийного модуля AVR32 UC3;
  • программные библиотеки, оптимизированные для AVR32;
  • аппаратные драйверы;
  • демоприложения, которые используют все библиотеки;
  • исходные коды программ для приложений реального времени;
  • готовые проекты, совместимые с GNU GCC и IAR Embedded Workbench;
  • пользовательскую документацию, включающую примеры и обучающие руковод- ства.

Разработанные примеры могут быть сразу запущены на отладочных платах корпорации ATMEL и легко перенесены на другие аппаратные платформы.

Для более быстрого освоения достаточно сложных микроконтроллеров ATMEL предлагает серию отладочных плат. Прежде всего, это отладочный комплект ATSTK600, который приходит на смену комплекту ATSTK500. Новый комплект подходит для всех типов микроконтроллеров — ATtiny, ATmega, ATxmega, AT32UC3. Цена такой универсальности — достаточно громоздкая конструкция, состоящая, в общем случае, из основной и переходной плат и собственно платы с установленным микроконтроллером. На рис. 9 представлен базовый отладочный комплект ATSTK600.

 

Рис. 9. Базовый отладочный комплект ATSTK600

Также ATMEL предлагает специализированные платы ATEVK1100 и ATEVK1101, построенные на контроллерах AT32UC3A0 и AT32UC3B0 соответственно. Для новых микросхем готовятся к выпуску платы ATEVK1104 и ATEVK1105.

 

Литература

  1. Технические описания: www.atmel.com/products/avr32/
  2. Техническое руководство по архитектуре ядра AVR32UC: http://atmel.com/dyn/products/ datasheets.asp?family_id=682
  3. Справочная система из состава пакета AVR32 Studio: http://atmel.com/dyn/products/ tools.asp?family_id=682
  4. Описание Си-компилятора фирмы IAR: www.iar.com
  5. Материалы европейского дистрибьюторского семинара, октябрь 2008 года. www.ineltek.com/ru
  6. Королев Н., Шабынин А. Архитектура AVR: развитие вширь и вглубь. Часть 1 // Компоненты и технологии. 2007. № 2.
  7. Королев Н., Шабынин А. Архитектура AVR: развитие вширь и вглубь. Часть 2 // Компоненты и технологии. 2007. № 4.
  8. Редькин П. П. Микроконтроллеры AVR32 семейства AT32UC3: руководство пользователя. М.: Техносфера, 2008.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *