МИКРОКОНТРОЛЛЕРЫ И МИКРОПРОЦЕССОРЫ ДЛЯ ВСТРОЕННЫХ СИСТЕМ
Федорцов
А.О., Долинский М.С.
Гомельский государственный
университет им. Ф. Скорины
fedortsov@gsu.by (0232)
57-91-92
ИСТОРИЯ ПОЯВЛЕНИЯ И ОБЩИЕ СВЕДЕНИЯ
С момента возникновения первых компьютеров в 40-50-х годах появилась возможность использовать их потенциал не только для абстрактных математических вычислений, но и для автоматизации управления различными процессами и системами. В электронике возникло новое направление – встроенные контроллеры. Обычно под встроенной системой управления (контроллером) подразумевается процессор со всеми необходимыми для его работы компонентами, по определенной программе реагирующий на некие воздействия со стороны среды функционирования (сигналы с датчиков, таймеров, нажатия на кнопки и пр.) и вырабатывающий ответные управляющие сигналы, поступающие на различные объекты этой среды (индикаторы, динамики, двигатели и пр.).
Как и универсальные компьютеры, встроенные контроллеры пережили не слишком продолжительный, но зато весьма стремительный этап развития и миниатюризации – от многотонных ящиков с ламповой начинкой до небольших плат, легко умещающихся на ладони или в кармане. Постоянно расширялась и сфера их применения. Если первые контроллеры можно было “встроить” разве что в промышленный процесс, то теперь такие устройства применяются повсеместно – от спутников и марсоходов до утюгов и тостеров.
В процессе миниатюризации функциональные блоки, которые в обычных компьютерных системах размещались в отдельных интегральных схемах (процессор, память, порты ввода \ вывода, таймеры, контроллеры прерываний и пр.) стали объединять на одном кристалле. Так появились микроконтроллеры или, как их принято называть в отечественной литературе, однокристальные ЭВМ. Такой подход позволил значительно сократить не только размеры встроенных систем, но также сложность и сроки их разработки, а следовательно и стоимость. Сокращение числа компонентов повлекло за собой повышение надежности готовых устройств. В некоторых случаях для построения полноценной встроенной системы достаточно одной микросхемы – микроконтроллера.
Основным признаком в классификации микроконтроллеров и микропроцессоров для встроенных систем является разрядность. В настоящее время промышленностью выпускаются 4-, 8-, 16- и 32-разрядные микроконтроллеры. Однако встречаются и весьма экзотические варианты. Так MC14500 фирмы Motorola, набор команд которого состоит из 16 инструкций, имеет разрядность 1 бит и способен работать с неограниченным объемом памяти.
Микроконтроллеры можно дифференцировать также по степени универсальности. Выпускаются как системы широкого применения с программируемой памятью, так и узкоспециализированные контроллеры для определенной области, или даже для конкретного устройства, зачастую с уже записанной в чип программой. Однако выпуск таких микроконтроллеров экономически оправдан лишь при крупносерийном или массовом производстве.
В тех встроенных системах, где требуется значительная вычислительная мощность, могут применяться и обычные универсальные микропроцессоры вместе с необходимыми для их работы компонентами. Выпускаются также микроконтроллеры, на базе ядра распространенных универсальных микропроцессоров (Motorola 68EC300, Intel 386EX, IBM PowerPC 403GB).
Далее в этой
статье мы будем делать уклон в
сторону универсальных
микроконтроллеров, пригодных для
решения широкого круга задач.
ОБЗОР РЫНКА МИКРОКОНТРОЛЛЕРОВ
Начиная со времени своего появления, с каждым годом микроконтроллеры занимают все большую долю рынка.
Мировой объем продаж микроконтроллеров (по данным National Semiconductor):
в млн. долларов
1990 | 1991 | 1992 | 1993 | 1994 | 1995 | 1996 | 1997 | 1998 | 1999 | 2000 | |
4-bit |
1393 |
1597 |
1596 |
1698 |
1761 |
1826 |
1849 |
1881 |
1856 |
1816 |
1757 |
8-bit |
2077 |
2615 |
2862 |
3703 |
4689 |
5634 |
6553 |
7529 |
8423 |
9219 |
9715 |
16-bit |
192 |
303 |
340 |
484 |
810 |
1170 |
1628 |
2191 |
2969 |
3678 |
4405 |
в млн. штук
1990 |
1991 |
1992 |
1993 |
1994 |
1995 |
1996 |
1997 |
1998 |
1999 |
2000 |
|
4-bit |
778 |
906 |
979 |
1036 |
1063 |
1110 |
1100 |
1096 |
1064 |
1025 |
970 |
8-bit |
588 |
753 |
843 |
1073 |
1449 |
1803 |
2123 |
2374 |
2556 |
2681 |
2700 |
16-bit |
22 |
38 |
45 |
59 |
106 |
157 |
227 |
313 |
419 |
501 |
558 |
Из данных видно, что большая часть продаж приходится на 8-битные системы, объемы продаж 4-битных систем начинают постепенно снижаться, а рынок 16-битных микроконтроллеров расширяется ускоренными темпами. Эти тенденции будут сохраняться и в ближайшем будущем.
Весьма показательно применение микроконтроллеров в автомобилестроении. Так стоимость электронной начинки среднестатистического легкового автомобиля выросла с $595 в 1990 году до $1574 в 1998 и продолжает расти. Причем этот рост подразумевает в первую очередь расширение функциональных возможностей бортовых систем. Автомобили являются и неплохим полигоном для обкатки новых технологий, предъявляя к бортовой электронике повышенные требования: способность работать экстремальных условиях (противостоять температуре, вибрациям, ударам) и чрезвычайно высокая надежность.
Постоянно растет и доля встроенных систем, применяемых в быту. Так, по данным DataQuest, в среднем североамериканском доме в 1997 году можно было насчитать 35 микроконтроллеров, а в 2000 году их число должно возрасти до 240.
Среди фирм–производителей микроконтроллеров и микропроцессоров для встроенных систем лидерами являются Motorola ($1781), NEC ($1421), Mitsibishi ($945), Hitachi ($899), Intel ($835), Texas Instruments ($807), Philips ($524) и Matsushita ($500) (данные на 1995 год).
ОСОБЕННОСТИ МИКРОКОНТРОЛЛЕРОВ
Технология
Первые микроконтроллеры выпускались по n-MOS и p-MOS технологиям. В настоящее время большинство микроконтроллеров изготавливаются по CMOS технологии. CMOS-микроконтроллеры потребляют значительно меньше энергии, что дает им преимущество в применении в устройствах с батарейным питанием. Кроме того эта технология позволяет делать процессорное ядро статическим, т.е. способным работать в широком диапазоне частот (от 0 до нескольких десятков МГц). Кроме того, такие микроконтроллеры обладают большей устойчивостью к внешним электромагнитным шумовым воздействиям.
Архитектура
Современные микроконтроллеры выпускаются с фон-неймановской и гарвардской типами архитектур. Фон-неймановская архитектура подразумевает выборку инструкций и данных по одной общей шине. В гарвардской для инструкций и данных выделяются отдельные шины, что позволяет распараллелить операции выборки команд и операндов, и повысить за счет этого производительность.
Следует также различать CISC и RISC-микроконтроллеры. Команды RISC-процессоров очень просты и почти всегда выполняются за один такт. Для реализации операции, обрабатываемой CISC-процессором как одна команда, RISC должен выполнить последовательность микрокоманд. Достоинством CISC-микроконтроллеров является сокращенный объем программного кода и экономия усилий программиста, затраченных на его написание. Однако RISC-процессоры производительнее, занимают меньше места на кристалле и потребляют значительно меньше энергии, чем CISC. Поэтому в последнее время появляется все больше типов микроконтроллеров с RISC-архитектурой.
Внутренняя память программ
Одной из характерных особенностей большинства микроконтроллеров является наличие встроенной в кристалл программной памяти. Среди видов памяти наиболее распространенными являются масочная, однократно программируемая, перепрограммируемая (с ультрафиолетовым или электрическим стиранием), флэш-память, а также память на основе ОЗУ с батарейным питанием. Масочная память программируется на заводе-изготовителе в технологическом цикле производства микросхемы и изменению не подлежит. Выпуск микроконтроллеров с масочной памятью оправдан при массовом производстве. Однократно программируемые микроконтроллеры (OTP) применяются в тех случаях, когда нет необходимости часто менять содержимое программы в выпускаемом изделии. Микроконтроллер позволяет пользователю однократно записать необходимую программу. Перепрограммируемая память (EPROM) позволяет при необходимости изменить программу как на этапе проектирования, так и в готовом изделии. В последнее время появляется все больше микроконтроллеров с флэш-памятью, которая рассчитана на большее число циклов перезаписи чем обычная EPROM. Память на ОЗУ с батарейным питанием применяется в приложениях, критичных к скорости доступа.
Часто возникает потребность защитить программу, зашитую в чипе, от несанкционированного доступа. Во многих микроконтроллерах для этой цели предусматривается программирование специальных битов защиты.
Прерывания
Как уже отмечалось выше, в большинстве применений микроконтроллеры по определенной программе реагируют на внешние воздействия. При этом источники воздействия либо периодически опрашиваются микроконтроллером, либо задействуется механизм прерываний. Использование прерываний зачастую позволяет реагировать на события более оперативно и сократить программный код. При поступлении сигнала прерывания контроллер прекращает выполнение программы и, по соответствующему вектору, производит переход на начало обработчика прерывания (если позволяет текущее состояние микроконтроллера). По завершению обработки прерывания происходит возврат к выполнению основной программы. Многие микроконтроллеры имеют специальные регистры для разрешения или запрета как конкретных прерываний, так и всех в целом, а также регистры для задания приоритетов прерываний.
Следует также отметить, что большинство 4-битных микроконтроллеров используют невекторную систему прерываний, а большинство 8-, 16- и 32-битных – векторную арбитражную или приоритетную системы. В невекторной системе существует всего один адрес, по которому происходит переход при получении любого сигнала прерывания. Обычно по этому адресу размещают инструкции последовательного опроса поступивших сигналов с целью определения источника прерывания, причем порядок опроса программист задает на свое усмотрение. Время реакции на прерывание при этом весьма велико и тем больше, чем позже опрашивается конкретный бит. В векторной системе каждому прерыванию соответствует свой вектор, ранжирование прерываний происходит автоматически и, если не предусмотрен механизм приоритетов, отсутствует возможность управлять порядком вызова обработчиков. Достоинство векторной системы – высокая скорость реакции на прерывание.
Встроенная периферия
Весьма характерным отличием микроконтроллеров от универсальных микропроцессоров является наличие у первых расположенной на одном кристалле с процессорным ядром периферии (портов ввода \ вывода, таймеров, последовательных интерфейсов, аналого-цифровых и цифро-аналоговых преобразователей, компараторов и пр.).
Среди прочих периферийных устройств стоит отметить наличие в некоторых контроллерах сторожевого таймера (Watchdog Timer). Сторожевой таймер запускается при сбросе микроконтроллера, либо программным путем. Через определенные промежутки времени программа должна сбрасывать таймер. Если этого не происходит, таймер переполняется, происходит сброс микроконтроллера и программа начинает выполняться заново. Использование сторожевого таймера позволяет избежать паразитного зацикливания программ, что конечно, не устраняет проблемы, но во многих случаях позволяет смягчить последствия.
ISP и JTAG
Наиболее современные микроконтроллеры обладают возможностью внутрисистемного программирования (ISP) и поддерживают интерфейс тестирования и отладки JTAG. ISP позволяет программировать внутреннюю память микроконтроллера прямо на плате проектируемого или уже готового устройства. При помощи JTAG можно осуществлять тестирование внутренних ресурсов, подавать значения на внешние выводы чипа, производить отладку. Все данные передаются через специальный последовательный порт микроконтроллера.
Питание и управление энергопотреблением
Изначально большинство микроконтроллеров рассчитывались на напряжение питания 5В. Однако в последнее время появляется все больше типов с номинальным напряжением 3.3В и менее. Это связано в первую очередь с переходом на новые технологические нормы (меньшие транзисторы должны рассеивать меньшую мощность) , а так же с расширяющейся сферой применения микроконтроллеров в малогабаритных устройствах с батарейным питанием.
Во многих микроконтроллерах предусмотрена возможность управления потребляемой мощностью, путем их перевода программными средствами в холостой режим или режим останова. Холостой режим характеризуется тем, что работа процессорного ядра приостанавливается, в рабочем состоянии остаются лишь генератор синхросигналов и сторожевой таймер (если имеется). Регистры сохраняют свое значение. Выход из этого режима возможен по прерыванию или по сигналу сброса. Также может быть предусмотрен специальный таймер холостого режима, который периодически “пробуждает” микроконтроллер для выполнения активных действий. В этом режиме микроконтроллер потребляет около 30% номинальной мощности. В режиме останова работа внутри чипа полностью прекращена (включая таймеры и счетчики). Выход из режима возможен по сигналу сброса (иногда по сигналу внешнего прерывания). В режиме останова потребляемый ток может достигать 1 мкА и менее.
НАИБОЛЕЕ ПОПУЛЯРНЫЕ МИКРОКОНТРОЛЛЕРЫ
MCS-48 (Intel)
Самый первый микроконтроллер (1976г.). Имеет внутреннюю с ультрафиолетовым стиранием (объемом 1 Кбайт) или внешнюю (объемом до 4 Кбайт) память программ, внутреннюю (64 байта) и внешнюю (до 256 байт) память данных, три порта ввода \ вывода, внутренний таймер \ счетчик. Число прерываний ограничено двумя – внешним и от таймера. Система прерываний – векторная арбитражная. Фирмой Intel выпускалось несколько модификаций (80(C)48, 80(С)35, 8039, 8049), отличавшихся технологией изготовления, наличием или отсутствием внутренней памяти программ, объемом внутреннего ОЗУ, а также допустимой тактовой частотой. Выпускались и отечественные модификации этого процессора (КР1816ВЕ48 \ ВЕ35 \ ВЕ39 \ ВЕ49, КР1830ВЕ48 \ ВЕ35). Когда-то был очень популярен, но в настоящее время активно вытесняется с рынка своим младшим собратом – MCS-51.
MCS-51 (Intel)
Самый популярный микроконтроллер. Семейство MCS-51 является несомненным чемпионом по числу разновидностей и количеству компаний, выпускающих его модификаций. На сегодняшний день существует более 200 модификаций этого семейства, выпускаемых почти 20-ю компаниями. Базовая модель имеет 4 Кбайт внутренней памяти программ, 128 байт внутренней памяти данных. Разрядность адресной шины позволяет обращаться к 64 Кбайт внешней памяти программ и 64 Кбайт памяти данных. К возможностям, позаимствованным от MCS-48, добавились второй таймер, еще одно внешнее прерывание, последовательный интерфейс, четыре банка основных регистров, регистры специальных функций (SFR). Число портов ввода \ вывода достигло четырех. Появилось такие нововведения как битовый процессор, значительно облегчавший операции с битами, а также программируемые биты защиты от несанкционированного доступа к программному коду. Была усовершенствована и система команд – добавились новые инструкции и методы адресации, увеличена глубина стека. В целом MCS-51 получился настолько удачным, что надолго стал “законодателем мод” в мире микроконтроллеров. Как самой Intel, так и изготовителями клонов выпускается множество модификаций на любой вкус, отличающихся объемом внутренней памяти, тактовой частотой, составом внутренней периферии и пр. Среди наиболее известных – 80(С)51, 80(С)31, 80(С)52, 80С52FX, 80C51GB (Intel), AT89C5x, AT89C1051, AT89C2051 (Atmel), DS87C520, DS87C530 (Dallas), 8xC552, 8xC592, 8xC451 (Philips) и др. Выпускались также и отечественные аналоги - КР816ВЕ51 \ ВЕ31, КР1830ВЕ51 \ ВЕ31.
MCS-151, MCS-251 (Intel)
Эти микроконтроллеры были представлены в 1995-1996 годах. Они призваны увеличить производительность систем, основанных на 8051, выпускаются в таких же корпусах и могут быть установлены на платах вместо них без изменений в схемах. Увеличение производительности достигается за счет сокращения времени доступа к внутренней (за два такта считываются две команды, против 12 и одной у MCS-51) и внешней памяти и, соответственно, увеличенной скорости выполнения инструкций. MCS-251 в добавок к этому отличаются модифицированной структурой процессора, увеличенным адресным пространством памяти и расширенной системой команд.
MCS-96 (Intel)
16-битные микроконтроллеры третьего поколения. Отличаются высокой тактовой частотой (до 50 МГц). Позволяют осуществлять операции в форматах “байт” (8 бит), “слово” (16 бит), а некоторые операции – в формате “двойное слово” (32 бит). Обладают усовершенствованной системой команд, позволяющей создавать компактные и эффективные программы, а также разнообразием встроенной периферии (параллельные и последовательные порты, блоки процессоров событий, многоканальные аналого-цифровые преобразователи, широтно-импульсные модуляторы, трехфазные генераторы, генераторы меандра, сторожевые таймеры и пр.). Адресное пространство – 64 Кбайт (до 1 Мбайт у подсемейства NT). В состав семейства MCS-96 входят несколько подсемейств: BH, KB, KC, KR, NT, MC.
80188, 80186, 80386EX (Intel)
Изготовлены на основе ядра популярных микропроцессоров фирмы Intel – 8088, 8086 и 80386 соответственно. Внутрь каждого чипа включили два канала DMA, два таймера \ счетчика, контроллер прерываний и устройство регенерации динамического ОЗУ. Кроме того, появились модификации с последовательными интерфейсами и расширенными возможностями по управлению энергопотреблением. Ну и конечно, программистам стала доступна вся мощь ядра x86. Однако главная изюминка этих микроконтроллеров – совместимость с программным обеспечением для PC, которого разработано великое множество, а также возможность использования стандартных средств разработки для PC – компиляторов, ассемблеров и пр.
6805, 68hc11, 683xx (Motorola)
6805 и 68hc11 - 8-битные микроконтроллеры с фон-неймановской архитектурой, основанные на ядре ранее выпущенного Motorola микропроцессора 6800. В зависимости от модификации могут включать встроенные EPROM или OTP, порты ввода \ вывода, таймеры, аналого-цифровые преобразователи, ШИМ-модуляторы и прочую периферию. 683xx - мощные 32-разрядные микроконтроллеры (на основе процессорного ядра 68020) с развитой периферией.
Z8 (Zilog)
Система команд этого 8-битного микроконтроллера построена аналогично системе команд хорошо известного микропроцессора Z80. Выпускаются с масочной или однократно программируемой памятью программ. Имеют шесть прерываний, защиту от падения напряжения питания. Предусмотрены также автоматический сброс при включении питания, программируемый бит защиты памяти программ, а также режим пониженного электромагнитного излучения. В состав микроконтроллеров входят сторожевой таймер, один или два таймера \ счетчика, два аналоговых компаратора, четыре порта ввода \ вывода.
TMS370 (Texas Instruments)
8-битные микроконтроллеры, в чем-то схожие с MCS-51 (имеют 256 внутренних регистров, аккумулятор А, стек в регистровом адресном пространстве). Содержат также встроенную память программ (масочную, OTP или EEPROM), два таймера \ счетчика, сторожевой таймер, порты ввода \ вывода, последовательный интерфейс и пр. Система команд характеризуется наличием инструкций умножения 8х8 и деления 16/8. Тактовая частота – до 20МГц.
PIC (Microchip)
Популярное семейство RISC-микроконтроллеров. Отдельные шины для инструкций и данные (гарвардская архитектура) допускает одновременную выборку программы и данных, высокая тактовая частота (20 МГц), выполнение инструкций за один такт, небольшой набор инструкций – 33 у 16C5x против 90 у MCS-48, чипы с небольшим числом выводов, широкий диапазон допустимого напряжения питания (3-6 В) и малое энергопотребление – все это делает PIC идеальным для применений, требующих значительной производительности при малых затратах. Производится несколько подсемейств:
PIC16C5x – базовое подсемейство с 12-разрядными командами;
PIC16C6x \ 7x \ 8x, PIC14000 – расширенное подсемейство с 14-разрядными командами
PIC17Cxx – высокопроизводительное семейство с 16-разрядными командами;
PIC12C5xx – мини-чипы (8 выводов) с 12-разрядными командами.
AVR (Atmel)
Еще одно семейство RISC-микроконтроллеров, которое в последнее время претендует на то, чтобы отнять пальму первенства на рынке у PIC. Разрядность команд – 32 бита. AVR имеет достаточно большой для RISC-процессора набор инструкций – 89 и более (в зависимости от модификации). Базовое семейство имеет 32 регистра общего назначения, каждый их которых может быть использован в качестве аккумулятора. Позволяет адресовать до 8 Мбайт памяти программ и до 8 Мбайт памяти данных. Доступна опция внутрисистемного программирования (ISP) – т.е. контроллер можно перепрограммировать, не вынимая из готового изделия. Минимально допустимое напряжение питания – 2.7 В. Мощная периферия - все поpты ввода вывода могут программироваться поразрядно: ввод с Z-состоянием, ввод с pull-up, вывод; аналоговый компаратор; дуплексный UART с собственным генератором; EEPROM данных, 8-разpядный таймер. Начиная с AT90S2313 добавлен 16-pазpядный таймер и внутреннее ОЗУ. В последних моделях появляется АЦП и возможность работы с внешней памятью. Все последующие кристаллы имеют то же самое ядро, но наращиваются объемы памяти программ и данных, количество портов, таймеров, появляется аппаратное умножение/деление и т.д. В целом нужно отметить, что по сравнению с PIC, AVR обладают большей производительностью и более широким набором встроенной периферии, однако энергопотребление у них несколько выше, чем у PIC.
СРЕДСТВА ОТЛАДКИ
Эффективная разработка самых разнообразных устройств на основе микроконтроллеров невозможна без использования мощных средств отладки аппаратного и программного обеспечения.
Все средства отладки можно разделить на два главных класса – программные и программно-аппаратные.
К программным кросс-средствам разработки и отладки следует отнести прежде всего симуляторы. Как правило, симуляторы позволяют выполнять программу пользователя средствами персональных компьютеров. При этом создается программная модель целевого процессора, а иногда и среды функционирования. В качестве примера можно привести многофункциональный отладчик INTER, разработанный в Гомельском государственном университете им. Ф. Скорины. INTER можно настраивать на конкретный процессор при помощи мощного метаязыка описания. Отладчик обладает всеми традиционными и множеством нетрадиционных возможностей (инкрементальный анализ, теневые команды, визуализация).
К недостаткам программных отладочных кросс-средств следует отнести невозможность выполнять программы в реальном времени, а также ограниченные возможности по отладке аппаратного обеспечения.
Среди аппаратно-программных средств стоит выделить внутрисхемные эмуляторы, которые являются наиболее мощными отладочными средствами. Внутрисхемные эмуляторы подменяют целевой микроконтроллер в отлаживаемом устройстве. При этом эмулятор выполняет те же функции, что и замененный им микроконтроллер, но добавляются возможности мониторинга состояния и эффективного управления отлаживаемой системой. Как правило, внутрисхемные эмуляторы позволяют выполнять программу пользователя в режиме реального времени и в пошаговом режиме, задавать точки останова (как, например, ANT-97, разработанный в Гомельском государственном университете им. Ф. Скорины).
Как правило, фирмами-изготовителями для каждого типа микроконтроллеров выпускаются оценочные платы и контроллеры-конструкторы. Эти устройства призваны знакомить пользователей с потенциальными возможностями микроконтроллеров. Часто они снабжаются некоторыми отладочными функциями (точки останова, пошаговый режим). На базе этих плат очень удобно делать макетные образцы различных устройств.
ЛИТЕРАТУРА
1. MCS51 Family of Microcontrollers Architectural Overview. Intel. 1993.
2. 8XC251SA, 8XC251SB, 8XC251SP, 8XC251SQ Embedded Microcontroller User’s Manual. Intel. 1995.
3. 8XC196Kx, 8XC196Jx, 87C196CA Microcontroller Family User’s Manual. Intel. 1995.
4. Intel386 EX Embedded Microprocessor User’s Manual. Intel.1996.
5. AVR Enhanced RISC Microcontrollers Data Book. Atmel. 1996.
6. Домин С.Б., Иванов Е.А., Муренко Л.Л. Средства комплексной отладки микропроцессорных устройств. Микропроцессорные БИС и их применение. М.: Энергоатомиздат. 1988.
Published by NewIT Labs