Разрядность микроконтроллера – Микроконтроллеры

Классификация и выбор микроконтроллеров


 

Все микроконтроллеры можно условно разделить на 3 класса в соответствии с их разрядностью:

  • 8-разрядные
  • 16-разрядные
  • 32-разрядные

8-разрядные микроконтроллеры имеют относительно низкую производительность, которая вполне достаточна для решения широкого круга задач управления различными объектами. Это простые и дешевые микроконтроллеры, ориентированные на использование в относительно несложных устройствах массового выпуска. Основными областями их применения являются бытовая и измерительная техника, промышленная автоматика, автомобильная электроника, теле-, видео- и аудиоаппаратура, средства связи. Для этих микроконтроллеров характерна реализация Гарвардской архитектуры, где используется отдельная память для хранения программ и данных. Внутренняя память программ обычно имеет объем от нескольких единиц до десятков килобайт. Для хранения данных используется регистровый блок, организованный в виде нескольких регистровых банков, или внутреннее ОЗУ. Объем внутренней памяти данных составляет от нескольких десятков байт до нескольких килобайт. Ряд микроконтроллеров этой группы позволяет, в случае необходимости, дополнительно подключать внешнюю память команд и данных, объемом до 64…256 килобайт. Микроконтроллеры этой группы обычно выполняют относительно небольшой набор команд (30-100), использующих наиболее простые способы адресации. Такие микроконтроллеры обеспечивают выполнение большинства команд за один такт машинного времени.

16-разрядные микроконтроллеры во многих случаях являются усовершенствованной модификацией своих 8-разрядных прототипов. Они характеризуются не только увеличенной разрядностью обрабатываемых данных, но и расширенной системой команд и способов адресации, увеличенным набором регистров и объемом адресуемой памяти, а также рядом других дополнительных возможностей. Обычно эти микроконтроллеры позволяют расширить объем памяти программ и данных до нескольких мегабайт путем подключения внешних микросхем памяти. Во многих случаях реализуется их программная совместимость с более младшими 8-разрядными моделями. Основная сфера применения таких микроконтроллеров – сложная промышленная автоматика, телекоммуникационная аппаратура, медицинская и измерительная техника.

32-разрядные микроконтроллеры содержат высокопроизводительный процессор, соответствующий по своим возможностям младшим моделям микропроцессоров общего назначения. В ряде случаев процессор, используемый в этих микроконтроллерах, аналогичен CISC- или RISC-процессорам, которые выпускаются или выпускались ранее в качестве микропроцессоров общего назначения. Например, в 32-разрядных микроконтроллерах компании Intel используется процессор i386, в микроконтроллерах компании Motorola широко применяется процессор 68020, в ряде других микроконтроллеров в качестве процессорного ядра служат RISC-процессоры типа PowerPC. На базе данных процессоров были реализованы различные модели персональных компьютеров. Введение этих процессоров в состав микроконтроллеров позволяет использовать в соответствующих системах управления огромный объем прикладного и системного программного обеспечения, созданный ранее для соответствующих персональных компьютеров. Кроме 32-разрядного процессора на кристалле микроконтроллера размещается внутренняя память команд емкостью до десятков килобайт, память данных емкостью до нескольких килобайт, а также сложно-функциональные периферийные устройства – таймерный процессор, коммуникационный процессор, модуль последовательного обмена и ряд других. Микроконтроллеры работают с внешней памятью объемом до 16 Мбайт и выше. Они находят широкое применение в системах управления сложными объектами промышленной автоматики (двигатели, робототехнические устройства, средства комплексной автоматизации производства), в контрольно-измерительной аппаратуре и телекоммуникационном оборудовании. Во внутренней структуре этих микроконтроллеров реализуется Принстонская или Гарвардская архитектура. Входящие в их состав процессоры могут иметь CISC- или RISC-архитектуру, а некоторые из них содержат несколько исполнительных конвейеров, образующих суперскалярную структуру.

Цифровые сигнальные процессоры (ЦСП, DSP) представляют особый класс специализированных микропроцессоров, ориентированных на цифровую обработку поступающих аналоговых сигналов. Специфической особенностью алгоритмов обработки аналоговых сигналов является необходимость последовательного выполнения ряда команд умножения-сложения с накоплением промежуточного результата в регистре-аккумуляторе. Поэтому архитектура ЦСП ориентирована на реализацию быстрого выполнения операций такого рода. Набор команд этих процессоров содержит специальные команды MAC (Multiplication with Accumlation), реализующие эти операции. Значения поступившего аналогового сигнала может быть представлено в виде числа с фиксированной или с “плавающей” точкой. В соответствии с этим ЦСП делятся на процессоры, обрабатывающие числа с фиксированной или плавающей точкой. Более простые и дешевые ЦСП с фиксированной точкой обычно обрабатывают 16-разрядные операнды, представленные в виде правильной дроби. Однако ограниченная разрядность в ряде случаев не позволяет обеспечить необходимую точность преобразования. Поэтому в ЦСП с фиксированной точкой, выпускаемых компанией Motorola, принято 24-разрядное представление операндов. Наиболее высокая точность обработки обеспечивается в случае представления данных в формате с «плавающей» точкой. В ЦСП, обрабатывающих данные с «плавающей» точкой, обычно используется 32-разрядный формат их представления. Для повышения производительности при выполнении специфических операций обработки сигналов в большинстве ЦПС реализуется Гарвардская архитектура с использованием нескольких шин для передачи адресов, команд и данных. В ряде ЦПС нашли применение также некоторые черты VLIW-архитектуры: совмещение в одной команде нескольких операций, обеспечивающих обработку имеющихся данных и одновременную загрузку в исполнительный конвейер новых данных для последующей обработки.

Выбор микроконтроллера

При проектировании цифровой системы необходимо осуществить правильный выбор микроконтроллера. Основная цель – выбрать наименее дорогой микроконтроллер (чтобы снизить общую стоимость системы), но в то же время удовлетворяющий спецификации системы, т. е. требованиям по производительности, надежности, условиям применения и т. д.

Основные критерии выбора микроконтроллера представлены ниже в порядке значимости.

  • Пригодность для прикладной системы. Может ли она быть сделана на однокристальном микроконтроллере или ее можно реализовать на основе какой-либо специализированной микросхемы.
  • Имеет ли микроконтроллер требуемое число контактов, портов ввода-вывода, поскольку в случае их недостатка он не сможет выполнить работу, а в случае избытка цена будет слишком высокой.
  • Имеет ли микроконтроллер все требуемые периферийные устройства, такие как аналого-цифровой, цифро-аналоговый преобразователи, интерфейсы связи и т.д.
  • Имеет ли микроконтроллер другие периферийные устройства, которые не потребуются в системе (это зачастую увеличивает стоимость микроконтроллера).
  • Обеспечивает ли ядро микроконтроллера необходимую производительность, т. е. вычислительную мощность, позволяющую обрабатывать системные запросы в течение всей жизни системы на выбранном прикладном языке.
  • Выделено ли в бюджете проекта достаточно средств, чтобы позволить себе использовать данный микроконтроллер. Для ответа на этот вопрос, обычно требуются расценки поставщика. Если данный микроконтроллер не приемлем для проекта, все остальные вопросы становятся несущественными, и разработчик должен начать поиски другого микроконтроллера.
  • Доступность.
    • Существует ли устройство в достаточных количествах.
    • Производится ли оно сейчас.
    • Что ожидается в будущем.
    • Поддержка разработчика.
    • Ассемблеры.
    • Компиляторы.
    • Средства отладки.
    • Внутрисхемные эмуляторы.
    • Информационная поддержка
      • Примеры применения.
      • Сообщения об ошибках.
      • Утилиты, в том числе бесплатные ассемблеры.
      • Примеры исходных текстов.
      • Поддержка применений у поставщика.
      • Квалификация поддерживающего персонала, действительно ли он заинтересован в помощи при решении вашей проблемы.
      • Связь с поддерживающим профессионалом.
    • Надежность фирмы производителя.
      • Компетентность, подтвержденная разработками.
      • Надежность производства, т.е. качество продукции.
      • Время работы в этой области.

