Выпуск #8/2010
И.Шахнович.
Двухъядерные микроконтроллеры Cortex-M4/M0 от NXP. Первые ласточки
Двухъядерные микроконтроллеры Cortex-M4/M0 от NXP. Первые ласточки
Просмотры: 3400
В ноябре 2010 года компания NXP объявила о выпуске семейства микроконтроллеров LPC4300 на базе процессоров ARM Cortex-M4. Принципиальное отличие этих контроллеров от продукции других производителей (например, от семейства Kinetis компании Freescale) – наличие двух ядер, высокопроизводительного Cortex-M4 и экономичного Cortex-M0. Компания NXP представила эти контроллеры на выставке Electronica 2010 в Мюнхене, прошедшей с 9 по 12 ноября. Об особенностях нового семейства нам рассказал вице-президент компании NXP, генеральный директор подразделения микроконтроллеров Джофа Лиса (Geoff Lees).
Контроллеры c ядром Cortex-M4
Компания NXP – первый производитель, который в свое время представил на рынок микроконтроллер с ядром Cortex-M0 (серия LPC1100). Микроконтроллеры имели большой рыночный успех, за ними последовали контроллеры
с ядром Cortex-M3. С появлением процессора с ядром
Cortex‑M4, компания NXP стала единственным на рынке производителем, поддерживающим все три ядра семейства ядер Cortex‑M. Сегодня NXP сосредоточилась именно на микроконтроллерах с ARM-архитектурой, прекратив развитие процессоров семейства 8051.
Все микроконтроллеры NXP c ядрами Cortex-M имеют единую систему команд, что позволяет переносить программное обеспечение с одного процессора на другой. Кроме того, все микроконтроллеры с различными ядрами совместимы по выводам (для одних типов корпусов). В совокупности с широким диапазоном наборов периферийных устройств и встроенной памяти, семейства контроллеров с ядрами Cortex-M0/3/4 предоставляют разработчикам беспрецедентный по гибкости инструмент, причем за достаточно низкую цену. Компания планирует выпускать несколько семейств микроконтроллеров с ядром Cortex-M4 под общим названием LPC4000. Первым из них стало семейство LPC4300.
Новое семейство микроконтроллеров LPC4300 обладает рядом принципиальных отличий от своих предшественников (рис.1). Основные из них – новое ядро Cortex-M4, наличие второго ядра Cortex-M0, встроенная флеш-память (до 1 Мбайт), до 264 Кбайт статического ОЗУ, настраиваемые пользователем последовательные интерфейсы, аппаратная поддержка широкого набора стандартных интерфейсов, включая счетверенный SPI Flash (до 40 Мбайт/с) и USB 2.0. Еще одно достоинство – наличие настраиваемой системы таймеров с возможностью событийного управления (State Configurable Timer Subsystem). В микроконтроллерах семейства LPC4300 (в зависимости от типа) аппаратно поддерживается широкий набор современных интерфейсов – USB 2.0, 10/100T Ethernet и др. Также реализован контроллер ЖК-дисплеев типа Super-Twisted Nematic (STN) и Thin-Film Transistor (TFT) с возможностью прямого доступа к памяти. Он поддерживает разрешение до 1024×768 пикселей, монохромный и полноцветный (24-бит true-color) режимы.
Кроме того, во всех микроконтроллерах семейства LPC4000 предусмотрено ПЗУ объемом 32 Кбайт для хранения загрузочного кода и встроенных драйверов, декодер AES-128 (в некоторых типах – и кодер), восьмиканальный контроллер прямого доступа к памяти (GPDMA), четыре интерфейса UART, два порта I2C, порт I2S, интерфейс CAN и др. Контроллеры содержат два 10-разрядных АЦП и 10-разрядный ЦАП со скоростью преобразования данных 400 тыс. выборок/с, интерфейс широтно-импульсной модуляции (ШИМ) для управления электродвигателями и интерфейс импульсного датчика положения (Quadrature Encoder), интерфейс для подключения SD-карт, часы истинного времени (RTC) со сверхнизким энергопотреблением и с резервными регистрами (256 байт) с питанием от батарейки. И многое другое.
Контроллеры LPC4300 выпускаются по 90-нм технологии NXP, что обеспечивает тактовую частоту ядер до 150 МГц.
Особенности внутренней организации
Основное новшество контроллеров семейства LPC4000 – новое ядро Cortex-М4 с расширенным набором команд, ранее свойственным процессорам цифровой обработки сигналов (рис.2). Это такие команды, как умножение с накоплением (MAC) за один такт, однотактные команды обработки множественных данных (SIMD), поддержка операций с насыщением. Кроме того, в ядро М4 введен модуль операций с плавающей запятой. Все это фактически позволяет использовать контроллер в областях применения, характерных для сигнальных процессоров.
Вторая принципиальная особенность микроконтроллеров семейства LPC4000, отличающая их от процессоров с ядром Cotrex-M4 других производителей, – это наличие двух ядер. Помимо М4 контроллеры оснащены ядром Cortex-M0, предназначенным для того, чтобы разгрузить основное ядро М4 от задач, не связанных с высокопроизводительными вычислениями. Ядро М0 берет на себя операции управления обмена с периферийными устройствами (внутренними и внешними), обработки прерываний и т.п. Это приводит не только к повышению производительности контроллера в целом, но и к значительному снижению энергопотребления, поскольку для сервисных операций используется ядро М0 с низким энергопотреблением. Иными словами, ядро М4 поддерживает вычислительно сложные процессы, характерные для того или иного приложения, в то время как М0 обеспечивает собственно работу контроллера в режиме реального времени.
Ядро Cortex-M4 построено по гарвардской архитектуре и включает три шины AHB-Lite: инструкций, данных и системную. Наличие отдельных шин данных и команд обеспечивает одновременное получение инструкций и данных от различных периферийных (исполнительных) устройств. Ядро включает трехстадийный конвейер, а также устройство предварительной выборки для спекулятивных вычислений. Встроенный в ядро контроллер вложенных векторизованных прерываний (NVIC) поддерживает до 53 прерываний.
Ядро Cortex-M0 – это 32-разрядный микропроцессор, сам по себе обладающий достаточно высокой производительностью при очень низком энергопотреблении. Ядро также содержит трехстадийный конвейер, обладает фон-неймановской архитектурой, оснащено контроллером прерываний NVIC, поддерживающим 32 вектора прерываний.
Контроллеры LPC4000 используют очень развитую шинную архитектуру, по сути – многоуровневую шинную матрицу (рис.3). Причем предусмотрены каналы прямого доступа к памяти как для ведущих, так и для периферийных устройств, что еще больше разгружает процессорные ядра для вычислительных задач.
Межпроцессорный обмен между ядрами М0 и М4 реализован через ОЗУ, которое используется как почтовый ящик (рис.4). Например, отправив сообщение (данные) в почтовый ящик, одно ядро сигнализирует об этом другому, инициировав прерывание.
Микроконтроллеры семейства LPC4000 используют оптимизированную архитектуру флеш-памяти с 256-разрядным доступом, что позволяет снизить число обращений к памяти и при этом оптимизировать производительность процессора. В зависимости от модификации, в семействе LPC4300 предусмотрено до 1 Мбайт флеш-памяти. Память можно конфигурировать либо как единый массив, либо представить ее в виде двух симметричных банков (рис.5). Статическое ОЗУ объемом 264 Кбайт – самое большое для существующих сегодня на рынке микроконтроллеров на базе ядер Cortex-M – конфигурировано под требования высокопроизводительных вычислений (рис.6). Память разбита на блоки, в результате возможно одновременное обращение к ОЗУ как со стороны ядер, так и по каналам прямого доступа (DMA).
Еще одна особенность контроллера – наличие “счетверенного” SPI-интерфейса к внешней флеш-памяти типа Quad SPI Flash. Память Quad SPI Flash пару лет назад начали массово использовать в персональных компьютерах для загрузки BIOS, что привело к ее существенному удешевлению. Сегодня такую флеш-память выпускают многие производители – Atmel, Gigadevice, Macronix, Micron (Numonyx), Microchip (SST), Winbond и др. Однако до недавнего времени микроконтроллеры не поддерживали Quad SPI Flash. Эта проблема устранена в контроллерах семейства LPC4000, которые поддерживают интерфейс SPI Flash Interface (SPIFI) к Quad SPI флеш-памяти. Вместо четырех сигнальных линий традиционного SPI-интерфейса (CLC, CS, MOSI, MISO) в SPIFI – шесть линий (CLC, CS, IO0–IO3), четыре из них (IO0–IO3) предназначены для передачи данных. Благодаря высокой скорости обмена по SPIFI – до 40 Мбайт/с – внешняя флеш-память может заменять внутреннюю. Это очень важно для ряда приложений, поскольку стоимость ИС внешней флеш-памяти существенно ниже, чем цена микроконтроллера с большим объемом встроенной памяти.
Например, стандартная задача – отображение информации на графическом ЖК-экране устройства. Как правило, массив видеоданных хранится во внешней памяти, но для отображения записывается в ОЗУ микроконтроллера со встроенным контроллером ЖКИ, поскольку время обмена с внешней памятью достаточно велико. Интерфейс SPIFI и шинная архитектура семейства LPC4000 позволяют обходиться без загрузки данных в ОЗУ, непосредственно обращаясь к внешней Quad-SPI флеш-памяти (рис.7). Аналогично достоинства доступа к внешней флеш-памяти посредством SPIFI проявляются в задачах обработки больших массивов информации в реальном времени, что характерно для цифровой обработки сигналов.
Еще одно важное достоинство новых микроконтроллеров – таймеры с конфигурируемым состоянием (State Configurable Timer – SCT). По сути, это набор таймеров с машиной состояний, управляемой по событиям. Система, включающая 8 входов и 16 выходов, предусматривает 32 состояния, переключение между которыми возможно по 16 различным событиям. Запрограммировав машину состояний, разработчик разгружает процессор от многочисленных процедур формирования сложных последовательностей выходных сигналов. Например, при формировании ШИМ-сигналов для управления двигателями система SCT позволяет разгрузить процессор от задачи формирования сигнала – он только вычисляет параметры импульсов.
Не менее значимый механизм в новом семействе микроконтроллеров – программируемые последовательные порты ввода-вывода общего назначения (SGPIO). SGPIO представляет собой традиционный порт общего назначения, оснащенный сдвиговым регистром и программируемым таймером, а также регистром состояния. SGPIO позволяют, в частности, формировать выходной сигнал (путем программирования задержек и состояния битовых полей), не загружая процессорные ядра. Это очень важно, например, для реализации нестандартных последовательных интерфейсов (обмен с контроллерами ЖКИ, цифровые аудиопотоки и т.п.), особенно в режиме временного разделения канала (TDM). Разумеется, эффективны эти механизмы и для эмуляции стандартных интерфейсов – I2S (многоканальный аудиоинтерфейс с временным разделением каналов), I2C, SPI и др. Подчеркнем, процессор при этом освобождается от задач формирования точных временных последовательностей сигналов.
Весьма значимая особенность микроконтроллеров LPC4000 – механизм управления энергопотреблением. Так, для каждого периферийного устройства может быть задана независимая схема тактирования, причем допустимо применять различные источники тактовых сигналов и различные тактовые частоты. Не используемые периферийные устройства можно отключать, просто запрещая тактовый сигнал.
Кроме того, существует развитая система режимов пониженного энергопотребления:
режим сна: процессор остановлен, но периферия активна;
режим глубокого сна: остановлен основной и все внутренние тактовые генераторы, кроме таймера реального времени. Флеш-память переведена в режим ожидания (standby), но готова к немедленному доступу;
выключение питания: отключено все, кроме флеш-памяти и часов реального времени. Состояние контроллера сохраняется;
глубокое отключение питания: остановлено все, включая часы реального времени. Внутреннее напряжение отключено. Системное состояние сброшено, сохраняются только данные в регистрах часов реального времени.
Доступность
Первые образцы контроллеров семейства LPC4300 были продемонстрированы в ноябре 2010 года. Серийные поставки должны начаться с 2011 года. В семейство входит широкий ряд контроллеров с различным набором периферийных устройств и объемом встроенной флеш-памяти (см. таблицу) Пока представлены только контроллеры LPC4310/20/30/50 – т.е. модели всех функциональных групп, но без флеш-памяти. Начало поставок других типов контроллеров этого семейства запланировано на второй квартал 2011 года. Далее появятся и другие семейства микроконтроллеров группы LPC4000.
В целом, микроконтроллеры LPC4000 позволят разрабатывать различные приложения, включая DSP, оставаясь в рамках единой архитектуры и среды разработки. Двухъядерная архитектура и набор настраиваемых периферийных устройств позволят решать широкий спектр задач в таких областях, как управление двигателем, контроль электропитания, промышленная автоматизация, робототехника, медицинское оборудование, автомобильная электроника, аудиосистемы и многое другое.
Записал И.Шахнович
Компания NXP – первый производитель, который в свое время представил на рынок микроконтроллер с ядром Cortex-M0 (серия LPC1100). Микроконтроллеры имели большой рыночный успех, за ними последовали контроллеры
с ядром Cortex-M3. С появлением процессора с ядром
Cortex‑M4, компания NXP стала единственным на рынке производителем, поддерживающим все три ядра семейства ядер Cortex‑M. Сегодня NXP сосредоточилась именно на микроконтроллерах с ARM-архитектурой, прекратив развитие процессоров семейства 8051.
Все микроконтроллеры NXP c ядрами Cortex-M имеют единую систему команд, что позволяет переносить программное обеспечение с одного процессора на другой. Кроме того, все микроконтроллеры с различными ядрами совместимы по выводам (для одних типов корпусов). В совокупности с широким диапазоном наборов периферийных устройств и встроенной памяти, семейства контроллеров с ядрами Cortex-M0/3/4 предоставляют разработчикам беспрецедентный по гибкости инструмент, причем за достаточно низкую цену. Компания планирует выпускать несколько семейств микроконтроллеров с ядром Cortex-M4 под общим названием LPC4000. Первым из них стало семейство LPC4300.
Новое семейство микроконтроллеров LPC4300 обладает рядом принципиальных отличий от своих предшественников (рис.1). Основные из них – новое ядро Cortex-M4, наличие второго ядра Cortex-M0, встроенная флеш-память (до 1 Мбайт), до 264 Кбайт статического ОЗУ, настраиваемые пользователем последовательные интерфейсы, аппаратная поддержка широкого набора стандартных интерфейсов, включая счетверенный SPI Flash (до 40 Мбайт/с) и USB 2.0. Еще одно достоинство – наличие настраиваемой системы таймеров с возможностью событийного управления (State Configurable Timer Subsystem). В микроконтроллерах семейства LPC4300 (в зависимости от типа) аппаратно поддерживается широкий набор современных интерфейсов – USB 2.0, 10/100T Ethernet и др. Также реализован контроллер ЖК-дисплеев типа Super-Twisted Nematic (STN) и Thin-Film Transistor (TFT) с возможностью прямого доступа к памяти. Он поддерживает разрешение до 1024×768 пикселей, монохромный и полноцветный (24-бит true-color) режимы.
Кроме того, во всех микроконтроллерах семейства LPC4000 предусмотрено ПЗУ объемом 32 Кбайт для хранения загрузочного кода и встроенных драйверов, декодер AES-128 (в некоторых типах – и кодер), восьмиканальный контроллер прямого доступа к памяти (GPDMA), четыре интерфейса UART, два порта I2C, порт I2S, интерфейс CAN и др. Контроллеры содержат два 10-разрядных АЦП и 10-разрядный ЦАП со скоростью преобразования данных 400 тыс. выборок/с, интерфейс широтно-импульсной модуляции (ШИМ) для управления электродвигателями и интерфейс импульсного датчика положения (Quadrature Encoder), интерфейс для подключения SD-карт, часы истинного времени (RTC) со сверхнизким энергопотреблением и с резервными регистрами (256 байт) с питанием от батарейки. И многое другое.
Контроллеры LPC4300 выпускаются по 90-нм технологии NXP, что обеспечивает тактовую частоту ядер до 150 МГц.
Особенности внутренней организации
Основное новшество контроллеров семейства LPC4000 – новое ядро Cortex-М4 с расширенным набором команд, ранее свойственным процессорам цифровой обработки сигналов (рис.2). Это такие команды, как умножение с накоплением (MAC) за один такт, однотактные команды обработки множественных данных (SIMD), поддержка операций с насыщением. Кроме того, в ядро М4 введен модуль операций с плавающей запятой. Все это фактически позволяет использовать контроллер в областях применения, характерных для сигнальных процессоров.
Вторая принципиальная особенность микроконтроллеров семейства LPC4000, отличающая их от процессоров с ядром Cotrex-M4 других производителей, – это наличие двух ядер. Помимо М4 контроллеры оснащены ядром Cortex-M0, предназначенным для того, чтобы разгрузить основное ядро М4 от задач, не связанных с высокопроизводительными вычислениями. Ядро М0 берет на себя операции управления обмена с периферийными устройствами (внутренними и внешними), обработки прерываний и т.п. Это приводит не только к повышению производительности контроллера в целом, но и к значительному снижению энергопотребления, поскольку для сервисных операций используется ядро М0 с низким энергопотреблением. Иными словами, ядро М4 поддерживает вычислительно сложные процессы, характерные для того или иного приложения, в то время как М0 обеспечивает собственно работу контроллера в режиме реального времени.
Ядро Cortex-M4 построено по гарвардской архитектуре и включает три шины AHB-Lite: инструкций, данных и системную. Наличие отдельных шин данных и команд обеспечивает одновременное получение инструкций и данных от различных периферийных (исполнительных) устройств. Ядро включает трехстадийный конвейер, а также устройство предварительной выборки для спекулятивных вычислений. Встроенный в ядро контроллер вложенных векторизованных прерываний (NVIC) поддерживает до 53 прерываний.
Ядро Cortex-M0 – это 32-разрядный микропроцессор, сам по себе обладающий достаточно высокой производительностью при очень низком энергопотреблении. Ядро также содержит трехстадийный конвейер, обладает фон-неймановской архитектурой, оснащено контроллером прерываний NVIC, поддерживающим 32 вектора прерываний.
Контроллеры LPC4000 используют очень развитую шинную архитектуру, по сути – многоуровневую шинную матрицу (рис.3). Причем предусмотрены каналы прямого доступа к памяти как для ведущих, так и для периферийных устройств, что еще больше разгружает процессорные ядра для вычислительных задач.
Межпроцессорный обмен между ядрами М0 и М4 реализован через ОЗУ, которое используется как почтовый ящик (рис.4). Например, отправив сообщение (данные) в почтовый ящик, одно ядро сигнализирует об этом другому, инициировав прерывание.
Микроконтроллеры семейства LPC4000 используют оптимизированную архитектуру флеш-памяти с 256-разрядным доступом, что позволяет снизить число обращений к памяти и при этом оптимизировать производительность процессора. В зависимости от модификации, в семействе LPC4300 предусмотрено до 1 Мбайт флеш-памяти. Память можно конфигурировать либо как единый массив, либо представить ее в виде двух симметричных банков (рис.5). Статическое ОЗУ объемом 264 Кбайт – самое большое для существующих сегодня на рынке микроконтроллеров на базе ядер Cortex-M – конфигурировано под требования высокопроизводительных вычислений (рис.6). Память разбита на блоки, в результате возможно одновременное обращение к ОЗУ как со стороны ядер, так и по каналам прямого доступа (DMA).
Еще одна особенность контроллера – наличие “счетверенного” SPI-интерфейса к внешней флеш-памяти типа Quad SPI Flash. Память Quad SPI Flash пару лет назад начали массово использовать в персональных компьютерах для загрузки BIOS, что привело к ее существенному удешевлению. Сегодня такую флеш-память выпускают многие производители – Atmel, Gigadevice, Macronix, Micron (Numonyx), Microchip (SST), Winbond и др. Однако до недавнего времени микроконтроллеры не поддерживали Quad SPI Flash. Эта проблема устранена в контроллерах семейства LPC4000, которые поддерживают интерфейс SPI Flash Interface (SPIFI) к Quad SPI флеш-памяти. Вместо четырех сигнальных линий традиционного SPI-интерфейса (CLC, CS, MOSI, MISO) в SPIFI – шесть линий (CLC, CS, IO0–IO3), четыре из них (IO0–IO3) предназначены для передачи данных. Благодаря высокой скорости обмена по SPIFI – до 40 Мбайт/с – внешняя флеш-память может заменять внутреннюю. Это очень важно для ряда приложений, поскольку стоимость ИС внешней флеш-памяти существенно ниже, чем цена микроконтроллера с большим объемом встроенной памяти.
Например, стандартная задача – отображение информации на графическом ЖК-экране устройства. Как правило, массив видеоданных хранится во внешней памяти, но для отображения записывается в ОЗУ микроконтроллера со встроенным контроллером ЖКИ, поскольку время обмена с внешней памятью достаточно велико. Интерфейс SPIFI и шинная архитектура семейства LPC4000 позволяют обходиться без загрузки данных в ОЗУ, непосредственно обращаясь к внешней Quad-SPI флеш-памяти (рис.7). Аналогично достоинства доступа к внешней флеш-памяти посредством SPIFI проявляются в задачах обработки больших массивов информации в реальном времени, что характерно для цифровой обработки сигналов.
Еще одно важное достоинство новых микроконтроллеров – таймеры с конфигурируемым состоянием (State Configurable Timer – SCT). По сути, это набор таймеров с машиной состояний, управляемой по событиям. Система, включающая 8 входов и 16 выходов, предусматривает 32 состояния, переключение между которыми возможно по 16 различным событиям. Запрограммировав машину состояний, разработчик разгружает процессор от многочисленных процедур формирования сложных последовательностей выходных сигналов. Например, при формировании ШИМ-сигналов для управления двигателями система SCT позволяет разгрузить процессор от задачи формирования сигнала – он только вычисляет параметры импульсов.
Не менее значимый механизм в новом семействе микроконтроллеров – программируемые последовательные порты ввода-вывода общего назначения (SGPIO). SGPIO представляет собой традиционный порт общего назначения, оснащенный сдвиговым регистром и программируемым таймером, а также регистром состояния. SGPIO позволяют, в частности, формировать выходной сигнал (путем программирования задержек и состояния битовых полей), не загружая процессорные ядра. Это очень важно, например, для реализации нестандартных последовательных интерфейсов (обмен с контроллерами ЖКИ, цифровые аудиопотоки и т.п.), особенно в режиме временного разделения канала (TDM). Разумеется, эффективны эти механизмы и для эмуляции стандартных интерфейсов – I2S (многоканальный аудиоинтерфейс с временным разделением каналов), I2C, SPI и др. Подчеркнем, процессор при этом освобождается от задач формирования точных временных последовательностей сигналов.
Весьма значимая особенность микроконтроллеров LPC4000 – механизм управления энергопотреблением. Так, для каждого периферийного устройства может быть задана независимая схема тактирования, причем допустимо применять различные источники тактовых сигналов и различные тактовые частоты. Не используемые периферийные устройства можно отключать, просто запрещая тактовый сигнал.
Кроме того, существует развитая система режимов пониженного энергопотребления:
режим сна: процессор остановлен, но периферия активна;
режим глубокого сна: остановлен основной и все внутренние тактовые генераторы, кроме таймера реального времени. Флеш-память переведена в режим ожидания (standby), но готова к немедленному доступу;
выключение питания: отключено все, кроме флеш-памяти и часов реального времени. Состояние контроллера сохраняется;
глубокое отключение питания: остановлено все, включая часы реального времени. Внутреннее напряжение отключено. Системное состояние сброшено, сохраняются только данные в регистрах часов реального времени.
Доступность
Первые образцы контроллеров семейства LPC4300 были продемонстрированы в ноябре 2010 года. Серийные поставки должны начаться с 2011 года. В семейство входит широкий ряд контроллеров с различным набором периферийных устройств и объемом встроенной флеш-памяти (см. таблицу) Пока представлены только контроллеры LPC4310/20/30/50 – т.е. модели всех функциональных групп, но без флеш-памяти. Начало поставок других типов контроллеров этого семейства запланировано на второй квартал 2011 года. Далее появятся и другие семейства микроконтроллеров группы LPC4000.
В целом, микроконтроллеры LPC4000 позволят разрабатывать различные приложения, включая DSP, оставаясь в рамках единой архитектуры и среды разработки. Двухъядерная архитектура и набор настраиваемых периферийных устройств позволят решать широкий спектр задач в таких областях, как управление двигателем, контроль электропитания, промышленная автоматизация, робототехника, медицинское оборудование, автомобильная электроника, аудиосистемы и многое другое.
Записал И.Шахнович
Отзывы читателей