Организация ядра AVR-контроллеров

Лекция 10. МИКРОПРОЦЕССОРНЫЕ СИСТЕМЫ

НА ОСНОВЕ МИКРОКОНТРОЛЛЕРОВ ATMEL

 

10.1. Общие сведения

10.2. Организация ядра AVR-контроллеров

10.3. Программная модель AVR-микроконтроллеров

10.4.Периферийные устройства AVR

10.5. Исполнительные модули AVR

10.6. Порты ввода/вывода

Общие сведения

 

Фирма Atmel Corp. (США), основанная в 1984 г. и имеющая достаточно широкий спектр деятельности в областях науки и техники, одним из основных направлений считает развитие вычислительных систем управления и контроля.

В настоящий момент Atmel является одной из ведущих корпораций в области микроэлектроники таких направлений, как микроконтроллеры, производство энергонезависимых схем памяти, микросхем программируемой логики.

 

Таблица 3.1

Микроконтроллеры Atmel AVR серия Classic

 

                                     
AT90S1200 KB 64 B     + 1/- +   + +         2,7-6,0 0–12
AT90S2313 KB 128 B 128 B   + 1/1 +     +   +     2,7-6,0 0–10
AT90LS2323 KB 128 B 128 B   + 1/-       +         2,7-6,0 0–4
AT90S2323 KB 128 B 128 B   + 1/-       +         4,0-6,0 0–10
AT90LS2343 KB 128 B 128 B   + 1/-     + +         2,7-6,0 0–4
AT90S2343 KB 128 B 128 B   + 1/-     + +         4,0-6,0 0–10
AT90LS4433 KB 256 B 128 B   + 1/1 +   + + + +   2,7-6,0 0–4
AT90S4433 KB 256 B 128 B   + 1/1 +   + + + +   4,0-6,0 0–8
AT90S8515 KB 512 B 512 B 64К В + 1/1 +     +   + +   2,7-6,0 0–8
AT90C8534 KB 512 B 256 B     1/1               3,3-6,0 0–1,5
AT90LS8535 KB 512 B 512 B   + 2/1 +   +   + + + 2,7-6,0 0–4
AT90S8535 KB 512 B 512 B   + 2/1 +   +   + + + 4,0-6,0 0–8

 

 

Таблица 3.2

Микроконтроллеры Atmel AVR серия ATMega

 

                                             
ATmega8515L 8 KB 512 B 512 B до 64К + +   1/1 +   + + +   + + 2,7–5,5 0–8
ATmega8515 8 KB 512 B 512 B до 64К + +   1/1 +   + + +   + + 4,5–5,5 0–16
ATmega8535L 8 KB 512 B 512 B   + +   2/1 + + + + + + + 2,7–5,5 0–8
ATmega8535 8 KB 512 B 512 B   + +   2/1 + + + + + + + 4,5–5,5 0–8
ATmega8L 8 KB 512 B 1024 B + +   2/1 + 6/8 + + + + + + 2,7–5,5 0–8
ATmega8 8 KB 512 B 1024 B + +   2/1 + 6/8 + + + + + + 4,0–5,5 0–16
ATmega16L 16 KB 512 B 1024 B + + + 2/1 + + + + + + + 2,7–5,5 0–8
ATmega16 16 KB 512 B 1024 B + + + 2/1 + + + + + + + 4,0–5,5 0–16
ATmega161L 16 KB 512 B 1024 B + +   2/1 +     + +   +   + 2,7–5,5 0–4
ATmega161 16 KB 512 B 1024 B + +   2/1 +     + +   +   + 4,0–5,5 0–8
ATmega162V 16 KB 512 B 1024 B до 64 К + + + 2/2 +   + + +   + + 1,8–3,6 0–1
ATmega162U 16 KB 512 B 1024 B до 64 К + + + 2/2 +   + + +   + + 2,4–4,0 0–8
ATmega162L 16 KB 512 B 1024 B до 64 К + + + 2/2 +   + + +   + + 2,7–5,5 0–8
ATmega162 16 KB 512 B 1024 B до 64 К + + + 2/2 +   + + +   + + 4,0–5,5 0–16

 

Окончание табл. 3.2

 