Чтобы заставить микроконтроллер выполнять то, что от него требуется, нужно написать программу для него. Это можно делать на разных языках программирования, но чаще всего используются ассемблер и Си. В результате получается выходной файл с шестнадцатеричным кодом (наиболее распространенный стандарт intel-hex c расширением .hex), который и загружается в микроконтроллер.

Вся информация (электрические параметры, габариты, особенности программирования и т.д.) о микроконтроллерах находится в специальных документах – руководствах по использованию (Data Sheet), которые являются своеобразными подробными руководствами для применения микросхем и других электронных приборов. Руководства по использованию обычно можно бесплатно загружать с сайтов производителей, или со специализированных сайтов.

Для уменьшения количества ошибок в программах существуют так называемые примеры использования (Application Note). Эти документы создают производители микроконтроллеров. В них описывается практическое применение микроконтроллеров, приведены схемы устройств, полные тексты или части кода программ, описание работы устройства.

Перед тем как загрузить программу в микроконтроллер, можно промоделировать ее работу на компьютере, для этого существуют различные симуляторы и эмуляторы. В этих программах инженеры рисуют схему устройства, указывают пути к файлам кода программы и анализируют работу устройства. Если что-то не так, корректируется код программы. Такое виртуальное моделирование значительно ускоряет и облегчает процесс написания программ.

В некоторых компиляторах присутствуют отладчики (Debugger), в которых все не так наглядно, но зато найти ошибки в программе гораздо проще. Эти возможности комбинируются в разных средствах разработки.
Отладчики можно разделить на

  • симуляторы
  • эмуляторы.

Симуляторы – совокупность программных средств, моделирующих работу других программ или их отдельных частей.

Эмуляторы – совокупность программных и аппаратных средств, позволяющих воспроизвести работу других программ или их отдельных частей.

Назад


Назад: Программирование микроконтроллеров

prog-cpp.ru

Почему стоит переходить на 32-разрядную архитектуру микроконтроллеров

Таблица 1. Результаты компилирования программы Dhrystone на различных процессорах

Микроконтроллер

C8051F320 SiliconLabs

Cortex-M0

Cortex-M3

Программный инструмент

Keil µVision 3.8PK51 8.18

RVDS 4.0-SP2

RVDS 4.0-SP2

Объем выходного двоичного кода, число байт

3186

912

900

Большинство приложений выигрывают при переходе на микроконтроллеры на базе Cortex-M благодаря уменьшению объема кода и, как следствие, снижению стоимости устройства из-за меньшей требуемой памяти. Уменьшенный размер кода ARM-микроконтроллеров влияет на производительность, а также потребляемую мощность и стоимость.

Производительность и потребляемая мощность

Одна из причин, по которой разработчики переходят с 8- и 16-разрядных МК на 32-разрядные, заключается в необходимости улучшения производительности. Менее очевидным является тот факт, что переход на применение ARM-микроконтроллеров обеспечивает также снижение энергопотребления и увеличение срока службы батарей.

Сравним производительность МК различных архитектур. Распространенным способом сравнения производительности процессоров является использование теста Dhrystone. Он является бесплатным, кроме того, простым и достаточно компактным для использования в микроконтроллерах с весьма небольшим объемом памяти (хотя это и не идеальный тестовый пакет).

Производительность первых процессоров 8051 была всего 0,0094 DMIPS/МГц. Новые модификации процессора 8051 имеют несколько лучшие показатели. Например, процессор Maxim 80C310 имеет производительность 0,027 DMIPS/МГц, а самые быстрые микропроцессоры 8051 — 0,1 DMIPS/МГц. Это все же намного меньше производительности микроконтроллеров на базе ARM Cortex-M: для процессора Cortex-M3 этот показатель равен 1,25 DMIPS/МГц, а для Cortex-M0 — 0,9 DMIPS/МГц.

Производительность микроконтроллера PIC18 равна 0,02 DMIPS/МГц, т.е. меньше, чем у некоторых процессоров 8051. 16-разрядные процессоры Microchip также более чем наполовину уступают микроконтроллерам на базе ARM Cortex-M3.

Ограничения 8- и 16-разрядных МК

Проблемой, которая вызывает неэффективность многих 8- и 16-разрядных микроконтроллеров, является ограниченный набор команд и моделей программирования. Например, работа процессора 8051 в значительной степени основана на использовании аккумулятора (ACC) и указателя данных (DPTR) для передачи и обработки данных. В результате, появляется необходимость в использовании команд перемещения данных в/из ACC и DPTR, что приводит к увеличению размера кода и количества тактов исполнения команд.

Интерфейс памяти также ограничивает производительность 8- и 16-разрядных процессоров. Например, многие команды процессора 8051 имеют длину несколько байт. Так как интерфейс памяти программ является 8-разрядным, то для выборки таких команд нужно выполнить несколько циклов считывания.

Производительность 8- и 16-разрядных МК еще больше снижается, если требуется осуществить доступ к памяти, превышающей 64 Кбайт. Данная архитектура разработана для работы с 16-битными адресами (используются 16-битные счетчики программ, 16-битные указатели данных, а набор команд разработан для поддержки адресного пространства 64 Кбайт). Если требуется память более 64 Кбайт, то необходимы аппаратные и командные издержки для генерации дополнительных адресных бит.

Для типового процессора 8051, которому нужно осуществить доступ к памяти более 64 Кбайт, память разделяется на банки, и все коды переключения банков выполняются через фиксированный банк. В результате, увеличение размера кода и числа тактовых циклов может снизить эффективность использования памяти. Некоторые 16-разрядные МК избегают этого с помощью использования счетчика программ большей разрядности или сегментации памяти, но манипулирование большими значениями адресов также требует дополнительных ресурсов и, следовательно, снижает производительность, приводит к увеличению программного кода.

Мощность потребления МК

ARM-микроконтроллеры на базе ядра Cortex-M потребляют меньше энергии, чем многие 8- и 16-разрядные микроконтроллеры. В ARM-процессорах реализованы многие методы, позволяющие снизить потребляемую мощность. Например, процессоры Cortex-M0 и Cortex-M3 поддерживают различные дежурные режимы работы и функцию sleep-on-exit (которая позволяет процессору возвращаться в спящий режим сразу по завершении обработки прерывания).

Для того, чтобы понять, почему МК на базе Cortex-M могут снизить энергопотребление встраиваемой системы, рассмотрим структуру типичного МК. В современных микроконтроллерах процессорное ядро не занимает самую большую часть площади кристалла (см. рис. 2).

Рис. 2. Использование ARM-процессоров на базе Cortex-M позволяет уменьшить площадь кристалла

Как было сказано выше, плотность кода 8-разрядных микроконтроллеров весьма низка. В результате необходим блок флэш-памяти большего объема, что увеличивает общую потребляемую мощность. Высокая плотность кода ARM-микроконтроллеров позволяет использовать в них меньшие по размеру блоки флэш-памяти и снизить как потребляемую мощность, так и стоимость.

Эффективность доступа к памяти

Использование 32-разрядной шины снижает энергопотребление за счет уменьшения числа требуемых циклов обращения к памяти. Для копирования того же объема данных в память 8-разрядный МК требует в четыре раза больше циклов обращения к памяти при большем числе вызовов команд, необходимых для этой операции. Следовательно, даже при одном и том же объеме памяти, 8-разрядный МК потребляет больше энергии для выполнения той же задачи.

