- МК AVR построены по гарвардской RISC-архитектуре, позволяющей достичь выполнения большинства команд в течение одного цикла тактового генератора. Например, все 32 регистра МК ATmega128 напрямую работают с АЛУ. Это сокращает число команд и уменьшает время выполнения. Для сравнения, в микроконтроллерах PIC /6/ для осуществления сложения один из операндов обязательно должен находиться в регистре-аккумуляторе. Т.е., необходимо сначала занести туда операнд, потом выполнить сложение, затем поместить результат по нужному адресу памяти. Итого 3 команды. МК AVR в этом случае выполняет всего одну.
- Производительность МК ATmega128 одна из самых высоких в своем ряду (16 MIPS при 16 МГц, т.е. имеет производительность 1 MIPS на 1 МГц тактовой частоты). MIPS – million instructions per second, т.е. миллион операций в секунду. Для задачи цифровой обработки сигналов требуется высокая производительность, поэтому мы выбираем высокопроизводительный МК из ряда МК. Стоит отметить, что для разрабатываемого устройства быстродействие 16 MIPS является достаточным.
- Объем памяти программ. ATmega128 имеет 128 кб программной памяти. В данный момент объем программной прошивки устройства составляет порядка 15 кб. В настоящее время 8-битные МК AVR комплектуются программной памятью 1, 2, 4, 8, 16, 32, 64, 128, 256 кб. В итоге, был выбран МК с объемом программной памяти 128 кб, достаточной для возможного расширения алгоритма.
- Наличие встроенного 10-разрядного АЦП со временем преобразования 60-250 мкс.
- Перепрограммируемая до 1000 раз память программ позволяет тестировать нужные функции устройства непосредственно «в железе».
- Система команд МК AVR ориентирована на применение компиляторов языка высокого уровня Си. Соответственно, существует большого числа компиляторов (avrgcc, Code Vision, ICC) языка Си для AVR микроконтроллеров. Применение высокоуровневых компиляторов по сравнению с применением ассемблера получает получить более наглядный, удобный в сопровождении и способный компилироваться всеми современными компиляторами языка Си под IBM PC (что может быть использовано при отладке алгоритма) код. Применение высокоуровневого языка программирования допускает написание ассемблерных вставок при необходимости.
- Наличие обратной совместимости команд (система команд совместима при ее переносе с младшей на старшую модель).
- Отсутствие необходимости переключения страниц памяти (в отличие, например, от МК PIC).
- Наличие аппаратного умножения – необходимая функциональность МК. Как видно из главы, посвященной реализации алгоритмов, в разрабатываемом устройстве операции умножения/деления присутствуют в реализации БПФ, работы с комплексными числами, нормировке и др. операциях.
- Наличие 4 таймеров (2х8 бит, 2х16 бит) также неотъемлемая функциональность МК, т.к. для обслуживания периферийных устройств (индикатор, клавиатура, АЦП, часы реального времени) желательно использовать свой таймер для каждого устройства в целях обеспечения большей точности задания временных интервалов.
- Возможность внутрисхемного программирования, т.е. «перепрошивка» МК в работающей схеме.
- ОЗУ объемом 4 кб достаточна для тестирования основной функциональности устройства, но для реальной работы будет произведено ее наращивание до максимальной планки, допускаемой данным МК – 64 кб.
- 48 портов ввода/вывода полностью охватывают функциональность устройства (см. электрическую принципиальную схему).
Итак, выбор МК ATmega128 для реализации устройства не случаен. Подытоживая, можно сказать, что наличие высокоуровневых средств разработки, присутствие большого числа команд, выполняющихся за один цикл тактового генератора, отсутствие необходимости переключения страниц памяти, предопределили выбор МК AVR, а не МК PIC. А модель ATmega128 была выбрана потому, что обладает встроенным АЦП, имеет 1000 циклов перезаписи памяти программ, является одним из высокопроизводительных МК в своей линейке.
Перед реализацией устройства на базе выбранного МК необходимо удостовериться, что он действительно способен решать поставленную перед ним задачу за поставленное время. Для оценки времени выполнения программы МК применяют тестовые задачи, после чего их время выполнения оценивается по формуле
, (18)
где - число командных циклов программы МК;
- коэффициент умножения МК;
- время выполнения одного командного цикла МК, сек.
Параметры и известны априорно, они определяются режимом работы схемы, а параметр определяется эмпирически для конкретной тестовой задачи при помощи IAR Embedded Workbench /26/. Данная среда разработки имеет средство профилирования программ, где имеется возможность просмотра числа командных циклов МК, соотнесенных к функциям программы.
1. В качестве тестовых задач были взяты наиболее распространенные фрагменты программного кода.
2. Одна функция выполняет сложение двух 8- битных чисел, одна выполняет умножение и одна - деление.
3. Одна функция выполняет сложение двух 16- битных чисел, одна выполняет умножение и одна - деление.
4. Одна функция выполняет сложение двух 32- битных чисел, одна выполняет умножение и одна - деление.
5. Одна функция выполняет сложение двух чисел с плавающей запятой, одна выполняет умножение и одна - деление.
6. Тестовая программа содержит инструкцию коммутатора, имеющего 16 вариантов выбора.
7. Тестовая программа содержит инструкцию коммутатора, имеющего 16 вариантов выбора. В зависимости от 16- битного значения выбирается один из вариантов выбора.
8. Тестовая программа содержит 3 двумерных массива 8- битных значений, один из которых инициализирован. Функция "main()" копирует первый массив во второй, а потом второй - в третий.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.