ATmega163L 16 KB 512 B 1024 B + +   2/1 + + + + + + + 2,7–5,5 0–4
ATmega163 16 KB 512 B 1024 B + +   2/1 + + + + + + + 4,0–5,5 0–8
ATmega169L 16 KB 512 B 1袣B   + + + 2/1 + + + +   + + 1,8–3,6 0–4
ATmega169V 16 KB 512 B 1袣B   + + + 2/1 + + + +   + + 2,7–3,6 0–1
ATmega323L 32 KB 1024 B 2048 B + + + 2/1 + + + + + + + 2,7–5,5 0–4
ATmega323L 32 KB 1024 B 2048 B + + + 2/1 + + + + + + + 4,0–5,5 0–8
ATmega32L 32 KB 1024 B 2048 B + + + 2/1 + + + + + + + 2,7–5,5 0–8
ATmega32 32 KB 1024 B 2048 B + + + 2/1 + + + + + + + 4,0–5,5 0–16
ATmega64L 64 KB 2048 B 4096 B до 64 К + + + 2/2 + + + + + + + 2,7–5,5 0–8
ATmega64 64 KB 2048 B 4096 B до 64 К + + + 2/2 + + + + + + + 4,0–5,5 0–16
ATmega103L 128 KB 4096 B 4000 B до 64 К +     2/1 +   + +   +     2,7–3,6 0–4
ATmega103 128 KB 4096 B 4000 B до 64 К +     2/1 +   + +   +     4,0–5,5 0–6
ATmega128L 128 KB 4096 B 4096 B до 64 К + + + 2/2 + + + + + + + 2,7–5,5 0–8
ATmega128 128 KB 4096 B 4096 B до 64 К + + + 2/2 + + + + + + + 4,0–5,5 0–16

 

Таблица 3.3

 

Микроконтроллеры Atmel AVR серия Tiny

 

                                 
ATtiny11L 1 KB         + 1/- +           + +     2.7–5.5 0–2
ATtiny11 1 KB         + 1/- +           + +     4.0–5.5 0–6
ATtiny12 V 1 KB 64 B     + 1/- +           + +     1.8–5.5 0–1
ATtiny12L 1 KB 64 B     + 1/- +           + +     2.7–5.5 0–4
ATtiny12 1 KB 64 B     + 1/- +           + +     4.0–5.5 0–8
ATtiny13L 1 KB 64 B 64 B + 1/- +           + +     2.7–5.5 0–4
ATtiny15L 1 KB 64 B     + 2/- +       + + + 2.7–5.5 1.6
ATtiny26L 2 KB 128 B 128 B + 2/- +   + + + + 2.7–5.5 0–8
ATtiny26 2 KB 128 B 128 B + 2/- +   + + + + 4.5–5.5 0–16
ATtiny28 V 2 KB             1/- +           + +     1.8–5.5 0–1
ATtiny28L 2 KB             1/- +           + +     2.7–5.5 0–4

 

 

Изначально появившиеся микроконтроллеры серии АТ89 были довольно удачной копией Intel MSC51, но впоследствии оказалось, что копия была более чем удачной в основном за счет пониженного энергопотребления и все больше разработчиков стали ориентироваться именно на Atmel.

В научно-исследовательском центре Atmel в Норвегии группой разработчиков (Alf Bogen и Vergard Wollan ) была предложена новая концепция 8-разрядных МК, базирующаяся на RISC-архитектуре, эти идеи легли в основу создания RISC AVR-микроконтроллеров. Результатом разработок стала серия AT90. Контроллеры разрабатывались не только для создания программ на языке низкого, но и высокого уровня. В качестве языка высокого уровня был взят Си, поскольку именно Си является самым широкораспространенным языком высокого уровня для разработки приложений для микроконтроллеров. Результатом проведения специальных научных исследований стало то, что получаемый объектный код для контроллера при трансляции с языка Си практически не обладает избыточностью. Флеш-память микроконтроллеров, созданных по КМОП-технологии, можно программировать посредством ISP, что допускает многократное перезаписывание памяти без каких-либо дополнительных устройств.

Микроконтроллеры AVR являются достаточно мощными, низкопотребляющими и гибкими устройствами, что в совокупности с низкой стоимостью определило их широкое распространение на мировом и российском рынках. В настоящее время AVR-контроллеры используются практически во всех областях производства: от Smart Card для персональных компьютеров до спутниковых навигационных систем.

Различают следующие группы AVR-контроллеров:

Mega AVR (префикс ATmegaXXX); Classic AVR (префикс AT90SXXX);

Tiny AVR (префикс ATtinyXXX); AVR для Smart Cards (префикс AT90SCC).

Mega AVR имеют наибольшие объемы памяти, наибольшее количество выводов и наиболее полный набор периферийных узлов.

Classic AVR – группа, которая содержит микроконтроллеры с различным сочетанием периферийных узлов, имеет разные объемы встроенной памяти и количество выводов.

Tiny AVR – дешевые кристаллы в 8-выводных корпусах, способные работать от источника пониженного напряжения и при этом обладающие такими функционально важными периферийными узлами, как, например, АЦП.