Выборка команд в МК на базе Cortex-M также намного более эффективна, чем у 8- и 16-разрядных МК, так как каждая выборка команды является 32-разрядной, что позволяет выбирать до двух 16-разрядных команд Thumb за один такт и обеспечивает большую полосу пропускания шины при доступе к данным. При одинаковой длине последовательности команд для 8-разрядного МК необходимы четыре цикла обращения к памяти, а для 16-разрядного — в два раза больше вызовов команд. В результате, 8- и 16-разрядные МК потребляют намного больше энергии, чем микроконтроллеры на базе ARM.

Снижение потребляемой мощности за счет уменьшения рабочей частоты

Высокая производительность 32-разрядных МК позволяет снизить потребляемую мощность за счет работы приложения на более низкой тактовой частоте. Например, приложение с рабочей частотой 30 МГц на процессоре 8051 может быть запущено на ARM-микроконтроллере Cortex-M3 на тактовой частоте 3 МГц, обеспечив при этом тот же уровень производительности.

Снижение потребляемой мощности за счет уменьшения активных циклов

Используя микроконтроллер на базе ARM в дежурном режиме, можно еще больше снизить энергопотребление после завершения выполнения задания. Микроконтроллеры на базе Cortex-M имеют намного более высокую производительность по сравнению с 8- и 16-разрядными МК, поэтому у них имеется возможность завершить задачу и перейти в дежурный режим намного быстрее, что снижает общее число активных циклов в системе (см. рис. 3).

Разработка программного обеспечения

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

Портирование программного обеспечения с 8- и 16-разрядных МК на ARM-микроконтроллеры

МК на базе Cortex-M имеют, как правило, большее количество регистров в периферии, чем 8-разрядные МК. Периферийные устройства МК на базе ARM обычно содержат больше встроенных функций и, следовательно, в них доступно большее количество программируемых регистров. Для упрощения программирования поставщики МК на базе ARM предлагают библиотеки драйверов устройств, что позволяет выполнять установку периферийных устройств с помощью всего нескольких вызовов функций.

По сравнению с большинством 8- и 16-разрядных архитектур, программирование МК на базе ARM осуществляется гораздо более гибко. Например, нет ограничений для аппаратного стека, доступ к функциям может выполняться рекурсивно (локальные переменные хранятся в стеке, а не в статической памяти) и не нужно беспокоиться о сохранении значений специальных регистров в программе-обработчике прерываний, так как эти значения обрабатываются процессором во время ввода прерывания.

Важно корректно использовать типы данных для конкретной архитектуры процессора: они оказывают существенно влияние на размер кода и производительность системы. Данные разных типов для микроконтроллеров на базе ARM и 8- и 16-разрядных микроконтроллеров отличаются по длине (см. табл. 2).

Таблица 2. Типы данных для разных архитектур процессоров

Тип данных

Длина данных, бит

8-/16-разрядные
микроконтроллеры

Микроконтроллеры на базе ARM

Целочисленный (integer)

16

32 бита (или short int для 16)

Перечислимый (enum)

8/16

8/16/32

Указатель (pointer)

16 и более

32

С плавающей запятой двойной точности
(double precision floating point)

32 (одинарная точность)

64 (или float для 32)

Если приложение зависит от разрядности данных, например, при переполнении целочисленных данных за границу 16 бит, то необходима модификация кода для оптимизации его работы на ARM-микроконтроллерах.

Различие в разрядности данных оказывает влияние также и на размер массива данных. Например, массив целых чисел в ПЗУ для приложения на базе 8-разрядного МК можно определить, как

const int mydata = {1234, 5678,}.

Для систем на базе ARM-микроконтроллере для того, чтобы избежать увеличения объема ПЗУ данное выражение следует изменить на

const short int mydata = {1234, 5678,}.

Различия в командах с плавающей запятой могут также привести к незначительной разнице в результатах вычислений. Из-за ограниченной производительности 8- и 16-разрядных МК, в случае, когда используется двойная точность, данные обрабатываются с одинарной точностью (32 бита). В микроконтроллерах на базе ARM данные с двойной точностью имеют разрядность 64 бита, следовательно, для 32-битных данных (одинарная точность) следует использовать тип данных с плавающей запятой.

Для пользователей процессора Cortex-M3 доступны дополнительные функции отладки с помощью трассировки. Базовый процессор Cortex-M3 поддерживает выборочную трассировку данных, трассировку событий, трассировку исключений и текстовый выходной канал (инструментальную трассировку). Данные трассировки собираются с помощью однопроводного интерфейса Serial Wire Output, который использует разъем JTAG/Serial Wire при соединении платы с отладочным компьютером. Это обеспечивает сбор полезной информации о ходе выполнения программы с помощью недорогого аппаратного отладчика без необходимости использования дополнительных устройств для трассировки.

Многие МК на базе Cortex-M3 также поддерживают технологию Embedded Trace Macrocell (ETM), которая обеспечивает полную трассировку команд. Эта функция позволяет детально анализировать ход выполнения кода приложения, а также профилировать код. Из-за схожести архитектуры процессоров Cortex-M0 и Cortex-M3 имеется возможность разрабатывать и отлаживать приложения на Cortex-M3 с трассировкой команд, а затем портировать приложение на Cortex-M0 лишь с незначительной модификацией.

Совместимость программного обеспечения

МК на базе ядра Cortex-M обеспечивают высокий уровень совместимости программного обеспечения. Хотя существует множество поставщиков микроконтроллеров, каждый из которых предлагает собственные библиотеки драйверов устройств, а также много поставщиков компиляторов C, программное обеспечение можно легко портировать с помощью стандарта Cortex Microcontroller Software Interface Standard (CMSIS).

Стандартный интерфейс CMSIS включен в библиотеки драйверов устройств МК многих производителей. Он обеспечивает программный интерфейс к функциям ядра, регистрам ядра, а также предоставляет имена для стандартизированного системного обработчика исключений. Программное обеспечение, разработанное с помощью CMSIS, можно легко портировать между различными МК на базе Cortex-M. Это позволяет осуществлять поддержку встраиваемых ОС или микропрограммных средств, а также компиляторов различных поставщиков.

Затраты при переходе на новую архитектуру

Сегодня стоимость МК на базе ARM Cortex сопоставима с уровнем цен на 8- и 16-разрядные МК. Для микроконтроллеров на базе ARM Cortex-M доступны недорогие или даже бесплатные наборы разработчика. Переход с 8-разрядных МК на ARM-микроконтроллеры может обеспечить значительно более высокую производительность и позволит разработать сложное программное обеспечение с малыми затратами. Сравнение различных архитектур микроконтроллеров приведено в таблице 3.

Таблица 3. Сравнение различных архитектур микроконтроллеров

8051

Другие 8-разрядные архитектуры

16-разрядные архитектуры

Другие 32-разрядные архитектуры

Микроконтроллеры на базе ARM Cortex

Производительность

*

*

**

***

***

Малая мощность потребления

***

***

***

*

***

Плотность кода

*

*

**

*

***

Эффективность обращения к памяти более 64 Кбайт
(в собств. системе команд)

*

*

*

***

***

Векторные прерывания

***

***

***

**

***

Малое время ожидания прерываний

***

***

***

*

***

Низкая стоимость

***

***

***

*

***

Множественные источники
(непатентованная архитектура)

***

*

*

*

***

Выбор компиляторов

***

**

**

**

***

Совместимость программного обеспечения

***

**

**

**

***

