Микроконтроллеры Lpc1100: высокая производительность и низкое энергопотребление
В качестве решения проблемы компания NXP предлагает семейство микроконтроллеров LPC1100 на основе 32-разрядного процессорного ядра ARM Cortex-M0. Этот самый маленький представитель семейства микроконтроллеров на основе ядра ARM Cortex-M сочетает высокую производительность 32-разрядной архитектуры с низким энергопотреблением и малым размером чипа. LPC1100 – это новейший микроконтроллер популярного семейства LPC1000 компании NXP Semiconductors (рис.1), предназначенный для рынка недорогих устройств, на котором сегодня доминируют 8- и 16-разрядные микроконтроллеры.
Микроконтроллеры LPC1100 используют все преимущества экосистемы, созданной для микроконтроллеров LPC1300 и LPC1700 на базе ядер Cortex-M3. Микроконтроллеры LPC1100 поддерживают широкий ряд периферии от стандартных интерфейсов, таких как UART, I2C и SPI, до CAN и даже USB. Экосистема микроконтроллеров семейства LPC1000 включает компиляторы и средства отладки от нескольких разработчиков, поддержку различных операционных систем и пакетов программного обеспечения. Благодаря совместимости микроконтроллеров семейства LPC1100 на базе ядер Cortex-M0 и M3 можно вести разработку одновременно для микроконтроллеров на базе обоих типов ядер.
Рассмотрим подробнее, как микроконтроллеры LPC1100 решают такие задачи, как обеспечение низкой себестоимости устройств, их энергоэффективности и небольшого размера программного кода, а также позволяют эффективно работать с приложениями, в которых ранее использовались в основном 8- и 16-разрядные микроконтроллеры.
Энергоэффективность
Сверхнизкое энергопотребление микроконтроллеров LPC1100 в активном режиме делает их идеальным решением для автоматизации дома, так как средства управления окнами, дверьми и системами освещения, которые фактически являются датчиками, подключенными к шине внутренней системы дома, питающейся от выделенной линии постоянного тока, большую часть времени находятся в активном режиме.
Посмотрим, как распределяется энергопотребление между внутренними блоками микроконтроллеров LPC1100 в типичном активном режиме (рис.2). Основная доля от общего энергопотребления приходится на ядро Cortex-M0 и встроенную память. Несмотря на высокую вычислительную производительность ядра Cortex-M0, средний уровень энергопотребления микроконтроллеров LPC1100 при работе в бесконечном цикле составляет 130 мкA/МГц (рис.3).
Ядро M0 имеет 32-разрядную архитектуру и расходует электроэнергию более эффективно, нежели ядра на базе 8- и 16-разрядной архитектуры, так как при произведении одних и тех же вычислений ядро M0 может работать в два–четыре раза медленнее, т.е. потреблять меньше энергии, чем микроконтроллеры на базе 8- и 16-разрядных ядер.
Благодаря высокой производительности ядро Cortex-M0 эффективно также и в режимах глубокого сна или глубокого энергосбережения, поскольку оно может выполнять задачи быстрее ядер с 8- и 16-разрядной архитектурой и тем самым позволяет устройствам больше времени находиться в режиме энергосбережения. Семейство LPC1100 в режимах глубокого сна и глубокого энергосбережения потребляет 2 мкА и 220 нА, соответственно.
Вычислительная мощность
Микроконтроллеры LPC1100 очень эффективны в случаях, когда, помимо решения базовых задач микроконтроллера, необходима обработка операндов различных типов (8- и 16-разрядных и длиннее). Наличие быстрого 32-разрядного ядра Cortex-M0, работающего на частоте до 50 МГц, с сохранением гибкости функционирования и программирования микроконтроллера (которое в случае микроконтроллеров на базе ядра Cortex-M0 ограничено исключительно языком C) представляет собой выгодную альтернативу гибридным 16-битным применениям.
Производительность микроконтроллера на базе ядра Cortex-M0 равна 0,8 DMIPS/МГц, что в два–четыре раза превышает производительность ближайших 8- и 16-разрядных конкурентов. Сравнительная производительность ядра Cortex-M0 при выполнении обычных задач показана на рис.4. Большинство инструкций Thumb2 ядра Cortex-M0 выполняется за один цикл, а также все операции передачи 8-, 16- и 32-разрядных данных выполняются в рамках одной инструкции. При работе с длинными операндами на 8- и 16-разрядных устройствах операция умножения всегда требует большого количества ресурсов. Однако поскольку ядро Cortex-M0 имеет 32-разрядную архитектуру, микроконтроллеры NXP LPC1100 на его базе могут умножать два 32-битных операнда за один цикл, используя аппаратный блок перемножения на 32x32 бита, непосредственно связанный с ядром инструкцией MULS.
Операции деления выполняются программными средствами, однако ядро Cortex-M0 показывает аналогичные результаты для всех типов операндов. Иногда требуются сложные вычисления, включающие несколько операций сложения, умножения и деления. Например, на рис.5 показана зависимость от частоты ядра времени, необходимого для выполнения сложных вычислений, которые включают пять операций умножения, пять операций сложения и одну операцию деления с операндами с плавающей запятой при исполнении всего кода из флеш-памяти. Для выполнения операций с плавающей запятой к коду привязывается библиотека математических вычислений.
Перевод некоторых ключевых функций из библиотеки математических вычислений в ОЗУ дает небольшое повышение производительности. Функция, которая вызывает библиотеки, также должна находиться в ОЗУ, чтобы исключить дополнительные длинные операции перехода из страницы памяти ПЗУ в страницу памяти ОЗУ и тем самым сократить время выполнения операций.
Обработка прерываний
Производительность микроконтроллера определяется не только временем выполнения операций, но и временем обработки прерываний. Производительность при обработке прерываний можно определить по времени задержки и джиттеру (задержка – это время с момента возникновения прерывания до запуска обработчика прерываний, а джиттер – изменение времени задержки).
Применение ядра Cortex-M0 сводит время задержки к минимуму за счет тесной связи обработчика прерываний с ядром. Это дает фиксированную задержку длиной в 16 циклов в случае прерываний с высочайшим приоритетом. Обработчик прерываний поддерживает до 32 источников прерываний и имеет функцию ввода немаскируемых прерываний. Микроконтроллер LPC1100 также имеет выделенные векторы прерываний для всех типов прерываний, благодаря чему каждое прерывание автоматически попадает в выделенный обработчик прерываний без программной обработки.
Для сокращения времени задержки при вложенных прерываниях предусмотрен встроенный механизм, который позволяет избежать повторного размещения прерывания в стеке в случае поступления прерывания с более высоким приоритетом до поступления первого прерывания в обработчик прерываний. Кроме того, микроконтроллер LPC1100 поддерживает быструю смену прерываний (tail chaining), что сокращает время задержки при прерываниях путем «сцепления» операции удаления из стека при выходе из прерывания (Exception Exit Unstacking Sequence) с последующей операцией размещения в стеке при поступлении прерывания (Exception Entry Stacking Sequence). Это обеспечивает прямое поступление прерываний в обработчик.
Себестоимость системы
Себестоимость системы зависит от нескольких факторов. В случае малых систем доминирующими факторами являются размеры ядра и блока памяти.
Размер ядра. Ядро Cortex-M0 предназначено для применений, где важна низкая себестоимость. Ранее в этих областях традиционно использовались 8- или 16-разрядные ядра, поскольку они имеют меньший размер. Размер ядра Cortex-M0 в три раза меньше размера ядра Cortex-M3 (рис.6). Для малых систем с ограниченным числом периферийных устройств и ограниченным пространством под флеш-память размер ядра – это очень важный фактор, который в значительной степени влияет на общий размер печатной платы. По числу логических схем ядро Cortex-M0 сравнимо с современными 8-разрядными ядрами, но при этом оно обеспечивает более высокую производительность и совместимо с более мощными процессорами из семейства Cortex-M.
Небольшая площадь флеш-памяти. Еще одним важным фактором, определяющим общую себестоимость систем, является размер флеш-памяти, необходимой для хранения программного кода. Учитывая, что 32-разрядные инструкции более производительны и могут одновременно заменить несколько 8-разрядных, можно предположить, что размер программного кода (за исключением таблиц постоянных параметров) окажется примерно одинаковым. Тем не менее, тесты, в которых 8-разрядный код переводился в 32-разрядный для микроконтроллеров LPC1100, показали, что размер программного кода может быть намного меньше и в некоторых случаях составлять 50% от исходного 8-разрядного кода или даже меньше.
Процессор ARM Cortex-M0 использует набор инструкций Thumb, включая небольшое число 32-разрядных инструкций, использующих технологию Thumb-2 (рис.7). Это бинарное подмножество наборов инструкций с восходящей совместимостью, поддерживаемых процессорами ARM Cortex-M3 и ARM Cortex-M4.
16-разрядные инструкции Thumb, хорошо известные по процессору ARM7TDMI, в сочетании с несколькими мощными 32-разрядными инструкциями из набора Thumb-2 обеспечивают высокую плотность кода. Компилятор сам решает, использовать ли ему 16- или 32-разрядные инструкции, которые без каких-либо проблем сосуществуют в конечном коде. Переключение между 16- и 32-разрядными инструкциями во время исполнения происходит незаметно и не требует специально выделенных инструкций, как в случае процессора ARM7TDMI.
В целом LPC1100 – это конкурентоспособное решение для сектора микроконтроллеров с низкой себестоимостью и высокими гибкостью и производительностью, достаточными для множества применений, в которых в прошлом доминировали 8- и 16-разрядные архитектуры. Микроконтроллер LPC1100 поставляется в сверхмалом корпусе (16-выводном типа CSP размером 2,5x2,5 мм), а также в простых в использовании корпусах HVQFN и LQFP. Базовая периферия, такая как UART, I2C и SPI, доступна для всего модельного ряда и поддерживает различные драйверы, применяемые в других микроконтроллерах семейства LPC1000. Доступна также более сложная периферия, такая как USB и CAN, которая поддерживается встроенными драйверами в маске ПЗУ, что позволяет использовать весь объем флеш-памяти для выполнения приложений. В имеющихся версиях микроконтроллера объем флеш-памяти может составлять от 8 до 32 Кбайт и ОЗУ от 2 до 8 Кбайт. Стоит микроконтроллер LPC1100 от 0,65 долл. за штуку при заказе партиями по 10000 шт.
Более подробную информацию об этом семействе микроконтроллеров можно получить у представителя или дистрибьютора компании NXP Semiconductors или на сайте www.nxp.com/microcontroller.