Выпуском микроконтроллеров (МК) занимаются многие, если не все, известные фирмы. Причем, в отличие от стандартных продуктов, таких как операционные усилители или стабилизаторы напряжения, МК разных фирм редко совместимы между собой. Большинство из них имеют различные системы команд. Тем не менее, вполне реально разобраться в основах этого популярного класса микросхем.
Два слова о самом понятии <микроконтроллер>. Исторически чуть раньше на свет появились микропроцессоры (МП), суть которых заключается в том, что они, в отличие от жесткой логики, способны выполнять самые разнообразные функции, в зависимости от подаваемой последовательности команд. Такая осмысленная последовательность называется программой и хранится в памяти. Таким образом, для различных приложений могут использоваться совершенно одинаковые МП и микросхемы памяти. Разницу будет составлять только текст конкретной программы. Это гораздо лучше, чем разрабатывать новые микросхемы под каждую возникающую задачу, особенно с учетом зависимости цены микросхем от их тиража. Однако, при практической реализации, только этих двух микросхем будет недостаточно. Как минимум, понадобятся тактовый генератор, оперативная память (ОЗУ), шинные устройства, устройства ввода/вывода (УВВ) для связи с внешним миром. Первое время все это выпускалось в виде отдельных микросхем (вспомните 580 серию). Однако, одновременно с развитием технологии и увеличением степени интеграции, появилась возможность разместить многое из вышеназванного непосредственно на одном кристалле. Так появились первые МК, например, 8051.
В дальнейшем, МП пошли в своем развитии иным путем, нежели управление какими либо устройствами, оставив эту нишу для МК. Путь развития МП хорошо известен на примере МП фирмы Intel: 8088, 80286, 80386, 80486, Pentium и т.д. Это центральные процессоры электронно-вычислительных машин. Их вычислительные возможности слишком избыточны для подавляющего большинства практических задач по применению в электронных устройствах. Плюс высокая цена, плюс большое количество требуемой периферии.
Другое дело - микроконтроллеры. Выпускаемый сегодня ассортимент МК настолько велик, что позволяет выбрать подходящий МК для любой задачи: от электронной игрушки до цифрового фотоаппарата, от брелока автосигнализации до сложных телекоммуникационных изделий.
Два слова о самом понятии <микроконтроллер>. Исторически чуть раньше на свет появились микропроцессоры (МП), суть которых заключается в том, что они, в отличие от жесткой логики, способны выполнять самые разнообразные функции, в зависимости от подаваемой последовательности команд. Такая осмысленная последовательность называется программой и хранится в памяти. Таким образом, для различных приложений могут использоваться совершенно одинаковые МП и микросхемы памяти. Разницу будет составлять только текст конкретной программы. Это гораздо лучше, чем разрабатывать новые микросхемы под каждую возникающую задачу, особенно с учетом зависимости цены микросхем от их тиража. Однако, при практической реализации, только этих двух микросхем будет недостаточно. Как минимум, понадобятся тактовый генератор, оперативная память (ОЗУ), шинные устройства, устройства ввода/вывода (УВВ) для связи с внешним миром. Первое время все это выпускалось в виде отдельных микросхем (вспомните 580 серию). Однако, одновременно с развитием технологии и увеличением степени интеграции, появилась возможность разместить многое из вышеназванного непосредственно на одном кристалле. Так появились первые МК, например, 8051.
В дальнейшем, МП пошли в своем развитии иным путем, нежели управление какими либо устройствами, оставив эту нишу для МК. Путь развития МП хорошо известен на примере МП фирмы Intel: 8088, 80286, 80386, 80486, Pentium и т.д. Это центральные процессоры электронно-вычислительных машин. Их вычислительные возможности слишком избыточны для подавляющего большинства практических задач по применению в электронных устройствах. Плюс высокая цена, плюс большое количество требуемой периферии.
Другое дело - микроконтроллеры. Выпускаемый сегодня ассортимент МК настолько велик, что позволяет выбрать подходящий МК для любой задачи: от электронной игрушки до цифрового фотоаппарата, от брелока автосигнализации до сложных телекоммуникационных изделий.
КРИТЕРИИ СРАВНЕНИЯ ТИПОВ МК РАЗЛИЧНЫХ ФИРМ
Разрядность
Это способность выполнить за один прием операцию над числом длиной «N». По сути, разрядность МК совпадает с разрядностью его арифметически-логического устройства (АЛУ). Если, например, АЛУ имеет разрядность «8», то над двумя числами такой длины любая допустимая операция будет произведена одной командой, вероятнее всего, за один машинный цикл. А над 16-разрядными числами в таком МК придется производить уже целую цепочку операций, включая пересылки, сохранение промежуточного результата и т.д. Таким образом, производительность 16-разрядного МК превышает производительность 8-разрядного не в два, а в значительно большее число раз при прочих равных условиях.
Потребляемая мощность
С окончательным переходом на КМОП технологию, вопрос уменьшения потребляемой мощности связан только с уменьшением тактовой частоты и напряжения питания. Однако, уменьшение тактовой частоты влечет за собой снижение производительности МК. Наиболее разумно выглядит решение о выпуске различных версий МК для различных применений. Так в AVR серии фирмы ATMEL выпускаются и стандартные (90S) и мало потребляющие (90LS) версии с пониженными тактовыми частотами. У фирмы Microchip это 16C и 16LC версии, например. Кроме этого, практически все МК имеют возможность программного управления режимами энергопотребления. Их может быть более чем один. У 8051 это Idle и Power Down, например. В зависимости от смысла выполняемой программы, МК может находиться в <спящем> состоянии 90 и более процентов времени (автомобильный брелок). В таких случаях, соответствующими командами МК переводится в один из режимов, когда его потребление уменьшается в десятки раз. Существуют серии МК изначально ориентированные на сверхмалое потребление и батарейное питание, например, MSP430 фирмы Texas Instruments.
Объемы и типы встроенной памяти
В общем случае, МК обязан иметь постоянную память для хранения программы и оперативную для хранения промежуточных результатов работы. Однако, в некоторых случаях, постоянной памяти на кристалле может и не оказаться. Тогда подразумевается ее внешнее подключение. Это делается для удешевления кристалла МК и придания ему большей универсальности. Но, такое включение неминуемо ведет к уменьшению быстродействия, так как обращение к внешней памяти происходит несколько дольше, чем к внутренней. Подавляющее большинство МК все-таки имеет встроенную память для хранения программ. Если вопрос с ее объемом достаточно ясен: чем больше, тем лучше, но дороже, то с типами памяти возможны варианты. Простейший вариант - однократно программируемая пользователем память (PROM), если не считать, что по заказу МК может быть запрограммирован прямо при изготовлении на заводе (ROM). Такая память дешева, но не предполагает в дальнейшем коррекции ее содержимого и поэтому годится для налаженного серийного производства. Для отладки же предпочтительнее иметь память с возможностью перепрограммирования. Возможны два варианта: ультрафиолетовое (UV) и электрическое стирание (Flash). Микросхемы с УФ стиранием появились значительно раньше более новых Flash типа, однако до сих пор используются в отладочных кристаллах «JW» фирмы Microchip, например. Оперативная память начинается с регистров общего назначения, которые иногда называют сверхоперативной памятью. Однако их число всегда ограничено. Далее, обычно имеется 128 - 512 байт ОЗУ общего назначения. Недостающий объем может быть восполнен подключением внешней, например, недорогой статической памяти значительного объема. Необходимо только помнить об ограничениях МК по способности адресовать большие объемы памяти. В последнее время, на кристаллах МК все чаще помещают EEPROM память сравнительно небольшого объема. В данном случае, ее можно рассматривать как энергонезависимое ОЗУ, что очень удобно для хранения оперативных настроек, например. После выключения/включения МК содержимое этих ячеек не изменяется, в отличие от обычного ОЗУ.
Тактовая частота
Непосредственно и прямо пропорционально влияет на скорость работы МК. Однако, это еще не последняя инстанция, так как в зависимости от архитектурных особенностей, разные МК могут обеспечивать различную производительность при одинаковой тактовой частоте. Более объективным является показатель MIPS - количество миллионов инструкций, выполняемых в секунду. Дело в том, что в различных МК одна и та же инструкция может выполняться за один, два, четыре и более тактов тактовой частоты. Например, в 8051 их требуется целых двенадцать! Только в первом случае каждый мегагерц тактовой частоты дает ровно один MIPS. Для 8051 одному MIPS соответствует 12 МГц.
Состав периферийных устройств
Набор устройств ввода/вывода, которые может содержать МК, постоянно расширяется и если раньше некоторые из них, например АЦП, были весьма редки, то сейчас практически становятся стандартом в комплектации. Прежде всего, необходимо разграничить между собой устройства <для внутреннего потребления> - те, которые предназначены для обеспечения производительной и надежной работы самого МК, и собственно УВВ, которые предназначены для связи с внешним миром в смысле ввода исходной и выдачи обработанной информации. К первым относятся как известные, типа встроенного аппаратного умножителя, так и такие сравнительно новые устройства, такие как схема сторожевого (Watchdog) таймера и схема обнаружения провалов в питании. Они выпускаются и во внешнем исполнении, но современный МК, как правило, должен содержать их на кристалле. Принцип работы сторожевого таймера довольно прост. Любые программы, выполняемые МК, по определению циклические. Ничего страшного не будет, если периодически принудительно возвращаться к определенной (стартовой) точке программы. Зато в случае ее сбоя или зависания, период неадекватной работы МК не превысит периода, заданного сторожевым таймером. Контроль напряжения питания, по сути, обычный супервизор питания, построенный на компараторах. При выходе напряжения за установленные пределы осуществляется генерация сигнала «reset» во избежание непредсказуемых последствий. К этой же группе можно отнести и схемы обработки прерываний, которые, как известно, могут быть внутренними и внешними. Как правило, оговаривается число внутренних прерываний, а количество внешних равно числу соответствующих выводов МК. Собственно УВВ известны еще со времен вышеупомянутой 580-й серии. Это параллельные и последовательные порты, таймеры-счетчики событий, устройства доступа к памяти. Вместо параллельных портов, как таковых, внешние линии МК сейчас программируются индивидуально. Любой из них может работать как на ввод, так и на выдачу сигналов. Разница только в количестве таких универсальных линий, что, в свою очередь, определяется размерами и типом корпуса. Многие МК внутри одного семейства различаются только этим. Универсального последовательного порта USART, как правило, вполне достаточно одного, зато дополнительно МК могут быть оборудованы интерфейсами типа I2C, Microwire, SPI. Таймеры, благодаря универсальности их применения составляют неотъемлемую часть любого МК. Они могут быть 8-ми или 16-разрядными в количестве от одного до шести и более штук. Что касается доступа к памяти, то в данном случае речь идет о, так называемом, внутрисхемном программировании (ISP). Это позволяет вносить текст программы во внутреннюю память МК уже после установки его на плату. Также зачастую допускается перепрограммирование Flash памяти МК без его демонтажа, более того, по последовательному двухпроводному интерфейсу. Далее, МК оснащаются АЦП и ЦАПами различной разрядности. АЦП, как правило, имеют несколько входов, переключаемых с помощью мультиплексора. Нередко встречаются встроенные модули ШИМ (PWM) регулирования, что полезно для управления мощными нагрузками. Специализированные МК могут содержать на кристалле вообще все, что угодно, от драйверов LCD индикатора до инструментальных усилителей, компараторов, источников опорного напряжения и т.д.
Архитектурные особенности
Важнейшим и принципиальным различием МК является их принадлежность к CISC либо RISC архитектуре. Первая - классическая, Принстонская архитектура предполагает мощный набор одно, двух и трех байтовых команд, которые передаются, наряду с прочими данными, по общей шине данных. Выполнение одной команды, таким образом, растягивается на несколько машинных циклов, зато в итоге мы получаем довольно заметный результат. Идеология RISC (аббревиатура от <сокращенная система команд>), основана на идее резкого уменьшения числа команд с тем, чтобы любая из них могла выполняться за минимальное число тактов. У базового семейства МК Microchip, например, их всего 33. Одна сложная команда заменяется последовательностью нескольких простых, но быстро выполняемых. Однако главный выигрыш заключается в использовании Гарвардской архитектуры с отдельной шиной данных для памяти программ. Во-первых, появляется возможность одновременно считывать следующую команду из памяти по своей шине и выполнять предыдущую, занимая, если необходимо, общую шину данных. Во-вторых, разрядность шины данных программ может быть какой угодно: 10, 12, 14, 16 или более бит, независимо от разрядности основной шины данных, которая обычно соответствует разрядности самого МК. Таким образом, при длине кодового слова 12 и более, мы получаем не такой уж сокращенный набор команд, но считываются и выполняются они, тем не менее, за один машинный цикл, который может состоять всего из одного такта. У МК Atmel AVR в базовый набор входит 192 команды. Из других архитектурных особенностей можно отметить наличие/отсутствие у МК конвейерного выполнения команд. Однако чаще всего это остается <прозрачным> для пользователя, то есть он об этом может и не знать. Достаточно иметь данные о конечной производительности данного МК.
В заключение, можно отметить, что практически все современные МК относятся к классу RISC устройств. Исключение составляют, пожалуй, лишь МК семейства MSC-51, которые до сих пор выпускаются разными фирмами в десятках модификаций. Их право на жизнь завоевано многими годами применения и огромным накопленным программным обеспечением. Зачастую проще и дешевле воспользоваться готовыми библиотеками программ, чем стремиться к достижению максимально возможной производительности, тем более что это далеко не всегда является необходимым.
Микроконтроллеры семейства MSC-51
Микроконтроллеры "Atmel" семейства AVR
Микроконтроллеры "Microchip" семейства PIC
Микроконтроллеры "Texas Instruments" семейства MSP