В зависимости от требования приложения, можно всегда найти подходящий МК на базе ARM Cortex-M. В случае необходимости введения новых функций, повышения производительности и снижения энергопотребления устройства благодаря совместимости архитектуры процессоров Cortex-M можно без проблем перейти на другие ARM-микроконтроллеры.

Литература

1. Joseph Yiu. What next for microcontrollers?//www.embedded.com

Вы можете скачать эту статью в формате pdf здесь. Оцените материал:

Автор: Джозеф Ю (Joseph Yiu), инженер-разработчик, ARM Ltd.

Рекомендовать

 


     

www.russianelectronics.ru

Основные типы микропроцессоров: разновидности, архитектура/структура, 8-16-32 разрядные

Основные типы микропроцессоров

Выпускаемые различными производи­телями процессоры делятся на отдельные типы в соответствии с используемыми классификационными признаками. Одним из важнейших признаков помимо вида архитектуры является функциональное назначение. По этому признаку, микро­процессоры разбивают на два больших класса:

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

Микропроцессоры общего назначения

Этот класс процессоров предназ­начен для решения широкого круга задач обработки разнообразной информации и находит применение в персональных компьютерах, рабочих станциях, серверах и других цифровых системах массового применения. К универсальным процессо­рам относят 32–разрядные микропроцессоры (хотя некоторые микропроцессоры этого класса имеют 64–разрядную или 128–разрядную структуру), которые изго­тавливаются по самой современной промышленной технологии, обеспечивающей максимальную частоту функционирования.

Большинство типов микропроцессоров этого класса имеют CISC–архитектуру, поскольку используют набор разноформатных команд с различными способами адресации.

В их внутренней структуре может содержаться RISC–ядро, выполня­ющее преобразование поступивших команд в   оследовательность простых RISC–операций. Некоторые типы микропроцессоров этого класса непосредственно реализует RISC–архитектуру.

В ряде последних разработок (Itanium РА8500) успешно используются прин­ципы VLIW–архитектуры.

Практически все современные универсальные микропроцессоры используют гарвардскую архитектуру с разделением потоков команд и данных при помощи отдельных блоков внутренней кэш–памяти. В большинстве случаев они имеют су­перскалярную структуру (несколько операционных устройств, осуществляющих одновременную обработку данных) с несколькими исполнительными конвейера­ми (до 10 в современных моделях), каждый из которых содержит до 20 ступеней.

Микроконтроллеры. Этот класс специализированных микропроцессоров ориентирован на применение в качестве устройств или систем управления, встраиваемых в разнообразную (в том числе и бытовую) аппаратуру. Номенкла­тура выпускаемых микроконтроллеров исчисляется несколькими тысячами типов, а общий годовой объем их выпуска составляет миллиарды экземпляров.

Особенностью микроконтроллеров является размещение на одном кристалле, помимо центрального процессора, внутренней памяти и большого набора пери­ферийных устройств.

В состав периферийных устройств обычно входят от одного до восьми 8–раз­рядных параллельных портов ввода–вывода данных, один или два последователь­ных порта, таймерный блок, аналого–цифровой преобразователь, а также такие специализированные устройства, как блок формирования сигналов с широтно–импульсной модуляцией, контроллер жидкокристаллического дисплея и ряд других. Благодаря использованию внутренней памяти и периферийных устройств реализуемые на базе микроконтроллеров системы управления содержат мини­мальное количество дополнительных компонентов.

Для удовлетворения запросов потребителей выпускается большая номенкла­тура микроконтроллеров, которые принято подразделять на 8–, 16– и 32–разрядные.

8–разрядные микроконтроллеры

8–разрядные микроконтроллеры являются наиболее простыми и де­шевыми изделиями этого класса, ориентированными на использование в относи­тельно несложных устройствах массового выпуска. Микроконтроллеры этой груп­пы обычно выполняют относительно небольшой набор команд (50–100), исполь­зующих наиболее простые способы адресации. Основными областями их приме­нения являются промышленная автоматика, автомобильная электроника, измерительная техника, теле–, видео– и аудиотехника, средства связи, бытовая аппаратура.

Для 8–разрядных микроконтроллеров характерна гарвардская архитектура:

  • с отдельной внутренней памятью для хранения программ, в качестве которой используются масочно–программируемые ПЗУ (ROM), однократно програм­мируемое ПЗУ (PROM) или электрически репрограммируемое ПЗУ (EPROM, EEPROM или Flash) с объемом от нескольких единиц до десятков килобайт;
  • с отдельной внутренней памятью для хранения данных, в качестве которой используется регистровый блок, организованный в виде нескольких регист­ровых банков, или ОЗУ. Ее объем составляет от нескольких десятков байт до нескольких килобайт.

В случае необходимости имеется возможность дополнительно подключать внешнюю память команд и данных объемом до 64–256 Кбайт и более.

Для повышения производительности во многих моделях 8–разрядных микро­контроллеров реализованы принципы RISC–архитектуры, обеспечивающие вы­полнение большинства команд за один такт машинного времени.

16–разрядные микроконтроллеры

16–разрядные микроконтроллеры помимо повышенной разрядности обрабатываемых данных характеризуются:

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

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

32–разрядные микроконтроллеры

32–разрядные микроконтроллеры ориентированы на применение в системах управления сложными объектами промышленной автоматики (сред­ствами комплексной автоматизации производства, робототехнические устрой­ствами, двигателями и др.), в контрольно–измерительной аппаратуре, телеком­муникационном оборудовании и других сложных устройствах. 32–разрядные микроконтроллеры содержат:

  • высокопроизводительный CISC– или RISC–процессор, соответствующий по своим возможностям младшим моделям микропроцессоров общего назначе­ния. Например, в микроконтроллерах компании Intel используется процессор i386, а в микроконтроллерах компании Motorola — процессор 680×0. Введе­ние этих процессоров в состав микроконтроллеров позволяет использовать в соответствующих системах управления огромный объем прикладного и си­стемного программного обеспечения, созданный ранее для соответствующих персональных компьютеров. Некоторые типы микроконтроллеров содержат несколько исполнительных конвейеров, образующих суперскалярную структуру;
  • внутреннюю память команд емкостью до десятков килобайт и память данных емкостью до нескольких килобайт;
  • средства для подключения внешней памяти объемом до 16 Мбайт и выше;
  • набор сложных периферийных устройств — таймерный процессор, коммуни­кационный процессор, модуль последовательного обмена и ряд других. Во внутренней структуре этих микроконтроллеров реализуется принстонская или гарвардская архитектура.

Цифровые сигнальные процессоры

Этот класс специализированных мик­ропроцессоров предназначен для цифровой обработки поступающих аналоговых сигналов в реальном времени. Архитектура цифровых сигнальных процессоров (ЦСП) ориентирована на быстрое выполнение последовательности операций ум­ножения–сложения с накоплением промежуточного результата в регистре–аккуму­ляторе, что обусловлено особенностью алгоритмов обработки аналоговых сигна­лов. Поэтому набор команд этих процессоров содержит специальные команды MAC (Multiplication with Accumulation — умножение с накоплением), реализующие эти операции.

Значение оцифрованного аналогового сигнала может быть представлено в виде числа с фиксированной или с плавающей точкой. В соответствии с этим ЦСП де­лятся на два класса:

  • на процессоры, обрабатывающие числа с фиксированной точкой. К этому классу относятся более простые и дешевые ЦСП, которые обычно обрабатывают 16– или 24–разрядные операнды, представленные в виде правильной дроби. Однако ограниченная разрядность в ряде случаев не позволяет обес­печить необходимую точность результатов;
  • на процессоры, обрабатывающие числа с плавающей точкой. Процессоры этого класса проводят вычисления над 32– и 40–разрядными операндами и обеспечивают более высокую точность результатов.