AVR для Smart Cards – группа специализированных кристаллов, предназначенных для работы в составе периферийных и сетевых адаптеров.

В табл. 3.1, табл. 3.2, табл. 3.3 приведены характеристики основных групп МК Atmel AVR.

 

Организация ядра AVR-контроллеров

Улучшенная RISC (enhanced RISC) архитектура AVR-микроконтроллеров (рис. 3.1) объединяет комплекс решений, направленных на повышение быстродействия микропроцессорного ядра AVR. Арифметикологическое устройство (ALU), в котором выполняются все вычислительные операции, имеет доступ к 32 оперативным регистрам, объединенным в регистровый файл. Выборка содержимого регистров, выполнение операции и запись результата обратно в регистровый файл выполняются за один машинный цикл.

Основной идеей всех RISC (Reduced Instruction Set Computer), как известно, является увеличение быстродействия за счет сокращения количества операций обмена с памятью программ. Для этого каждую команду стремятся уместить в одну ячейку памяти. При ограниченной разрядности ячейки памяти это неизбежно приводит к сокращению набора команд микропроцессора.

У AVR-микроконтроллеров в соответствии с этим принципом практически все команды (исключая те, у которых одним из операндов является 16-разрядный адрес) также упакованы в одну ячейку памяти программ. Но сделать это удалось не за счет сокращения количества команд процессора, а путем расширения ячейки памяти программ до 16 разрядов. Такое решение является причиной богатства системы команд AVR по сравнению с другими RISC-микроконтроллерами.

Организация памяти AVR выполнена по схеме гарвардского типа, в которой разделены не только адресные пространства памяти программ и памяти данных, но также и шины доступа к ним.

Вся программная память AVR-микроконтроллеров выполнена по технологии FLASH и размещена на кристалле. Она представляет собой последовательность 16-разрядных ячеек и имеет емкость от 512 слов до 64 Kслов в зависимости от типа кристалла.

 



Во FLASH-память кроме программы могут быть записаны постоянные данные, которые не изменяются во время функционирования микропроцессорной системы. Это различные константы, таблицы знакогенераторов, таблицы линеаризации датчиков и т. п. Достоинством технологии FLASH является высокая степень упаковки, а недостатком – то, что она не позволяет стирать отдельные ячейки. Поэтому всегда выполняется полная очистка всей памяти программ, а для AVR гарантируется, как минимум, 1000 циклов перезаписи FLASH-памяти.

Кроме того, для хранения данных AVR-микроконтроллеры могут иметь, в зависимости от типа кристалла, внутреннюю (от 0 до 4 Kбайт) и внешнюю (от 0 до 64 Кбайт) оперативную SRAM-память и энергонезависимую внутреннюю EEPROM-память (от 0 до 4 Kбайт).

Разделение шин доступа к FLASH-памяти и SRAM-памяти дает возможность иметь шины данных для памяти данных и памяти программ различной разрядности, а также использовать технологию конвейеризации. Конвейеризация заключается в том, что во время исполнения текущей команды программный код следующей уже выбирается из памяти и дешифрируется.

Для сравнения вспомним, что у микроконтроллеров семейства MCS-51 выборка кода команды и ее исполнение осуществляются последовательно, что занимает один машинный цикл, который длится 12 периодов кварцевого резонатора.

В случае использования конвейера приведенную длительность машинного цикла можно сократить. Например, у PIC-микроконтроллеров фирмы Microchip за счет использования конвейера удалось уменьшить длительность машинного цикла до четырех периодов кварцевого резонатора. Длительность же машинного цикла AVR составляет один период кварцевого резонатора. Таким образом, AVR способны обеспечивать заданную производительность при более низкой тактовой частоте. Именно эта особенность архитектуры и позволяет AVR-микроконтроллерам иметь наилучшее соотношение энергопотребление/производительность, так как потребление КМОП микросхем, как известно, определяется их рабочей частотой.

EEPROM-блок электрически стираемой памяти AVR предназначен для хранения энергонезависимых данных, которые могут изменяться непосредственно на объекте. Это калибровочные коэффициенты, различные установки, конфигурационные параметры системы. EEPROM-память имеет меньшую по сравнению с FLASH емкость (до 4 Кбайт), но при этом допускает возможность побайтной перезаписи ячеек, которая может происходить как под управлением внешнего процессора, так и под управлением собственно AVRмикроконтроллера во время его работы по программе.

Программирование энергонезависимых блоков памяти AVR может осуществляться как параллельно, так и последовательно через SPI-интерфейс (Serial Peripheral Interface).

Управление и обмен данными с EEPROM-памятью и со всеми периферийными узлами осуществляется при помощи регистров ввода/вывода, которые имеются в каждом периферийном узле.