Для повышения производительности при выполнении специфических опера­ций обработки сигналов в большинстве ЦСП реализуется гарвардская архитекту­ра с использованием отдельных шин для передачи адресов, команд и данных. В ряде ЦСП нашли применение также некоторые черты

VLIW–архитектуры, для ко­торой характерно совмещение в одной команде нескольких операций. Такое со­вмещение обеспечивает обработку имеющихся данных и одновременную загруз­ку в исполнительный конвейер новых данных для последующей обработки.

Медийные процессоры

Этот тип процессоров предназначен для обработки аудио–сигналов, графики, видеоизображений, а также для решения ряда комму­никационных задач в мультимедиа–компьютерах, игровых приставках, бытовых приборах и др.

Аппаратную поддержку операций с новыми типами данных, характерными для обработки видео– и звуковой информации обеспечивают универсальные процес­соры с мультимедийным расширением набора команд: Pentium ММХ, UltraSPARC, Cyrix 6х86МХ (М2), AMD–K6 и др. Однако, когда мультимедийные операции до­минируют над традиционными числовыми операциями, больший эффект дает ис­пользование мультимедийных микропроцессоров. Их архитектура представляет собой некоторый гибрид архитектурных решений сигнальных и универсальных процессоров. Производством медиа–процессоров заняты компании MicroUnity (процессор Mediaprocessor), Philips (TriMedia), Chromatic Research (Mpact Media Engine) и др.

Структура и режимы работы микропроцессорной системы

Микропроцес­сор в совокупности с модулями ввода и вывода информации, интерфейса и памя­ти образует простейшую микропроцессорную систему. Среди микропроцессор­ных систем важное место занимают системы общего назначения, которые пред­назначены для решения широкого круга различных задач по обработка информа­ции в цифровой форме согласно заданной программе.

Основные функции микропроцессорной системы сводятся к приему данных (информации) от внешнего устройства, их обработке с помощью микропроцессо­ра и выдаче результата обработки на внешнее устройство.

Рассмотрим в общих чертах особенности работы простейшей микропроцес­сорной системы (рис. 2.1.3), состоящей из центрального процессора, памяти и подсистемы ввода/вывода.

Подлежащая исполнению программа загружается в (оперативную) память. В процессе ее исполнения центральный процессор выдает на шину адреса адрес ячейки памяти, в которой хранится очередная команда, а на шину управления — сигнал, обеспечивающий ее чтение из памяти. Запрошенная команда по шине данных поступает в центральный процессор. Микропроцессор после расшифров­ки кода команды приступает к ее выполнению, если данные, над которыми долж­ны быть выполнены действия, находятся в регистрах центрального процессора. В противном случае на шину адреса выставляется адрес ячейки памяти, на шину управления — сигнал чтения памяти, и только после получения требуемых данных команда будет исполнена. Затем центральный процессор приступает к обработке следующей команды, и процесс повторяется.

Для обмена данными между центральным процессором и внешними устрой­ствами в подсистеме ввода/вывода предусмотрен контроллер обмена.

При программном обмене в контроллер обмена от центрального процессора, поступает информация о режиме обмена, содержащая код порта (регистра), на­правление обмена (от центрального процессора к внешнему устройству или от внешнего устройства к центральному процессору), число передаваемых бит, слу­жебные символы и другие данные.

Непосредственный обмен данными происходит под действием сигналов управ­ления, поступающих в контроллер обмена от центрального процессора и внешне­го устройства.

При обмене по инициативе внешнего устройства микропроцессор переводит­ся в состояние прерывания. Для этого внешнее устройство посылает в централь­ный процессор сигнал запроса на прерывание. В состоянии прерывания цент­ральный процессор прекращает выполнение основной программы и приступает к исполнению команд прерывающей программы, которая хранится в (оператив­ной) памяти и обеспечивает обмен данными, требуемый внешнему устройству. По окончании прерывающей программы центральный процессор возвращается к выполнению основной программы.

Описанные способы обеспечивают низкую скорость обмена.

Для увеличения скорости обмена используется режим прямого доступа к памяти, который реали­зуется с помощью контроллера прямого доступа к памяти. Этот режим иницииру­ется сигналом запроса на захват шин. После получения сигнала запроса цент­ральный процессор пересылает по шине данных в контроллер прямого доступа информацию, необходимую для управления обменом (адрес ячейки памяти, в ко­торой размещается первый байт записываемых или считываемых данных, общее число передаваемых байт, направление передачи и др.), и отключается от шины данных и шины адреса, предоставляя их контроллеру для организации обмена.

Обмен данными между внешним устройством и памятью осуществляется через контроллер. В процессе обмена контроллер прямого доступа к памяти выдает ад­реса ячеек памяти в шину адреса и сигналы чтения (записи) в шину управления. По завершении обмена центральный процессор получает сигнал от контроллера и переходит к выполнению основной программы.

pue8.ru

Почему стоит переходить на 32-разрядную архитектуру микроконтроллеров

Таблица 1. Результаты компилирования программы Dhrystone на различных процессорах

Микроконтроллер

C8051F320 SiliconLabs

Cortex-M0

Cortex-M3

Программный инструмент

Keil µVision 3.8PK51 8.18

RVDS 4.0-SP2

RVDS 4.0-SP2

Объем выходного двоичного кода, число байт

3186

912

900

Большинство приложений выигрывают при переходе на микроконтроллеры на базе Cortex-M благодаря уменьшению объема кода и, как следствие, снижению стоимости устройства из-за меньшей требуемой памяти. Уменьшенный размер кода ARM-микроконтроллеров влияет на производительность, а также потребляемую мощность и стоимость.

Производительность и потребляемая мощность

Одна из причин, по которой разработчики переходят с 8- и 16-разрядных МК на 32-разрядные, заключается в необходимости улучшения производительности. Менее очевидным является тот факт, что переход на применение ARM-микроконтроллеров обеспечивает также снижение энергопотребления и увеличение срока службы батарей.

Сравним производительность МК различных архитектур. Распространенным способом сравнения производительности процессоров является использование теста Dhrystone. Он является бесплатным, кроме того, простым и достаточно компактным для использования в микроконтроллерах с весьма небольшим объемом памяти (хотя это и не идеальный тестовый пакет).

Производительность первых процессоров 8051 была всего 0,0094 DMIPS/МГц. Новые модификации процессора 8051 имеют несколько лучшие показатели. Например, процессор Maxim 80C310 имеет производительность 0,027 DMIPS/МГц, а самые быстрые микропроцессоры 8051 — 0,1 DMIPS/МГц. Это все же намного меньше производительности микроконтроллеров на базе ARM Cortex-M: для процессора Cortex-M3 этот показатель равен 1,25 DMIPS/МГц, а для Cortex-M0 — 0,9 DMIPS/МГц.

Производительность микроконтроллера PIC18 равна 0,02 DMIPS/МГц, т.е. меньше, чем у некоторых процессоров 8051. 16-разрядные процессоры Microchip также более чем наполовину уступают микроконтроллерам на базе ARM Cortex-M3.

Ограничения 8- и 16-разрядных МК

Проблемой, которая вызывает неэффективность многих 8- и 16-разрядных микроконтроллеров, является ограниченный набор команд и моделей программирования. Например, работа процессора 8051 в значительной степени основана на использовании аккумулятора (ACC) и указателя данных (DPTR) для передачи и обработки данных. В результате, появляется необходимость в использовании команд перемещения данных в/из ACC и DPTR, что приводит к увеличению размера кода и количества тактов исполнения команд.

Интерфейс памяти также ограничивает производительность 8- и 16-разрядных процессоров. Например, многие команды процессора 8051 имеют длину несколько байт. Так как интерфейс памяти программ является 8-разрядным, то для выборки таких команд нужно выполнить несколько циклов считывания.

Производительность 8- и 16-разрядных МК еще больше снижается, если требуется осуществить доступ к памяти, превышающей 64 Кбайт. Данная архитектура разработана для работы с 16-битными адресами (используются 16-битные счетчики программ, 16-битные указатели данных, а набор команд разработан для поддержки адресного пространства 64 Кбайт). Если требуется память более 64 Кбайт, то необходимы аппаратные и командные издержки для генерации дополнительных адресных бит.

Для типового процессора 8051, которому нужно осуществить доступ к памяти более 64 Кбайт, память разделяется на банки, и все коды переключения банков выполняются через фиксированный банк. В результате, увеличение размера кода и числа тактовых циклов может снизить эффективность использования памяти. Некоторые 16-разрядные МК избегают этого с помощью использования счетчика программ большей разрядности или сегментации памяти, но манипулирование большими значениями адресов также требует дополнительных ресурсов и, следовательно, снижает производительность, приводит к увеличению программного кода.

Мощность потребления МК

ARM-микроконтроллеры на базе ядра Cortex-M потребляют меньше энергии, чем многие 8- и 16-разрядные микроконтроллеры. В ARM-процессорах реализованы многие методы, позволяющие снизить потребляемую мощность. Например, процессоры Cortex-M0 и Cortex-M3 поддерживают различные дежурные режимы работы и функцию sleep-on-exit (которая позволяет процессору возвращаться в спящий режим сразу по завершении обработки прерывания).

Для того, чтобы понять, почему МК на базе Cortex-M могут снизить энергопотребление встраиваемой системы, рассмотрим структуру типичного МК. В современных микроконтроллерах процессорное ядро не занимает самую большую часть площади кристалла (см. рис. 2).

Рис. 2. Использование ARM-процессоров на базе Cortex-M позволяет уменьшить площадь кристалла

Как было сказано выше, плотность кода 8-разрядных микроконтроллеров весьма низка. В результате необходим блок флэш-памяти большего объема, что увеличивает общую потребляемую мощность. Высокая плотность кода ARM-микроконтроллеров позволяет использовать в них меньшие по размеру блоки флэш-памяти и снизить как потребляемую мощность, так и стоимость.

Эффективность доступа к памяти

Использование 32-разрядной шины снижает энергопотребление за счет уменьшения числа требуемых циклов обращения к памяти. Для копирования того же объема данных в память 8-разрядный МК требует в четыре раза больше циклов обращения к памяти при большем числе вызовов команд, необходимых для этой операции. Следовательно, даже при одном и том же объеме памяти, 8-разрядный МК потребляет больше энергии для выполнения той же задачи.

Выборка команд в МК на базе Cortex-M также намного более эффективна, чем у 8- и 16-разрядных МК, так как каждая выборка команды является 32-разрядной, что позволяет выбирать до двух 16-разрядных команд Thumb за один такт и обеспечивает большую полосу пропускания шины при доступе к данным. При одинаковой длине последовательности команд для 8-разрядного МК необходимы четыре цикла обращения к памяти, а для 16-разрядного — в два раза больше вызовов команд. В результате, 8- и 16-разрядные МК потребляют намного больше энергии, чем микроконтроллеры на базе ARM.

Снижение потребляемой мощности за счет уменьшения рабочей частоты

Высокая производительность 32-разрядных МК позволяет снизить потребляемую мощность за счет работы приложения на более низкой тактовой частоте. Например, приложение с рабочей частотой 30 МГц на процессоре 8051 может быть запущено на ARM-микроконтроллере Cortex-M3 на тактовой частоте 3 МГц, обеспечив при этом тот же уровень производительности.

Снижение потребляемой мощности за счет уменьшения активных циклов

Используя микроконтроллер на базе ARM в дежурном режиме, можно еще больше снизить энергопотребление после завершения выполнения задания. Микроконтроллеры на базе Cortex-M имеют намного более высокую производительность по сравнению с 8- и 16-разрядными МК, поэтому у них имеется возможность завершить задачу и перейти в дежурный режим намного быстрее, что снижает общее число активных циклов в системе (см. рис. 3).

Разработка программного обеспечения

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

Портирование программного обеспечения с 8- и 16-разрядных МК на ARM-микроконтроллеры

МК на базе Cortex-M имеют, как правило, большее количество регистров в периферии, чем 8-разрядные МК. Периферийные устройства МК на базе ARM обычно содержат больше встроенных функций и, следовательно, в них доступно большее количество программируемых регистров. Для упрощения программирования поставщики МК на базе ARM предлагают библиотеки драйверов устройств, что позволяет выполнять установку периферийных устройств с помощью всего нескольких вызовов функций.

По сравнению с большинством 8- и 16-разрядных архитектур, программирование МК на базе ARM осуществляется гораздо более гибко. Например, нет ограничений для аппаратного стека, доступ к функциям может выполняться рекурсивно (локальные переменные хранятся в стеке, а не в статической памяти) и не нужно беспокоиться о сохранении значений специальных регистров в программе-обработчике прерываний, так как эти значения обрабатываются процессором во время ввода прерывания.

Важно корректно использовать типы данных для конкретной архитектуры процессора: они оказывают существенно влияние на размер кода и производительность системы. Данные разных типов для микроконтроллеров на базе ARM и 8- и 16-разрядных микроконтроллеров отличаются по длине (см. табл. 2).

Таблица 2. Типы данных для разных архитектур процессоров

Тип данных

Длина данных, бит

8-/16-разрядные
микроконтроллеры

Микроконтроллеры на базе ARM

Целочисленный (integer)

16

32 бита (или short int для 16)

Перечислимый (enum)

8/16

8/16/32

Указатель (pointer)

16 и более

32

С плавающей запятой двойной точности
(double precision floating point)

32 (одинарная точность)

64 (или float для 32)

Если приложение зависит от разрядности данных, например, при переполнении целочисленных данных за границу 16 бит, то необходима модификация кода для оптимизации его работы на ARM-микроконтроллерах.

Различие в разрядности данных оказывает влияние также и на размер массива данных. Например, массив целых чисел в ПЗУ для приложения на базе 8-разрядного МК можно определить, как

const int mydata = {1234, 5678,}.

Для систем на базе ARM-микроконтроллере для того, чтобы избежать увеличения объема ПЗУ данное выражение следует изменить на

const short int mydata = {1234, 5678,}.

Различия в командах с плавающей запятой могут также привести к незначительной разнице в результатах вычислений. Из-за ограниченной производительности 8- и 16-разрядных МК, в случае, когда используется двойная точность, данные обрабатываются с одинарной точностью (32 бита). В микроконтроллерах на базе ARM данные с двойной точностью имеют разрядность 64 бита, следовательно, для 32-битных данных (одинарная точность) следует использовать тип данных с плавающей запятой.

Для пользователей процессора Cortex-M3 доступны дополнительные функции отладки с помощью трассировки. Базовый процессор Cortex-M3 поддерживает выборочную трассировку данных, трассировку событий, трассировку исключений и текстовый выходной канал (инструментальную трассировку). Данные трассировки собираются с помощью однопроводного интерфейса Serial Wire Output, который использует разъем JTAG/Serial Wire при соединении платы с отладочным компьютером. Это обеспечивает сбор полезной информации о ходе выполнения программы с помощью недорогого аппаратного отладчика без необходимости использования дополнительных устройств для трассировки.

Многие МК на базе Cortex-M3 также поддерживают технологию Embedded Trace Macrocell (ETM), которая обеспечивает полную трассировку команд. Эта функция позволяет детально анализировать ход выполнения кода приложения, а также профилировать код. Из-за схожести архитектуры процессоров Cortex-M0 и Cortex-M3 имеется возможность разрабатывать и отлаживать приложения на Cortex-M3 с трассировкой команд, а затем портировать приложение на Cortex-M0 лишь с незначительной модификацией.

Совместимость программного обеспечения

МК на базе ядра Cortex-M обеспечивают высокий уровень совместимости программного обеспечения. Хотя существует множество поставщиков микроконтроллеров, каждый из которых предлагает собственные библиотеки драйверов устройств, а также много поставщиков компиляторов C, программное обеспечение можно легко портировать с помощью стандарта Cortex Microcontroller Software Interface Standard (CMSIS).

Стандартный интерфейс CMSIS включен в библиотеки драйверов устройств МК многих производителей. Он обеспечивает программный интерфейс к функциям ядра, регистрам ядра, а также предоставляет имена для стандартизированного системного обработчика исключений. Программное обеспечение, разработанное с помощью CMSIS, можно легко портировать между различными МК на базе Cortex-M. Это позволяет осуществлять поддержку встраиваемых ОС или микропрограммных средств, а также компиляторов различных поставщиков.

Затраты при переходе на новую архитектуру

Сегодня стоимость МК на базе ARM Cortex сопоставима с уровнем цен на 8- и 16-разрядные МК. Для микроконтроллеров на базе ARM Cortex-M доступны недорогие или даже бесплатные наборы разработчика. Переход с 8-разрядных МК на ARM-микроконтроллеры может обеспечить значительно более высокую производительность и позволит разработать сложное программное обеспечение с малыми затратами. Сравнение различных архитектур микроконтроллеров приведено в таблице 3.

Таблица 3. Сравнение различных архитектур микроконтроллеров

8051

Другие 8-разрядные архитектуры

16-разрядные архитектуры

Другие 32-разрядные архитектуры

Микроконтроллеры на базе ARM Cortex

Производительность

*

*

**

***

***

Малая мощность потребления

***

***

***

*

***

Плотность кода

*

*

**

*

***

Эффективность обращения к памяти более 64 Кбайт
(в собств. системе команд)

*

*

*

***

***

Векторные прерывания

***

***

***

**

***

Малое время ожидания прерываний

***

***

***

*

***

Низкая стоимость

***

***

***

*

***

Множественные источники
(непатентованная архитектура)

***

*

*

*

***

Выбор компиляторов

***

**

**

**

***

Совместимость программного обеспечения

***

**

**

**

***

В зависимости от требования приложения, можно всегда найти подходящий МК на базе ARM Cortex-M. В случае необходимости введения новых функций, повышения производительности и снижения энергопотребления устройства благодаря совместимости архитектуры процессоров Cortex-M можно без проблем перейти на другие ARM-микроконтроллеры.

Литература

1. Joseph Yiu. What next for microcontrollers?//www.embedded.com

Вы можете скачать эту статью в формате pdf здесь. Оцените материал:

Автор: Джозеф Ю (Joseph Yiu), инженер-разработчик, ARM Ltd.

Рекомендовать

 


     

www.russianelectronics.ru

что это такое и зачем нужны

Сегодня я хотел бы написать о микроконтроллерах в целом, чтобы свои знания подтянуть и заодно другим рассказать.

Для работы с микроконтроллерами, такими как Ардуино или Iskra JS и подобными, нужны дополнительные знания, которые мы постепенно будем познавать.

Что такое микроконтроллеры?

Микроконтроллер представляет собой микросхему, которая используется для управления электронными устройствами. В типичном микроконтроллере имеются функции и процессора, и периферийных устройств, а также содержится оперативная память и/или ПЗУ (постоянное запоминающее устройство). Если говорить кратко, то микроконтроллер - это компьютер, функционирующий на одном кристалле, который способен выполнять относительно несложные операции.

Микроконтроллеры широко используются в вычислительной технике (процессоры, материнские платы, контроллеры дисководов, накопители HDD/FDD), бытовой электронике (стиральные машины, микроволновые печи, телефоны и т.д.), в промышленности и т.д. Рассмотрим, как проходит подключение и управление микроконтроллером, а также другие нюансы, связанные с ними.

Подключение микроконтроллера

Нижеописанная схема является упрощенным вариантом подключения микроконтроллера AVR.

AVR — это семейство восьмибитных микроконтроллеров фирмы Atmel. Год разработки — 1996.

По-хорошему, необходимо добавить еще несколько дополнительных внешних элементов в схему.

Упрощенная схема подключения микроконтроллера

Провод, который указан на схеме пунктиром, использовать не обязательно в том случае, если питание микроконтроллера идет от внешнего источника.

Вывод AREF используется как вход для опорного напряжения АЦП - сюда подается напряжение, относительно которого будет высчитываться АЦП. Допустимо использование внутреннего источника опорного напряжения на 2.56В, или же использовать напряжение от AVCC.

АЦП (Аналого-цифровой преобразователь) — электронное устройство, преобразующее напряжение в двоичный цифровой код

На вывод AREF рекомендуется подключить конденсатор, который позволит увеличить качество напряжения АЦП и, тем самым, позволит провести правильные измерения АЦП. Между AVCC и GND установлен конденсатор и дроссель, а между GND и VCC установлен керамический конденсатор с емкостью 100 нФ (поближе к выводам питания схемы) для сглаживания кратких импульсов помех, образующихся в результате работы микросхемы.

Также между GND и VCC устанавливается ещё один конденсатор с емкостью в 47 мкФ для того, чтобы сгладить возможные броски напряжения.

Управление микроконтроллером

Микроконтроллеры AVR оснащены Гарвардской архитектурой. Каждая из областей памяти располагаются в своем адресном пространстве. Память данных в контроллерах осуществляется посредством регистровой, энергонезависимой и оперативной памяти.

Микроконтроллер AVR

Регистровая память предусматривает наличие 32 регистров общего назначения, которые объединены в файл, а также служебные регистры для ввода и вывода. И первые, и вторые располагаются в пространстве ОЗУ, однако не являются его частью.

В области РВВ (регистров ввода и вывода) находятся различные служебные регистры - состояния, управления микроконтроллером и т.д., а также регистры, которые отвечают за управление периферийных устройств, являющихся частью микроконтроллера. По сути, управление данными регистрами и является методом управления микроконтроллером.

Устройства на микроконтроллерах

Микроконтроллеры AVR являются простыми в использовании, имеют низкую потребляемую мощность и высокий уровень интеграции.

Как правило, такие микроконтроллеры могут использоваться на самых разных устройствах, в том числе системах общего назначения, системах оповещения, для ЖК-дисплеев, плат с ограниченным пространством.

Также они используются для измерителей уровня заряда аккумулятора, аутентификации, в автомобильной электронике, для защиты от короткого замыкания и перегрева и т.д. Кроме промышленных целей, микроконтроллеры могут использоваться (и чаще всего используются новичками) для создания следующих устройств:

  • Регистратор температуры на Atmega168;
  • Кухонный таймер на Attiny2313;
  • Термометр;
  • Измеритель частоты промышленной сети на 50 Гц;
  • Контроллер светодиодного стоп-сигнала на Attiny2313;
  • Светодиодные лампы и светильники, реагирующие на температуру или звук;
  • Электронные или сенсорные выключатели.

Отметим, что для разных устройств используются разные модели микроконтроллеров. Так, 32-разрядные микроконтроллеры AVR UC3 (а также XMEGA, megaAVR, tinyAVR и т.д.) подойдут для систем общего назначения с технологиями picoPower, QTouch, EEPROM, системами обработки событий и самопрограммированием.

Микроконтроллеры для начинающих

Если вы собираетесь программировать микроконтроллеры, такие как Ардуино, например, а также собирать устройства, которые предусматривают их наличие в схеме, необходимо учитывать некоторые правила и рекомендации:

  • Перед решением любых задач следует делить их на более мелкие, вплоть до базовых действий.
  • Не следует пользоваться кодогенераторами и прочими "упрощающими" материалами, хотя бы на начальных этапах.
  • Рекомендуется изучить язык С и Ассемблер - это упростит понимание принципа работы микроконтроллеров и программ.

Для того, чтобы новичок мог заниматься микроконтроллерами, рекомендуется изучать базовые материалы. К таким материалам можно отнести следующие книги:

  • "Применение микроконтроллеров AVR: схемы, программы и алгоритмы" Баранов В.Н., 2006 год,
  • "Микроконтроллеры AVR: вводный курс", Дж. Мортон, 2008 год,
  • "Программирование микроконтроллеров ATMEL на языке С" Прокопенко В.С, 2012 год.

Данные книги являются практическим руководством, в котором затрагиваются аспекты и основы цифровой логики, а также рассматриваются примеры программ для микроконтроллеров, написанных на языке С с различными имитаторами схем, компиляторами и средами.

arduinoplus.ru

ARM жаждет крови / Habr

Года так 2 назад на одном из форумов по радиоэлектронике я попросил посоветовать, какой микроконтроллер изучать — и больше всего голосов было в поддержку AVR — популярных, 8-и битных МК, под которые легко писать, программатор можно сделать одной рукой (из проводов и резисторов)… Будущее было ясным и безоблачным, пока в 2009-м году не пошли новости про новые микроконтроллеры на ядре ARM Cortex-M0, которые должны были стоить меньше 1$ (во что в принципе никто не верил) и перекрыть кислород 8-и битным микроконтроллерам.

Сейчас на дворе середина 2011 года и пришла пора посмотреть, что и по какой цене у нас можно купить, и какая получается расстановка сил (цены — из terraelectronica.ru).

МК Ядро Цена (рубли в розницу) Flash-память (кб) ОЗУ (кб) Производительность (MIPS) Потребление энергии (мА/Mhz)
LPC1111FHN33 ARM 32-bit Cortex M0 56 8 2 0.9*50 0.15
STM32F100C4T6B ARM 32-bit Cortex-M3 28.15 16 4 1.25*24 0.23
AtTiny13A Atmel 8bit 25.5 1 0.064 20 0.3 (1mhz)
0.55 (20 mhz)
atmega48 Atmel 8bit 47.06 4 0.5 20 0.3 (1mhz)
0.55 (20 mhz)
MSP430F2101IPW TI 16bit MSP430 52.12 1 0.12 16 0.25 (1mhz)
0.4 (16mhz)
PIC16F676 PIC16 8bit 36.8 2 0.22 5 0.1*4
PIC12F509 PIC12 8bit 26.3 2 0.041 5 0.087*4
PIC10F200T PIC10 8bit 14 0.25 0.016 1 0.043*4

Пояснения: Потребление энергии — указаны в оптимальных условиях в соответствии с datasheet (минимальное напряжение для данной частоты + отключена лишняя периферия). На «высоких» частотах у некоторых МК потребление на MHz выше т.к. требуется более высокое напряжение.

Также нужно помнить, что MIPS-ы у ARM-ов существенно более мясистые, чем у 8/16-и битных МК. Умножение 32x32 за 1 такт это вам не шутки…

Выводы

Определенно, Atmel недокладывает мяса тиграм. В настоящий момент в области высокой производительности/функционала полностью проигрывают Cortex M3 от STM32 (и по цене и по функционалу), а для мелких приложений — мелким PIC-ам, которые вдвое дешевле. Видимо мой собранный потом и кровью программатор для Atmel скоро останется не у дел… Впрочем, есть еще небольшая ниша для приложений где требуется работа от 5V…

У PIC-а только у PIC10 своя ниша остается, остальные проигрывают младшим армам STM32.

Cortex M0 от NXP должен был быть самым дешевым (с ценой до 0.5$ крупными партиями), но в реальности нам приходится платить 2$.

А вот Cortex M3 от STM32 просто рвет все в клочья: при цене крупными партиями 0.85$, его сейчас можно купить по одному за 0.99$ — определенно так будет не всегда, и это вероятно маркетинговая акция, но мне она нравится (я лично купил 20 впрок ). Также нужно помнить, какие плюшки несет нам Cortex M3 по сравнению с M0: умножение 32x32->64 (у M0 только 32x32->32), аппаратный делитель, операции вида MADD — все это и дает на 38% больше скорости на МГц. По энергопотреблению на MIPS получается примерно то-же. Даже если цена вырастет до 1.5$ — все равно будет вкусно, и дешевле большинства AtMega. Кстати, STM32 скоро Cortex M0 также запускает, посмотрим что из этого получится.

А вот по энергопотреблению 8-и и 16-и битные контроллеры ощутимо проигрывают (как это ни удивительно), а если учесть что ARM может больше спать при выполнении той же задачи, отрыв будет еще сильнее. PIC конечно в цифрах выглядит хорошо, но цифру в их случае надо умножать на 4 (т.к. требуется по 4 такта на выполнение команд).

Почему цена 8-и и 32-х бит так мало отличается?

Все дело в том, что само 32-х битное ядро не так уж и много места занимает, порядка десятка тысяч транзисторов. А например 256Кб Flash-памяти — это 2 млн транзисторов, что не сравнимо больше. Т.е. основное место все равно занимает память и ввод/вывод, так почему бы не потратить +2% площади кристалла и получить 32-х битное ядро нормальной скорости. Также надо учитывать, что уменьшение площади кристалла даже в 2 раза не уменьшает стоимость вдвое — цена разрезания пластины, тестирования, корпусирования остается той-же — и выигрывает тот, кто имеет большие объемы производства.

Так что нам остается смириться, и использовать ARM даже там, где хватило бы и 4-х битного процессора. Небольшая ниша остается у 6-и ногих крошек PIC10 (и AtTiny10 при снижении цены), и все.

Как жить дальше?

Программатор для ARM-ов собрать несколько сложнее, чем для AVR, но наши китайские товарищи не дремлют, и там можно заказать занедорого отличный программатор JLINK (подходит практически для всех армов всех производителей) — 24$ с доставкой — мне как раз сейчас едет.

Там же есть веселые отладочные платки с сенсорным экраном по 39.

Ну и любители халявы успели поиметь по отладочной платке от известного конкурса — конкурс еще идет, но неизвестно шлют ли еще — мне пока так и не прислали…

Комментарии / вопросы / мнения — в студию!

habr.com

8-разрядные микроконтроллеры - Микроконтроллеры и процессоры

1 -60 5.5 4.5 2 64 902 MaskROM 64 18.64-1В PIC17 (аналог)
1 -60 5.5 4.5 2 64 902 Flash 64 18.64-1В PIC17 (аналог)
- -60 5.5 4.5 1 48 902 Flash 64 Н16.48-1В PIC17 (аналог)
1 -60 5.5 4.5 1 48 902 EEPROM 64 Н16.48-1В PIC17 (аналог)
- -60 5.5 4.5 1 42 902 EEPROM 8 Н14.42-1В PIC17 (аналог)
-60 5.5 4.5 2 48 902 EEPROM 8 Н16.48-1В PIC17 (аналог)
-60 5.5 4.5 2 48 902 EEPROM 8 5142.48-А PIC17 (аналог)
-60 5.5 4.5 1 28 902 EEPROM 4 Н09.28-1В PIC17 (аналог)

ic.milandr.ru

Оставить комментарий

avatar
  Подписаться  
Уведомление о